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()
853hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_UnRegisterCallback()
857hcryp->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()
941 HAL_StatusTypeDef HAL_CRYP_Suspend(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Suspend() argument
946 HAL_CRYP_ProcessSuspend(hcryp); in HAL_CRYP_Suspend()
950 state = HAL_CRYP_GetState(hcryp); in HAL_CRYP_Suspend()
953 if (HAL_CRYP_GetState(hcryp) == HAL_CRYP_STATE_READY) in HAL_CRYP_Suspend()
964 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || \ in HAL_CRYP_Suspend()
965 (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_Suspend()
968 CRYP_Read_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Suspend()
970 CRYP_Read_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Suspend()
972 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
975 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Suspend()
978 hcryp->Init_saved = hcryp->Init; in HAL_CRYP_Suspend()
979 hcryp->pCrypInBuffPtr_saved = hcryp->pCrypInBuffPtr; in HAL_CRYP_Suspend()
980 hcryp->pCrypOutBuffPtr_saved = hcryp->pCrypOutBuffPtr; in HAL_CRYP_Suspend()
981 hcryp->CrypInCount_saved = hcryp->CrypInCount; in HAL_CRYP_Suspend()
982 hcryp->CrypOutCount_saved = hcryp->CrypOutCount; in HAL_CRYP_Suspend()
983 hcryp->Phase_saved = hcryp->Phase; in HAL_CRYP_Suspend()
984 hcryp->State_saved = hcryp->State; in HAL_CRYP_Suspend()
985 hcryp->Size_saved = ((hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) ? \ in HAL_CRYP_Suspend()
986 (hcryp->Size / 4U) : hcryp->Size); in HAL_CRYP_Suspend()
987 hcryp->SizesSum_saved = hcryp->SizesSum; in HAL_CRYP_Suspend()
988 hcryp->AutoKeyDerivation_saved = hcryp->AutoKeyDerivation; in HAL_CRYP_Suspend()
989 hcryp->CrypHeaderCount_saved = hcryp->CrypHeaderCount; in HAL_CRYP_Suspend()
990 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in HAL_CRYP_Suspend()
992 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Suspend()
993 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Suspend()
996 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
1000 hcryp->CR_saved = hcryp->Instance->CR; in HAL_CRYP_Suspend()
1015 HAL_StatusTypeDef HAL_CRYP_Resume(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Resume() argument
1018 if (hcryp == NULL) in HAL_CRYP_Resume()
1023 if (hcryp->State_saved != HAL_CRYP_STATE_SUSPENDED) in HAL_CRYP_Resume()
1032 hcryp->Init = hcryp->Init_saved; in HAL_CRYP_Resume()
1033 hcryp->State = hcryp->State_saved; in HAL_CRYP_Resume()
1036 if ((hcryp->Init_saved.Algorithm == CRYP_AES_ECB) || \ in HAL_CRYP_Resume()
1037 (hcryp->Init_saved.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1038 (hcryp->Init_saved.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1041 hcryp->AutoKeyDerivation = hcryp->AutoKeyDerivation_saved; in HAL_CRYP_Resume()
1043 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1044 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1046 hcryp->Init.pInitVect = hcryp->IV_saved; in HAL_CRYP_Resume()
1048 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1049 (void) HAL_CRYP_Init(hcryp); in HAL_CRYP_Resume()
1054 hcryp->Phase = hcryp->Phase_saved; in HAL_CRYP_Resume()
1055 hcryp->CrypHeaderCount = hcryp->CrypHeaderCount_saved; in HAL_CRYP_Resume()
1056 hcryp->SizesSum = hcryp->SizesSum_saved; in HAL_CRYP_Resume()
1059 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1061 CRYP_Write_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Resume()
1063 hcryp->Instance->CR = hcryp->CR_saved; in HAL_CRYP_Resume()
1064 CRYP_Write_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Resume()
1065 CRYP_Write_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Resume()
1069 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Resume()
1074 hcryp->ResumingFlag = 1U; in HAL_CRYP_Resume()
1075 if (READ_BIT(hcryp->CR_saved, AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in HAL_CRYP_Resume()
1077 if (HAL_CRYP_Encrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, \ in HAL_CRYP_Resume()
1078 hcryp->pCrypOutBuffPtr_saved) != HAL_OK) in HAL_CRYP_Resume()
1085 if (HAL_CRYP_Decrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, \ in HAL_CRYP_Resume()
1086 hcryp->pCrypOutBuffPtr_saved) != HAL_OK) in HAL_CRYP_Resume()
1214 HAL_StatusTypeDef HAL_CRYP_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Encrypt() argument
1220 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1223 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt()
1226 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt()
1229 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt()
1232 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt()
1235 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt()
1236 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt()
1237 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt()
1238 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt()
1241 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt()
1243 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt()
1247 hcryp->Size = Size; in HAL_CRYP_Encrypt()
1251 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt()
1254 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1264 status = CRYP_AES_Encrypt(hcryp, Timeout); in HAL_CRYP_Encrypt()
1270 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Encrypt()
1276 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1280 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt()
1288 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1291 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1297 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt()
1315 HAL_StatusTypeDef HAL_CRYP_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Decrypt() argument
1321 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1324 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt()
1327 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt()
1330 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt()
1333 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt()
1336 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt()
1337 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt()
1338 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt()
1339 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt()
1342 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt()
1344 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt()
1348 hcryp->Size = Size; in HAL_CRYP_Decrypt()
1352 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt()
1355 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1365 status = CRYP_AES_Decrypt(hcryp, Timeout); in HAL_CRYP_Decrypt()
1371 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Decrypt()
1377 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1381 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt()
1389 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1392 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1398 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt()
1415 HAL_StatusTypeDef HAL_CRYP_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Encrypt_IT() argument
1420 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1423 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_IT()
1426 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_IT()
1429 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_IT()
1432 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1436 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Encrypt_IT()
1438 hcryp->ResumingFlag = 0U; in HAL_CRYP_Encrypt_IT()
1439 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Encrypt_IT()
1441 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Encrypt_IT()
1442 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Encrypt_IT()
1446 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1447 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1453 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1454 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1457 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_IT()
1458 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_IT()
1461 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_IT()
1463 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_IT()
1467 hcryp->Size = Size; in HAL_CRYP_Encrypt_IT()
1471 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_IT()
1474 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1484 status = CRYP_AES_Encrypt_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1490 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Encrypt_IT()
1496 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1500 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_IT()
1508 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_IT()
1525 HAL_StatusTypeDef HAL_CRYP_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Decrypt_IT() argument
1530 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1533 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_IT()
1536 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_IT()
1539 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_IT()
1542 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1546 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Decrypt_IT()
1548 hcryp->ResumingFlag = 0U; in HAL_CRYP_Decrypt_IT()
1549 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Decrypt_IT()
1551 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Decrypt_IT()
1552 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Decrypt_IT()
1556 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1557 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1563 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1564 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1566 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_IT()
1567 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_IT()
1570 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_IT()
1572 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_IT()
1576 hcryp->Size = Size; in HAL_CRYP_Decrypt_IT()
1580 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_IT()
1583 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1593 status = CRYP_AES_Decrypt_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1599 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Decrypt_IT()
1605 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1609 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_IT()
1617 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_IT()
1634 HAL_StatusTypeDef HAL_CRYP_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Encrypt_DMA() argument
1640 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1643 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_DMA()
1646 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_DMA()
1649 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_DMA()
1652 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1655 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_DMA()
1656 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_DMA()
1657 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_DMA()
1658 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_DMA()
1661 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_DMA()
1663 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_DMA()
1667 hcryp->Size = Size; in HAL_CRYP_Encrypt_DMA()
1671 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_DMA()
1674 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1683 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in HAL_CRYP_Encrypt_DMA()
1685 if (hcryp->KeyIVConfig == 1U) in HAL_CRYP_Encrypt_DMA()
1696 hcryp->KeyIVConfig = 1U; in HAL_CRYP_Encrypt_DMA()
1703 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1706 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1708 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_DMA()
1709 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in HAL_CRYP_Encrypt_DMA()
1710 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in HAL_CRYP_Encrypt_DMA()
1711 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in HAL_CRYP_Encrypt_DMA()
1716 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1719 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), \ in HAL_CRYP_Encrypt_DMA()
1720 (uint32_t)(hcryp->pCrypOutBuffPtr)); in HAL_CRYP_Encrypt_DMA()
1727 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Encrypt_DMA()
1733 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1737 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_DMA()
1745 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_DMA()
1762 HAL_StatusTypeDef HAL_CRYP_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Decrypt_DMA() argument
1767 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1770 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_DMA()
1773 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_DMA()
1777 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_DMA()
1780 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1783 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_DMA()
1784 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_DMA()
1785 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_DMA()
1786 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_DMA()
1789 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_DMA()
1791 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_DMA()
1795 hcryp->Size = Size; in HAL_CRYP_Decrypt_DMA()
1799 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_DMA()
1802 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1812 status = CRYP_AES_Decrypt_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1818 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Decrypt_DMA()
1824 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1828 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_DMA()
1836 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_DMA()
1871 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_IRQHandler() argument
1873 uint32_t itsource = hcryp->Instance->CR; in HAL_CRYP_IRQHandler()
1874 uint32_t itflag = hcryp->Instance->SR; in HAL_CRYP_IRQHandler()
1882 hcryp->ErrorCode |= HAL_CRYP_ERROR_WRITE; in HAL_CRYP_IRQHandler()
1887 hcryp->ErrorCode |= HAL_CRYP_ERROR_READ; in HAL_CRYP_IRQHandler()
1896 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in HAL_CRYP_IRQHandler()
1898 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_IRQHandler()
1902 if ((hcryp->Instance->CR & CRYP_PHASE_HEADER) == CRYP_PHASE_HEADER) in HAL_CRYP_IRQHandler()
1904 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
1908 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
1913 CRYP_AES_IT(hcryp); in HAL_CRYP_IRQHandler()
1925 uint32_t HAL_CRYP_GetError(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetError() argument
1927 return hcryp->ErrorCode; in HAL_CRYP_GetError()
1936 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetState() argument
1938 return hcryp->State; in HAL_CRYP_GetState()
1947 __weak void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_InCpltCallback() argument
1950 UNUSED(hcryp); in HAL_CRYP_InCpltCallback()
1963 __weak void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_OutCpltCallback() argument
1966 UNUSED(hcryp); in HAL_CRYP_OutCpltCallback()
1979 __weak void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ErrorCallback() argument
1982 UNUSED(hcryp); in HAL_CRYP_ErrorCallback()
2007 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Encrypt() argument
2013 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt()
2015 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt()
2026 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt()
2033 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2035 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2038 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt()
2039 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Encrypt()
2040 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Encrypt()
2041 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Encrypt()
2046 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt()
2049 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt()
2051 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2052 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2053 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Encrypt()
2056 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Encrypt()
2057 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2058 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2062 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2065 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2077 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Encrypt_IT() argument
2081 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt_IT()
2083 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt_IT()
2094 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt_IT()
2101 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2103 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2106 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt_IT()
2107 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Encrypt_IT()
2108 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Encrypt_IT()
2109 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Encrypt_IT()
2114 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt_IT()
2116 if (hcryp->Size != 0U) in CRYP_AES_Encrypt_IT()
2120 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_Encrypt_IT()
2123 __HAL_CRYP_ENABLE(hcryp); 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()
2134 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2135 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Encrypt_IT()
2140 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2143 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2156 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Decrypt() argument
2162 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt()
2164 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt()
2175 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt()
2182 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2184 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 Key preparation*/ in CRYP_AES_Decrypt()
2187 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2190 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2193 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2196 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2199 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2202 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt()
2203 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2206 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt()
2210 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt()
2213 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2218 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2221 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt()
2227 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2231 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt()
2234 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt()
2235 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Decrypt()
2236 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Decrypt()
2237 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Decrypt()
2242 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt()
2245 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2247 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2248 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2249 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Decrypt()
2252 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Decrypt()
2253 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2254 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2258 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2261 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2272 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_IT() argument
2277 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_IT()
2279 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_IT()
2290 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_IT()
2297 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2299 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 Key preparation*/ in CRYP_AES_Decrypt_IT()
2302 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2305 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2308 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2318 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2321 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2322 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2325 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2328 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_IT()
2331 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt_IT()
2334 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2339 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2342 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt_IT()
2348 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2352 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_IT()
2355 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_IT()
2356 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Decrypt_IT()
2357 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Decrypt_IT()
2358 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Decrypt_IT()
2363 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_IT()
2364 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_IT()
2367 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_Decrypt_IT()
2370 __HAL_CRYP_ENABLE(hcryp); 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()
2381 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2382 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Decrypt_IT()
2387 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2390 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2402 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_DMA() argument
2407 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_DMA()
2409 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_DMA()
2420 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_DMA()
2427 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2429 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 key preparation*/ in CRYP_AES_Decrypt_DMA()
2432 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
2435 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2438 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2448 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2451 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
2452 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2455 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2458 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_DMA()
2461 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt_DMA()
2464 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
2469 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2472 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt_DMA()
2478 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2481 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_DMA()
2484 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_DMA()
2485 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Decrypt_DMA()
2486 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Decrypt_DMA()
2487 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Decrypt_DMA()
2492 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_DMA()
2494 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_DMA()
2497 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), (uint32_t)(hcryp->… in CRYP_AES_Decrypt_DMA()
2502 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2505 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2520 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAInCplt() local
2530 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_DMAInCplt()
2532 if (hcryp->Phase == CRYP_PHASE_HEADER_DMA_FEED) in CRYP_DMAInCplt()
2535 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
2538 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_DMAInCplt()
2540 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_DMAInCplt()
2542 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_DMAInCplt()
2546 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_DMAInCplt()
2552 hcryp->CrypHeaderCount = (uint16_t)((headersize_in_bytes / 16U) * 4U); in CRYP_DMAInCplt()
2555 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
2556 hcryp->CrypHeaderCount++ ; in CRYP_DMAInCplt()
2564 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
2571 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
2572 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_DMAInCplt()
2573 hcryp->Instance->DINR = tmp; in CRYP_DMAInCplt()
2578 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
2584 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
2588 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_DMAInCplt()
2591 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_DMAInCplt()
2594 (void)CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp); in CRYP_DMAInCplt()
2602 algo = hcryp->Instance->CR & AES_CR_CHMOD; in CRYP_DMAInCplt()
2609 (((hcryp->Size) % 16U) != 0U))) in CRYP_DMAInCplt()
2614 hcryp->InCpltCallback(hcryp); in CRYP_DMAInCplt()
2617 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAInCplt()
2636 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAOutCplt() local
2639 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAOUTEN); in CRYP_DMAOutCplt()
2642 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_DMAOutCplt()
2645 if (((hcryp->Size) % 16U) != 0U) in CRYP_DMAOutCplt()
2648 hcryp->CrypInCount = (hcryp->Size / 16U) * 4U; in CRYP_DMAOutCplt()
2649 hcryp->CrypOutCount = hcryp->CrypInCount; in CRYP_DMAOutCplt()
2652 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_DMAOutCplt()
2654 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_DMAOutCplt()
2655 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_DMAOutCplt()
2656 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_DMAOutCplt()
2659 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_DMAOutCplt()
2675 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_DMAOutCplt()
2676 hcryp->CrypInCount++; in CRYP_DMAOutCplt()
2681 hcryp->Instance->DINR = 0x0U; in CRYP_DMAOutCplt()
2687 hcryp->InCpltCallback(hcryp); in CRYP_DMAOutCplt()
2690 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAOutCplt()
2694 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAOutCplt()
2701 temp[count] = hcryp->Instance->DOUTR; in CRYP_DMAOutCplt()
2705 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (count < 4U)) in CRYP_DMAOutCplt()
2707 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[count]; in CRYP_DMAOutCplt()
2708 hcryp->CrypOutCount++; in CRYP_DMAOutCplt()
2713 if (((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_DMAOutCplt()
2714 && ((hcryp->Init.Algorithm & CRYP_AES_CCM) != CRYP_AES_CCM)) in CRYP_DMAOutCplt()
2717 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
2721 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAOutCplt()
2724 __HAL_UNLOCK(hcryp); in CRYP_DMAOutCplt()
2729 hcryp->OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
2732 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
2743 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAError() local
2746 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAError()
2749 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_DMAError()
2752 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_DMAError()
2757 hcryp->ErrorCallback(hcryp); in CRYP_DMAError()
2760 HAL_CRYP_ErrorCallback(hcryp); in CRYP_DMAError()
2773 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_… in CRYP_SetDMAConfig() argument
2776 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetDMAConfig()
2779 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
2782 hcryp->hdmaout->XferCpltCallback = CRYP_DMAOutCplt; in CRYP_SetDMAConfig()
2785 hcryp->hdmaout->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
2787 if ((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_SetDMAConfig()
2790 __HAL_CRYP_ENABLE(hcryp); in CRYP_SetDMAConfig()
2794 if (HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size) != HAL_OK) in CRYP_SetDMAConfig()
2797 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
2802 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2805 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2809 …if (HAL_DMA_Start_IT(hcryp->hdmaout, (uint32_t)&hcryp->Instance->DOUTR, outputaddr, Size) != HAL_O… in CRYP_SetDMAConfig()
2812 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
2817 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2820 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2824 SET_BIT(hcryp->Instance->CR, (AES_CR_DMAINEN | AES_CR_DMAOUTEN)); in CRYP_SetDMAConfig()
2835 static HAL_StatusTypeDef CRYP_SetHeaderDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uin… in CRYP_SetHeaderDMAConfig() argument
2838 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetHeaderDMAConfig()
2841 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetHeaderDMAConfig()
2844 hcryp->Phase = CRYP_PHASE_HEADER_DMA_FEED; in CRYP_SetHeaderDMAConfig()
2846 if (HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size) != HAL_OK) in CRYP_SetHeaderDMAConfig()
2849 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetHeaderDMAConfig()
2850 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_SetHeaderDMAConfig()
2853 __HAL_UNLOCK(hcryp); in CRYP_SetHeaderDMAConfig()
2859 SET_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_SetHeaderDMAConfig()
2871 static void CRYP_AES_ProcessData(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_ProcessData() argument
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()
2884 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
2885 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
2888 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_ProcessData()
2891 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_ProcessData()
2894 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_ProcessData()
2895 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_ProcessData()
2898 __HAL_UNLOCK(hcryp); in CRYP_AES_ProcessData()
2901 hcryp->ErrorCallback(hcryp); in CRYP_AES_ProcessData()
2904 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_ProcessData()
2909 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_ProcessData()
2915 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_ProcessData()
2918 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_ProcessData()
2920 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_ProcessData()
2921 hcryp->CrypOutCount++; in CRYP_AES_ProcessData()
2934 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_IT() argument
2939 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_AES_IT()
2945 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_IT()
2948 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_IT()
2950 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_IT()
2951 hcryp->CrypOutCount++; in CRYP_AES_IT()
2954 if (hcryp->CrypOutCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
2957 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_IT()
2960 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_IT()
2963 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_IT()
2966 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
2971 hcryp->OutCpltCallback(hcryp); in CRYP_AES_IT()
2974 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_AES_IT()
2982 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_AES_IT()
2985 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_IT()
2988 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_AES_IT()
2990 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_IT()
2992 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_AES_IT()
2994 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_AES_IT()
2997 __HAL_UNLOCK(hcryp); 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()
3009 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3010 hcryp->CrypInCount++; in CRYP_AES_IT()
3012 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3017 hcryp->InCpltCallback(hcryp); in CRYP_AES_IT()
3020 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AES_IT()
3029 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_AES_IT()
3032 hcryp->ErrorCallback(hcryp); in CRYP_AES_IT()
3035 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_IT()
3049 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize) in CRYP_SetKey() argument
3051 if (hcryp->Init.pKey != NULL) in CRYP_SetKey()
3056 hcryp->Instance->KEYR7 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3057 hcryp->Instance->KEYR6 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3058 hcryp->Instance->KEYR5 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3059 hcryp->Instance->KEYR4 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3060 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_SetKey()
3061 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_SetKey()
3062 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_SetKey()
3063 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_SetKey()
3066 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3067 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3068 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3069 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3085 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESGCM_Process() argument
3088 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U) ; in CRYP_AESGCM_Process()
3097 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process()
3099 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process()
3104 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process()
3111 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process()
3112 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process()
3117 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process()
3124 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process()
3128 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process()
3131 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3134 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process()
3135 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AESGCM_Process()
3136 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AESGCM_Process()
3137 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AESGCM_Process()
3140 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3143 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3146 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3147 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3150 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3154 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process()
3158 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3166 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process()
3169 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process()
3172 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process()
3176 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3186 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3187 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3191 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESGCM_Process()
3199 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3202 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3203 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3206 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3210 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3211 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3214 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3217 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process()
3220 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process()
3223 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process()
3238 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process()
3239 hcryp->CrypInCount++; in CRYP_AESGCM_Process()
3244 hcryp->Instance->DINR = 0U; in CRYP_AESGCM_Process()
3248 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3250 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3251 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3255 hcryp->ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3258 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3263 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process()
3270 temp[index] = hcryp->Instance->DOUTR; in CRYP_AESGCM_Process()
3274 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp[index]; in CRYP_AESGCM_Process()
3275 hcryp->CrypOutCount++; in CRYP_AESGCM_Process()
3289 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_IT() argument
3305 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESGCM_Process_IT()
3307 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESGCM_Process_IT()
3314 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESGCM_Process_IT()
3316 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESGCM_Process_IT()
3320 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESGCM_Process_IT()
3323 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_IT()
3325 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_IT()
3330 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_IT()
3337 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_IT()
3338 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_IT()
3343 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_IT()
3350 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_IT()
3354 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_IT()
3357 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
3360 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_IT()
3361 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AESGCM_Process_IT()
3362 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AESGCM_Process_IT()
3363 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AESGCM_Process_IT()
3366 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3376 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
3379 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
3380 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3383 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3386 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESGCM_Process_IT()
3389 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process_IT()
3394 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESGCM_Process_IT()
3397 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3400 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3402 if (hcryp->Init.HeaderSize == 0U) /*header phase is skipped*/ in CRYP_AESGCM_Process_IT()
3405 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_IT()
3408 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_IT()
3411 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
3414 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
3417 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3420 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3423 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3425 else if (hcryp->Size >= 16U) 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 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3434 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3435 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
3440 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3443 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3456 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
3458 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
3461 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
3477 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3478 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3483 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3489 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3492 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3503 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3504 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
3512 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3514 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3520 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3521 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESGCM_Process_IT()
3522 hcryp->Instance->DINR = tmp; in CRYP_AESGCM_Process_IT()
3524 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
3528 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3530 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()
3544 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3545 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3554 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
3557 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
3560 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3563 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3566 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3568 else if (hcryp->Size >= 16U) 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 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3577 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3578 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
3583 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3586 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3591 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3602 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
3604 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
3607 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
3623 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3624 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3629 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3635 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3638 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3642 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3657 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_DMA() argument
3662 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_DMA()
3664 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_DMA()
3669 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_DMA()
3676 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_DMA()
3677 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_DMA()
3682 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_DMA()
3689 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_DMA()
3693 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_DMA()
3696 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
3699 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_DMA()
3700 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AESGCM_Process_DMA()
3701 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AESGCM_Process_DMA()
3702 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AESGCM_Process_DMA()
3705 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3715 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3718 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
3719 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
3722 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
3725 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESGCM_Process_DMA()
3728 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process_DMA()
3732 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
3741 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
3760 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESCCM_Process() argument
3763 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U) ; in CRYP_AESCCM_Process()
3772 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process()
3774 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process()
3779 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process()
3786 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process()
3787 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process()
3792 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process()
3798 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process()
3802 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process()
3805 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
3808 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
3809 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process()
3810 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process()
3811 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process()
3814 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
3817 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3820 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3821 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3824 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3828 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
3833 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3841 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process()
3844 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process()
3847 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process()
3851 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
3860 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
3861 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
3865 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESCCM_Process()
3873 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
3876 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3877 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3880 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3884 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
3885 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
3888 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
3891 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESCCM_Process()
3893 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_AESCCM_Process()
3896 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20); in CRYP_AESCCM_Process()
3912 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process()
3913 hcryp->CrypInCount++; in CRYP_AESCCM_Process()
3919 hcryp->Instance->DINR = 0U; in CRYP_AESCCM_Process()
3923 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3926 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3927 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3930 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3934 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
3940 temp[loopcounter] = hcryp->Instance->DOUTR; in CRYP_AESCCM_Process()
3944 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[loopcounter]; in CRYP_AESCCM_Process()
3945 hcryp->CrypOutCount++; in CRYP_AESCCM_Process()
3960 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_IT() argument
3976 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESCCM_Process_IT()
3978 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESCCM_Process_IT()
3983 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_IT()
3985 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_IT()
3990 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_IT()
3997 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_IT()
3998 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_IT()
4003 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_IT()
4010 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_IT()
4014 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_IT()
4017 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
4020 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_IT()
4021 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_IT()
4022 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_IT()
4023 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_IT()
4026 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4036 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_IT()
4039 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_IT()
4040 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4043 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4046 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESCCM_Process_IT()
4049 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process_IT()
4054 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESCCM_Process_IT()
4057 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESCCM_Process_IT()
4060 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4062 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESCCM_Process_IT()
4064 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESCCM_Process_IT()
4068 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESCCM_Process_IT()
4074 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process_IT()
4076 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process_IT()
4078 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process_IT()
4080 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_AESCCM_Process_IT()
4083 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4086 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4089 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESCCM_Process_IT()
4092 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4095 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4097 else if (hcryp->Size >= 16U) 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()
4105 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4106 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4108 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
4113 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4116 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4123 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
4125 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
4126 … if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
4127 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
4130 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
4146 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4147 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4152 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4158 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4161 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4171 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4172 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process_IT()
4180 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4187 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4188 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESCCM_Process_IT()
4189 hcryp->Instance->DINR = tmp; in CRYP_AESCCM_Process_IT()
4190 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4195 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4202 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4205 HAL_CRYP_InCpltCallback(hcryp); 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()
4218 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4219 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount - 1U); in CRYP_AESCCM_Process_IT()
4227 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4230 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESCCM_Process_IT()
4233 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4236 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4238 else if (hcryp->Size >= 16U) 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()
4246 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4247 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AESCCM_Process_IT()
4249 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
4254 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4257 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4264 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
4266 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
4267 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
4268 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
4271 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
4287 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4288 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4293 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4299 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4302 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4318 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_DMA() argument
4323 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_DMA()
4325 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_DMA()
4330 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_DMA()
4337 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_DMA()
4338 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_DMA()
4343 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_DMA()
4350 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_DMA()
4355 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_DMA()
4358 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
4361 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_DMA()
4362 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_DMA()
4363 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_DMA()
4364 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_DMA()
4367 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4377 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4380 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
4381 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
4384 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
4387 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESCCM_Process_DMA()
4390 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process_DMA()
4395 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
4404 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
4420 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_IT() argument
4437 temp[i] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_IT()
4440 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4442 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_GCMCCM_SetPayloadPhase_IT()
4443 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4446 incount = hcryp->CrypInCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
4447 outcount = hcryp->CrypOutCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
4448 if ((outcount >= (hcryp->Size / 4U)) && ((incount * 4U) >= hcryp->Size)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4452 if (!((hcryp->Init.Algorithm == CRYP_AES_CCM) && (hcryp->KeyIVConfig == 1U))) in CRYP_GCMCCM_SetPayloadPhase_IT()
4455 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
4459 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_IT()
4462 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4467 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4470 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4474 else if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4480 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetPayloadPhase_IT()
4483 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetPayloadPhase_IT()
4486 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetPayloadPhase_IT()
4488 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
4490 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
4492 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
4495 __HAL_UNLOCK(hcryp); 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 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4508 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4509 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4514 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4517 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4525 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetPayloadPhase_IT()
4527 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetPayloadPhase_IT()
4528 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetPayloadPhase_IT()
4529 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetPayloadPhase_IT()
4532 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_IT()
4548 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4549 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4554 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetPayloadPhase_IT()
4560 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4563 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4575 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_DMA() argument
4577 uint16_t wordsize = hcryp->Size / 4U ; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4586 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
4589 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4592 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4594 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
4600 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), wordsize, (uint32_t)(hcryp->pCrypOutBu… in CRYP_GCMCCM_SetPayloadPhase_DMA()
4605 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4608 reg = hcryp->Instance->CR & (AES_CR_CHMOD | AES_CR_MODE); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4613 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4630 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4631 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4636 hcryp->Instance->DINR = 0U; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4642 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4645 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4655 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4658 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4659 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4662 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4665 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4668 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4675 temp[index] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4679 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[index]; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4680 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4684 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4687 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4692 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4695 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4709 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_GCMCCM_SetHeaderPhase() argument
4720 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase()
4722 size_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase()
4726 size_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase()
4732 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
4735 __HAL_CRYP_ENABLE(hcryp); 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()
4750 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4751 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4753 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4756 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4759 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4760 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4763 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4767 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); 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()
4782 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4783 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4785 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4788 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4791 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4792 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4795 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4799 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase()
4804 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4805 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4813 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
4820 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4821 tmp &= mask[(hcryp->Init.DataType * 2U) + (size_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase()
4822 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase()
4827 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
4832 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4835 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4838 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4839 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4842 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4846 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase()
4852 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType); in CRYP_GCMCCM_SetHeaderPhase()
4855 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
4858 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4870 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_DMA() argument
4881 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4883 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4887 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4891 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4894 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4897 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4905 if (CRYP_SetHeaderDMAConfig(hcryp, (uint32_t)(hcryp->Init.Header), in CRYP_GCMCCM_SetHeaderPhase_DMA()
4919 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4920 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4928 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4935 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4936 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4937 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4942 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4947 if (CRYP_WaitOnCCFlag(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4950 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4953 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4954 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4957 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4961 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4968 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4971 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4974 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4990 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_IT() argument
5003 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_IT()
5005 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5009 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_IT()
5015 if (headersize_in_bytes <= ((uint32_t)(hcryp->CrypHeaderCount) * 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5018 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_IT()
5020 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_IT()
5022 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5024 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_GCMCCM_SetHeaderPhase_IT()
5027 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5030 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5033 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5036 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_IT()
5039 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5041 else if (hcryp->Size >= 16U) 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()
5049 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5050 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5052 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5057 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5060 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5067 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetHeaderPhase_IT()
5068 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5069 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetHeaderPhase_IT()
5070 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetHeaderPhase_IT()
5073 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5089 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5090 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5095 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5101 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5104 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5108 else if ((((headersize_in_bytes / 4U) - (hcryp->CrypHeaderCount)) >= 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5114 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetHeaderPhase_IT()
5117 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase_IT()
5120 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5122 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5124 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5126 hcryp->Phase = CRYP_PHASE_HEADER_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5129 __HAL_UNLOCK(hcryp); 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()
5141 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5142 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5150 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5151 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
5159 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5161 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5167 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5168 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_IT()
5169 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_IT()
5171 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5175 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5177 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5191 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_WaitOnCCFlag() argument
5198 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)) in CRYP_WaitOnCCFlag()
5220 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_ClearCCFlagWhenHigh() argument
5230 __HAL_CRYP_DISABLE(hcryp); in CRYP_ClearCCFlagWhenHigh()
5233 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_ClearCCFlagWhenHigh()
5236 __HAL_UNLOCK(hcryp); in CRYP_ClearCCFlagWhenHigh()
5237 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_ClearCCFlagWhenHigh()
5241 hcryp->ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
5244 HAL_CRYP_ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
5247 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_ClearCCFlagWhenHigh()
5250 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_ClearCCFlagWhenHigh()
5263 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Output) in CRYP_Read_IVRegisters() argument
5267 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR3; in CRYP_Read_IVRegisters()
5269 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR2; in CRYP_Read_IVRegisters()
5271 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR1; in CRYP_Read_IVRegisters()
5273 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR0; in CRYP_Read_IVRegisters()
5286 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Input) in CRYP_Write_IVRegisters() argument
5290 hcryp->Instance->IVR3 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5292 hcryp->Instance->IVR2 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5294 hcryp->Instance->IVR1 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5296 hcryp->Instance->IVR0 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5309 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Output) in CRYP_Read_SuspendRegisters() argument
5315 if (READ_BIT(hcryp->Instance->CR, in CRYP_Read_SuspendRegisters()
5327 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Read_SuspendRegisters()
5328 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Read_SuspendRegisters()
5331 __HAL_UNLOCK(hcryp); in CRYP_Read_SuspendRegisters()
5332 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Read_SuspendRegisters()
5335 } while (HAL_IS_BIT_SET(hcryp->Instance->SR, AES_SR_BUSY)); in CRYP_Read_SuspendRegisters()
5340 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP7R; in CRYP_Read_SuspendRegisters()
5342 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP6R; in CRYP_Read_SuspendRegisters()
5344 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP5R; in CRYP_Read_SuspendRegisters()
5346 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP4R; in CRYP_Read_SuspendRegisters()
5348 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP3R; in CRYP_Read_SuspendRegisters()
5350 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP2R; in CRYP_Read_SuspendRegisters()
5352 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP1R; in CRYP_Read_SuspendRegisters()
5354 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP0R; in CRYP_Read_SuspendRegisters()
5367 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Input) in CRYP_Write_SuspendRegisters() argument
5371 hcryp->Instance->SUSP7R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5373 hcryp->Instance->SUSP6R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5375 hcryp->Instance->SUSP5R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5377 hcryp->Instance->SUSP4R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5379 hcryp->Instance->SUSP3R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5381 hcryp->Instance->SUSP2R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5383 hcryp->Instance->SUSP1R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5385 hcryp->Instance->SUSP0R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5398 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Output, uint32_t KeySize) in CRYP_Read_KeyRegisters() argument
5405 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
5407 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
5409 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
5411 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
5413 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_Read_KeyRegisters()
5415 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_Read_KeyRegisters()
5417 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_Read_KeyRegisters()
5419 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_Read_KeyRegisters()
5422 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
5424 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
5426 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
5428 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
5446 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint32_t KeySize) in CRYP_Write_KeyRegisters() argument
5452 hcryp->Instance->KEYR7 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5454 hcryp->Instance->KEYR6 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5456 hcryp->Instance->KEYR5 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5458 hcryp->Instance->KEYR4 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5462 hcryp->Instance->KEYR3 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5464 hcryp->Instance->KEYR2 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5466 hcryp->Instance->KEYR1 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5468 hcryp->Instance->KEYR0 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
5477 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp) in CRYP_PhaseProcessingResume() argument
5485 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_ERR_CLEAR | CRYP_CCF_CLEAR); in CRYP_PhaseProcessingResume()
5488 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_PhaseProcessingResume()
5491 __HAL_CRYP_ENABLE(hcryp); in CRYP_PhaseProcessingResume()
5494 if (hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) in CRYP_PhaseProcessingResume()
5497 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
5500 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_PhaseProcessingResume()
5502 if ((((hcryp->Init.HeaderSize) - (hcryp->CrypHeaderCount)) >= 4U)) 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()
5511 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
5512 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
5517 for (loopcounter = 0U; loopcounter < (hcryp->Init.HeaderSize % 4U); loopcounter++) in CRYP_PhaseProcessingResume()
5519 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
5520 hcryp->CrypHeaderCount++ ; in CRYP_PhaseProcessingResume()
5525 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()
5533 if (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED) in CRYP_PhaseProcessingResume()
5537 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
5540 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_PhaseProcessingResume()
5543 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_PhaseProcessingResume()
5545 if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) 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 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
5555 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5556 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_PhaseProcessingResume()
5561 hcryp->InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
5564 HAL_CRYP_InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
5571 npblb = (((hcryp->Size / 16U) + 1U) * 16U) - (hcryp->Size); in CRYP_PhaseProcessingResume()
5572 cr_temp = hcryp->Instance->CR; in CRYP_PhaseProcessingResume()
5573 …if ((((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES… in CRYP_PhaseProcessingResume()
5574 …(((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM… in CRYP_PhaseProcessingResume()
5577 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, ((uint32_t)npblb) << 20U); in CRYP_PhaseProcessingResume()
5593 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
5594 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5599 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()