32 #define TRACE_LEVEL CRYPTO_TRACE_LEVEL
43 #if (M480_CRYPTO_HASH_SUPPORT == ENABLED)
57 for(i = 0; i <
length; i += 4)
60 while((CRPT->HMAC_STS & CRPT_HMAC_STS_DATINREQ_Msk) == 0)
65 CRPT->HMAC_DATIN = __UNALIGNED_UINT32_READ(
data + i);
69 while((CRPT->HMAC_STS & CRPT_HMAC_STS_DATINREQ_Msk) == 0)
75 #if (SHA1_SUPPORT == ENABLED)
95 SYS->IPRST0 |= SYS_IPRST0_CRPTRST_Msk;
96 SYS->IPRST0 &= ~SYS_IPRST0_CRPTRST_Msk;
99 CRPT->HMAC_CTL = CRPT_HMAC_CTL_INSWAP_Msk | CRPT_HMAC_CTL_OUTSWAP_Msk |
103 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_START_Msk;
135 temp = CRPT->HMAC_DGST[0];
136 __UNALIGNED_UINT32_WRITE(digest, temp);
137 temp = CRPT->HMAC_DGST[1];
138 __UNALIGNED_UINT32_WRITE(digest + 4, temp);
139 temp = CRPT->HMAC_DGST[2];
140 __UNALIGNED_UINT32_WRITE(digest + 8, temp);
141 temp = CRPT->HMAC_DGST[3];
142 __UNALIGNED_UINT32_WRITE(digest + 12, temp);
143 temp = CRPT->HMAC_DGST[4];
144 __UNALIGNED_UINT32_WRITE(digest + 16, temp);
147 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_STOP_Msk;
157 #if (SHA224_SUPPORT == ENABLED)
177 SYS->IPRST0 |= SYS_IPRST0_CRPTRST_Msk;
178 SYS->IPRST0 &= ~SYS_IPRST0_CRPTRST_Msk;
181 CRPT->HMAC_CTL = CRPT_HMAC_CTL_INSWAP_Msk | CRPT_HMAC_CTL_OUTSWAP_Msk |
185 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_START_Msk;
217 temp = CRPT->HMAC_DGST[0];
218 __UNALIGNED_UINT32_WRITE(digest, temp);
219 temp = CRPT->HMAC_DGST[1];
220 __UNALIGNED_UINT32_WRITE(digest + 4, temp);
221 temp = CRPT->HMAC_DGST[2];
222 __UNALIGNED_UINT32_WRITE(digest + 8, temp);
223 temp = CRPT->HMAC_DGST[3];
224 __UNALIGNED_UINT32_WRITE(digest + 12, temp);
225 temp = CRPT->HMAC_DGST[4];
226 __UNALIGNED_UINT32_WRITE(digest + 16, temp);
227 temp = CRPT->HMAC_DGST[5];
228 __UNALIGNED_UINT32_WRITE(digest + 20, temp);
229 temp = CRPT->HMAC_DGST[6];
230 __UNALIGNED_UINT32_WRITE(digest + 24, temp);
233 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_STOP_Msk;
243 #if (SHA256_SUPPORT == ENABLED)
263 SYS->IPRST0 |= SYS_IPRST0_CRPTRST_Msk;
264 SYS->IPRST0 &= ~SYS_IPRST0_CRPTRST_Msk;
267 CRPT->HMAC_CTL = CRPT_HMAC_CTL_INSWAP_Msk | CRPT_HMAC_CTL_OUTSWAP_Msk |
271 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_START_Msk;
303 temp = CRPT->HMAC_DGST[0];
304 __UNALIGNED_UINT32_WRITE(digest, temp);
305 temp = CRPT->HMAC_DGST[1];
306 __UNALIGNED_UINT32_WRITE(digest + 4, temp);
307 temp = CRPT->HMAC_DGST[2];
308 __UNALIGNED_UINT32_WRITE(digest + 8, temp);
309 temp = CRPT->HMAC_DGST[3];
310 __UNALIGNED_UINT32_WRITE(digest + 12, temp);
311 temp = CRPT->HMAC_DGST[4];
312 __UNALIGNED_UINT32_WRITE(digest + 16, temp);
313 temp = CRPT->HMAC_DGST[5];
314 __UNALIGNED_UINT32_WRITE(digest + 20, temp);
315 temp = CRPT->HMAC_DGST[6];
316 __UNALIGNED_UINT32_WRITE(digest + 24, temp);
317 temp = CRPT->HMAC_DGST[7];
318 __UNALIGNED_UINT32_WRITE(digest + 28, temp);
321 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_STOP_Msk;
331 #if (SHA384_SUPPORT == ENABLED)
351 SYS->IPRST0 |= SYS_IPRST0_CRPTRST_Msk;
352 SYS->IPRST0 &= ~SYS_IPRST0_CRPTRST_Msk;
355 CRPT->HMAC_CTL = CRPT_HMAC_CTL_INSWAP_Msk | CRPT_HMAC_CTL_OUTSWAP_Msk |
359 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_START_Msk;
391 temp = CRPT->HMAC_DGST[0];
392 __UNALIGNED_UINT32_WRITE(digest, temp);
393 temp = CRPT->HMAC_DGST[1];
394 __UNALIGNED_UINT32_WRITE(digest + 4, temp);
395 temp = CRPT->HMAC_DGST[2];
396 __UNALIGNED_UINT32_WRITE(digest + 8, temp);
397 temp = CRPT->HMAC_DGST[3];
398 __UNALIGNED_UINT32_WRITE(digest + 12, temp);
399 temp = CRPT->HMAC_DGST[4];
400 __UNALIGNED_UINT32_WRITE(digest + 16, temp);
401 temp = CRPT->HMAC_DGST[5];
402 __UNALIGNED_UINT32_WRITE(digest + 20, temp);
403 temp = CRPT->HMAC_DGST[6];
404 __UNALIGNED_UINT32_WRITE(digest + 24, temp);
405 temp = CRPT->HMAC_DGST[7];
406 __UNALIGNED_UINT32_WRITE(digest + 28, temp);
407 temp = CRPT->HMAC_DGST[8];
408 __UNALIGNED_UINT32_WRITE(digest + 32, temp);
409 temp = CRPT->HMAC_DGST[9];
410 __UNALIGNED_UINT32_WRITE(digest + 36, temp);
411 temp = CRPT->HMAC_DGST[10];
412 __UNALIGNED_UINT32_WRITE(digest + 40, temp);
413 temp = CRPT->HMAC_DGST[11];
414 __UNALIGNED_UINT32_WRITE(digest + 44, temp);
417 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_STOP_Msk;
427 #if (SHA512_SUPPORT == ENABLED)
447 SYS->IPRST0 |= SYS_IPRST0_CRPTRST_Msk;
448 SYS->IPRST0 &= ~SYS_IPRST0_CRPTRST_Msk;
451 CRPT->HMAC_CTL = CRPT_HMAC_CTL_INSWAP_Msk | CRPT_HMAC_CTL_OUTSWAP_Msk |
455 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_START_Msk;
487 temp = CRPT->HMAC_DGST[0];
488 __UNALIGNED_UINT32_WRITE(digest, temp);
489 temp = CRPT->HMAC_DGST[1];
490 __UNALIGNED_UINT32_WRITE(digest + 4, temp);
491 temp = CRPT->HMAC_DGST[2];
492 __UNALIGNED_UINT32_WRITE(digest + 8, temp);
493 temp = CRPT->HMAC_DGST[3];
494 __UNALIGNED_UINT32_WRITE(digest + 12, temp);
495 temp = CRPT->HMAC_DGST[4];
496 __UNALIGNED_UINT32_WRITE(digest + 16, temp);
497 temp = CRPT->HMAC_DGST[5];
498 __UNALIGNED_UINT32_WRITE(digest + 20, temp);
499 temp = CRPT->HMAC_DGST[6];
500 __UNALIGNED_UINT32_WRITE(digest + 24, temp);
501 temp = CRPT->HMAC_DGST[7];
502 __UNALIGNED_UINT32_WRITE(digest + 28, temp);
503 temp = CRPT->HMAC_DGST[8];
504 __UNALIGNED_UINT32_WRITE(digest + 32, temp);
505 temp = CRPT->HMAC_DGST[9];
506 __UNALIGNED_UINT32_WRITE(digest + 36, temp);
507 temp = CRPT->HMAC_DGST[10];
508 __UNALIGNED_UINT32_WRITE(digest + 40, temp);
509 temp = CRPT->HMAC_DGST[11];
510 __UNALIGNED_UINT32_WRITE(digest + 44, temp);
511 temp = CRPT->HMAC_DGST[12];
512 __UNALIGNED_UINT32_WRITE(digest + 48, temp);
513 temp = CRPT->HMAC_DGST[13];
514 __UNALIGNED_UINT32_WRITE(digest + 52, temp);
515 temp = CRPT->HMAC_DGST[14];
516 __UNALIGNED_UINT32_WRITE(digest + 56, temp);
517 temp = CRPT->HMAC_DGST[15];
518 __UNALIGNED_UINT32_WRITE(digest + 60, temp);
521 CRPT->HMAC_CTL |= CRPT_HMAC_CTL_STOP_Msk;