Lines Matching refs:hcryp
371 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_…
372 static HAL_StatusTypeDef CRYP_SetHeaderDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uin…
376 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize);
377 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp);
378 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
379 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp);
380 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp);
381 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp);
382 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp);
383 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
384 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp);
385 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
386 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
387 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp);
388 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
390 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
391 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
392 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp);
393 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp);
394 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp);
395 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
396 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
398 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Output);
399 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Input);
400 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Output);
401 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Input);
402 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Output, uint32_t KeySize);
403 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint32_t KeySize);
404 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp);
452 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Init() argument
455 if (hcryp == NULL) in HAL_CRYP_Init()
461 assert_param(IS_CRYP_KEYSIZE(hcryp->Init.KeySize)); in HAL_CRYP_Init()
462 assert_param(IS_CRYP_DATATYPE(hcryp->Init.DataType)); in HAL_CRYP_Init()
463 assert_param(IS_CRYP_ALGORITHM(hcryp->Init.Algorithm)); in HAL_CRYP_Init()
464 assert_param(IS_CRYP_INIT(hcryp->Init.KeyIVConfigSkip)); in HAL_CRYP_Init()
467 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
470 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
472 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_Init()
473 hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_Init()
474 hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_Init()
476 if (hcryp->MspInitCallback == NULL) in HAL_CRYP_Init()
478 hcryp->MspInitCallback = HAL_CRYP_MspInit; /* Legacy weak MspInit */ in HAL_CRYP_Init()
482 hcryp->MspInitCallback(hcryp); in HAL_CRYP_Init()
485 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
488 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
491 HAL_CRYP_MspInit(hcryp); in HAL_CRYP_Init()
496 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, in HAL_CRYP_Init()
497 hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_Init()
500 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_Init()
503 hcryp->KeyIVConfig = 0U; in HAL_CRYP_Init()
506 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
509 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_Init()
521 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_DeInit() argument
524 if (hcryp == NULL) in HAL_CRYP_DeInit()
530 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_DeInit()
533 hcryp->CrypInCount = 0; in HAL_CRYP_DeInit()
534 hcryp->CrypOutCount = 0; in HAL_CRYP_DeInit()
535 hcryp->CrypHeaderCount = 0; in HAL_CRYP_DeInit()
538 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_DeInit()
542 if (hcryp->MspDeInitCallback == NULL) in HAL_CRYP_DeInit()
544 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; /* Legacy weak MspDeInit */ in HAL_CRYP_DeInit()
547 hcryp->MspDeInitCallback(hcryp); in HAL_CRYP_DeInit()
552 HAL_CRYP_MspDeInit(hcryp); in HAL_CRYP_DeInit()
557 hcryp->State = HAL_CRYP_STATE_RESET; in HAL_CRYP_DeInit()
560 __HAL_UNLOCK(hcryp); in HAL_CRYP_DeInit()
574 HAL_StatusTypeDef HAL_CRYP_SetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_SetConfig() argument
577 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_SetConfig()
587 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_SetConfig()
590 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_SetConfig()
593 __HAL_LOCK(hcryp); in HAL_CRYP_SetConfig()
596 hcryp->Init.DataType = pConf->DataType; in HAL_CRYP_SetConfig()
597 hcryp->Init.pKey = pConf->pKey; in HAL_CRYP_SetConfig()
598 hcryp->Init.Algorithm = pConf->Algorithm; in HAL_CRYP_SetConfig()
599 hcryp->Init.KeySize = pConf->KeySize; in HAL_CRYP_SetConfig()
600 hcryp->Init.pInitVect = pConf->pInitVect; in HAL_CRYP_SetConfig()
601 hcryp->Init.Header = pConf->Header; in HAL_CRYP_SetConfig()
602 hcryp->Init.HeaderSize = pConf->HeaderSize; in HAL_CRYP_SetConfig()
603 hcryp->Init.B0 = pConf->B0; in HAL_CRYP_SetConfig()
604 hcryp->Init.DataWidthUnit = pConf->DataWidthUnit; in HAL_CRYP_SetConfig()
605 hcryp->Init.HeaderWidthUnit = pConf->HeaderWidthUnit; in HAL_CRYP_SetConfig()
606 hcryp->Init.KeyIVConfigSkip = pConf->KeyIVConfigSkip; in HAL_CRYP_SetConfig()
609 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, in HAL_CRYP_SetConfig()
610 hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_SetConfig()
613 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_ERR_CLEAR); in HAL_CRYP_SetConfig()
616 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
619 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_SetConfig()
622 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_SetConfig()
625 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_SetConfig()
633 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
636 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_SetConfig()
648 HAL_StatusTypeDef HAL_CRYP_GetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_GetConfig() argument
651 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_GetConfig()
656 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_GetConfig()
659 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_GetConfig()
662 __HAL_LOCK(hcryp); in HAL_CRYP_GetConfig()
665 pConf->DataType = hcryp->Init.DataType; in HAL_CRYP_GetConfig()
666 pConf->pKey = hcryp->Init.pKey; in HAL_CRYP_GetConfig()
667 pConf->Algorithm = hcryp->Init.Algorithm; in HAL_CRYP_GetConfig()
668 pConf->KeySize = hcryp->Init.KeySize ; in HAL_CRYP_GetConfig()
669 pConf->pInitVect = hcryp->Init.pInitVect; in HAL_CRYP_GetConfig()
670 pConf->Header = hcryp->Init.Header ; in HAL_CRYP_GetConfig()
671 pConf->HeaderSize = hcryp->Init.HeaderSize; in HAL_CRYP_GetConfig()
672 pConf->B0 = hcryp->Init.B0; in HAL_CRYP_GetConfig()
673 pConf->DataWidthUnit = hcryp->Init.DataWidthUnit; in HAL_CRYP_GetConfig()
674 pConf->HeaderWidthUnit = hcryp->Init.HeaderWidthUnit; in HAL_CRYP_GetConfig()
675 pConf->KeyIVConfigSkip = hcryp->Init.KeyIVConfigSkip; in HAL_CRYP_GetConfig()
678 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
681 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_GetConfig()
689 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
692 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_GetConfig()
702 __weak void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspInit() argument
705 UNUSED(hcryp); in HAL_CRYP_MspInit()
718 __weak void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspDeInit() argument
721 UNUSED(hcryp); in HAL_CRYP_MspDeInit()
743 HAL_StatusTypeDef HAL_CRYP_RegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef C… in HAL_CRYP_RegisterCallback() argument
751 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
756 __HAL_LOCK(hcryp); in HAL_CRYP_RegisterCallback()
758 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_RegisterCallback()
763 hcryp->InCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
767 hcryp->OutCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
771 hcryp->ErrorCallback = pCallback; in HAL_CRYP_RegisterCallback()
775 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
779 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
784 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
790 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_RegisterCallback()
795 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
799 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
804 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
813 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
819 __HAL_UNLOCK(hcryp); in HAL_CRYP_RegisterCallback()
837 HAL_StatusTypeDef HAL_CRYP_UnRegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef… in HAL_CRYP_UnRegisterCallback() argument
842 __HAL_LOCK(hcryp); in HAL_CRYP_UnRegisterCallback()
844 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_UnRegisterCallback()
849 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_UnRegisterCallback()
853 … hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_UnRegisterCallback()
857 … hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_UnRegisterCallback()
861 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
865 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
870 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
876 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_UnRegisterCallback()
881 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
885 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
890 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
899 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK;; in HAL_CRYP_UnRegisterCallback()
905 __HAL_UNLOCK(hcryp); in HAL_CRYP_UnRegisterCallback()
925 void HAL_CRYP_ProcessSuspend(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ProcessSuspend() argument
928 hcryp->SuspendRequest = HAL_CRYP_SUSPEND; in HAL_CRYP_ProcessSuspend()
939 HAL_StatusTypeDef HAL_CRYP_Suspend(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Suspend() argument
944 HAL_CRYP_ProcessSuspend(hcryp); in HAL_CRYP_Suspend()
948 state = HAL_CRYP_GetState(hcryp); in HAL_CRYP_Suspend()
951 if (HAL_CRYP_GetState(hcryp) == HAL_CRYP_STATE_READY) in HAL_CRYP_Suspend()
962 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || \ in HAL_CRYP_Suspend()
963 (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_Suspend()
966 CRYP_Read_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Suspend()
968 CRYP_Read_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Suspend()
970 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
973 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Suspend()
976 hcryp->Init_saved = hcryp->Init; in HAL_CRYP_Suspend()
977 hcryp->pCrypInBuffPtr_saved = hcryp->pCrypInBuffPtr; in HAL_CRYP_Suspend()
978 hcryp->pCrypOutBuffPtr_saved = hcryp->pCrypOutBuffPtr; in HAL_CRYP_Suspend()
979 hcryp->CrypInCount_saved = hcryp->CrypInCount; in HAL_CRYP_Suspend()
980 hcryp->CrypOutCount_saved = hcryp->CrypOutCount; in HAL_CRYP_Suspend()
981 hcryp->Phase_saved = hcryp->Phase; in HAL_CRYP_Suspend()
982 hcryp->State_saved = hcryp->State; in HAL_CRYP_Suspend()
983 hcryp->Size_saved = ((hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) ? \ in HAL_CRYP_Suspend()
984 (hcryp->Size / 4U) : hcryp->Size); in HAL_CRYP_Suspend()
985 hcryp->SizesSum_saved = hcryp->SizesSum; in HAL_CRYP_Suspend()
986 hcryp->AutoKeyDerivation_saved = hcryp->AutoKeyDerivation; in HAL_CRYP_Suspend()
987 hcryp->CrypHeaderCount_saved = hcryp->CrypHeaderCount; in HAL_CRYP_Suspend()
988 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in HAL_CRYP_Suspend()
990 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Suspend()
991 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Suspend()
994 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
998 hcryp->CR_saved = hcryp->Instance->CR; in HAL_CRYP_Suspend()
1013 HAL_StatusTypeDef HAL_CRYP_Resume(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Resume() argument
1016 if (hcryp == NULL) in HAL_CRYP_Resume()
1021 if (hcryp->State_saved != HAL_CRYP_STATE_SUSPENDED) in HAL_CRYP_Resume()
1030 hcryp->Init = hcryp->Init_saved; in HAL_CRYP_Resume()
1031 hcryp->State = hcryp->State_saved; in HAL_CRYP_Resume()
1034 if ((hcryp->Init_saved.Algorithm == CRYP_AES_ECB) || \ in HAL_CRYP_Resume()
1035 (hcryp->Init_saved.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1036 (hcryp->Init_saved.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1039 hcryp->AutoKeyDerivation = hcryp->AutoKeyDerivation_saved; in HAL_CRYP_Resume()
1041 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1042 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1044 hcryp->Init.pInitVect = hcryp->IV_saved; in HAL_CRYP_Resume()
1046 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1047 (void) HAL_CRYP_Init(hcryp); in HAL_CRYP_Resume()
1052 hcryp->Phase = hcryp->Phase_saved; in HAL_CRYP_Resume()
1053 hcryp->CrypHeaderCount = hcryp->CrypHeaderCount_saved; in HAL_CRYP_Resume()
1054 hcryp->SizesSum = hcryp->SizesSum_saved; in HAL_CRYP_Resume()
1057 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1059 CRYP_Write_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Resume()
1061 hcryp->Instance->CR = hcryp->CR_saved; in HAL_CRYP_Resume()
1062 CRYP_Write_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Resume()
1063 CRYP_Write_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Resume()
1067 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Resume()
1072 hcryp->ResumingFlag = 1U; in HAL_CRYP_Resume()
1073 if (READ_BIT(hcryp->CR_saved, AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in HAL_CRYP_Resume()
1075 if (HAL_CRYP_Encrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, \ in HAL_CRYP_Resume()
1076 hcryp->pCrypOutBuffPtr_saved) != HAL_OK) in HAL_CRYP_Resume()
1083 if (HAL_CRYP_Decrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, \ in HAL_CRYP_Resume()
1084 hcryp->pCrypOutBuffPtr_saved) != HAL_OK) in HAL_CRYP_Resume()
1212 HAL_StatusTypeDef HAL_CRYP_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Encrypt() argument
1218 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1221 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt()
1224 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt()
1227 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt()
1230 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt()
1233 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt()
1234 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt()
1235 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt()
1236 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt()
1239 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt()
1241 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt()
1245 hcryp->Size = Size; in HAL_CRYP_Encrypt()
1249 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt()
1252 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1262 status = CRYP_AES_Encrypt(hcryp, Timeout); in HAL_CRYP_Encrypt()
1268 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Encrypt()
1274 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1278 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt()
1286 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1289 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1295 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt()
1313 HAL_StatusTypeDef HAL_CRYP_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Decrypt() argument
1319 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1322 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt()
1325 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt()
1328 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt()
1331 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt()
1334 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt()
1335 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt()
1336 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt()
1337 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt()
1340 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt()
1342 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt()
1346 hcryp->Size = Size; in HAL_CRYP_Decrypt()
1350 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt()
1353 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1363 status = CRYP_AES_Decrypt(hcryp, Timeout); in HAL_CRYP_Decrypt()
1369 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Decrypt()
1375 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1379 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt()
1387 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1390 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1396 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt()
1413 HAL_StatusTypeDef HAL_CRYP_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Encrypt_IT() argument
1418 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1421 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_IT()
1424 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_IT()
1427 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_IT()
1430 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1434 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Encrypt_IT()
1436 hcryp->ResumingFlag = 0U; in HAL_CRYP_Encrypt_IT()
1437 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Encrypt_IT()
1439 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Encrypt_IT()
1440 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Encrypt_IT()
1444 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1445 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1451 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1452 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1455 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_IT()
1456 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_IT()
1459 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_IT()
1461 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_IT()
1465 hcryp->Size = Size; in HAL_CRYP_Encrypt_IT()
1469 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_IT()
1472 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1482 status = CRYP_AES_Encrypt_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1488 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Encrypt_IT()
1494 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1498 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_IT()
1506 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_IT()
1523 HAL_StatusTypeDef HAL_CRYP_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Decrypt_IT() argument
1528 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1531 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_IT()
1534 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_IT()
1537 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_IT()
1540 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1544 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Decrypt_IT()
1546 hcryp->ResumingFlag = 0U; in HAL_CRYP_Decrypt_IT()
1547 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Decrypt_IT()
1549 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Decrypt_IT()
1550 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Decrypt_IT()
1554 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1555 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1561 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1562 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1564 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_IT()
1565 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_IT()
1568 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_IT()
1570 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_IT()
1574 hcryp->Size = Size; in HAL_CRYP_Decrypt_IT()
1578 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_IT()
1581 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1591 status = CRYP_AES_Decrypt_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1597 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Decrypt_IT()
1603 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1607 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_IT()
1615 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_IT()
1632 HAL_StatusTypeDef HAL_CRYP_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Encrypt_DMA() argument
1638 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1641 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_DMA()
1644 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_DMA()
1647 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_DMA()
1650 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1653 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_DMA()
1654 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_DMA()
1655 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_DMA()
1656 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_DMA()
1659 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_DMA()
1661 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_DMA()
1665 hcryp->Size = Size; in HAL_CRYP_Encrypt_DMA()
1669 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_DMA()
1672 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1681 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in HAL_CRYP_Encrypt_DMA()
1683 if (hcryp->KeyIVConfig == 1U) in HAL_CRYP_Encrypt_DMA()
1694 hcryp->KeyIVConfig = 1U; in HAL_CRYP_Encrypt_DMA()
1701 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1704 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1706 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_DMA()
1707 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in HAL_CRYP_Encrypt_DMA()
1708 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in HAL_CRYP_Encrypt_DMA()
1709 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in HAL_CRYP_Encrypt_DMA()
1714 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1717 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), \ in HAL_CRYP_Encrypt_DMA()
1718 (uint32_t)(hcryp->pCrypOutBuffPtr)); in HAL_CRYP_Encrypt_DMA()
1725 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Encrypt_DMA()
1731 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1735 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_DMA()
1743 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_DMA()
1760 HAL_StatusTypeDef HAL_CRYP_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Decrypt_DMA() argument
1765 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1768 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_DMA()
1771 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_DMA()
1775 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_DMA()
1778 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1781 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_DMA()
1782 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_DMA()
1783 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_DMA()
1784 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_DMA()
1787 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_DMA()
1789 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_DMA()
1793 hcryp->Size = Size; in HAL_CRYP_Decrypt_DMA()
1797 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_DMA()
1800 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1810 status = CRYP_AES_Decrypt_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1816 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Decrypt_DMA()
1822 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1826 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_DMA()
1834 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_DMA()
1869 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_IRQHandler() argument
1871 uint32_t itsource = hcryp->Instance->CR; in HAL_CRYP_IRQHandler()
1872 uint32_t itflag = hcryp->Instance->SR; in HAL_CRYP_IRQHandler()
1880 hcryp->ErrorCode |= HAL_CRYP_ERROR_WRITE; in HAL_CRYP_IRQHandler()
1885 hcryp->ErrorCode |= HAL_CRYP_ERROR_READ; in HAL_CRYP_IRQHandler()
1894 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in HAL_CRYP_IRQHandler()
1896 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_IRQHandler()
1900 if ((hcryp->Instance->CR & CRYP_PHASE_HEADER) == CRYP_PHASE_HEADER) in HAL_CRYP_IRQHandler()
1902 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
1906 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
1911 CRYP_AES_IT(hcryp); in HAL_CRYP_IRQHandler()
1923 uint32_t HAL_CRYP_GetError(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetError() argument
1925 return hcryp->ErrorCode; in HAL_CRYP_GetError()
1934 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetState() argument
1936 return hcryp->State; in HAL_CRYP_GetState()
1945 __weak void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_InCpltCallback() argument
1948 UNUSED(hcryp); in HAL_CRYP_InCpltCallback()
1961 __weak void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_OutCpltCallback() argument
1964 UNUSED(hcryp); in HAL_CRYP_OutCpltCallback()
1977 __weak void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ErrorCallback() argument
1980 UNUSED(hcryp); in HAL_CRYP_ErrorCallback()
2005 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Encrypt() argument
2011 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt()
2013 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt()
2024 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt()
2031 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2033 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2036 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt()
2037 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Encrypt()
2038 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Encrypt()
2039 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Encrypt()
2044 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt()
2047 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt()
2049 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2050 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2051 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Encrypt()
2054 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Encrypt()
2055 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2056 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2060 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2063 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2075 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Encrypt_IT() argument
2079 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt_IT()
2081 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt_IT()
2092 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt_IT()
2099 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2101 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2104 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt_IT()
2105 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Encrypt_IT()
2106 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Encrypt_IT()
2107 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Encrypt_IT()
2112 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt_IT()
2114 if (hcryp->Size != 0U) in CRYP_AES_Encrypt_IT()
2118 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_Encrypt_IT()
2121 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt_IT()
2126 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2127 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Encrypt_IT()
2128 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2129 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Encrypt_IT()
2130 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2131 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Encrypt_IT()
2132 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2133 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Encrypt_IT()
2138 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2141 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2154 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Decrypt() argument
2160 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt()
2162 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt()
2173 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt()
2180 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2182 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 Key preparation*/ in CRYP_AES_Decrypt()
2185 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2188 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2191 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2194 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2197 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2200 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt()
2201 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2204 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt()
2208 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt()
2211 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2216 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2219 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt()
2225 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2229 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt()
2232 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt()
2233 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Decrypt()
2234 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Decrypt()
2235 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Decrypt()
2240 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt()
2243 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2245 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2246 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2247 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Decrypt()
2250 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Decrypt()
2251 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2252 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2256 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2259 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2270 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_IT() argument
2275 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_IT()
2277 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_IT()
2288 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_IT()
2295 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2297 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 Key preparation*/ in CRYP_AES_Decrypt_IT()
2300 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2303 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2306 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2316 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2319 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2320 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2323 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2326 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_IT()
2329 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt_IT()
2332 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2337 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2340 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt_IT()
2346 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2350 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_IT()
2353 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_IT()
2354 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Decrypt_IT()
2355 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Decrypt_IT()
2356 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Decrypt_IT()
2361 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_IT()
2362 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_IT()
2365 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_Decrypt_IT()
2368 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2373 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2374 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Decrypt_IT()
2375 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2376 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Decrypt_IT()
2377 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2378 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Decrypt_IT()
2379 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2380 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Decrypt_IT()
2385 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2388 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2400 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_DMA() argument
2405 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_DMA()
2407 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_DMA()
2418 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_DMA()
2425 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2427 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 key preparation*/ in CRYP_AES_Decrypt_DMA()
2430 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
2433 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2436 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2446 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2449 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
2450 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2453 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2456 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_DMA()
2459 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt_DMA()
2462 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
2467 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2470 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt_DMA()
2476 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2479 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_DMA()
2482 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_DMA()
2483 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Decrypt_DMA()
2484 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Decrypt_DMA()
2485 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Decrypt_DMA()
2490 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_DMA()
2492 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_DMA()
2495 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), (uint32_t)(hcryp->… in CRYP_AES_Decrypt_DMA()
2500 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2503 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2518 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAInCplt() local
2528 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_DMAInCplt()
2530 if (hcryp->Phase == CRYP_PHASE_HEADER_DMA_FEED) in CRYP_DMAInCplt()
2533 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
2536 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_DMAInCplt()
2538 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_DMAInCplt()
2540 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_DMAInCplt()
2544 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_DMAInCplt()
2550 hcryp->CrypHeaderCount = (uint16_t)((headersize_in_bytes / 16U) * 4U); in CRYP_DMAInCplt()
2553 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
2554 hcryp->CrypHeaderCount++ ; in CRYP_DMAInCplt()
2562 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
2569 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
2570 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_DMAInCplt()
2571 hcryp->Instance->DINR = tmp; in CRYP_DMAInCplt()
2576 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
2582 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
2586 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_DMAInCplt()
2589 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_DMAInCplt()
2592 (void)CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp); in CRYP_DMAInCplt()
2600 algo = hcryp->Instance->CR & AES_CR_CHMOD; in CRYP_DMAInCplt()
2607 (((hcryp->Size) % 16U) != 0U))) in CRYP_DMAInCplt()
2612 hcryp->InCpltCallback(hcryp); in CRYP_DMAInCplt()
2615 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAInCplt()
2634 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAOutCplt() local
2637 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAOUTEN); in CRYP_DMAOutCplt()
2640 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_DMAOutCplt()
2643 if (((hcryp->Size) % 16U) != 0U) in CRYP_DMAOutCplt()
2646 hcryp->CrypInCount = (hcryp->Size / 16U) * 4U; in CRYP_DMAOutCplt()
2647 hcryp->CrypOutCount = hcryp->CrypInCount; in CRYP_DMAOutCplt()
2650 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_DMAOutCplt()
2652 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_DMAOutCplt()
2653 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_DMAOutCplt()
2654 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_DMAOutCplt()
2657 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_DMAOutCplt()
2673 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_DMAOutCplt()
2674 hcryp->CrypInCount++; in CRYP_DMAOutCplt()
2679 hcryp->Instance->DINR = 0x0U; in CRYP_DMAOutCplt()
2685 hcryp->InCpltCallback(hcryp); in CRYP_DMAOutCplt()
2688 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAOutCplt()
2692 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAOutCplt()
2699 temp[count] = hcryp->Instance->DOUTR; in CRYP_DMAOutCplt()
2703 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (count < 4U)) in CRYP_DMAOutCplt()
2705 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[count]; in CRYP_DMAOutCplt()
2706 hcryp->CrypOutCount++; in CRYP_DMAOutCplt()
2711 if (((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_DMAOutCplt()
2712 && ((hcryp->Init.Algorithm & CRYP_AES_CCM) != CRYP_AES_CCM)) in CRYP_DMAOutCplt()
2715 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
2719 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAOutCplt()
2722 __HAL_UNLOCK(hcryp); in CRYP_DMAOutCplt()
2727 hcryp->OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
2730 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
2741 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAError() local
2744 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAError()
2747 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_DMAError()
2750 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_DMAError()
2755 hcryp->ErrorCallback(hcryp); in CRYP_DMAError()
2758 HAL_CRYP_ErrorCallback(hcryp); in CRYP_DMAError()
2771 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_… in CRYP_SetDMAConfig() argument
2774 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetDMAConfig()
2777 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
2780 hcryp->hdmaout->XferCpltCallback = CRYP_DMAOutCplt; in CRYP_SetDMAConfig()
2783 hcryp->hdmaout->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
2785 if ((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_SetDMAConfig()
2788 __HAL_CRYP_ENABLE(hcryp); in CRYP_SetDMAConfig()
2792 if (HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size) != HAL_OK) in CRYP_SetDMAConfig()
2795 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
2800 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2803 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2807 …if (HAL_DMA_Start_IT(hcryp->hdmaout, (uint32_t)&hcryp->Instance->DOUTR, outputaddr, Size) != HAL_O… in CRYP_SetDMAConfig()
2810 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
2815 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2818 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2822 SET_BIT(hcryp->Instance->CR, (AES_CR_DMAINEN | AES_CR_DMAOUTEN)); in CRYP_SetDMAConfig()
2833 static HAL_StatusTypeDef CRYP_SetHeaderDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uin… in CRYP_SetHeaderDMAConfig() argument
2836 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetHeaderDMAConfig()
2839 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetHeaderDMAConfig()
2842 hcryp->Phase = CRYP_PHASE_HEADER_DMA_FEED; in CRYP_SetHeaderDMAConfig()
2844 if (HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size) != HAL_OK) in CRYP_SetHeaderDMAConfig()
2847 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetHeaderDMAConfig()
2848 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_SetHeaderDMAConfig()
2851 __HAL_UNLOCK(hcryp); in CRYP_SetHeaderDMAConfig()
2857 SET_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_SetHeaderDMAConfig()
2869 static void CRYP_AES_ProcessData(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_ProcessData() argument
2876 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
2877 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
2878 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
2879 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
2880 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
2881 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
2882 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
2883 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
2886 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_ProcessData()
2889 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_ProcessData()
2892 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_ProcessData()
2893 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_ProcessData()
2896 __HAL_UNLOCK(hcryp); in CRYP_AES_ProcessData()
2899 hcryp->ErrorCallback(hcryp); in CRYP_AES_ProcessData()
2902 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_ProcessData()
2907 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_ProcessData()
2913 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_ProcessData()
2916 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_ProcessData()
2918 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_ProcessData()
2919 hcryp->CrypOutCount++; in CRYP_AES_ProcessData()
2932 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_IT() argument
2937 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_AES_IT()
2943 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_IT()
2946 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_IT()
2948 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_IT()
2949 hcryp->CrypOutCount++; in CRYP_AES_IT()
2952 if (hcryp->CrypOutCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
2955 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_IT()
2958 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_IT()
2961 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_IT()
2964 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
2969 hcryp->OutCpltCallback(hcryp); in CRYP_AES_IT()
2972 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_AES_IT()
2980 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_AES_IT()
2983 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_IT()
2986 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_AES_IT()
2988 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_IT()
2990 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_AES_IT()
2992 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_AES_IT()
2995 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3001 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3002 hcryp->CrypInCount++; in CRYP_AES_IT()
3003 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3004 hcryp->CrypInCount++; in CRYP_AES_IT()
3005 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3006 hcryp->CrypInCount++; in CRYP_AES_IT()
3007 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3008 hcryp->CrypInCount++; in CRYP_AES_IT()
3010 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3015 hcryp->InCpltCallback(hcryp); in CRYP_AES_IT()
3018 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AES_IT()
3027 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_AES_IT()
3030 hcryp->ErrorCallback(hcryp); in CRYP_AES_IT()
3033 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_IT()
3047 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize) in CRYP_SetKey() argument
3049 if (hcryp->Init.pKey != NULL) in CRYP_SetKey()
3054 hcryp->Instance->KEYR7 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3055 hcryp->Instance->KEYR6 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3056 hcryp->Instance->KEYR5 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3057 hcryp->Instance->KEYR4 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3058 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_SetKey()
3059 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_SetKey()
3060 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_SetKey()
3061 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_SetKey()
3064 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3065 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3066 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3067 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3083 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESGCM_Process() argument
3086 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U) ; in CRYP_AESGCM_Process()
3095 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process()
3097 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process()
3102 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process()
3109 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process()
3110 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process()
3115 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process()
3122 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process()
3126 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process()
3129 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3132 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process()
3133 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AESGCM_Process()
3134 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AESGCM_Process()
3135 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AESGCM_Process()
3138 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3141 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3144 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3145 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3148 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3152 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process()
3156 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3164 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process()
3167 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process()
3170 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process()
3174 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3184 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3185 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3189 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESGCM_Process()
3197 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3200 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3201 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3204 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3208 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3209 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3212 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3215 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process()
3218 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process()
3221 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process()
3236 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process()
3237 hcryp->CrypInCount++; in CRYP_AESGCM_Process()
3242 hcryp->Instance->DINR = 0U; in CRYP_AESGCM_Process()
3246 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3248 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3249 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3253 hcryp->ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3256 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3261 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process()
3268 temp[index] = hcryp->Instance->DOUTR; in CRYP_AESGCM_Process()
3272 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp[index]; in CRYP_AESGCM_Process()
3273 hcryp->CrypOutCount++; in CRYP_AESGCM_Process()
3287 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_IT() argument
3303 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESGCM_Process_IT()
3305 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESGCM_Process_IT()
3312 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESGCM_Process_IT()
3314 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESGCM_Process_IT()
3318 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESGCM_Process_IT()
3321 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_IT()
3323 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_IT()
3328 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_IT()
3335 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_IT()
3336 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_IT()
3341 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_IT()
3348 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_IT()
3352 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_IT()
3355 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
3358 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_IT()
3359 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AESGCM_Process_IT()
3360 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AESGCM_Process_IT()
3361 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AESGCM_Process_IT()
3364 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3374 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
3377 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
3378 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3381 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3384 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESGCM_Process_IT()
3387 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process_IT()
3392 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESGCM_Process_IT()
3395 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3398 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3400 if (hcryp->Init.HeaderSize == 0U) /*header phase is skipped*/ in CRYP_AESGCM_Process_IT()
3403 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_IT()
3406 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_IT()
3409 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
3412 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
3415 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3418 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3421 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3423 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
3425 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3426 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3427 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3428 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3429 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3430 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3431 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3432 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3433 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
3438 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3441 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3454 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
3456 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
3459 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
3475 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3476 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3481 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3487 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3490 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3501 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3502 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
3510 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3512 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3518 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3519 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESGCM_Process_IT()
3520 hcryp->Instance->DINR = tmp; in CRYP_AESGCM_Process_IT()
3522 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
3526 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3528 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3536 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3537 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3538 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3539 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3540 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3541 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3542 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3543 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3552 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
3555 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
3558 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3561 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3564 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3566 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
3568 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3569 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3570 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3571 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3572 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3573 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3574 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3575 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3576 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
3581 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3584 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3589 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3600 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
3602 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
3605 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
3621 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3622 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3627 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3633 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3636 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3640 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3655 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_DMA() argument
3660 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_DMA()
3662 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_DMA()
3667 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_DMA()
3674 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_DMA()
3675 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_DMA()
3680 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_DMA()
3687 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_DMA()
3691 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_DMA()
3694 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
3697 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_DMA()
3698 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AESGCM_Process_DMA()
3699 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AESGCM_Process_DMA()
3700 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AESGCM_Process_DMA()
3703 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3713 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3716 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
3717 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
3720 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
3723 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESGCM_Process_DMA()
3726 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process_DMA()
3730 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
3739 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
3758 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESCCM_Process() argument
3761 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U) ; in CRYP_AESCCM_Process()
3770 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process()
3772 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process()
3777 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process()
3784 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process()
3785 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process()
3790 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process()
3796 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process()
3800 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process()
3803 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
3806 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
3807 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process()
3808 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process()
3809 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process()
3812 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
3815 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3818 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3819 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3822 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3826 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
3831 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3839 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process()
3842 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process()
3845 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process()
3849 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
3858 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
3859 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
3863 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESCCM_Process()
3871 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
3874 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3875 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3878 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3882 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
3883 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
3886 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
3889 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESCCM_Process()
3891 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_AESCCM_Process()
3894 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20); in CRYP_AESCCM_Process()
3910 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process()
3911 hcryp->CrypInCount++; in CRYP_AESCCM_Process()
3917 hcryp->Instance->DINR = 0U; in CRYP_AESCCM_Process()
3921 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3924 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3925 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3928 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3932 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
3938 temp[loopcounter] = hcryp->Instance->DOUTR; in CRYP_AESCCM_Process()
3942 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[loopcounter]; in CRYP_AESCCM_Process()
3943 hcryp->CrypOutCount++; in CRYP_AESCCM_Process()
3958 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_IT() argument
3974 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESCCM_Process_IT()
3976 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESCCM_Process_IT()
3981 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_IT()
3983 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_IT()
3988 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_IT()
3995 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_IT()
3996 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_IT()
4001 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_IT()
4008 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_IT()
4012 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_IT()
4015 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
4018 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_IT()
4019 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_IT()
4020 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_IT()
4021 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_IT()
4024 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4034 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_IT()
4037 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_IT()
4038 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4041 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4044 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESCCM_Process_IT()
4047 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process_IT()
4052 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESCCM_Process_IT()
4055 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESCCM_Process_IT()
4058 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4060 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESCCM_Process_IT()
4062 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESCCM_Process_IT()
4066 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESCCM_Process_IT()
4072 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process_IT()
4074 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process_IT()
4076 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process_IT()
4078 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_AESCCM_Process_IT()
4081 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4084 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4087 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESCCM_Process_IT()
4090 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4093 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4095 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
4097 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4098 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4099 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4100 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4101 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4102 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4103 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4104 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4106 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
4111 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4114 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4121 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
4123 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
4124 … if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
4125 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
4128 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
4144 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4145 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4150 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4156 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4159 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4169 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4170 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process_IT()
4178 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4185 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4186 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESCCM_Process_IT()
4187 hcryp->Instance->DINR = tmp; in CRYP_AESCCM_Process_IT()
4188 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4193 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4200 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4203 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4210 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4211 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount - 1U); in CRYP_AESCCM_Process_IT()
4212 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4213 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount - 1U); in CRYP_AESCCM_Process_IT()
4214 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4215 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount - 1U); in CRYP_AESCCM_Process_IT()
4216 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4217 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount - 1U); in CRYP_AESCCM_Process_IT()
4225 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4228 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESCCM_Process_IT()
4231 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4234 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4236 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
4238 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4239 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4240 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4241 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4242 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4243 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4244 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4245 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4247 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
4252 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4255 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4262 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
4264 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
4265 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
4266 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
4269 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
4285 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4286 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4291 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4297 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4300 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4316 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_DMA() argument
4321 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_DMA()
4323 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_DMA()
4328 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_DMA()
4335 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_DMA()
4336 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_DMA()
4341 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_DMA()
4348 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_DMA()
4353 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_DMA()
4356 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
4359 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_DMA()
4360 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_DMA()
4361 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_DMA()
4362 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_DMA()
4365 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4375 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4378 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
4379 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
4382 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
4385 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESCCM_Process_DMA()
4388 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process_DMA()
4393 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
4402 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
4418 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_IT() argument
4435 temp[i] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_IT()
4438 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4440 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_GCMCCM_SetPayloadPhase_IT()
4441 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4444 incount = hcryp->CrypInCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
4445 outcount = hcryp->CrypOutCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
4446 if ((outcount >= (hcryp->Size / 4U)) && ((incount * 4U) >= hcryp->Size)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4450 if (!((hcryp->Init.Algorithm == CRYP_AES_CCM) && (hcryp->KeyIVConfig == 1U))) in CRYP_GCMCCM_SetPayloadPhase_IT()
4453 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
4457 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_IT()
4460 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4465 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4468 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4472 else if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4478 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetPayloadPhase_IT()
4481 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetPayloadPhase_IT()
4484 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetPayloadPhase_IT()
4486 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
4488 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
4490 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
4493 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4499 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4500 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4501 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4502 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4503 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4504 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4505 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4506 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4507 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4512 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4515 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4523 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetPayloadPhase_IT()
4525 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetPayloadPhase_IT()
4526 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetPayloadPhase_IT()
4527 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetPayloadPhase_IT()
4530 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_IT()
4546 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4547 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4552 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetPayloadPhase_IT()
4558 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4561 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4573 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_DMA() argument
4575 uint16_t wordsize = hcryp->Size / 4U ; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4584 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
4587 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4590 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4592 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
4598 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), wordsize, (uint32_t)(hcryp->pCrypOutBu… in CRYP_GCMCCM_SetPayloadPhase_DMA()
4603 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4606 reg = hcryp->Instance->CR & (AES_CR_CHMOD | AES_CR_MODE); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4611 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4628 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4629 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4634 hcryp->Instance->DINR = 0U; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4640 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4643 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4653 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4656 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4657 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4660 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4663 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4666 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4673 temp[index] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4677 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[index]; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4678 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4682 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4685 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4690 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4693 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4707 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_GCMCCM_SetHeaderPhase() argument
4718 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase()
4720 size_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase()
4724 size_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase()
4730 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
4733 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4742 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4743 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4744 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4745 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4746 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4747 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4748 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4749 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4751 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4754 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4757 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4758 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4761 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4765 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase()
4774 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4775 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4776 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4777 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4778 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4779 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4780 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4781 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4783 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4786 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4789 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4790 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4793 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4797 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase()
4802 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4803 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4811 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
4818 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4819 tmp &= mask[(hcryp->Init.DataType * 2U) + (size_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase()
4820 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase()
4825 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
4830 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4833 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4836 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4837 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4840 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4844 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase()
4850 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType); in CRYP_GCMCCM_SetHeaderPhase()
4853 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
4856 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4868 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_DMA() argument
4879 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4881 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4885 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4889 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4892 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4895 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4903 if (CRYP_SetHeaderDMAConfig(hcryp, (uint32_t)(hcryp->Init.Header), in CRYP_GCMCCM_SetHeaderPhase_DMA()
4917 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4918 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4926 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4933 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4934 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4935 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4940 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4945 if (CRYP_WaitOnCCFlag(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4948 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4951 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4952 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4955 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4959 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4966 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4969 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4972 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4988 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_IT() argument
5001 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_IT()
5003 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5007 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_IT()
5013 if (headersize_in_bytes <= ((uint32_t)(hcryp->CrypHeaderCount) * 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5016 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_IT()
5018 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_IT()
5020 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5022 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_GCMCCM_SetHeaderPhase_IT()
5025 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5028 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5031 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5034 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_IT()
5037 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5039 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5041 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5042 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5043 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5044 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5045 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5046 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5047 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5048 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5050 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5055 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5058 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5065 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetHeaderPhase_IT()
5066 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5067 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetHeaderPhase_IT()
5068 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetHeaderPhase_IT()
5071 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5087 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5088 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5093 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5099 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5102 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5106 else if ((((headersize_in_bytes / 4U) - (hcryp->CrypHeaderCount)) >= 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5112 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetHeaderPhase_IT()
5115 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase_IT()
5118 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5120 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5122 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5124 hcryp->Phase = CRYP_PHASE_HEADER_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5127 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5133 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5134 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5135 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5136 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5137 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5138 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5139 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5140 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5148 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5149 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
5157 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5159 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5165 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5166 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_IT()
5167 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_IT()
5169 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5173 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5175 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5189 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_WaitOnCCFlag() argument
5196 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)) in CRYP_WaitOnCCFlag()
5218 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_ClearCCFlagWhenHigh() argument
5228 __HAL_CRYP_DISABLE(hcryp); in CRYP_ClearCCFlagWhenHigh()
5231 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_ClearCCFlagWhenHigh()
5234 __HAL_UNLOCK(hcryp); in CRYP_ClearCCFlagWhenHigh()
5235 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_ClearCCFlagWhenHigh()
5239 hcryp->ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
5242 HAL_CRYP_ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
5245 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_ClearCCFlagWhenHigh()
5248 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_ClearCCFlagWhenHigh()
5261 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Output) in CRYP_Read_IVRegisters() argument
5265 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR3; in CRYP_Read_IVRegisters()
5267 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR2; in CRYP_Read_IVRegisters()
5269 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR1; in CRYP_Read_IVRegisters()
5271 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR0; in CRYP_Read_IVRegisters()
5284 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Input) in CRYP_Write_IVRegisters() argument
5288 hcryp->Instance->IVR3 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5290 hcryp->Instance->IVR2 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5292 hcryp->Instance->IVR1 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5294 hcryp->Instance->IVR0 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5307 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Output) in CRYP_Read_SuspendRegisters() argument
5313 if (READ_BIT(hcryp->Instance->CR, in CRYP_Read_SuspendRegisters()
5325 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Read_SuspendRegisters()
5326 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Read_SuspendRegisters()
5329 __HAL_UNLOCK(hcryp); in CRYP_Read_SuspendRegisters()
5330 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Read_SuspendRegisters()
5333 } while (HAL_IS_BIT_SET(hcryp->Instance->SR, AES_SR_BUSY)); in CRYP_Read_SuspendRegisters()
5338 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP7R; in CRYP_Read_SuspendRegisters()
5340 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP6R; in CRYP_Read_SuspendRegisters()
5342 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP5R; in CRYP_Read_SuspendRegisters()
5344 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP4R; in CRYP_Read_SuspendRegisters()
5346 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP3R; in CRYP_Read_SuspendRegisters()
5348 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP2R; in CRYP_Read_SuspendRegisters()
5350 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP1R; in CRYP_Read_SuspendRegisters()
5352 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP0R; in CRYP_Read_SuspendRegisters()
5365 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Input) in CRYP_Write_SuspendRegisters() argument
5369 hcryp->Instance->SUSP7R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5371 hcryp->Instance->SUSP6R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5373 hcryp->Instance->SUSP5R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5375 hcryp->Instance->SUSP4R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5377 hcryp->Instance->SUSP3R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5379 hcryp->Instance->SUSP2R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5381 hcryp->Instance->SUSP1R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5383 hcryp->Instance->SUSP0R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5396 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Output, uint32_t KeySize) in CRYP_Read_KeyRegisters() argument
5403 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
5405 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
5407 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
5409 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
5411 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_Read_KeyRegisters()
5413 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_Read_KeyRegisters()
5415 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_Read_KeyRegisters()
5417 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_Read_KeyRegisters()
5420 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
5422 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
5424 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
5426 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
5444 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint32_t KeySize) in CRYP_Write_KeyRegisters() argument
5450 hcryp->Instance->KEYR7 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5452 hcryp->Instance->KEYR6 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5454 hcryp->Instance->KEYR5 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5456 hcryp->Instance->KEYR4 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5460 hcryp->Instance->KEYR3 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5462 hcryp->Instance->KEYR2 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5464 hcryp->Instance->KEYR1 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5466 hcryp->Instance->KEYR0 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5475 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp) in CRYP_PhaseProcessingResume() argument
5483 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_ERR_CLEAR | CRYP_CCF_CLEAR); in CRYP_PhaseProcessingResume()
5486 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_PhaseProcessingResume()
5489 __HAL_CRYP_ENABLE(hcryp); in CRYP_PhaseProcessingResume()
5492 if (hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) in CRYP_PhaseProcessingResume()
5495 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
5498 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_PhaseProcessingResume()
5500 if ((((hcryp->Init.HeaderSize) - (hcryp->CrypHeaderCount)) >= 4U)) in CRYP_PhaseProcessingResume()
5503 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
5504 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
5505 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
5506 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
5507 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
5508 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
5509 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
5510 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
5515 for (loopcounter = 0U; loopcounter < (hcryp->Init.HeaderSize % 4U); loopcounter++) in CRYP_PhaseProcessingResume()
5517 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
5518 hcryp->CrypHeaderCount++ ; in CRYP_PhaseProcessingResume()
5523 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()
5531 if (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED) in CRYP_PhaseProcessingResume()
5535 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
5538 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_PhaseProcessingResume()
5541 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_PhaseProcessingResume()
5543 if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_PhaseProcessingResume()
5546 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
5547 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5548 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
5549 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5550 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
5551 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5552 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
5553 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5554 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_PhaseProcessingResume()
5559 hcryp->InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
5562 HAL_CRYP_InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
5569 npblb = (((hcryp->Size / 16U) + 1U) * 16U) - (hcryp->Size); in CRYP_PhaseProcessingResume()
5570 cr_temp = hcryp->Instance->CR; in CRYP_PhaseProcessingResume()
5571 …if ((((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES… in CRYP_PhaseProcessingResume()
5572 …(((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM… in CRYP_PhaseProcessingResume()
5575 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, ((uint32_t)npblb) << 20U); in CRYP_PhaseProcessingResume()
5591 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
5592 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5597 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()