32 #define TRACE_LEVEL CRYPTO_TRACE_LEVEL
35 #include "nuc472_442.h"
43 #if (NUC472_CRYPTO_HASH_SUPPORT == ENABLED)
57 for(i = 0; i <
length; i += 4)
60 while((CRPT->SHA_STS & CRPT_SHA_STS_DATINREQ_Msk) == 0)
65 CRPT->SHA_DATIN = __UNALIGNED_UINT32_READ(
data + i);
69 while((CRPT->SHA_STS & CRPT_SHA_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->SHA_CTL = CRPT_SHA_CTL_INSWAP_Msk | CRPT_SHA_CTL_OUTSWAP_Msk |
103 CRPT->SHA_CTL |= CRPT_SHA_CTL_START_Msk;
135 temp = CRPT->SHA_DGST0;
136 __UNALIGNED_UINT32_WRITE(digest, temp);
137 temp = CRPT->SHA_DGST1;
138 __UNALIGNED_UINT32_WRITE(digest + 4, temp);
139 temp = CRPT->SHA_DGST2;
140 __UNALIGNED_UINT32_WRITE(digest + 8, temp);
141 temp = CRPT->SHA_DGST3;
142 __UNALIGNED_UINT32_WRITE(digest + 12, temp);
143 temp = CRPT->SHA_DGST4;
144 __UNALIGNED_UINT32_WRITE(digest + 16, temp);
147 CRPT->SHA_CTL |= CRPT_SHA_CTL_STOP_Msk;
157 #if (SHA224_SUPPORT == ENABLED)
177 SYS->IPRST0 |= SYS_IPRST0_CRPTRST_Msk;
178 SYS->IPRST0 &= ~SYS_IPRST0_CRPTRST_Msk;
181 CRPT->SHA_CTL = CRPT_SHA_CTL_INSWAP_Msk | CRPT_SHA_CTL_OUTSWAP_Msk |
185 CRPT->SHA_CTL |= CRPT_SHA_CTL_START_Msk;
217 temp = CRPT->SHA_DGST0;
218 __UNALIGNED_UINT32_WRITE(digest, temp);
219 temp = CRPT->SHA_DGST1;
220 __UNALIGNED_UINT32_WRITE(digest + 4, temp);
221 temp = CRPT->SHA_DGST2;
222 __UNALIGNED_UINT32_WRITE(digest + 8, temp);
223 temp = CRPT->SHA_DGST3;
224 __UNALIGNED_UINT32_WRITE(digest + 12, temp);
225 temp = CRPT->SHA_DGST4;
226 __UNALIGNED_UINT32_WRITE(digest + 16, temp);
227 temp = CRPT->SHA_DGST5;
228 __UNALIGNED_UINT32_WRITE(digest + 20, temp);
229 temp = CRPT->SHA_DGST6;
230 __UNALIGNED_UINT32_WRITE(digest + 24, temp);
233 CRPT->SHA_CTL |= CRPT_SHA_CTL_STOP_Msk;
243 #if (SHA256_SUPPORT == ENABLED)
263 SYS->IPRST0 |= SYS_IPRST0_CRPTRST_Msk;
264 SYS->IPRST0 &= ~SYS_IPRST0_CRPTRST_Msk;
267 CRPT->SHA_CTL = CRPT_SHA_CTL_INSWAP_Msk | CRPT_SHA_CTL_OUTSWAP_Msk |
271 CRPT->SHA_CTL |= CRPT_SHA_CTL_START_Msk;
303 temp = CRPT->SHA_DGST0;
304 __UNALIGNED_UINT32_WRITE(digest, temp);
305 temp = CRPT->SHA_DGST1;
306 __UNALIGNED_UINT32_WRITE(digest + 4, temp);
307 temp = CRPT->SHA_DGST2;
308 __UNALIGNED_UINT32_WRITE(digest + 8, temp);
309 temp = CRPT->SHA_DGST3;
310 __UNALIGNED_UINT32_WRITE(digest + 12, temp);
311 temp = CRPT->SHA_DGST4;
312 __UNALIGNED_UINT32_WRITE(digest + 16, temp);
313 temp = CRPT->SHA_DGST5;
314 __UNALIGNED_UINT32_WRITE(digest + 20, temp);
315 temp = CRPT->SHA_DGST6;
316 __UNALIGNED_UINT32_WRITE(digest + 24, temp);
317 temp = CRPT->SHA_DGST7;
318 __UNALIGNED_UINT32_WRITE(digest + 28, temp);
321 CRPT->SHA_CTL |= CRPT_SHA_CTL_STOP_Msk;