26 #ifdef HAL_CRYP_MODULE_ENABLED 44 #define CRYP_CCF_TIMEOUTVALUE 22000 45 #define CRYP_BUSY_TIMEOUTVALUE 22000 47 #define CRYP_POLLING_OFF 0x0 48 #define CRYP_POLLING_ON 0x1 50 #if defined(AES_CR_NPBLB) 51 #define AES_POSITION_CR_NPBLB (uint32_t)POSITION_VAL(AES_CR_NPBLB) 172 if (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_KEYDERIVATION)
174 if (pOutputData == NULL)
181 if ((pInputData == NULL) || (pOutputData == NULL) || (Size == 0U))
195 if (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_KEYDERIVATION)
253 if (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_KEYDERIVATION)
255 if (pOutputData == NULL)
262 if ((pInputData == NULL) || (pOutputData == NULL) || (Size == 0U))
272 if (hcryp->
Init.OperatingMode != CRYP_ALGOMODE_KEYDERIVATION)
294 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE);
301 if (hcryp->
Init.OperatingMode != CRYP_ALGOMODE_KEYDERIVATION)
310 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
312 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
314 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
316 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
359 if (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_KEYDERIVATION)
367 if ((pInputData == NULL) || (pOutputData == NULL) || (Size == 0U))
377 inputaddr = (uint32_t)pInputData;
378 outputaddr = (uint32_t)pOutputData;
436 uint32_t outputaddr ;
438 uint64_t headerlength ;
439 uint64_t inputlength ;
440 uint64_t payloadlength ;
441 uint32_t difflength = 0;
442 uint32_t addhoc_process = 0;
447 if (hcryp->
Init.GCMCMACPhase == CRYP_INIT_PHASE)
451 else if (hcryp->
Init.GCMCMACPhase == CRYP_HEADER_PHASE)
453 if (((hcryp->
Init.Header != NULL) && (hcryp->
Init.HeaderSize == 0U)) ||
454 ((hcryp->
Init.Header == NULL) && (hcryp->
Init.HeaderSize != 0U)))
458 #if defined(AES_CR_NPBLB) 459 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CCM)
461 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
465 if (((pInputData != NULL) && (Size == 0U)) || ((pInputData == NULL) && (Size != 0U)))
471 else if (hcryp->
Init.GCMCMACPhase == CRYP_PAYLOAD_PHASE)
473 if (((pInputData == NULL) && (Size != 0U)) || \
474 ((pInputData != NULL) && (Size == 0U)) || \
475 ((pInputData != NULL) && (Size != 0U) && (pOutputData == NULL)))
480 else if (hcryp->
Init.GCMCMACPhase == CRYP_FINAL_PHASE)
482 if (pOutputData == NULL)
486 #if !defined(AES_CR_NPBLB) 487 if ((hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC) && (pInputData == NULL))
512 if (hcryp->
Init.GCMCMACPhase == CRYP_INIT_PHASE)
523 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
530 else if (hcryp->
Init.GCMCMACPhase == CRYP_HEADER_PHASE)
532 #if !defined(AES_CR_NPBLB) 534 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC)
545 __HAL_CRYP_ENABLE(hcryp);
547 #if !defined(AES_CR_NPBLB) 551 if ((hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC) && (Size != 0U))
554 inputaddr = (uint32_t)pInputData;
556 for(index=0U ; (index < Size); index += 16U)
559 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
561 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
563 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
565 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
575 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
579 index_test = (uint64_t)index + 16U;
593 hcryp->
CrypInCount = (uint32_t) (hcryp->
Init.HeaderSize + Size - index_test);
605 inputaddr = (uint32_t)hcryp->
Init.Header;
608 headerlength = (((hcryp->
Init.HeaderSize)/16U)*16U) ;
609 if ((hcryp->
Init.HeaderSize % 16U) != 0U)
611 difflength = (uint32_t) (hcryp->
Init.HeaderSize - headerlength);
613 for(index=0U ; index < headerlength; index += 16U)
617 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
619 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
621 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
623 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
633 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
637 index_temp = (uint64_t)index + 16U;
660 if (difflength != 0U)
672 else if (hcryp->
Init.GCMCMACPhase == CRYP_PAYLOAD_PHASE)
680 __HAL_CRYP_ENABLE(hcryp);
683 inputaddr = (uint32_t)pInputData;
684 outputaddr = (uint32_t)pOutputData;
688 if ((Size % 16U) != 0U)
690 payloadlength = (Size/16U) * 16U;
691 difflength = (uint32_t) (Size - payloadlength);
696 payloadlength = Size;
700 for(index=0U ; index < payloadlength; index += 16U)
704 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
706 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
708 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
710 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
721 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
725 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
727 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
729 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
731 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
736 index_temp = (uint64_t)index + 16U;
740 if (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_ENCRYPT)
761 hcryp->
CrypInCount = (uint32_t) (Size - index_temp);
773 if (addhoc_process == 1U)
790 tagaddr = (uint32_t)pOutputData;
792 #if defined(AES_CR_NPBLB) 802 __HAL_CRYP_ENABLE(hcryp);
805 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC)
807 headerlength = hcryp->
Init.HeaderSize * 8U;
808 inputlength = Size * 8U;
810 #if !defined(AES_CR_NPBLB) 811 if(hcryp->
Init.DataType == CRYP_DATATYPE_1B)
813 hcryp->
Instance->DINR = __RBIT((uint32_t)(headerlength>>32));
814 hcryp->
Instance->DINR = __RBIT((uint32_t)headerlength);
815 hcryp->
Instance->DINR = __RBIT((uint32_t)(inputlength>>32));
816 hcryp->
Instance->DINR = __RBIT((uint32_t)inputlength);
818 else if(hcryp->
Init.DataType == CRYP_DATATYPE_8B)
820 hcryp->
Instance->DINR = __REV((uint32_t)(headerlength>>32));
821 hcryp->
Instance->DINR = __REV((uint32_t)headerlength);
822 hcryp->
Instance->DINR = __REV((uint32_t)(inputlength>>32));
823 hcryp->
Instance->DINR = __REV((uint32_t)inputlength);
825 else if(hcryp->
Init.DataType == CRYP_DATATYPE_16B)
827 hcryp->
Instance->DINR = __ROR((uint32_t)(headerlength>>32), 16);
828 hcryp->
Instance->DINR = __ROR((uint32_t)headerlength, 16);
829 hcryp->
Instance->DINR = __ROR((uint32_t)(inputlength>>32), 16);
830 hcryp->
Instance->DINR = __ROR((uint32_t)inputlength, 16);
832 else if(hcryp->
Init.DataType == CRYP_DATATYPE_32B)
834 hcryp->
Instance->DINR = (uint32_t)(headerlength>>32);
835 hcryp->
Instance->DINR = (uint32_t)(headerlength);
836 hcryp->
Instance->DINR = (uint32_t)(inputlength>>32);
837 hcryp->
Instance->DINR = (uint32_t)(inputlength);
845 hcryp->
Instance->DINR = (uint32_t)(headerlength>>32);
846 hcryp->
Instance->DINR = (uint32_t)(headerlength);
847 hcryp->
Instance->DINR = (uint32_t)(inputlength>>32);
848 hcryp->
Instance->DINR = (uint32_t)(inputlength);
851 #if !defined(AES_CR_NPBLB) 852 else if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
854 inputaddr = (uint32_t)pInputData;
857 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
859 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
861 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
863 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
881 *(uint32_t*)(tagaddr) = hcryp->
Instance->DOUTR;
883 *(uint32_t*)(tagaddr) = hcryp->
Instance->DOUTR;
885 *(uint32_t*)(tagaddr) = hcryp->
Instance->DOUTR;
887 *(uint32_t*)(tagaddr) = hcryp->
Instance->DOUTR;
891 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
895 __HAL_CRYP_DISABLE(hcryp);
947 uint64_t headerlength ;
948 uint64_t inputlength ;
950 uint32_t addhoc_process = 0;
951 uint32_t difflength = 0;
952 uint32_t difflengthmod4 = 0;
955 uint32_t mask_index = hcryp->
Init.DataType >> AES_CR_DATATYPE_Pos;
957 mask[0][0] = 0xFF000000U; mask[0][1] = 0xFFFF0000U; mask[0][2] = 0xFFFFFF00U;
958 mask[1][0] = 0x0000FF00U; mask[1][1] = 0x0000FFFFU; mask[1][2] = 0xFF00FFFFU;
959 mask[2][0] = 0x000000FFU; mask[2][1] = 0x0000FFFFU; mask[2][2] = 0x00FFFFFFU;
960 mask[3][0] = 0x000000FFU; mask[3][1] = 0x0000FFFFU; mask[3][2] = 0x00FFFFFFU;
965 if (hcryp->
Init.GCMCMACPhase == CRYP_INIT_PHASE)
969 else if (hcryp->
Init.GCMCMACPhase == CRYP_HEADER_PHASE)
971 if (((hcryp->
Init.Header != NULL) && (hcryp->
Init.HeaderSize == 0U)) ||
972 ((hcryp->
Init.Header == NULL) && (hcryp->
Init.HeaderSize != 0U)))
976 #if defined(AES_CR_NPBLB) 977 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CCM)
979 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
983 if (((pInputData != NULL) && (Size == 0U)) || ((pInputData == NULL) && (Size != 0U)))
989 else if (hcryp->
Init.GCMCMACPhase == CRYP_PAYLOAD_PHASE)
991 if ((pInputData != NULL) && (Size != 0U) && (pOutputData == NULL))
996 else if (hcryp->
Init.GCMCMACPhase == CRYP_FINAL_PHASE)
998 if (pOutputData == NULL)
1002 #if !defined(AES_CR_NPBLB) 1003 if ((hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC) && (pInputData == NULL))
1026 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE);
1033 if (hcryp->
Init.GCMCMACPhase == CRYP_INIT_PHASE)
1043 else if (hcryp->
Init.GCMCMACPhase == CRYP_HEADER_PHASE)
1046 #if defined(AES_CR_NPBLB) 1047 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CCM)
1049 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
1079 #
if !defined(AES_CR_NPBLB)
1081 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC)
1092 __HAL_CRYP_ENABLE(hcryp);
1107 difflength = (uint32_t) (hcryp->
Init.HeaderSize);
1108 difflengthmod4 = difflength%4U;
1117 #if defined(AES_CR_NPBLB) 1118 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CCM)
1120 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
1134 if (addhoc_process == 0U)
1137 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1139 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1141 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1143 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1149 for(index=0U ; index < (difflength/4U); index ++)
1152 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1157 if (difflengthmod4 != 0U)
1159 hcryp->
Instance->DINR = ((*(uint32_t*)(inputaddr)) & mask[mask_index][difflengthmod4-1U]);
1162 for(index=0U; index < (4U - ((difflength+3U)/4U)); index ++)
1172 else if (hcryp->
Init.GCMCMACPhase == CRYP_PAYLOAD_PHASE)
1187 __HAL_CRYP_ENABLE(hcryp);
1191 if (pInputData == NULL)
1205 difflength = (uint32_t) (Size);
1206 #if defined(AES_CR_NPBLB) 1209 if (READ_BIT(hcryp->
Instance->CR, AES_CR_GCMPH) == CRYP_PAYLOAD_PHASE)
1211 uint32_t cr_temp = hcryp->
Instance->CR;
1213 if (((cr_temp & (AES_CR_CHMOD|AES_CR_MODE)) == (CRYP_CHAINMODE_AES_GCM_GMAC|CRYP_ALGOMODE_ENCRYPT))
1214 || ((cr_temp & (AES_CR_CHMOD|AES_CR_MODE)) == (CRYP_CHAINMODE_AES_CCM|CRYP_ALGOMODE_DECRYPT)))
1218 MODIFY_REG(hcryp->
Instance->CR, AES_CR_NPBLB, (16U - difflength) << AES_POSITION_CR_NPBLB);
1223 if (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_ENCRYPT)
1226 __HAL_CRYP_SET_CHAININGMODE(hcryp, CRYP_CHAINMODE_AES_CTR);
1236 difflengthmod4 = difflength%4U;
1239 for(index=0U; index < (difflength/4U); index ++)
1242 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1246 if (difflengthmod4 != 0U)
1248 hcryp->
Instance->DINR = ((*(uint32_t*)(inputaddr)) & mask[mask_index][difflengthmod4-1U]);
1251 for(index=0U; index < (4U - ((difflength+3U)/4U)); index ++)
1264 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1266 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1268 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1270 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1280 #if defined(AES_CR_NPBLB) 1290 __HAL_CRYP_ENABLE(hcryp);
1293 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC)
1295 headerlength = hcryp->
Init.HeaderSize * 8U;
1296 inputlength = Size * 8U;
1300 #if !defined(AES_CR_NPBLB) 1301 if(hcryp->
Init.DataType == CRYP_DATATYPE_1B)
1303 hcryp->
Instance->DINR = __RBIT((uint32_t)((headerlength)>>32));
1304 hcryp->
Instance->DINR = __RBIT((uint32_t)headerlength);
1305 hcryp->
Instance->DINR = __RBIT((uint32_t)((inputlength)>>32));
1306 hcryp->
Instance->DINR = __RBIT((uint32_t)inputlength);
1308 else if(hcryp->
Init.DataType == CRYP_DATATYPE_8B)
1310 hcryp->
Instance->DINR = __REV((uint32_t)(headerlength>>32));
1311 hcryp->
Instance->DINR = __REV((uint32_t)headerlength);
1312 hcryp->
Instance->DINR = __REV((uint32_t)(inputlength>>32));
1313 hcryp->
Instance->DINR = __REV((uint32_t)inputlength);
1315 else if(hcryp->
Init.DataType == CRYP_DATATYPE_16B)
1317 hcryp->
Instance->DINR = __ROR((uint32_t)((headerlength)>>32), 16);
1318 hcryp->
Instance->DINR = __ROR((uint32_t)headerlength, 16);
1319 hcryp->
Instance->DINR = __ROR((uint32_t)((inputlength)>>32), 16);
1320 hcryp->
Instance->DINR = __ROR((uint32_t)inputlength, 16);
1322 else if(hcryp->
Init.DataType == CRYP_DATATYPE_32B)
1324 hcryp->
Instance->DINR = (uint32_t)(headerlength>>32);
1325 hcryp->
Instance->DINR = (uint32_t)(headerlength);
1326 hcryp->
Instance->DINR = (uint32_t)(inputlength>>32);
1327 hcryp->
Instance->DINR = (uint32_t)(inputlength);
1335 hcryp->
Instance->DINR = (uint32_t)(headerlength>>32);
1336 hcryp->
Instance->DINR = (uint32_t)(headerlength);
1337 hcryp->
Instance->DINR = (uint32_t)(inputlength>>32);
1338 hcryp->
Instance->DINR = (uint32_t)(inputlength);
1341 #if !defined(AES_CR_NPBLB) 1342 else if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
1344 inputaddr = (uint32_t)pInputData;
1347 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1349 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1351 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1353 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1405 uint32_t inputaddr ;
1406 uint32_t outputaddr ;
1408 uint64_t headerlength ;
1409 uint64_t inputlength ;
1410 uint64_t payloadlength ;
1416 if (hcryp->
Init.GCMCMACPhase == CRYP_INIT_PHASE)
1420 else if (hcryp->
Init.GCMCMACPhase == CRYP_HEADER_PHASE)
1422 if ((hcryp->
Init.Header != NULL) && (hcryp->
Init.HeaderSize == 0U))
1426 #if defined(AES_CR_NPBLB) 1427 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CCM)
1430 if (((pInputData != NULL) && (Size == 0U)) || ((pInputData == NULL) && (Size != 0U)))
1436 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
1438 if ((pInputData == NULL) || (Size == 0U))
1445 else if (hcryp->
Init.GCMCMACPhase == CRYP_PAYLOAD_PHASE)
1447 if ((pInputData != NULL) && (Size != 0U) && (pOutputData == NULL))
1452 else if (hcryp->
Init.GCMCMACPhase == CRYP_FINAL_PHASE)
1454 if (pOutputData == NULL)
1458 #if !defined(AES_CR_NPBLB) 1459 if ((hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC) && (pInputData == NULL))
1485 if (hcryp->
Init.GCMCMACPhase == CRYP_INIT_PHASE)
1496 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
1504 else if (hcryp->
Init.GCMCMACPhase == CRYP_HEADER_PHASE)
1506 #if !defined(AES_CR_NPBLB) 1508 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC)
1519 __HAL_CRYP_ENABLE(hcryp);
1521 #if !defined(AES_CR_NPBLB) 1523 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
1525 inputaddr = (uint32_t)pInputData;
1526 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1528 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1530 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1532 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1541 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
1546 if (hcryp->
Init.Header == NULL)
1557 inputaddr = (uint32_t)hcryp->
Init.Header;
1558 if ((hcryp->
Init.HeaderSize % 16U) != 0U)
1561 if (hcryp->
Init.HeaderSize < 16U)
1564 CRYP_Padding(hcryp, (uint32_t) (hcryp->
Init.HeaderSize), CRYP_POLLING_OFF);
1579 headerlength = (((hcryp->
Init.HeaderSize)/16U)*16U) ;
1582 hcryp->
CrypInCount = (uint32_t)(hcryp->
Init.HeaderSize - headerlength);
1600 else if (hcryp->
Init.GCMCMACPhase == CRYP_PAYLOAD_PHASE)
1604 if (hcryp->
Init.Header != NULL)
1616 __HAL_CRYP_ENABLE(hcryp);
1619 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
1624 if (pInputData == NULL)
1637 if ((Size % 16U) != 0U)
1639 inputaddr = (uint32_t)pInputData;
1640 outputaddr = (uint32_t)pOutputData;
1655 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 1663 payloadlength = (Size/16U) * 16U;
1670 hcryp->
CrypInCount = (uint32_t)(Size - payloadlength);
1681 inputaddr = (uint32_t)pInputData;
1682 outputaddr = (uint32_t)pOutputData;
1695 if (READ_BIT(hcryp->
Instance->CR, AES_CR_GCMPH) == CRYP_HEADER_PHASE)
1704 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
1707 tagaddr = (uint32_t)pOutputData;
1709 #if defined(AES_CR_NPBLB) 1718 __HAL_CRYP_ENABLE(hcryp);
1721 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC)
1723 headerlength = hcryp->
Init.HeaderSize * 8U;
1724 inputlength = Size * 8U;
1727 #if !defined(AES_CR_NPBLB) 1728 if(hcryp->
Init.DataType == CRYP_DATATYPE_1B)
1730 hcryp->
Instance->DINR = __RBIT((uint32_t)(headerlength>>32));
1731 hcryp->
Instance->DINR = __RBIT((uint32_t)headerlength);
1732 hcryp->
Instance->DINR = __RBIT((uint32_t)(inputlength>>32));
1733 hcryp->
Instance->DINR = __RBIT((uint32_t)inputlength);
1735 else if(hcryp->
Init.DataType == CRYP_DATATYPE_8B)
1737 hcryp->
Instance->DINR = __REV((uint32_t)(headerlength>>32));
1738 hcryp->
Instance->DINR = __REV((uint32_t)headerlength);
1739 hcryp->
Instance->DINR = __REV((uint32_t)(inputlength>>32));
1740 hcryp->
Instance->DINR = __REV((uint32_t)inputlength);
1742 else if(hcryp->
Init.DataType == CRYP_DATATYPE_16B)
1744 hcryp->
Instance->DINR = __ROR((uint32_t)(headerlength>>32), 16);
1745 hcryp->
Instance->DINR = __ROR((uint32_t)headerlength, 16);
1746 hcryp->
Instance->DINR = __ROR((uint32_t)(inputlength>>32), 16);
1747 hcryp->
Instance->DINR = __ROR((uint32_t)inputlength, 16);
1749 else if(hcryp->
Init.DataType == CRYP_DATATYPE_32B)
1751 hcryp->
Instance->DINR = (uint32_t)(headerlength>>32);
1752 hcryp->
Instance->DINR = (uint32_t)(headerlength);
1753 hcryp->
Instance->DINR = (uint32_t)(inputlength>>32);
1754 hcryp->
Instance->DINR = (uint32_t)(inputlength);
1762 hcryp->
Instance->DINR = (uint32_t)(headerlength>>32);
1763 hcryp->
Instance->DINR = (uint32_t)(headerlength);
1764 hcryp->
Instance->DINR = (uint32_t)(inputlength>>32);
1765 hcryp->
Instance->DINR = (uint32_t)(inputlength);
1768 #if !defined(AES_CR_NPBLB) 1769 else if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
1771 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
1773 inputaddr = (uint32_t)pInputData;
1776 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1778 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1780 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1782 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
1801 *(uint32_t*)(tagaddr) = hcryp->
Instance->DOUTR;
1803 *(uint32_t*)(tagaddr) = hcryp->
Instance->DOUTR;
1805 *(uint32_t*)(tagaddr) = hcryp->
Instance->DOUTR;
1807 *(uint32_t*)(tagaddr) = hcryp->
Instance->DOUTR;
1810 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
1816 __HAL_CRYP_DISABLE(hcryp);
1866 uint32_t outputaddr = (uint32_t)Output;
1868 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->IVR3);
1870 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->IVR2);
1872 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->IVR1);
1874 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->IVR0);
1890 uint32_t ivaddr = (uint32_t)Input;
1892 hcryp->
Instance->IVR3 = __REV(*(uint32_t*)(ivaddr));
1894 hcryp->
Instance->IVR2 = __REV(*(uint32_t*)(ivaddr));
1896 hcryp->
Instance->IVR1 = __REV(*(uint32_t*)(ivaddr));
1898 hcryp->
Instance->IVR0 = __REV(*(uint32_t*)(ivaddr));
1914 uint32_t outputaddr = (uint32_t)Output;
1917 if (READ_BIT(hcryp->
Instance->CR, (AES_CR_CHMOD|AES_CR_GCMPH|AES_CR_MODE)) == (CRYP_CHAINMODE_AES_GCM_GMAC|CRYP_PAYLOAD_PHASE|CRYP_ALGOMODE_ENCRYPT))
1922 hcryp->
ErrorCode |= HAL_CRYP_BUSY_ERROR;
1928 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 1937 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->SUSP7R);
1939 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->SUSP6R);
1941 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->SUSP5R);
1943 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->SUSP4R);
1945 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->SUSP3R);
1947 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->SUSP2R);
1949 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->SUSP1R);
1951 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->SUSP0R);
1965 uint32_t ivaddr = (uint32_t)Input;
1967 hcryp->
Instance->SUSP7R = __REV(*(uint32_t*)(ivaddr));
1969 hcryp->
Instance->SUSP6R = __REV(*(uint32_t*)(ivaddr));
1971 hcryp->
Instance->SUSP5R = __REV(*(uint32_t*)(ivaddr));
1973 hcryp->
Instance->SUSP4R = __REV(*(uint32_t*)(ivaddr));
1975 hcryp->
Instance->SUSP3R = __REV(*(uint32_t*)(ivaddr));
1977 hcryp->
Instance->SUSP2R = __REV(*(uint32_t*)(ivaddr));
1979 hcryp->
Instance->SUSP1R = __REV(*(uint32_t*)(ivaddr));
1981 hcryp->
Instance->SUSP0R = __REV(*(uint32_t*)(ivaddr));
1997 uint32_t keyaddr = (uint32_t)Output;
1999 if (KeySize == CRYP_KEYSIZE_256B)
2001 *(uint32_t*)(keyaddr) = __REV(hcryp->
Instance->KEYR7);
2003 *(uint32_t*)(keyaddr) = __REV(hcryp->
Instance->KEYR6);
2005 *(uint32_t*)(keyaddr) = __REV(hcryp->
Instance->KEYR5);
2007 *(uint32_t*)(keyaddr) = __REV(hcryp->
Instance->KEYR4);
2011 *(uint32_t*)(keyaddr) = __REV(hcryp->
Instance->KEYR3);
2013 *(uint32_t*)(keyaddr) = __REV(hcryp->
Instance->KEYR2);
2015 *(uint32_t*)(keyaddr) = __REV(hcryp->
Instance->KEYR1);
2017 *(uint32_t*)(keyaddr) = __REV(hcryp->
Instance->KEYR0);
2032 uint32_t keyaddr = (uint32_t)Input;
2034 if (KeySize == CRYP_KEYSIZE_256B)
2036 hcryp->
Instance->KEYR7 = __REV(*(uint32_t*)(keyaddr));
2038 hcryp->
Instance->KEYR6 = __REV(*(uint32_t*)(keyaddr));
2040 hcryp->
Instance->KEYR5 = __REV(*(uint32_t*)(keyaddr));
2042 hcryp->
Instance->KEYR4 = __REV(*(uint32_t*)(keyaddr));
2046 hcryp->
Instance->KEYR3 = __REV(*(uint32_t*)(keyaddr));
2048 hcryp->
Instance->KEYR2 = __REV(*(uint32_t*)(keyaddr));
2050 hcryp->
Instance->KEYR1 = __REV(*(uint32_t*)(keyaddr));
2052 hcryp->
Instance->KEYR0 = __REV(*(uint32_t*)(keyaddr));
2067 *(uint32_t*)(
void *)(Output) = hcryp->
Instance->CR;
2081 hcryp->
Instance->CR = *(uint32_t*)(
void *)(Input);
2128 uint32_t difflength;
2134 if (hcryp->
Init.GCMCMACPhase == CRYP_HEADER_PHASE)
2156 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2172 uint32_t difflength;
2179 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2197 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2216 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2222 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_ERR_CLEAR);
2238 uint32_t inputaddr ;
2239 uint32_t outputaddr ;
2241 uint32_t addhoc_process = 0;
2242 uint32_t difflength = 0;
2243 uint32_t difflengthmod4 = 0;
2244 uint32_t mask[4][3] ;
2245 uint32_t mask_index = hcryp->
Init.DataType >> AES_CR_DATATYPE_Pos;
2246 uint32_t intermediate_data[4] = {0};
2248 mask[0][0] = 0xFF000000U; mask[0][1] = 0xFFFF0000U; mask[0][2] = 0xFFFFFF00U;
2249 mask[1][0] = 0x0000FF00U; mask[1][1] = 0x0000FFFFU; mask[1][2] = 0xFF00FFFFU;
2250 mask[2][0] = 0x000000FFU; mask[2][1] = 0x0000FFFFU; mask[2][2] = 0x00FFFFFFU;
2251 mask[3][0] = 0x000000FFU; mask[3][1] = 0x0000FFFFU; mask[3][2] = 0x00FFFFFFU;
2258 if (hcryp->
Init.GCMCMACPhase == CRYP_INIT_PHASE)
2261 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2263 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE);
2273 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2283 else if (hcryp->
Init.GCMCMACPhase == CRYP_HEADER_PHASE)
2289 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2291 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE);
2301 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2313 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2318 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE);
2332 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2342 difflengthmod4 = difflength%4U;
2350 #if defined(AES_CR_NPBLB) 2351 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CCM)
2353 if (hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
2366 if (addhoc_process == 0U)
2368 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2370 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2372 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2374 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2380 for(index=0U ; index < (difflength/4U); index ++)
2383 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2388 if (difflengthmod4 != 0U)
2390 hcryp->
Instance->DINR = ((*(uint32_t*)(inputaddr)) & mask[mask_index][difflengthmod4-1U]);
2393 for(index=0U; index < (4U - ((difflength+3U)/4U)); index ++)
2405 else if (hcryp->
Init.GCMCMACPhase == CRYP_PAYLOAD_PHASE)
2413 #
if defined(AES_CR_NPBLB)
2417 if ((hcryp->
Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC) && \
2423 difflengthmod4 = difflength%4U;
2426 for(index=0U ; index < 4U; index ++)
2428 intermediate_data[index] = hcryp->
Instance->DOUTR;
2432 for(index=0U ; index < (difflength/4U); index ++)
2434 *(uint32_t*)(outputaddr) = intermediate_data[index];
2441 if (difflengthmod4 != 0U)
2443 intermediate_data[difflength/4U] &= mask[mask_index][difflengthmod4-1U];
2444 *(uint32_t*)(outputaddr) = intermediate_data[difflength/4U];
2447 #if !defined(AES_CR_NPBLB) 2448 if (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_ENCRYPT)
2451 __HAL_CRYP_SET_CHAININGMODE(hcryp, CRYP_CHAINMODE_AES_GCM_GMAC);
2458 for(index=0U ; index < (4U - ((difflength+3U)/4U)); index ++)
2460 intermediate_data[((difflength+3U)/4U)+index] = 0;
2465 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2466 for(index=0U ; index < 4U; index ++)
2468 hcryp->
Instance->DINR = intermediate_data[index];
2476 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2478 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE);
2488 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2503 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2505 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2507 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2509 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2515 #if !defined(AES_CR_NPBLB) 2519 for(index=0U ; index < 4U; index ++)
2521 intermediate_data[index] = hcryp->
Instance->DOUTR;
2531 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2533 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE);
2543 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2555 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2560 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE);
2575 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2583 difflengthmod4 = difflength%4U;
2586 #if defined(AES_CR_NPBLB) 2590 uint32_t cr_temp = hcryp->
Instance->CR;
2592 if (((cr_temp & (AES_CR_CHMOD|AES_CR_MODE)) == (CRYP_CHAINMODE_AES_GCM_GMAC|CRYP_ALGOMODE_ENCRYPT))
2593 || ((cr_temp & (AES_CR_CHMOD|AES_CR_MODE)) == (CRYP_CHAINMODE_AES_CCM|CRYP_ALGOMODE_DECRYPT)))
2597 MODIFY_REG(hcryp->
Instance->CR, AES_CR_NPBLB, (16U - difflength) << AES_POSITION_CR_NPBLB);
2602 if (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_ENCRYPT)
2605 __HAL_CRYP_SET_CHAININGMODE(hcryp, CRYP_CHAINMODE_AES_CTR);
2611 for(index=0U ; index < (difflength/4U); index ++)
2614 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2618 if (difflengthmod4 != 0U)
2620 hcryp->
Instance->DINR = ((*(uint32_t*)(inputaddr)) & mask[mask_index][difflengthmod4-1U]);
2623 for(index=0U ; index < (4U - ((difflength+3U)/4U)); index ++)
2635 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2637 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2639 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2641 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2651 else if (hcryp->
Init.GCMCMACPhase == CRYP_FINAL_PHASE)
2654 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2661 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2663 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2665 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2667 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2670 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE);
2677 __HAL_CRYP_DISABLE(hcryp);
2682 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2693 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2726 if (outputaddr != 0U)
2735 __HAL_CRYP_ENABLE(hcryp);
2740 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2748 SET_BIT(hcryp->
Instance->CR, AES_CR_DMAINEN);
2751 if (outputaddr != 0U)
2756 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2764 SET_BIT(hcryp->
Instance->CR, AES_CR_DMAOUTEN);
2783 uint32_t inputaddr = (uint32_t)Input;
2784 uint32_t outputaddr = (uint32_t)Output;
2787 for(index=0U ; (index < Ilength); index += 16U)
2790 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2792 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2794 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2796 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
2808 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2811 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2813 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2815 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2817 *(uint32_t*)(outputaddr) = hcryp->
Instance->DOUTR;
2861 uint32_t outputaddr = (uint32_t)Output;
2871 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
2874 if (hcryp->
Init.KeySize == CRYP_KEYSIZE_256B)
2876 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->KEYR7);
2878 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->KEYR6);
2880 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->KEYR5);
2882 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->KEYR4);
2886 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->KEYR3);
2888 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->KEYR2);
2890 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->KEYR1);
2892 *(uint32_t*)(outputaddr) = __REV(hcryp->
Instance->KEYR0);
2923 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2933 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 2941 SET_BIT(hcryp->
Instance->CR, (AES_CR_DMAINEN | AES_CR_DMAOUTEN));
2944 __HAL_CRYP_ENABLE(hcryp);
2962 while(HAL_IS_BIT_CLR(hcryp->
Instance->SR, AES_SR_CCF))
2965 if(Timeout != HAL_MAX_DELAY)
2990 while(HAL_IS_BIT_SET(hcryp->
Instance->SR, AES_SR_BUSY))
2993 if(Timeout != HAL_MAX_DELAY)
3018 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 3038 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
3041 __HAL_CRYP_DISABLE(hcryp);
3047 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 3065 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 3071 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_ERR_CLEAR);
3086 uint32_t difflengthmod4 = difflength%4U;
3089 uint32_t mask[4][3];
3090 uint32_t mask_index = hcryp->
Init.DataType >> AES_CR_DATATYPE_Pos;
3092 uint32_t intermediate_data[4] = {0};
3094 mask[0][0] = 0xFF000000U; mask[0][1] = 0xFFFF0000U; mask[0][2] = 0xFFFFFF00U;
3095 mask[1][0] = 0x0000FF00U; mask[1][1] = 0x0000FFFFU; mask[1][2] = 0xFF00FFFFU;
3096 mask[2][0] = 0x000000FFU; mask[2][1] = 0x0000FFFFU; mask[2][2] = 0x00FFFFFFU;
3097 mask[3][0] = 0x000000FFU; mask[3][1] = 0x0000FFFFU; mask[3][2] = 0x00FFFFFFU;
3099 #if defined(AES_CR_NPBLB) 3102 if (READ_BIT(hcryp->
Instance->CR,AES_CR_GCMPH) == CRYP_PAYLOAD_PHASE)
3104 uint32_t cr_temp = hcryp->
Instance->CR;
3106 if (((cr_temp & (AES_CR_CHMOD|AES_CR_MODE)) == (CRYP_CHAINMODE_AES_GCM_GMAC|CRYP_ALGOMODE_ENCRYPT))
3107 || ((cr_temp & (AES_CR_CHMOD|AES_CR_MODE)) == (CRYP_CHAINMODE_AES_CCM|CRYP_ALGOMODE_DECRYPT)))
3111 MODIFY_REG(hcryp->
Instance->CR, AES_CR_NPBLB, (16U - difflength) << AES_POSITION_CR_NPBLB);
3116 if ((hcryp->
Init.GCMCMACPhase == CRYP_PAYLOAD_PHASE) &&
3117 (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_ENCRYPT))
3120 __HAL_CRYP_SET_CHAININGMODE(hcryp, CRYP_CHAINMODE_AES_CTR);
3126 for(index=0U ; index < (difflength/4U); index ++)
3129 hcryp->
Instance->DINR = *(uint32_t*)(inputaddr);
3134 if (difflengthmod4 != 0U)
3136 hcryp->
Instance->DINR = ((*(uint32_t*)(inputaddr)) & mask[mask_index][difflengthmod4-1U]);
3139 for(index=0U ; index < (4U - ((difflength+3U)/4U)); index ++)
3144 if (polling == (uint32_t)CRYP_POLLING_ON)
3150 #if (USE_HAL_CRYP_REGISTER_CALLBACKS == 1) 3158 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
3162 if (hcryp->
Init.GCMCMACPhase == CRYP_PAYLOAD_PHASE)
3166 for(index=0U ; index < 4U; index ++)
3168 intermediate_data[index] = hcryp->
Instance->DOUTR;
3172 for(index=0U ; index < (difflength/4U); index ++)
3174 *(uint32_t*)(outputaddr) = intermediate_data[index];
3181 if (difflengthmod4 != 0U)
3183 intermediate_data[difflength/4U] &= mask[mask_index][difflengthmod4-1U];
3184 *(uint32_t*)(outputaddr) = intermediate_data[difflength/4U];
3188 #if !defined(AES_CR_NPBLB) 3191 if (hcryp->
Init.OperatingMode == CRYP_ALGOMODE_ENCRYPT)
3194 __HAL_CRYP_SET_CHAININGMODE(hcryp, CRYP_CHAINMODE_AES_GCM_GMAC);
3201 for(index=0U ; index < (4U - ((difflength+3U)/4U)); index ++)
3203 intermediate_data[((difflength+3U)/4U)+index] = 0;
3206 for(index=0U ; index < 4U; index ++)
3208 hcryp->
Instance->DINR = intermediate_data[index];
3221 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
3222 for(index=0U ; index < 4U; index ++)
3224 intermediate_data[index] = hcryp->
Instance->DOUTR;
static void CRYP_Authentication_DMAError(DMA_HandleTypeDef *hdma)
DMA CRYP communication error callback for GCM, GMAC, CCM or CMAC chaining modes.
static void CRYP_DMAOutCplt(DMA_HandleTypeDef *hdma)
DMA CRYP Output Data process complete callback.
void(* ErrorCallback)(struct __CRYP_HandleTypeDef *hcryp)
__IO HAL_CRYP_STATETypeDef State
void HAL_CRYPEx_ProcessSuspend(CRYP_HandleTypeDef *hcryp)
Request CRYP processing suspension when in polling or interruption mode.
DMA_HandleTypeDef * hdmaout
DMA handle Structure definition.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
if(lpuartdiv >=LPUART_BRR_MIN_VALUE)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef HAL_CRYPEx_AES_Auth_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pInputData, uint64_t Size, uint8_t *pOutputData)
Carry out in DMA mode the authentication tag generation as well as the ciphering or deciphering opera...
DMA_HandleTypeDef * hdmain
void(* OutCpltCallback)(struct __CRYP_HandleTypeDef *hcryp)
void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp)
Output DMA transfer complete callback.
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
static HAL_StatusTypeDef CRYP_WaitOnBusyFlagReset(CRYP_HandleTypeDef const *const hcryp, uint32_t Timeout)
Wait for Busy Flag to be reset during a GCM payload encryption process suspension.
void HAL_CRYPEx_Read_ControlRegister(CRYP_HandleTypeDef *hcryp, uint8_t *Output)
In case of message GCM/GMAC (CCM/CMAC when applicable) processing suspension, read the Control Regist...
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
static void CRYP_Authentication_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_t outputaddr)
Set the DMA configuration and start the DMA transfer for GCM, GMAC, CCM or CMAC chaining modes...
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
HAL_StatusTypeDef CRYP_AES_Auth_IT(CRYP_HandleTypeDef *hcryp)
Handle CRYP block input/output data handling under interruption for GCM, GMAC, CCM or CMAC chaining m...
HAL_SuspendTypeDef SuspendRequest
HAL_StatusTypeDef HAL_CRYPEx_AES(CRYP_HandleTypeDef *hcryp, uint8_t *pInputData, uint16_t Size, uint8_t *pOutputData, uint32_t Timeout)
Carry out in polling mode the ciphering or deciphering operation according to hcryp->Init structure f...
CRYP handle Structure definition.
static void CRYP_Authentication_DMAOutCplt(DMA_HandleTypeDef *hdma)
DMA CRYP Output Data process complete callback for GCM, GMAC, CCM or CMAC chaining modes...
static void CRYP_DMAInCplt(DMA_HandleTypeDef *hdma)
DMA CRYP Input Data process complete callback.
void HAL_CRYPEx_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint8_t *Input)
In case of message GCM/GMAC (CCM/CMAC when applicable) processing resumption, rewrite the Suspend Reg...
static void CRYP_Padding(CRYP_HandleTypeDef *hcryp, uint32_t difflength, uint32_t polling)
Last header or payload block padding when size is not a multiple of 128 bits.
void HAL_CRYPEx_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint8_t *Output)
In case of message GCM/GMAC (CCM/CMAC when applicable) processing suspension, read the Suspend Regist...
void HAL_CRYPEx_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, uint8_t *Output)
In case of message processing suspension, read the Initialization Vector.
void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp)
CRYP error callback.
HAL_StatusTypeDef HAL_CRYPEx_AES_Auth(CRYP_HandleTypeDef *hcryp, uint8_t *pInputData, uint64_t Size, uint8_t *pOutputData, uint32_t Timeout)
Carry out in polling mode the authentication tag generation as well as the ciphering or deciphering o...
void(* CompCpltCallback)(struct __CRYP_HandleTypeDef *hcryp)
void HAL_CRYPEx_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint8_t *Output, uint32_t KeySize)
In case of message GCM/GMAC (CCM/CMAC when applicable) processing suspension, read the Key Registers...
void(* InCpltCallback)(struct __CRYP_HandleTypeDef *hcryp)
static HAL_StatusTypeDef CRYP_ReadKey(CRYP_HandleTypeDef *hcryp, uint8_t *Output, uint32_t Timeout)
Read derivative key in polling mode when CRYP hardware block is set in key derivation operating mode ...
void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp)
Input DMA transfer complete callback.
static void CRYP_DMAError(DMA_HandleTypeDef *hdma)
DMA CRYP communication error callback.
void HAL_CRYPEx_Write_ControlRegister(CRYP_HandleTypeDef *hcryp, uint8_t *Input)
In case of message GCM/GMAC (CCM/CMAC when applicable) processing resumption, rewrite the Control Reg...
static void CRYP_Authentication_DMAInCplt(DMA_HandleTypeDef *hdma)
DMA CRYP Input Data process complete callback for GCM, GMAC, CCM or CMAC chaining modes...
static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef const *const hcryp, uint32_t Timeout)
Handle CRYP hardware block Timeout when waiting for CCF flag to be raised.
__weak void HAL_CRYPEx_ComputationCpltCallback(CRYP_HandleTypeDef *hcryp)
Computation completed callbacks.
ADC handle Structure definition.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
void HAL_CRYPEx_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint8_t *Input, uint32_t KeySize)
In case of message GCM/GMAC (CCM/CMAC when applicable) processing resumption, rewrite the Key Registe...
static HAL_StatusTypeDef CRYP_ProcessData(CRYP_HandleTypeDef *hcryp, uint8_t *Input, uint16_t Ilength, uint8_t *Output, uint32_t Timeout)
Write/read input/output data in polling mode.
uint8_t * pCrypOutBuffPtr
HAL_StatusTypeDef HAL_CRYPEx_AES_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pInputData, uint16_t Size, uint8_t *pOutputData)
Carry out in interrupt mode the ciphering or deciphering operation according to hcryp->Init structure...
HAL_StatusTypeDef HAL_CRYPEx_AES_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pInputData, uint16_t Size, uint8_t *pOutputData)
Carry out in DMA mode the ciphering or deciphering operation according to hcryp->Init structure field...
HAL_StatusTypeDef HAL_CRYPEx_AES_Auth_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pInputData, uint64_t Size, uint8_t *pOutputData)
Carry out in interrupt mode the authentication tag generation as well as the ciphering or deciphering...
void HAL_CRYPEx_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, uint8_t *Input)
In case of message processing resumption, rewrite the Initialization Vector in the AES_IVRx registers...
static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_t outputaddr)
Set the DMA configuration and start the DMA transfer.