58 #include <ti/devices/DeviceFamily.h> 92 #include <ti/drivers/dpl/SemaphoreP.h> 94 #include <third_party/hsmddk/include/Kit/EIP130/TokenHelper/incl/eip130_token_common.h> 102 #define HSMXXF3_STATUS_SUCCESS ((int_fast16_t)0) 110 #define HSMXXF3_STATUS_ERROR ((int_fast16_t)-1) 119 #define HSMXXF3_STATUS_TIMEOUT ((int_fast16_t)-2) 128 #define HSMXXF3_STATUS_IN_SLEEP_MODE ((int_fast16_t)-3) 136 #define HSMXXF3_STATUS_RESOURCE_UNAVAILABLE ((int_fast16_t)-4) 139 #define HSMXXF3_LAES_COPROCESSOR_ID 0x1 144 #define HSMXXF3_RNG_CONFG_TRNG_DEFAULT_AUTOSEED 0xFF 145 #define HSMXXF3_RNG_CONFG_TRNG_DEFAULT_SAMPLE_CYCLE 0x4BBE 146 #define HSMXXF3_RNG_CONFG_TRNG_MAX_SAMPLE_CYCLE 0x00 147 #define HSMXXF3_RNG_CONFG_DEFAULT_NOISEBLOCKS 0x01 148 #define HSMXXF3_RNG_CONFG_TRNG_DEFAULT_SCALE 0x01 149 #define HSMXXF3_RNG_CONFG_TRNG_DEFAULT_SAMPLEDIV 0x00 150 #define HSMXXF3_RNG_CONFG_TRNG_DEFAULT_REPCNTCUTOFF 0x09 151 #define HSMXXF3_RNG_CONFG_TRNG_DEFAULT_ADAPTPROP64CUTOFF 0x15 152 #define HSMXXF3_RNG_CONFG_TRNG_DEFAULT_ADAPTPROP512CUTOFF 0x47 155 #define HSMXXF3_RNG_CONFG_CRNG_DEFAULT_AUTOSEED 0x1 156 #define HSMXXF3_RNG_CONFG_CRNG_DEFAULT_MIXCYCLE 0x2 158 #define HSMXXF3_RETVAL_MASK MASK_8_BITS 160 #if (DeviceFamily_PARENT == DeviceFamily_PARENT_CC35XX) 162 #define PowerLPF3_ENTERING_STANDBY PowerWFF3_ENTERING_SLEEP 163 #define PowerLPF3_AWAKE_STANDBY PowerWFF3_AWAKE_SLEEP 164 #define PowerLPF3_DISALLOW_STANDBY PowerWFF3_DISALLOW_SLEEP 172 HSMXXF3_MODE_CRNG = 1,
173 HSMXXF3_MODE_TRNG = 2,
193 HSMXXF3_RETURN_BEHAVIOR_CALLBACK = 1,
200 HSMXXF3_RETURN_BEHAVIOR_BLOCKING = 2,
206 HSMXXF3_RETURN_BEHAVIOR_POLLING = 4,
212 } HSMXXF3_ReturnBehavior;
221 typedef void (*HSMXXF3_CallbackFxn)(uintptr_t arg0);
232 Eip130Token_Command_t commandToken;
233 Eip130Token_Result_t resultToken;
234 HSMXXF3_ReturnBehavior returnBehavior;
235 HSMXXF3_CallbackFxn callbackFxn;
236 uintptr_t driverHandle;
250 void HSMXXF3_constructRTOSObjects(
void);
258 void HSMXXF3_disableClock(
void);
275 int_fast16_t HSMXXF3_sleep(
void);
290 int_fast16_t HSMXXF3_wakeUp(
void);
307 int_fast16_t HSMXXF3_init(
void);
319 bool HSMXXF3_isStandaloneDMASupportEnabled(
void);
330 int_fast16_t HSMXXF3_provisionHUK(
void);
349 bool HSMXXF3_acquireLock(uint32_t timeout, uintptr_t driverHandle);
359 void HSMXXF3_releaseLock(
void);
384 int_fast16_t HSMXXF3_submitToken(HSMXXF3_ReturnBehavior retBehavior,
385 HSMXXF3_CallbackFxn callbackFxn,
386 uintptr_t driverHandle);
402 int_fast16_t HSMXXF3_waitForResult(
void);
413 int_fast16_t HSMXXF3_cancelOperation(
void);
421 bool HSMXXF3_isOperationInProgress(
void);
428 HSMXXF3_NRBGMode HSMXXF3_getCurrentNRBGMode(
void);
436 void HSMXXF3_updateInternalNRBGMode();
450 int32_t HSMXXF3_getResultCode(
void);
460 uint32_t HSMXXF3_getResultAssetID(
void);
469 void HSMXXF3_getResultDigest(uint8_t *digest,
size_t digestLength);
477 void HSMXXF3_getAESEncryptTag(
void *mac,
size_t macLength);
484 void HSMXXF3_getAESIV(uint8_t *iv);
492 void HSMXXF3_getAESCMACSignMac(uint8_t *mac, uint8_t macLength);
501 void HSMXXF3_getPublicDataRead(uint32_t assetId,
const uint8_t *data, uint8_t dataLength);
514 void HSMXXF3_constructCreateAssetToken(uint64_t assetPolicy, uint32_t assetLength);
528 void HSMXXF3_constructLoadPlaintextAssetToken(
const uint8_t *input_p,
const uint32_t inputLength, uint32_t assetId);
537 void HSMXXF3_constructDeleteAssetToken(uint32_t assetId);
555 int_fast16_t HSMXXF3_constructExportAssetCopToken(uint32_t assetId, uint16_t copID, uint16_t copOffset);
566 void HSMXXF3_constructSHA2PhysicalToken(SHA2XXF3HSM_Object *
object);
617 void HSMXXF3_constructEDDSAIntermediateHashPhysicalToken(
const uint8_t *input,
619 uint32_t tempAssetID);
665 void HSMXXF3_constructCCMToken(
const AESCCMXXF3_Object *
object,
bool saveIV,
bool loadIV);
673 void HSMXXF3_constructAESECBOneStepPhysicalToken(
AESECBXXF3_Object *
object, uint8_t *key);
681 void HSMXXF3_constructAESCTROneStepPhysicalToken(
AESCTRXXF3_Object *
object, uint8_t *key);
689 void HSMXXF3_constructAESCBCOneStepPhysicalToken(
AESCBCXXF3_Object *
object, uint8_t *key);
698 void HSMXXF3_constructCMACToken(
AESCMACXXF3_Object *
object,
bool isFirst,
bool isFinal);
700 #if (DeviceFamily_PARENT == DeviceFamily_PARENT_CC27XX) 706 void HSMXXF3_constructRNGSwitchNRBGWithDefaultsPhysicalToken(HSMXXF3_NRBGMode HSMXXF3_nrbgMode);
712 void HSMXXF3_constructRNGReseedDRBGPhysicalToken(
void);
721 void HSMXXF3_constructRNGGetRandomNumberPhysicalToken(uintptr_t entropyBuffer,
size_t entropyRequested);
729 void HSMXXF3_constructRNGGetRawRandomNumberPhysicalToken(uintptr_t entropyBuffer,
size_t entropyRequested);
TI Driver for Elliptic Curve Digital Signature Algorithm.
AESCCM driver implementation for the Low Power F3 family.
The CryptoKey type is an opaque representation of a cryptographic key.
AESCBCXXF3 Object.
Definition: AESCBCXXF3.h:90
AESCCMXXF3 Object.
Definition: AESCCMXXF3.h:105
TRNG driver implementation for CC27XX and CC35XX device families.
TI Driver for Edwards Curve Digital Signature Algorithm.
ECDSAXXF3HSM Object.
Definition: ECDSAXXF3HSM.h:115
AESCTR driver implementation for the Low Power F3 family.
TI Driver for Elliptic Curve Diffie-Hellman key agreement scheme.
AESGCMXXF3HSM Object.
Definition: AESGCMXXF3HSM.h:97
AESCTRXXF3 Object.
Definition: AESCTRXXF3.h:134
AESECB driver implementation for the Low Power F3 family.
AESCMAC (CMAC and CBC-MAC) driver header.
ECDSA HSM IP driver implementation for the Low Power F3 family.
AESCMACXXF3 Object.
Definition: AESCMACXXF3.h:128
EDDSAXXF3HSM Object.
Definition: EDDSAXXF3HSM.h:108
AESCBC driver implementation for the Low Power F3 devices.
AESECBXXF3 Object.
Definition: AESECBXXF3.h:109
ECDHXXF3HSM Object.
Definition: ECDHXXF3HSM.h:125
AESGCM driver implementation for the Low Power F3 family.
AESCMAC (CMAC & CBC-MAC) driver implementation for the Low Power F3 family.
EdDSA driver implementation for the CC27XX and CC35XX family.