54 #if (defined (SECURITY_OVER_CSEC))
56 #elif (defined (SECURITY_OVER_HSM))
57 #include "hsm_driver.h"
60 #if (defined (SECURITY_OVER_CSEC))
61 #define NO_OF_INSTS_FOR_SECURITY_PAL NO_OF_CSEC_INSTS_FOR_SECURITY
62 static bool g_bCsecStateIsAllocated[NO_OF_INSTS_FOR_SECURITY_PAL];
64 #elif (defined (SECURITY_OVER_HSM))
65 #define NO_OF_INSTS_FOR_SECURITY_PAL NO_OF_HSM_INSTS_FOR_SECURITY
66 static bool g_bHsmStateIsAllocated[NO_OF_INSTS_FOR_SECURITY_PAL];
79 uint32_t numberOfInst)
81 uint32_t counter = 0U;
83 for (counter = 0U; counter < numberOfInst; counter++)
85 if (
false == isAllocated[counter])
87 isAllocated[counter] =
true;
88 instList[counter] = instId;
105 uint32_t numberOfInst)
107 uint32_t counter = 0U;
109 for (counter = 0U; counter < numberOfInst; counter++)
111 if (instId == instList[counter])
113 isAllocated[counter] =
false;
130 uint32_t numberOfInst,
131 uint32_t * retInstId)
133 uint32_t counter = 0U;
135 for (counter = 0U; counter < numberOfInst; counter++)
137 if ((instId == instList[counter]) &&
138 (
true == isAllocated[counter]))
140 *retInstId = counter;
160 uint32_t stateInsts = 0U;
161 #if (defined (SECURITY_OVER_CSEC))
163 static csec_state_t s_tCsecState[NO_OF_INSTS_FOR_SECURITY_PAL];
177 #elif (defined (SECURITY_OVER_HSM))
179 static hsm_state_t s_tHsmState[NO_OF_INSTS_FOR_SECURITY_PAL];
191 status = HSM_DRV_Init(&s_tHsmState[stateInsts]);
198 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
214 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
218 #if (defined (SECURITY_OVER_CSEC))
226 #elif (defined (SECURITY_OVER_HSM))
228 status = HSM_DRV_Deinit();
253 const uint8_t *plainText,
258 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
262 #if (defined (SECURITY_OVER_CSEC))
265 #elif (defined (SECURITY_OVER_HSM))
267 status = HSM_DRV_EncryptECB((hsm_key_id_t)keyId, plainText, msgLen, cipherText, timeout);
283 const uint8_t *cipherText,
288 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
292 #if (defined (SECURITY_OVER_CSEC))
295 #elif (defined (SECURITY_OVER_HSM))
297 status = HSM_DRV_DecryptECB((hsm_key_id_t)keyId, cipherText, msgLen, plainText, timeout);
313 const uint8_t *plainText,
319 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
323 #if (defined (SECURITY_OVER_CSEC))
326 #elif (defined (SECURITY_OVER_HSM))
328 status = HSM_DRV_EncryptCBC((hsm_key_id_t)keyId, plainText, msgLen, iv, cipherText, timeout);
344 const uint8_t *cipherText,
350 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
354 #if (defined (SECURITY_OVER_CSEC))
357 #elif (defined (SECURITY_OVER_HSM))
359 status = HSM_DRV_DecryptCBC((hsm_key_id_t)keyId, cipherText, msgLen, iv, plainText, timeout);
379 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
380 #if (defined (SECURITY_OVER_CSEC))
386 #if (defined (SECURITY_OVER_CSEC))
389 #elif (defined (SECURITY_OVER_HSM))
391 status = HSM_DRV_GenerateMAC((hsm_key_id_t)keyId, msg, msgLen, cmac, timeout);
413 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
414 #if (defined (SECURITY_OVER_CSEC))
420 #if (defined (SECURITY_OVER_CSEC))
423 #elif (defined (SECURITY_OVER_HSM))
425 status = HSM_DRV_VerifyMAC((hsm_key_id_t)keyId, msg, msgLen, mac, macLen, verifStatus, timeout);
447 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
451 #if (defined (SECURITY_OVER_CSEC))
455 #elif (defined (SECURITY_OVER_HSM))
457 status = HSM_DRV_LoadKey((hsm_key_id_t)keyId, m1, m2, m3, m4, m5, timeout);
471 const uint8_t *plainKey,
474 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
478 #if (defined (SECURITY_OVER_CSEC))
482 #elif (defined (SECURITY_OVER_HSM))
484 status = HSM_DRV_LoadPlainKey(plainKey, timeout);
505 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
509 #if (defined (SECURITY_OVER_CSEC))
513 #elif (defined (SECURITY_OVER_HSM))
515 status = HSM_DRV_ExportRAMKey(m1, m2, m3, m4, m5, timeout);
529 const uint8_t *entropy,
532 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
536 #if (defined (SECURITY_OVER_CSEC))
540 #elif (defined (SECURITY_OVER_HSM))
542 status = HSM_DRV_ExtendSeed(entropy, timeout);
558 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
562 #if (defined (SECURITY_OVER_CSEC))
566 #elif (defined (SECURITY_OVER_HSM))
568 status = HSM_DRV_InitRNG(timeout);
585 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
589 #if (defined (SECURITY_OVER_CSEC))
593 #elif (defined (SECURITY_OVER_HSM))
595 status = HSM_DRV_GenerateRND(rnd, timeout);
610 const uint8_t *challenge,
616 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
620 #if (defined (SECURITY_OVER_CSEC))
624 #elif (defined (SECURITY_OVER_HSM))
626 status = HSM_DRV_GetID(challenge, uid, sreg, mac, timeout);
641 uint32_t bootImageSize,
642 const uint8_t *bootImagePtr,
645 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
649 #if (defined (SECURITY_OVER_CSEC))
655 #elif (defined (SECURITY_OVER_HSM))
657 status = HSM_DRV_SecureBoot(bootImageSize, bootImagePtr, timeout);
674 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
678 #if (defined (SECURITY_OVER_CSEC))
682 #elif (defined (SECURITY_OVER_HSM))
684 status = HSM_DRV_BootFailure(timeout);
701 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
705 #if (defined (SECURITY_OVER_CSEC))
709 #elif (defined (SECURITY_OVER_HSM))
711 status = HSM_DRV_BootOK(timeout);
730 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
734 #if (defined (SECURITY_OVER_CSEC))
738 #elif (defined (SECURITY_OVER_HSM))
762 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
766 #if (defined (SECURITY_OVER_CSEC))
770 #elif (defined (SECURITY_OVER_HSM))
772 status = HSM_DRV_DbgChal(challenge, timeout);
787 const uint8_t *authorization,
790 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
794 #if (defined (SECURITY_OVER_CSEC))
798 #elif (defined (SECURITY_OVER_HSM))
800 status = HSM_DRV_DbgAuth(authorization, timeout);
821 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
822 #if (defined (SECURITY_OVER_CSEC) || defined (SECURITY_OVER_HSM))
828 #if (defined (SECURITY_OVER_CSEC))
831 #elif (defined (SECURITY_OVER_HSM))
833 status = HSM_DRV_MPCompress(msg, (uint16_t)msgLen, mpCompress, timeout);
850 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
854 #if (defined (SECURITY_OVER_CSEC))
859 #elif (defined (SECURITY_OVER_HSM))
861 status = HSM_DRV_GenerateTRND(trnd, timeout);
876 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
880 #if (defined (SECURITY_OVER_CSEC))
884 #elif (defined (SECURITY_OVER_HSM))
886 status = HSM_DRV_CancelCommand();
901 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
905 #if (defined (SECURITY_OVER_CSEC))
908 #elif (defined (SECURITY_OVER_HSM))
910 status = HSM_DRV_GetAsyncCmdStatus();
926 const uint8_t *plainText,
930 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
934 #if (defined (SECURITY_OVER_CSEC))
937 #elif (defined (SECURITY_OVER_HSM))
939 status = HSM_DRV_EncryptECBAsync((hsm_key_id_t)keyId, plainText, msgLen, cipherText);
955 const uint8_t *cipherText,
959 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
963 #if (defined (SECURITY_OVER_CSEC))
966 #elif (defined (SECURITY_OVER_HSM))
968 status = HSM_DRV_DecryptECBAsync((hsm_key_id_t)keyId, cipherText, msgLen, plainText);
984 const uint8_t *plainText,
989 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
993 #if (defined (SECURITY_OVER_CSEC))
996 #elif (defined (SECURITY_OVER_HSM))
998 status = HSM_DRV_EncryptCBCAsync((hsm_key_id_t)keyId, plainText, msgLen, iv, cipherText);
1014 const uint8_t *cipherText,
1019 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
1023 #if (defined (SECURITY_OVER_CSEC))
1026 #elif (defined (SECURITY_OVER_HSM))
1028 status = HSM_DRV_DecryptCBCAsync((hsm_key_id_t)keyId, cipherText, msgLen, iv, plainText);
1048 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
1049 #if (defined (SECURITY_OVER_CSEC))
1055 #if (defined (SECURITY_OVER_CSEC))
1058 #elif (defined (SECURITY_OVER_HSM))
1060 status = HSM_DRV_GenerateMACAsync((hsm_key_id_t)keyId, msg, msgLen, cmac);
1082 DEV_ASSERT((uint32_t)NO_OF_INSTS_FOR_SECURITY_PAL > ((uint32_t)instance));
1083 #if (defined (SECURITY_OVER_CSEC))
1089 #if (defined (SECURITY_OVER_CSEC))
1092 #elif (defined (SECURITY_OVER_HSM))
1094 status = HSM_DRV_VerifyMACAsync((hsm_key_id_t)keyId, msg, msgLen, mac, macLen, verifStatus);
status_t CSEC_DRV_LoadPlainKey(const uint8_t *plainKey)
Updates the RAM key memory slot with a 128-bit plaintext.
status_t CSEC_DRV_GetAsyncCmdStatus(void)
Checks the status of the execution of an asynchronous command.
status_t SECURITY_CancelCommand(security_instance_t instance)
Cancel Command.
status_t SECURITY_LoadKey(security_instance_t instance, security_key_id_t keyId, const uint8_t *m1, const uint8_t *m2, const uint8_t *m3, uint8_t *m4, uint8_t *m5, uint32_t timeout)
Load Key.
status_t SECURITY_ExtendSeed(security_instance_t instance, const uint8_t *entropy, uint32_t timeout)
Initialize Random Number Generator.
void CSEC_DRV_InstallCallback(security_callback_t callbackFunc, void *callbackParam)
Installs a callback function which will be invoked when an asynchronous command finishes its executio...
Define user configuration Implements : security_user_config_t_Class.
status_t SECURITY_DecryptEcb(security_instance_t instance, security_key_id_t keyId, const uint8_t *cipherText, uint32_t msgLen, uint8_t *plainText)
Decrypt ECB.
status_t SECURITY_GenerateMacBlocking(security_instance_t instance, security_key_id_t keyId, const uint8_t *msg, uint64_t msgLen, uint8_t *cmac, uint32_t timeout)
MAC Generation.
status_t CSEC_DRV_GetID(const uint8_t *challenge, uint8_t *uid, uint8_t *sreg, uint8_t *mac)
Returns the identity (UID) and the value of the status register protected by a MAC over a challenge a...
Internal driver state information.
status_t CSEC_DRV_DecryptCBC(csec_key_id_t keyId, const uint8_t *cipherText, uint32_t length, const uint8_t *iv, uint8_t *plainText, uint32_t timeout)
Performs the AES-128 decryption in CBC mode.
status_t SECURITY_GenerateMac(security_instance_t instance, security_key_id_t keyId, const uint8_t *msg, uint64_t msgLen, uint8_t *cmac)
Generate MAC.
void CSEC_DRV_Init(csec_state_t *state)
Initializes the internal state of the driver and enables the FTFC interrupt.
status_t CSEC_DRV_DbgAuth(const uint8_t *authorization)
Erases all keys (actual and outdated) stored in NVM Memory if the authorization is confirmed by CSEc...
status_t CSEC_DRV_VerifyMACAsync(csec_key_id_t keyId, const uint8_t *msg, uint32_t msgLen, const uint8_t *mac, uint16_t macLen, bool *verifStatus)
Asynchronously verifies the MAC of a given message using CMAC with AES-128.
static status_t SecurityFreeInstance(bool *isAllocated, const security_instance_t *instList, security_instance_t instId, uint32_t numberOfInst)
status_t SECURITY_EncryptCbc(security_instance_t instance, security_key_id_t keyId, const uint8_t *plainText, uint32_t msgLen, const uint8_t *iv, uint8_t *cipherText)
Encrypt CBC.
csec_key_id_t
Specify the KeyID to be used to implement the requested cryptographic operation.
status_t CSEC_DRV_BootOK(void)
Marks a successful boot verification during later stages of the boot process.
status_t SECURITY_DbgChal(security_instance_t instance, uint8_t *challenge, uint32_t timeout)
Debug Challenge.
status_t SECURITY_BootFailure(security_instance_t instance, uint32_t timeout)
Boot Failure.
status_t CSEC_DRV_EncryptCBCAsync(csec_key_id_t keyId, const uint8_t *plainText, uint32_t length, const uint8_t *iv, uint8_t *cipherText)
Asynchronously performs the AES-128 encryption in CBC mode.
status_t CSEC_DRV_VerifyMAC(csec_key_id_t keyId, const uint8_t *msg, uint32_t msgLen, const uint8_t *mac, uint16_t macLen, bool *verifStatus, uint32_t timeout)
Verifies the MAC of a given message using CMAC with AES-128.
status_t CSEC_DRV_InitRNG(void)
Initializes the seed and derives a key for the PRNG.
security_boot_flavor_t
Defines the security boot flavor Implements : security_boot_flavor_t_Class.
status_t CSEC_DRV_ExtendSeed(const uint8_t *entropy)
Extends the seed of the PRNG.
status_t CSEC_DRV_EncryptECB(csec_key_id_t keyId, const uint8_t *plainText, uint32_t length, uint8_t *cipherText, uint32_t timeout)
Performs the AES-128 encryption in ECB mode.
static status_t SecurityGetInstance(const bool *isAllocated, const security_instance_t *instList, security_instance_t instId, uint32_t numberOfInst, uint32_t *retInstId)
status_t CSEC_DRV_BootFailure(void)
Signals a failure detected during later stages of the boot process.
status_t CSEC_DRV_DecryptECBAsync(csec_key_id_t keyId, const uint8_t *cipherText, uint32_t length, uint8_t *plainText)
Asynchronously performs the AES-128 decryption in ECB mode.
static status_t SecurityAllocateInstance(bool *isAllocated, security_instance_t *instList, security_instance_t instId, uint32_t numberOfInst)
status_t SECURITY_EncryptEcb(security_instance_t instance, security_key_id_t keyId, const uint8_t *plainText, uint32_t msgLen, uint8_t *cipherText)
Encrypt ECB.
status_t SECURITY_DecryptCbc(security_instance_t instance, security_key_id_t keyId, const uint8_t *cipherText, uint32_t msgLen, const uint8_t *iv, uint8_t *plainText)
Decrypt CBC.
status_t CSEC_DRV_EncryptECBAsync(csec_key_id_t keyId, const uint8_t *plainText, uint32_t length, uint8_t *cipherText)
Asynchronously performs the AES-128 encryption in ECB mode.
status_t CSEC_DRV_DecryptECB(csec_key_id_t keyId, const uint8_t *cipherText, uint32_t length, uint8_t *plainText, uint32_t timeout)
Performs the AES-128 decryption in ECB mode.
status_t SECURITY_DecryptEcbBlocking(security_instance_t instance, security_key_id_t keyId, const uint8_t *cipherText, uint32_t msgLen, uint8_t *plainText, uint32_t timeout)
ECB Decryption.
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
status_t CSEC_DRV_EncryptCBC(csec_key_id_t keyId, const uint8_t *plainText, uint32_t length, const uint8_t *iv, uint8_t *cipherText, uint32_t timeout)
Performs the AES-128 encryption in CBC mode.
status_t SECURITY_ExportRamKey(security_instance_t instance, uint8_t *m1, uint8_t *m2, uint8_t *m3, uint8_t *m4, uint8_t *m5, uint32_t timeout)
Export RAM key.
status_t SECURITY_Deinit(security_instance_t instance)
De-initializes the SECURITY module.
void CSEC_DRV_Deinit(void)
Clears the internal state of the driver and disables the FTFC interrupt.
status_t SECURITY_EncryptCbcBlocking(security_instance_t instance, security_key_id_t keyId, const uint8_t *plainText, uint32_t msgLen, const uint8_t *iv, uint8_t *cipherText, uint32_t timeout)
CBC Decryption.
status_t SECURITY_LoadPlainKey(security_instance_t instance, const uint8_t *plainKey, uint32_t timeout)
Load Plain Key.
status_t SECURITY_VerifyMacBlocking(security_instance_t instance, security_key_id_t keyId, const uint8_t *msg, uint64_t msgLen, const uint8_t *mac, uint16_t macLen, bool *verifStatus, uint32_t timeout)
MAC Verification.
status_t CSEC_DRV_LoadKey(csec_key_id_t keyId, const uint8_t *m1, const uint8_t *m2, const uint8_t *m3, uint8_t *m4, uint8_t *m5)
Updates an internal key per the SHE specification.
security_callback_t callback
security_key_id_t
Defines the security keys Implements : security_key_id_t_Class.
status_t CSEC_DRV_MPCompress(const uint8_t *msg, uint16_t msgLen, uint8_t *mpCompress, uint32_t timeout)
Compresses the given messages by accessing the Miyaguchi-Prenell compression feature with in the CSEc...
void CSEC_DRV_CancelCommand(void)
Cancels a previously launched asynchronous command.
status_t SECURITY_VerifyMac(security_instance_t instance, security_key_id_t keyId, const uint8_t *msg, uint64_t msgLen, const uint8_t *mac, uint16_t macLen, bool *verifStatus)
Verify MAC.
csec_boot_flavor_t
Specifies the boot type for the BOOT_DEFINE command.
status_t SECURITY_SecureBoot(security_instance_t instance, uint32_t bootImageSize, const uint8_t *bootImagePtr, uint32_t timeout)
Secure boot.
status_t CSEC_DRV_DecryptCBCAsync(csec_key_id_t keyId, const uint8_t *cipherText, uint32_t length, const uint8_t *iv, uint8_t *plainText)
Asynchronously performs the AES-128 decryption in CBC mode.
status_t SECURITY_MPCompress(security_instance_t instance, const uint8_t *msg, uint32_t msgLen, uint8_t *mpCompress, uint32_t timeout)
Miyaguchi-Prenell Compression.
status_t SECURITY_Init(security_instance_t instance, const security_user_config_t *config)
Initializes the SECURITY module.
status_t SECURITY_GenerateTrnd(security_instance_t instance, uint8_t *trnd, uint32_t timeout)
Generate True Random Number.
status_t CSEC_DRV_ExportRAMKey(uint8_t *m1, uint8_t *m2, uint8_t *m3, uint8_t *m4, uint8_t *m5)
Exports the RAM_KEY into a format protected by SECRET_KEY.
status_t SECURITY_BootDefine(security_instance_t instance, uint32_t bootSize, security_boot_flavor_t bootFlavor, uint32_t timeout)
Boot Define.
status_t CSEC_DRV_GenerateRND(uint8_t *rnd)
Generates a vector of 128 random bits.
status_t CSEC_DRV_GenerateMAC(csec_key_id_t keyId, const uint8_t *msg, uint32_t msgLen, uint8_t *cmac, uint32_t timeout)
Calculates the MAC of a given message using CMAC with AES-128.
status_t SECURITY_EncryptEcbBlocking(security_instance_t instance, security_key_id_t keyId, const uint8_t *plainText, uint32_t msgLen, uint8_t *cipherText, uint32_t timeout)
ECB Encryption.
status_t SECURITY_DecryptCbcBlocking(security_instance_t instance, security_key_id_t keyId, const uint8_t *cipherText, uint32_t msgLen, const uint8_t *iv, uint8_t *plainText, uint32_t timeout)
CBC Decryption.
status_t SECURITY_GenerateRnd(security_instance_t instance, uint8_t *rnd, uint32_t timeout)
Generate RND.
status_t CSEC_DRV_DbgChal(uint8_t *challenge)
Obtains a random number which the user shall use along with the MASTER_ECU_KEY and UID to return an a...
status_t SECURITY_GetAsyncCmdStatus(security_instance_t instance)
Get asynchronous command status.
status_t SECURITY_DbgAuth(security_instance_t instance, const uint8_t *authorization, uint32_t timeout)
Debug Authentification.
security_instance_t
Define instances for SECURITY PAL Implements : security_instance_t_Class.
status_t CSEC_DRV_BootDefine(uint32_t bootSize, csec_boot_flavor_t bootFlavor)
Implements an extension of the SHE standard to define both the user boot size and boot method...
status_t SECURITY_BootOk(security_instance_t instance, uint32_t timeout)
Boot Ok.
status_t SECURITY_GetId(security_instance_t instance, const uint8_t *challenge, uint8_t *uid, uint8_t *sreg, uint8_t *mac, uint32_t timeout)
Get ID.
status_t CSEC_DRV_GenerateMACAsync(csec_key_id_t keyId, const uint8_t *msg, uint32_t msgLen, uint8_t *cmac)
Asynchronously calculates the MAC of a given message using CMAC with AES-128.
status_t SECURITY_InitRng(security_instance_t instance, uint32_t timeout)
Initialize Random Number Generator.