32 #define TRACE_LEVEL CRYPTO_TRACE_LEVEL
35 #include "fsl_device_registers.h"
45 #if (MIMXRT1040_CRYPTO_CIPHER_SUPPORT == ENABLED && AES_SUPPORT == ENABLED)
48 #if defined(__ICCARM__)
51 #pragma data_alignment = 16
52 #pragma location = MIMXRT1040_DCP_RAM_SECTION
56 #pragma data_alignment = 16
57 #pragma location = MIMXRT1040_DCP_RAM_SECTION
73 #if (ECB_SUPPORT == ENABLED)
86 const uint8_t *
p, uint8_t *
c,
size_t length)
91 status = kStatus_Success;
106 dcp_handle_t dcpHandle;
112 if(aesContext->
nr == 10)
115 dcpHandle.channel = kDCP_Channel0;
116 dcpHandle.keySlot = kDCP_KeySlot0;
117 dcpHandle.swapConfig = kDCP_NoSwap;
123 status = DCP_AES_SetKey(DCP, &dcpHandle,
124 (
const uint8_t *) aesContext->
ek, 16);
127 for(i = 0; i <
length && status == kStatus_Success; i +=
n)
135 status = DCP_AES_EncryptEcb(DCP, &dcpHandle, dcpBufferIn,
139 if(status == kStatus_Success)
152 status = kStatus_Fail;
158 status = kStatus_InvalidArgument;
178 status = kStatus_InvalidArgument;
198 const uint8_t *
c, uint8_t *
p,
size_t length)
203 status = kStatus_Success;
218 dcp_handle_t dcpHandle;
224 if(aesContext->
nr == 10)
227 dcpHandle.channel = kDCP_Channel0;
228 dcpHandle.keySlot = kDCP_KeySlot0;
229 dcpHandle.swapConfig = kDCP_NoSwap;
235 status = DCP_AES_SetKey(DCP, &dcpHandle,
236 (
const uint8_t *) aesContext->
ek, 16);
239 for(i = 0; i <
length && status == kStatus_Success; i +=
n)
247 status = DCP_AES_DecryptEcb(DCP, &dcpHandle, dcpBufferIn,
251 if(status == kStatus_Success)
261 status = kStatus_Fail;
270 status = kStatus_InvalidArgument;
290 status = kStatus_InvalidArgument;
299 #if (CBC_SUPPORT == ENABLED)
313 uint8_t *
iv,
const uint8_t *
p, uint8_t *
c,
size_t length)
318 status = kStatus_Success;
333 dcp_handle_t dcpHandle;
339 if(aesContext->
nr == 10)
342 dcpHandle.channel = kDCP_Channel0;
343 dcpHandle.keySlot = kDCP_KeySlot0;
344 dcpHandle.swapConfig = kDCP_NoSwap;
350 status = DCP_AES_SetKey(DCP, &dcpHandle,
351 (
const uint8_t *) aesContext->
ek, 16);
354 for(i = 0; i <
length && status == kStatus_Success; i +=
n)
362 status = DCP_AES_EncryptCbc(DCP, &dcpHandle, dcpBufferIn,
363 dcpBufferOut,
n,
iv);
366 if(status == kStatus_Success)
378 status = kStatus_Fail;
387 status = kStatus_InvalidArgument;
419 status = kStatus_InvalidArgument;
440 uint8_t *
iv,
const uint8_t *
c, uint8_t *
p,
size_t length)
445 status = kStatus_Success;
460 dcp_handle_t dcpHandle;
467 if(aesContext->
nr == 10)
470 dcpHandle.channel = kDCP_Channel0;
471 dcpHandle.keySlot = kDCP_KeySlot0;
472 dcpHandle.swapConfig = kDCP_NoSwap;
478 status = DCP_AES_SetKey(DCP, &dcpHandle,
479 (
const uint8_t *) aesContext->
ek, 16);
482 for(i = 0; i <
length && status == kStatus_Success; i +=
n)
492 status = DCP_AES_DecryptCbc(DCP, &dcpHandle, dcpBufferIn,
493 dcpBufferOut,
n,
iv);
496 if(status == kStatus_Success)
508 status = kStatus_Fail;
517 status = kStatus_InvalidArgument;
552 status = kStatus_InvalidArgument;