48 #undef CRYPTOAesLoadKey
49 #define CRYPTOAesLoadKey NOROM_CRYPTOAesLoadKey
51 #define CRYPTOAesCbc NOROM_CRYPTOAesCbc
52 #undef CRYPTOAesCbcStatus
53 #define CRYPTOAesCbcStatus NOROM_CRYPTOAesCbcStatus
55 #define CRYPTOAesEcb NOROM_CRYPTOAesEcb
56 #undef CRYPTOAesEcbStatus
57 #define CRYPTOAesEcbStatus NOROM_CRYPTOAesEcbStatus
58 #undef CRYPTOCcmAuthEncrypt
59 #define CRYPTOCcmAuthEncrypt NOROM_CRYPTOCcmAuthEncrypt
60 #undef CRYPTOCcmAuthEncryptStatus
61 #define CRYPTOCcmAuthEncryptStatus NOROM_CRYPTOCcmAuthEncryptStatus
62 #undef CRYPTOCcmAuthEncryptResultGet
63 #define CRYPTOCcmAuthEncryptResultGet NOROM_CRYPTOCcmAuthEncryptResultGet
64 #undef CRYPTOCcmInvAuthDecrypt
65 #define CRYPTOCcmInvAuthDecrypt NOROM_CRYPTOCcmInvAuthDecrypt
66 #undef CRYPTOCcmInvAuthDecryptStatus
67 #define CRYPTOCcmInvAuthDecryptStatus NOROM_CRYPTOCcmInvAuthDecryptStatus
68 #undef CRYPTOCcmInvAuthDecryptResultGet
69 #define CRYPTOCcmInvAuthDecryptResultGet NOROM_CRYPTOCcmInvAuthDecryptResultGet
70 #undef CRYPTODmaEnable
71 #define CRYPTODmaEnable NOROM_CRYPTODmaEnable
72 #undef CRYPTODmaDisable
73 #define CRYPTODmaDisable NOROM_CRYPTODmaDisable
91 uint32_t ui32KeyLocation)
207 CRYPTOAesCbc(uint32_t *pui32MsgIn, uint32_t *pui32MsgOut, uint32_t ui32MsgLength,
208 uint32_t *pui32Nonce, uint32_t ui32KeyLocation,
209 bool bEncrypt,
bool bIntEnable)
211 uint32_t ui32CtrlVal;
352 uint32_t ui32KeyLocation,
bool bEncrypt,
512 uint32_t *pui32Nonce, uint32_t *pui32PlainText,
513 uint32_t ui32PlainTextLength, uint32_t *pui32Header,
514 uint32_t ui32HeaderLength, uint32_t ui32KeyLocation,
515 uint32_t ui32FieldLength,
bool bIntEnable)
517 uint32_t ui32CtrlVal;
519 uint32_t *pui32CipherText;
528 pui32CipherText = pui32PlainText;
581 ui8InitVec.b[0] = ui32FieldLength - 1;
582 for(i = 0; i < 12; i++)
584 ui8InitVec.b[i + 1] = ((uint8_t*)pui32Nonce)[i];
586 if(ui32FieldLength == 2)
588 ui8InitVec.b[13] = ((uint8_t*)pui32Nonce)[12];
592 ui8InitVec.b[13] = 0;
594 ui8InitVec.b[14] = 0;
595 ui8InitVec.b[15] = 0;
609 if ( ui32AuthLength >= 2 ) {
641 if(ui32HeaderLength != 0)
722 (uint32_t)pui32PlainText;
733 (uint32_t)pui32CipherText;
795 uint32_t
volatile ui32Tag[4];
822 for(ui32Idx = 0; ui32Idx < ui32TagLength ; ui32Idx++)
824 *((uint8_t*)pui32CcmTag + ui32Idx) = *((uint8_t*)ui32Tag + ui32Idx);
843 uint32_t *pui32Nonce, uint32_t *pui32CipherText,
844 uint32_t ui32CipherTextLength,
845 uint32_t *pui32Header, uint32_t ui32HeaderLength,
846 uint32_t ui32KeyLocation,
847 uint32_t ui32FieldLength,
bool bIntEnable)
849 uint32_t ui32CtrlVal;
851 uint32_t *pui32PlainText;
852 uint32_t ui32CryptoBlockLength;
861 pui32PlainText = pui32CipherText;
913 ui8InitVec.b[0] = ui32FieldLength - 1;
914 for(i = 0; i < 12; i++)
916 ui8InitVec.b[i + 1] = ((uint8_t*)pui32Nonce)[i];
918 if(ui32FieldLength == 2)
920 ui8InitVec.b[13] = ((uint8_t*)pui32Nonce)[12];
924 ui8InitVec.b[13] = 0;
926 ui8InitVec.b[14] = 0;
927 ui8InitVec.b[15] = 0;
940 ui32CryptoBlockLength = ui32CipherTextLength - ui32AuthLength;
942 if ( ui32AuthLength >= 2 ) {
974 if(ui32HeaderLength != 0)
1055 (uint32_t)pui32CipherText;
1071 (uint32_t)pui32PlainText;
1090 uint32_t ui32Status;
1128 uint32_t *pui32CipherText,
1129 uint32_t ui32CipherTextLength,
1130 uint32_t *pui32CcmTag)
1132 uint32_t
volatile ui32Tag[4];
1133 uint32_t ui32TagIndex;
1137 ui32TagIndex = ui32CipherTextLength - ui32AuthLength;
1163 for(ui32Idx = 0; ui32Idx < ui32AuthLength ; ui32Idx++)
1165 *((uint8_t*)pui32CcmTag + ui32Idx) = *((uint8_t*)ui32Tag + ui32Idx);
1177 for(i = 0; i < ui32AuthLength; i++)
1179 if(*((uint8_t *)pui32CcmTag + i) !=
1180 (*((uint8_t *)pui32CipherText + ui32TagIndex + i)))
1207 if(ui32Channels & CRYPTO_DMA_CHAN0)
1211 if(ui32Channels & CRYPTO_DMA_CHAN1)
1234 if(ui32Channels & CRYPTO_DMA_CHAN0)
1238 if(ui32Channels & CRYPTO_DMA_CHAN1)
uint32_t CRYPTOCcmAuthEncryptStatus(void)
Check the result of an AES CCM operation.
#define CRYPTO_AES_KEYL0AD
#define CRYPTO_KEY_AREA_3
#define CRYPTO_KEY_AREA_1
#define AES_KEYSTORE_READ_ERROR
#define CRYPTO_KEY_AREA_2
#define CRYPTO_DMA_BUS_ERROR
void IntPendClear(uint32_t ui32Interrupt)
Unpends an interrupt.
uint32_t CRYPTOAesCbc(uint32_t *pui32MsgIn, uint32_t *pui32MsgOut, uint32_t ui32MsgLength, uint32_t *pui32Nonce, uint32_t ui32KeyLocation, bool bEncrypt, bool bIntEnable)
Start an AES-CBC operation (encryption or decryption).
#define CRYPTO_AES_CTR_128
uint32_t CRYPTOCcmInvAuthDecrypt(bool bDecrypt, uint32_t ui32AuthLength, uint32_t *pui32Nonce, uint32_t *pui32CipherText, uint32_t ui32CipherTextLength, uint32_t *pui32Header, uint32_t ui32HeaderLength, uint32_t ui32KeyLocation, uint32_t ui32FieldLength, bool bIntEnable)
Start a CCM Decryption and Inverse Authentication operation.
uint32_t CRYPTOAesLoadKey(uint32_t *pui32AesKey, uint32_t ui32KeyLocation)
Write the key into the Key Ram.
uint32_t CRYPTOCcmAuthEncryptResultGet(uint32_t ui32TagLength, uint32_t *pui32CcmTag)
Get the result of an AES-CCM operation.
volatile uint32_t g_ui32CurrentAesOp
#define KEY_STORE_SIZE_128
#define CRYPTO_AES128_ENCRYPT
#define CRYPTO_DMA_BUS_ERR
uint32_t CRYPTOCcmInvAuthDecryptStatus(void)
Checks CCM decrypt and Inverse Authentication result.
#define CRYPTO_KEY_AREA_7
#define CRYPTO_KEY_AREA_0
#define CRYPTO_KEY_AREA_5
#define CRYPTO_AES128_DECRYPT
#define CRYPTO_KEY_AREA_4
uint32_t CRYPTOCcmInvAuthDecryptResultGet(uint32_t ui32AuthLength, uint32_t *pui32CipherText, uint32_t ui32CipherTextLength, uint32_t *pui32CcmTag)
Get the result of the CCM operation.
uint32_t CRYPTOAesEcbStatus(void)
Check the result of an AES ECB operation.
#define CCM_AUTHENTICATION_FAILED
#define AES_DMA_BUS_ERROR
void CRYPTODmaDisable(uint32_t ui32Channels)
Disable Crypto DMA operation.
uint32_t CRYPTOAesEcb(uint32_t *pui32MsgIn, uint32_t *pui32MsgOut, uint32_t ui32KeyLocation, bool bEncrypt, bool bIntEnable)
Start an AES-ECB operation (encryption or decryption).
void CRYPTODmaEnable(uint32_t ui32Channels)
Enable Crypto DMA operation.
void CPUdelay(uint32_t ui32Count)
Provide a small delay.
uint32_t CRYPTOAesCbcStatus(void)
Check the result of an AES CBC operation.
void IntDisable(uint32_t ui32Interrupt)
Disables an interrupt.
void IntEnable(uint32_t ui32Interrupt)
Enables an interrupt.
#define CRYPTO_KEY_AREA_6
uint32_t CRYPTOCcmAuthEncrypt(bool bEncrypt, uint32_t ui32AuthLength, uint32_t *pui32Nonce, uint32_t *pui32PlainText, uint32_t ui32PlainTextLength, uint32_t *pui32Header, uint32_t ui32HeaderLength, uint32_t ui32KeyLocation, uint32_t ui32FieldLength, bool bIntEnable)
Start CCM operation.
#define CRYPTO_KEY_ST_RD_ERR