58 #include <ti/devices/DeviceFamily.h> 62 #if (DeviceFamily_PARENT == DeviceFamily_PARENT_CC27XX) 94 #include <ti/drivers/dpl/SemaphoreP.h> 96 #include <third_party/hsmddk/include/Kit/EIP130/TokenHelper/incl/eip130_token_common.h> 104 #define HSMLPF3_STATUS_SUCCESS ((int_fast16_t)0) 112 #define HSMLPF3_STATUS_ERROR ((int_fast16_t)-1) 121 #define HSMLPF3_STATUS_TIMEOUT ((int_fast16_t)-2) 130 #define HSMLPF3_STATUS_IN_SLEEP_MODE ((int_fast16_t)-3) 138 #define HSMLPF3_STATUS_RESOURCE_UNAVAILABLE ((int_fast16_t)-4) 143 #define HSMLPF3_RNG_CONFG_TRNG_DEFAULT_AUTOSEED 0xFF 144 #define HSMLPF3_RNG_CONFG_TRNG_DEFAULT_SAMPLE_CYCLE 0x4BBE 145 #define HSMLPF3_RNG_CONFG_TRNG_MAX_SAMPLE_CYCLE 0x00 146 #define HSMLPF3_RNG_CONFG_DEFAULT_NOISEBLOCKS 0x01 147 #define HSMLPF3_RNG_CONFG_TRNG_DEFAULT_SCALE 0x01 148 #define HSMLPF3_RNG_CONFG_TRNG_DEFAULT_SAMPLEDIV 0x00 149 #define HSMLPF3_RNG_CONFG_TRNG_DEFAULT_REPCNTCUTOFF 0x09 150 #define HSMLPF3_RNG_CONFG_TRNG_DEFAULT_ADAPTPROP64CUTOFF 0x15 151 #define HSMLPF3_RNG_CONFG_TRNG_DEFAULT_ADAPTPROP512CUTOFF 0x47 154 #define HSMLPF3_RNG_CONFG_CRNG_DEFAULT_AUTOSEED 0x1 155 #define HSMLPF3_RNG_CONFG_CRNG_DEFAULT_MIXCYCLE 0x2 157 #define HSMLPF3_RETVAL_MASK MASK_8_BITS 159 #if (DeviceFamily_PARENT == DeviceFamily_PARENT_CC35XX) 161 #define PowerLPF3_ENTERING_STANDBY PowerWFF3_ENTERING_SLEEP 162 #define PowerLPF3_AWAKE_STANDBY PowerWFF3_AWAKE_SLEEP 163 #define PowerLPF3_DISALLOW_STANDBY PowerWFF3_DISALLOW_SLEEP 171 HSMLPF3_MODE_CRNG = 1,
172 HSMLPF3_MODE_TRNG = 2,
192 HSMLPF3_RETURN_BEHAVIOR_CALLBACK = 1,
199 HSMLPF3_RETURN_BEHAVIOR_BLOCKING = 2,
205 HSMLPF3_RETURN_BEHAVIOR_POLLING = 4,
211 } HSMLPF3_ReturnBehavior;
220 typedef void (*HSMLPF3_CallbackFxn)(uintptr_t arg0);
231 Eip130Token_Command_t commandToken;
232 Eip130Token_Result_t resultToken;
233 HSMLPF3_ReturnBehavior returnBehavior;
234 HSMLPF3_CallbackFxn callbackFxn;
235 uintptr_t driverHandle;
249 void HSMLPF3_constructRTOSObjects(
void);
257 void HSMLPF3_disableClock(
void);
274 int_fast16_t HSMLPF3_sleep(
void);
289 int_fast16_t HSMLPF3_wakeUp(
void);
306 int_fast16_t HSMLPF3_init(
void);
317 int_fast16_t HSMLPF3_provisionHUK(
void);
336 bool HSMLPF3_acquireLock(uint32_t timeout, uintptr_t driverHandle);
346 void HSMLPF3_releaseLock(
void);
371 int_fast16_t HSMLPF3_submitToken(HSMLPF3_ReturnBehavior retBehavior,
372 HSMLPF3_CallbackFxn callbackFxn,
373 uintptr_t driverHandle);
389 int_fast16_t HSMLPF3_waitForResult(
void);
400 int_fast16_t HSMLPF3_cancelOperation(
void);
408 bool HSMLPF3_isOperationInProgress(
void);
415 HSMLPF3_NRBGMode HSMLPF3_getCurrentNRBGMode(
void);
423 void HSMLPF3_updateInternalNRBGMode();
437 int32_t HSMLPF3_getResultCode(
void);
447 uint32_t HSMLPF3_getResultAssetID(
void);
456 void HSMLPF3_getResultDigest(uint8_t *digest,
size_t digestLength);
464 void HSMLPF3_getAESEncryptTag(
void *mac,
size_t macLength);
471 void HSMLPF3_getAESIV(uint8_t *iv);
479 void HSMLPF3_getAESCMACSignMac(uint8_t *mac, uint8_t macLength);
488 void HSMLPF3_getPublicDataRead(uint32_t assetId,
const uint8_t *data, uint8_t dataLength);
501 void HSMLPF3_constructCreateAssetToken(uint64_t assetPolicy, uint32_t assetLength);
515 void HSMLPF3_constructLoadPlaintextAssetToken(
const uint8_t *input_p,
const uint32_t inputLength, uint32_t assetId);
524 void HSMLPF3_constructDeleteAssetToken(uint32_t assetId);
535 void HSMLPF3_constructSHA2PhysicalToken(SHA2LPF3HSM_Object *
object);
565 #if (DeviceFamily_PARENT == DeviceFamily_PARENT_CC27XX) 587 void HSMLPF3_constructEDDSAIntermediateHashPhysicalToken(
const uint8_t *input,
589 uint32_t tempAssetID);
636 void HSMLPF3_constructCCMToken(
const AESCCMLPF3_Object *
object,
bool saveIV,
bool loadIV);
644 void HSMLPF3_constructAESECBOneStepPhysicalToken(
AESECBLPF3_Object *
object, uint8_t *key);
652 void HSMLPF3_constructAESCTROneStepPhysicalToken(
AESCTRLPF3_Object *
object, uint8_t *key);
660 void HSMLPF3_constructAESCBCOneStepPhysicalToken(
AESCBCLPF3_Object *
object, uint8_t *key);
669 void HSMLPF3_constructCMACToken(
AESCMACLPF3_Object *
object,
bool isFirst,
bool isFinal);
671 #if (DeviceFamily_PARENT == DeviceFamily_PARENT_CC27XX) 677 void HSMLPF3_constructRNGSwitchNRBGWithDefaultsPhysicalToken(HSMLPF3_NRBGMode HSMLPF3_nrbgMode);
683 void HSMLPF3_constructRNGReseedDRBGPhysicalToken(
void);
692 void HSMLPF3_constructRNGGetRandomNumberPhysicalToken(uintptr_t entropyBuffer,
size_t entropyRequested);
700 void HSMLPF3_constructRNGGetRawRandomNumberPhysicalToken(uintptr_t entropyBuffer,
size_t entropyRequested);
TI Driver for Elliptic Curve Digital Signature Algorithm.
The CryptoKey type is an opaque representation of a cryptographic key.
ECDSALPF3HSM Object.
Definition: ECDSALPF3HSM.h:115
TRNG driver implementation for CC27XX and CC35XX device families.
ECDHLPF3HSM Object.
Definition: ECDHLPF3HSM.h:125
AESCMACLPF3 Object.
Definition: AESCMACLPF3.h:128
AESGCM driver implementation for the Low Power F3 family.
TI Driver for Edwards Curve Digital Signature Algorithm.
AESCTRLPF3 Object.
Definition: AESCTRLPF3.h:138
AESCCMLPF3 Object.
Definition: AESCCMLPF3.h:109
TI Driver for Elliptic Curve Diffie-Hellman key agreement scheme.
AESCCM driver implementation for the Low Power F3 family.
AESECB driver implementation for the Low Power F3 family.
EDDSALPF3HSM Object.
Definition: EDDSALPF3HSM.h:108
AESGCMLPF3HSM Object.
Definition: AESGCMLPF3HSM.h:101
AESECBLPF3 Object.
Definition: AESECBLPF3.h:113
ECDSA HSM IP driver implementation for the Low Power F3 family.
AESCMAC (CMAC and CBC-MAC) driver header.
AESCBC driver implementation for the Low Power F3 devices.
AESCMAC (CMAC & CBC-MAC) driver implementation for the Low Power F3 family.
AESCBCLPF3 Object.
Definition: AESCBCLPF3.h:94
EdDSA driver implementation for the CC27XX family.
AESCTR driver implementation for the Low Power F3 family.