48 #undef CRYPTOAesLoadKey
49 #define CRYPTOAesLoadKey NOROM_CRYPTOAesLoadKey
51 #define CRYPTOAesEcb NOROM_CRYPTOAesEcb
52 #undef CRYPTOAesEcbStatus
53 #define CRYPTOAesEcbStatus NOROM_CRYPTOAesEcbStatus
54 #undef CRYPTOCcmAuthEncrypt
55 #define CRYPTOCcmAuthEncrypt NOROM_CRYPTOCcmAuthEncrypt
56 #undef CRYPTOCcmAuthEncryptStatus
57 #define CRYPTOCcmAuthEncryptStatus NOROM_CRYPTOCcmAuthEncryptStatus
58 #undef CRYPTOCcmAuthEncryptResultGet
59 #define CRYPTOCcmAuthEncryptResultGet NOROM_CRYPTOCcmAuthEncryptResultGet
60 #undef CRYPTOCcmInvAuthDecrypt
61 #define CRYPTOCcmInvAuthDecrypt NOROM_CRYPTOCcmInvAuthDecrypt
62 #undef CRYPTOCcmInvAuthDecryptStatus
63 #define CRYPTOCcmInvAuthDecryptStatus NOROM_CRYPTOCcmInvAuthDecryptStatus
64 #undef CRYPTOCcmInvAuthDecryptResultGet
65 #define CRYPTOCcmInvAuthDecryptResultGet NOROM_CRYPTOCcmInvAuthDecryptResultGet
66 #undef CRYPTODmaEnable
67 #define CRYPTODmaEnable NOROM_CRYPTODmaEnable
68 #undef CRYPTODmaDisable
69 #define CRYPTODmaDisable NOROM_CRYPTODmaDisable
86 uint32_t ui32KeyLocation)
203 uint32_t ui32KeyLocation,
bool bEncrypt,
358 uint32_t *pui32Nonce, uint32_t *pui32PlainText,
359 uint32_t ui32PlainTextLength, uint32_t *pui32Header,
360 uint32_t ui32HeaderLength, uint32_t ui32KeyLocation,
361 uint32_t ui32FieldLength,
bool bIntEnable)
363 uint32_t ui32CtrlVal;
365 uint32_t *pui32CipherText;
374 pui32CipherText = pui32PlainText;
427 ui8InitVec.b[0] = ui32FieldLength - 1;
428 for(i = 0; i < 12; i++)
430 ui8InitVec.b[i + 1] = ((uint8_t*)pui32Nonce)[i];
432 if(ui32FieldLength == 2)
434 ui8InitVec.b[13] = ((uint8_t*)pui32Nonce)[12];
438 ui8InitVec.b[13] = 0;
440 ui8InitVec.b[14] = 0;
441 ui8InitVec.b[15] = 0;
455 if ( ui32AuthLength >= 2 ) {
487 if(ui32HeaderLength != 0)
557 (uint32_t)pui32PlainText;
573 (uint32_t)pui32CipherText;
631 uint32_t
volatile ui32Tag[4];
658 for(ui32Idx = 0; ui32Idx < ui32TagLength ; ui32Idx++)
660 *((uint8_t*)pui32CcmTag + ui32Idx) = *((uint8_t*)ui32Tag + ui32Idx);
679 uint32_t *pui32Nonce, uint32_t *pui32CipherText,
680 uint32_t ui32CipherTextLength,
681 uint32_t *pui32Header, uint32_t ui32HeaderLength,
682 uint32_t ui32KeyLocation,
683 uint32_t ui32FieldLength,
bool bIntEnable)
685 uint32_t ui32CtrlVal;
687 uint32_t *pui32PlainText;
688 uint32_t ui32CryptoBlockLength;
697 pui32PlainText = pui32CipherText;
749 ui8InitVec.b[0] = ui32FieldLength - 1;
750 for(i = 0; i < 12; i++)
752 ui8InitVec.b[i + 1] = ((uint8_t*)pui32Nonce)[i];
754 if(ui32FieldLength == 2)
756 ui8InitVec.b[13] = ((uint8_t*)pui32Nonce)[12];
760 ui8InitVec.b[13] = 0;
762 ui8InitVec.b[14] = 0;
763 ui8InitVec.b[15] = 0;
776 ui32CryptoBlockLength = ui32CipherTextLength - ui32AuthLength;
778 if ( ui32AuthLength >= 2 ) {
810 if(ui32HeaderLength != 0)
880 (uint32_t)pui32CipherText;
896 (uint32_t)pui32PlainText;
953 uint32_t *pui32CipherText,
954 uint32_t ui32CipherTextLength,
955 uint32_t *pui32CcmTag)
957 uint32_t
volatile ui32Tag[4];
958 uint32_t ui32TagIndex;
962 ui32TagIndex = ui32CipherTextLength - ui32AuthLength;
988 for(ui32Idx = 0; ui32Idx < ui32AuthLength ; ui32Idx++)
990 *((uint8_t*)pui32CcmTag + ui32Idx) = *((uint8_t*)ui32Tag + ui32Idx);
1002 for(i = 0; i < ui32AuthLength; i++)
1004 if(*((uint8_t *)pui32CcmTag + i) !=
1005 (*((uint8_t *)pui32CipherText + ui32TagIndex + i)))
1032 if(ui32Channels & CRYPTO_DMA_CHAN0)
1036 if(ui32Channels & CRYPTO_DMA_CHAN1)
1059 if(ui32Channels & CRYPTO_DMA_CHAN0)
1063 if(ui32Channels & CRYPTO_DMA_CHAN1)
uint32_t CRYPTOCcmAuthEncryptStatus(void)
Check the result of an AES CCM operation.
#define CRYPTO_RESULT_RDY
#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.
#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.
#define CRYPTO_DMA_IN_DONE
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.
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