AM263x MCU+ SDK  10.00.00
hsmclient.h File Reference

Go to the source code of this file.

Data Structures

union  HsmVer_t
 type for reading HSMRt version. More...
 
struct  HsmClient_t
 This is a HSMClient type which holds the information needed by hsm client to communicate with HSM . More...
 
struct  EfuseRead_t
 This is a EfuseRead type which holds the information of eFuse row index and row data corresponding to it . More...
 
struct  EfuseRowWrite_t
 This is a EfuseRowWrite type which holds the information regarding programming eFuse row. More...
 
struct  EfuseRowCount_t
 This is a EfuseRowCount type which holds the information regarding eFuse row count and size of each row in bits. More...
 
struct  EfuseRowProt_t
 This is a EfuseRowProt type which holds the information of eFuse row index and protection status corresponding to the row index. More...
 
struct  KeyWriterCertHeader_t
 This is a keywriter_cert_header type which holds the information of customer key certificate and debug responce. More...
 
struct  FirewallRegionReq_t
 This is a FirewallRegionReq type which holds the information of Firewall region configuration. More...
 
struct  FirewallReq_t
 This is a FirewallReq_t type which holds the information of Firewall configuration. More...
 
struct  FirewallIntrReq_t
 This is a FirewallIntrReq type which holds the information of MPU Firewall request for interrupt enable, interrupt enable clear, interrupt enable status clear and fault clear. More...
 
struct  SWRev_t
 This is SWRev type which holds the information regarding Revision identifier and value corresponding to it . More...
 
struct  DKEK_t
 This is DKEK type which holds the label and context for derivation. This also holds the 256 derived KEK value which is returned by TIFS. More...
 
struct  RNGReq_t
 This is RNG type which holds the resultPtr for derivation which is returned by TIFS. This also holds the resultLengthPtr and DRBG Mode along with seedValue and seedSize. More...
 
struct  SecureBoot_Stream_t_
 This is the SecureBoot Stream type which holds the data for a specific bootloader to HSM call. This packet is needed by HSM the to do the required operation. More...
 

Macros

#define LABEL_AND_CONTEXT_LEN_MAX   48U
 
#define HSMRT_LOAD_NOT_REQUESTED   (0U)
 HSMRT load has not been requested. More...
 
#define HSMRT_LOAD_REQUESTED   (1U)
 HSMRT load has been requested. More...
 
#define HSMRT_LOAD_FAILED   (2U)
 HSMRT load has failed. More...
 
#define HSMRT_LOAD_SUCCEEDED   (3U)
 HSMRT load has succeeded. More...
 

Functions

union HsmVer_t_ __attribute__ ((packed)) HsmVer_t
 type for reading HSMRt version. More...
 
int32_t HsmClient_checkAndWaitForBootNotification (void)
 This API waits for HSMRT load if requested and then waits for boot notification. In case of failure in HSMRT load it returns SystemP_FAILURE. More...
 
int32_t HsmClient_init (SIPC_Params *params)
 Initialize the HSM client for current core. More...
 
void HsmClient_deInit (void)
 De initialize the HSM client for current core. More...
 
int32_t HsmClient_getVersion (HsmClient_t *HsmClient, HsmVer_t *verId, uint32_t timeToWaitInTick)
 populates the current HSMRT version Id by default the hsm flag is set to HSM_FLAG_AOP for this service More...
 
int32_t HsmClient_getUID (HsmClient_t *HsmClient, uint8_t *uid, uint32_t timeout)
 The service issued to HSM Server populates the Device UID by default the hsm flag is set to HSM_FLAG_AOP for this service. More...
 
int32_t HsmClient_openDbgFirewall (HsmClient_t *HsmClient, uint8_t *cert, uint32_t cert_size, uint32_t timeout)
 The service issued to HSM Server verifies the certificate and by default the hsm flag is set to HSM_FLAG_AOP for this service. More...
 
int32_t HsmClient_importKeyring (HsmClient_t *HsmClient, uint8_t *cert, uint32_t cert_size, uint32_t timeout)
 The service issued to HSM Server verifies the certificate and imports the keys from the certificate. More...
 
int32_t HsmClient_readOTPRow (HsmClient_t *HsmClient, EfuseRead_t *readRow)
 The service issued to HSM Server retrieves the data of GP OTP row based on row index provided as param. More...
 
int32_t HsmClient_writeOTPRow (HsmClient_t *HsmClient, EfuseRowWrite_t *writeRow)
 The service issued to HSM Server writes the data to extended OTP efuse row based on row index provided as param. More...
 
int32_t HsmClient_lockOTPRow (HsmClient_t *HsmClient, EfuseRowProt_t *rowProt)
 The service issued to HSM Server sets the protection status bit of the specified row to 1. More...
 
int32_t HsmClient_getOTPRowCount (HsmClient_t *HsmClient, EfuseRowCount_t *rowCount)
 The service issued to HSM Server retrieves the count of extended OTP rows. More...
 
int32_t HsmClient_getOTPRowProtection (HsmClient_t *HsmClient, EfuseRowProt_t *rowProt)
 The service issued to HSM Server retrieves the extended otp efuse row protection status. More...
 
int32_t HsmClient_procAuthBoot (HsmClient_t *HsmClient, uint8_t *cert, uint32_t cert_size, uint32_t timeout)
 The service issued to HSM Server helps with extended secure boot for applications. More...
 
int32_t HsmClient_procAuthBootStart (HsmClient_t *HsmClient, SecureBoot_Stream_t *secureBootInfo)
 The service issued to HSM Server helps with extended secure boot for applications. More...
 
int32_t HsmClient_procAuthBootUpdate (HsmClient_t *HsmClient, SecureBoot_Stream_t *secureBootInfo)
 The service issued to HSM Server helps with extended secure boot for applications. More...
 
int32_t HsmClient_procAuthBootFinish (HsmClient_t *HsmClient, SecureBoot_Stream_t *secureBootInfo)
 The service issued to HSM Server helps with extended secure boot for applications. More...
 
int32_t HsmClient_setFirewall (HsmClient_t *HsmClient, FirewallReq_t *FirewallReqObj, uint32_t timeout)
 The service issued to HSM Server sets the firewall for the given firewall id and region. More...
 
int32_t HsmClient_FirewallIntr (HsmClient_t *HsmClient, FirewallIntrReq_t *FirewallIntrReqObj, uint32_t timeout)
 The service issued to HSM Server sets the firewall interrupt request for the given firewall id. More...
 
int32_t HsmClient_keyWriter (HsmClient_t *HsmClient, KeyWriterCertHeader_t *certHeader, uint32_t timeout)
 The service issued to HSM Server verifies the certificate and process the keywriter operations,. More...
 
int32_t HsmClient_readSWRev (HsmClient_t *HsmClient, SWRev_t *readSWRev)
 The service issued to HSM Server retrieves the SWRevision value based on identifier as param. More...
 
int32_t HsmClient_writeSWRev (HsmClient_t *HsmClient, SWRev_t *writeSWRev)
 The service issued to HSM Server writes the SWRevision value based on identifier as param. More...
 
int32_t HsmClient_getDKEK (HsmClient_t *HsmClient, DKEK_t *getDKEK, uint32_t timeout)
 The service issued to HSM Server retrieves the derived KEK based on identifier as param. More...
 
int32_t HsmClient_register (HsmClient_t *HsmClient, uint8_t clientId)
 register a client to a particular ClientId More...
 
void HsmClient_unregister (HsmClient_t *HsmClient, uint8_t clientId)
 unregister a client to a particular ClientId More...
 
int32_t HsmClient_waitForBootNotify (HsmClient_t *HsmClient, uint32_t timeToWaitInTicks)
 Current core will wait for bootnotify message from HSM core. More...
 
int32_t Hsmclient_loadHSMRtFirmware (HsmClient_t *gHSMClient, const uint8_t *pHSMRt_firmware)
 Loads the HSMRt firmware. This is typically called by SBL. More...
 
int32_t Hsmclient_loadHSMRtFirmwareNonBlocking (const uint8_t *pHSMRt_firmware)
 Loads the HSMRt firmware but does wait for ROM response and boot notification. This is typically called by SBL. More...
 
int32_t HsmClient_getRandomNum (HsmClient_t *HsmClient, RNGReq_t *getRandomNum)
 Returns the Random Number Generated. More...
 

Variables

uint64_t HsmrtVer
 
struct {
   uint8_t   PatchVer
 
   uint8_t   MinorVer
 
   uint8_t   MajorVer
 
   uint8_t   ApiVer
 
   uint8_t   SocType
 
   uint8_t   BinType
 
   uint8_t   HsmType
 
   uint8_t   DevType
 
VerStruct
 
uint8_t * dataIn
 
uint32_t dataLen
 
uint8_t canBeEncrypted
 

Variable Documentation

◆ HsmrtVer

uint64_t HsmrtVer

< A 64 bit unique Version number

◆ PatchVer

uint8_t PatchVer

◆ MinorVer

uint8_t MinorVer

patch Version number refer HSMRT_PATCH_VER in TIFS Docs

◆ MajorVer

uint8_t MajorVer

HSMRt minor version number refer HSMRT_MINOR_VER in TIFS Docs

◆ ApiVer

uint8_t ApiVer

HSMRt major version number refer HSMRT_MAJOR_VER in TIFS Docs

◆ SocType

uint8_t SocType

HSMRt API version number refer HSMRT_APIS_VER in TIFS Docs

◆ BinType

uint8_t BinType

HSMRt Soc type ID refer HSMRT_SOC_TYPE in TIFS Docs

◆ HsmType

uint8_t HsmType

HSMRt Binary type ID refer HSMRT_BIN_TYPE in TIFS Docs

◆ DevType

uint8_t DevType

HSM Architecture version

◆ VerStruct

struct { ... } VerStruct

◆ dataIn

uint8_t* dataIn

Pointer to the data in shared memory.

◆ dataLen

uint32_t dataLen

Size of the data.

◆ canBeEncrypted

uint8_t canBeEncrypted

Whether this data could be encrypted or not.