Lines Matching refs:hcryp

358 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_…
359 static HAL_StatusTypeDef CRYP_SetHeaderDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uin…
363 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize);
364 static void CRYP_SetIV(CRYP_HandleTypeDef *hcryp);
365 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp);
366 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
367 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp);
368 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp);
369 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp);
370 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp);
371 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
372 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp);
373 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
374 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
375 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp);
376 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
378 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
379 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
380 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp);
381 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp);
382 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp);
383 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
384 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
386 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output);
387 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input);
388 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output);
389 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input);
390 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output, uint32_t KeyS…
391 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input, uint32_t KeyS…
392 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp);
439 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Init() argument
447 if (hcryp == NULL) in HAL_CRYP_Init()
453 assert_param(IS_CRYP_KEYSIZE(hcryp->Init.KeySize)); in HAL_CRYP_Init()
454 assert_param(IS_CRYP_DATATYPE(hcryp->Init.DataType)); in HAL_CRYP_Init()
455 assert_param(IS_CRYP_ALGORITHM(hcryp->Init.Algorithm)); in HAL_CRYP_Init()
456 assert_param(IS_CRYP_INIT(hcryp->Init.KeyIVConfigSkip)); in HAL_CRYP_Init()
459 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
462 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
464 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_Init()
465 hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_Init()
466 hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_Init()
468 if (hcryp->MspInitCallback == NULL) in HAL_CRYP_Init()
470 hcryp->MspInitCallback = HAL_CRYP_MspInit; /* Legacy weak MspInit */ in HAL_CRYP_Init()
474 hcryp->MspInitCallback(hcryp); in HAL_CRYP_Init()
477 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
480 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
483 HAL_CRYP_MspInit(hcryp); in HAL_CRYP_Init()
489 cr_value = (uint32_t)(hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_Init()
491 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, cr_value); in HAL_CRYP_Init()
493 if (hcryp->Instance == AES) in HAL_CRYP_Init()
496 …cr_value = (uint32_t)(hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm | hcryp->… in HAL_CRYP_Init()
498 …MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD | AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, cr_… in HAL_CRYP_Init()
504 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY)) in HAL_CRYP_Init()
509 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Init()
510 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in HAL_CRYP_Init()
511 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
512 __HAL_UNLOCK(hcryp); in HAL_CRYP_Init()
518 while (HAL_IS_BIT_SET(hcryp->Instance->ISR, CRYP_FLAG_RNGEIF)) in HAL_CRYP_Init()
523 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Init()
524 hcryp->ErrorCode |= HAL_CRYP_ERROR_RNG; in HAL_CRYP_Init()
525 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
526 __HAL_UNLOCK(hcryp); in HAL_CRYP_Init()
530 cr_value = (uint32_t)(hcryp->Init.KeyMode | hcryp->Init.DataType | hcryp->Init.KeySize | \ in HAL_CRYP_Init()
531hcryp->Init.Algorithm | hcryp->Init.KeySelect | hcryp->Init.KeyProtection); in HAL_CRYP_Init()
533 …MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD | AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD | AE… in HAL_CRYP_Init()
538 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_Init()
541 hcryp->KeyIVConfig = 0U; in HAL_CRYP_Init()
544 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
547 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_Init()
558 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_DeInit() argument
561 if (hcryp == NULL) in HAL_CRYP_DeInit()
567 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_DeInit()
570 hcryp->CrypInCount = 0; in HAL_CRYP_DeInit()
571 hcryp->CrypOutCount = 0; in HAL_CRYP_DeInit()
572 hcryp->CrypHeaderCount = 0; in HAL_CRYP_DeInit()
575 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_DeInit()
578 SET_BIT(hcryp->Instance->CR, AES_CR_IPRST); in HAL_CRYP_DeInit()
581 CLEAR_BIT(hcryp->Instance->CR, AES_CR_IPRST); in HAL_CRYP_DeInit()
584 if (hcryp->MspDeInitCallback == NULL) in HAL_CRYP_DeInit()
586 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; /* Legacy weak MspDeInit */ in HAL_CRYP_DeInit()
589 hcryp->MspDeInitCallback(hcryp); in HAL_CRYP_DeInit()
592 HAL_CRYP_MspDeInit(hcryp); in HAL_CRYP_DeInit()
596 hcryp->State = HAL_CRYP_STATE_RESET; in HAL_CRYP_DeInit()
597 __HAL_UNLOCK(hcryp); in HAL_CRYP_DeInit()
610 HAL_StatusTypeDef HAL_CRYP_SetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_SetConfig() argument
613 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_SetConfig()
623 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_SetConfig()
626 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_SetConfig()
627 __HAL_LOCK(hcryp); in HAL_CRYP_SetConfig()
630 hcryp->Init.DataType = pConf->DataType; in HAL_CRYP_SetConfig()
631 hcryp->Init.pKey = pConf->pKey; in HAL_CRYP_SetConfig()
632 hcryp->Init.Algorithm = pConf->Algorithm; in HAL_CRYP_SetConfig()
633 hcryp->Init.KeySize = pConf->KeySize; in HAL_CRYP_SetConfig()
634 hcryp->Init.pInitVect = pConf->pInitVect; in HAL_CRYP_SetConfig()
635 hcryp->Init.Header = pConf->Header; in HAL_CRYP_SetConfig()
636 hcryp->Init.HeaderSize = pConf->HeaderSize; in HAL_CRYP_SetConfig()
637 hcryp->Init.B0 = pConf->B0; in HAL_CRYP_SetConfig()
638 hcryp->Init.DataWidthUnit = pConf->DataWidthUnit; in HAL_CRYP_SetConfig()
639 hcryp->Init.KeyMode = pConf->KeyMode; in HAL_CRYP_SetConfig()
640 hcryp->Init.HeaderWidthUnit = pConf->HeaderWidthUnit; in HAL_CRYP_SetConfig()
641 hcryp->Init.KeyIVConfigSkip = pConf->KeyIVConfigSkip; in HAL_CRYP_SetConfig()
645 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, in HAL_CRYP_SetConfig()
646 hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_SetConfig()
648 if (hcryp->Instance == AES) in HAL_CRYP_SetConfig()
651 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD | AES_CR_KMOD, in HAL_CRYP_SetConfig()
652hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm | hcryp->Init.KeyMode); in HAL_CRYP_SetConfig()
656 hcryp->Init.KeySelect = pConf->KeySelect; in HAL_CRYP_SetConfig()
657 hcryp->Init.KeyProtection = pConf->KeyProtection; in HAL_CRYP_SetConfig()
660 …if ((hcryp->Init.KeySelect != CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_WRAPPED)) in HAL_CRYP_SetConfig()
663 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_SetConfig()
665 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_WRAPPED); in HAL_CRYP_SetConfig()
669 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD | \ in HAL_CRYP_SetConfig()
670 … AES_CR_KEYSEL | AES_CR_KEYPROT | AES_CR_KMOD, hcryp->Init.DataType | hcryp->Init.KeySize | \ in HAL_CRYP_SetConfig()
671hcryp->Init.Algorithm | hcryp->Init.KeySelect | hcryp->Init.KeyProtection | hcryp->Init.KeyMode); in HAL_CRYP_SetConfig()
673 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in HAL_CRYP_SetConfig()
677 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF); in HAL_CRYP_SetConfig()
678 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
681 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_SetConfig()
684 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_SetConfig()
687 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_SetConfig()
694 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_SetConfig()
706 HAL_StatusTypeDef HAL_CRYP_GetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_GetConfig() argument
709 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_GetConfig()
714 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_GetConfig()
717 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_GetConfig()
718 __HAL_LOCK(hcryp); in HAL_CRYP_GetConfig()
721 pConf->DataType = hcryp->Init.DataType; in HAL_CRYP_GetConfig()
722 pConf->pKey = hcryp->Init.pKey; in HAL_CRYP_GetConfig()
723 pConf->Algorithm = hcryp->Init.Algorithm; in HAL_CRYP_GetConfig()
724 pConf->KeySize = hcryp->Init.KeySize; in HAL_CRYP_GetConfig()
725 pConf->pInitVect = hcryp->Init.pInitVect; in HAL_CRYP_GetConfig()
726 pConf->Header = hcryp->Init.Header; in HAL_CRYP_GetConfig()
727 pConf->HeaderSize = hcryp->Init.HeaderSize; in HAL_CRYP_GetConfig()
728 pConf->B0 = hcryp->Init.B0; in HAL_CRYP_GetConfig()
729 pConf->DataWidthUnit = hcryp->Init.DataWidthUnit; in HAL_CRYP_GetConfig()
730 pConf->KeyMode = hcryp->Init.KeyMode; in HAL_CRYP_GetConfig()
731 pConf->KeySelect = hcryp->Init.KeySelect; in HAL_CRYP_GetConfig()
732 pConf->KeyProtection = hcryp->Init.KeyProtection; in HAL_CRYP_GetConfig()
733 pConf->KeyIVConfigSkip = hcryp->Init.KeyIVConfigSkip; in HAL_CRYP_GetConfig()
734 pConf->HeaderWidthUnit = hcryp->Init.HeaderWidthUnit; in HAL_CRYP_GetConfig()
736 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
739 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_GetConfig()
746 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_GetConfig()
756 __weak void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspInit() argument
759 UNUSED(hcryp); in HAL_CRYP_MspInit()
772 __weak void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspDeInit() argument
775 UNUSED(hcryp); in HAL_CRYP_MspDeInit()
797 HAL_StatusTypeDef HAL_CRYP_RegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef C… in HAL_CRYP_RegisterCallback() argument
805 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
810 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_RegisterCallback()
815 hcryp->InCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
819 hcryp->OutCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
823 hcryp->ErrorCallback = pCallback; in HAL_CRYP_RegisterCallback()
827 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
831 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
836 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
842 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_RegisterCallback()
847 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
851 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
856 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
865 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
886 HAL_StatusTypeDef HAL_CRYP_UnRegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef… in HAL_CRYP_UnRegisterCallback() argument
891 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_UnRegisterCallback()
896 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /*!< Legacy weak InCpltCallback */ in HAL_CRYP_UnRegisterCallback()
900 hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /*!< Legacy weak OutCpltCallback */ in HAL_CRYP_UnRegisterCallback()
904 hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /*!< Legacy weak ErrorCallback */ in HAL_CRYP_UnRegisterCallback()
908 hcryp->MspInitCallback = HAL_CRYP_MspInit; /*!< Legacy weak MspInit */ in HAL_CRYP_UnRegisterCallback()
912 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; /*!< Legacy weak MspDeInit */ in HAL_CRYP_UnRegisterCallback()
917hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK;/*!< Legacy weak ERROR INVALID CALLBACK */ in HAL_CRYP_UnRegisterCallback()
923 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_UnRegisterCallback()
928 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
932 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
937 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
946 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK;; in HAL_CRYP_UnRegisterCallback()
969 void HAL_CRYP_ProcessSuspend(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ProcessSuspend() argument
972 hcryp->SuspendRequest = HAL_CRYP_SUSPEND; in HAL_CRYP_ProcessSuspend()
983 HAL_StatusTypeDef HAL_CRYP_Suspend(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Suspend() argument
988 HAL_CRYP_ProcessSuspend(hcryp); in HAL_CRYP_Suspend()
992 state = HAL_CRYP_GetState(hcryp); in HAL_CRYP_Suspend()
995 if (HAL_CRYP_GetState(hcryp) == HAL_CRYP_STATE_READY) in HAL_CRYP_Suspend()
1006 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || \ in HAL_CRYP_Suspend()
1007 (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_Suspend()
1010 CRYP_Read_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Suspend()
1012 CRYP_Read_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Suspend()
1014 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
1017 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Suspend()
1020 hcryp->Init_saved = hcryp->Init; in HAL_CRYP_Suspend()
1021 hcryp->pCrypInBuffPtr_saved = hcryp->pCrypInBuffPtr; in HAL_CRYP_Suspend()
1022 hcryp->pCrypOutBuffPtr_saved = hcryp->pCrypOutBuffPtr; in HAL_CRYP_Suspend()
1023 hcryp->CrypInCount_saved = hcryp->CrypInCount; in HAL_CRYP_Suspend()
1024 hcryp->CrypOutCount_saved = hcryp->CrypOutCount; in HAL_CRYP_Suspend()
1025 hcryp->Phase_saved = hcryp->Phase; in HAL_CRYP_Suspend()
1026 hcryp->State_saved = hcryp->State; in HAL_CRYP_Suspend()
1027 hcryp->Size_saved = ((hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD)\ in HAL_CRYP_Suspend()
1028 ? (hcryp->Size / 4U) : hcryp->Size); in HAL_CRYP_Suspend()
1029 hcryp->SizesSum_saved = hcryp->SizesSum; in HAL_CRYP_Suspend()
1030 hcryp->CrypHeaderCount_saved = hcryp->CrypHeaderCount; in HAL_CRYP_Suspend()
1031 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in HAL_CRYP_Suspend()
1033 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Suspend()
1034 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Suspend()
1037 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
1041 hcryp->CR_saved = hcryp->Instance->CR; in HAL_CRYP_Suspend()
1054 HAL_StatusTypeDef HAL_CRYP_Resume(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Resume() argument
1057 if (hcryp == NULL) in HAL_CRYP_Resume()
1062 if (hcryp->State_saved != HAL_CRYP_STATE_SUSPENDED) in HAL_CRYP_Resume()
1070 hcryp->Init = hcryp->Init_saved; in HAL_CRYP_Resume()
1071 hcryp->State = hcryp->State_saved; in HAL_CRYP_Resume()
1074 if ((hcryp->Init_saved.Algorithm == CRYP_AES_ECB) || \ in HAL_CRYP_Resume()
1075 (hcryp->Init_saved.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1076 (hcryp->Init_saved.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1079 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1080 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1082 hcryp->Init.pInitVect = hcryp->IV_saved; in HAL_CRYP_Resume()
1084 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1086 (void) HAL_CRYP_Init(hcryp); in HAL_CRYP_Resume()
1091 hcryp->Phase = hcryp->Phase_saved; in HAL_CRYP_Resume()
1092 hcryp->CrypHeaderCount = hcryp->CrypHeaderCount_saved; in HAL_CRYP_Resume()
1093 hcryp->SizesSum = hcryp->SizesSum_saved; in HAL_CRYP_Resume()
1096 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1098 CRYP_Write_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Resume()
1100 hcryp->Instance->CR = hcryp->CR_saved; in HAL_CRYP_Resume()
1101 CRYP_Write_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Resume()
1102 CRYP_Write_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Resume()
1103 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in HAL_CRYP_Resume()
1104 __HAL_CRYP_ENABLE(hcryp); in HAL_CRYP_Resume()
1108 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Resume()
1112 hcryp->ResumingFlag = 1U; in HAL_CRYP_Resume()
1113 if (READ_BIT(hcryp->CR_saved, AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in HAL_CRYP_Resume()
1115 if (HAL_CRYP_Encrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, in HAL_CRYP_Resume()
1116 hcryp->pCrypOutBuffPtr_saved) != HAL_OK) in HAL_CRYP_Resume()
1123 if (HAL_CRYP_Decrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, in HAL_CRYP_Resume()
1124 hcryp->pCrypOutBuffPtr_saved) != HAL_OK) in HAL_CRYP_Resume()
1141 HAL_StatusTypeDef HAL_CRYP_SaveContext(CRYP_HandleTypeDef *hcryp, CRYP_ContextTypeDef *pcont) in HAL_CRYP_SaveContext() argument
1144 if ((hcryp == NULL) || (pcont == NULL)) in HAL_CRYP_SaveContext()
1149 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_SaveContext()
1152 pcont->DataType = (uint32_t)(hcryp->Init.DataType); in HAL_CRYP_SaveContext()
1153 pcont->KeySize = (uint32_t)(hcryp->Init.KeySize); in HAL_CRYP_SaveContext()
1154 pcont->pKey = hcryp->Init.pKey; in HAL_CRYP_SaveContext()
1155 pcont->pInitVect = hcryp->Init.pInitVect; in HAL_CRYP_SaveContext()
1156 pcont->Algorithm = (uint32_t)(hcryp->Init.Algorithm); in HAL_CRYP_SaveContext()
1157 pcont->DataWidthUnit = (uint32_t)(hcryp->Init.DataWidthUnit); in HAL_CRYP_SaveContext()
1158 pcont->KeyIVConfigSkip = (uint32_t)(hcryp->Init.KeyIVConfigSkip); in HAL_CRYP_SaveContext()
1159 pcont->KeyMode = (uint32_t)(hcryp->Init.KeyMode); in HAL_CRYP_SaveContext()
1160 pcont->Phase = (uint32_t)(hcryp->Phase); in HAL_CRYP_SaveContext()
1161 pcont->KeyIVConfig = (uint32_t)(hcryp->KeyIVConfig); in HAL_CRYP_SaveContext()
1164 pcont->CR_Reg = READ_REG(hcryp->Instance->CR); in HAL_CRYP_SaveContext()
1167 pcont->IER_Reg = READ_BIT(hcryp->Instance->IER, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in HAL_CRYP_SaveContext()
1170 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_SaveContext()
1171 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_SaveContext()
1174 pcont->IVR0_Reg = READ_REG(hcryp->Instance->IVR0); in HAL_CRYP_SaveContext()
1175 pcont->IVR1_Reg = READ_REG(hcryp->Instance->IVR1); in HAL_CRYP_SaveContext()
1176 pcont->IVR2_Reg = READ_REG(hcryp->Instance->IVR2); in HAL_CRYP_SaveContext()
1177 pcont->IVR3_Reg = READ_REG(hcryp->Instance->IVR3); in HAL_CRYP_SaveContext()
1181 hcryp->KeyIVConfig = 0; in HAL_CRYP_SaveContext()
1188 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_SaveContext()
1201 HAL_StatusTypeDef HAL_CRYP_RestoreContext(CRYP_HandleTypeDef *hcryp, CRYP_ContextTypeDef *pcont) in HAL_CRYP_RestoreContext() argument
1204 if ((hcryp == NULL) || (pcont == NULL)) in HAL_CRYP_RestoreContext()
1209 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_RestoreContext()
1212 hcryp->Init.DataType = pcont->DataType; in HAL_CRYP_RestoreContext()
1213 hcryp->Init.KeySize = pcont->KeySize; in HAL_CRYP_RestoreContext()
1214 hcryp->Init.pKey = pcont->pKey; in HAL_CRYP_RestoreContext()
1215 hcryp->Init.pInitVect = pcont->pInitVect; in HAL_CRYP_RestoreContext()
1216 hcryp->Init.Algorithm = pcont->Algorithm; in HAL_CRYP_RestoreContext()
1217 hcryp->Init.DataWidthUnit = pcont->DataWidthUnit; in HAL_CRYP_RestoreContext()
1218 hcryp->Init.KeyIVConfigSkip = pcont->KeyIVConfigSkip; in HAL_CRYP_RestoreContext()
1219 hcryp->Init.KeyMode = pcont->KeyMode; in HAL_CRYP_RestoreContext()
1220 hcryp->Phase = pcont->Phase; in HAL_CRYP_RestoreContext()
1221 hcryp->KeyIVConfig = pcont->KeyIVConfig; in HAL_CRYP_RestoreContext()
1224 WRITE_REG(hcryp->Instance->CR, (uint32_t)(pcont->CR_Reg)); in HAL_CRYP_RestoreContext()
1227 WRITE_REG(hcryp->Instance->IER, (uint32_t)(pcont->IER_Reg)); in HAL_CRYP_RestoreContext()
1229 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_RestoreContext()
1230 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_RestoreContext()
1233 WRITE_REG(hcryp->Instance->IVR0, (uint32_t)(pcont->IVR0_Reg)); in HAL_CRYP_RestoreContext()
1234 WRITE_REG(hcryp->Instance->IVR1, (uint32_t)(pcont->IVR1_Reg)); in HAL_CRYP_RestoreContext()
1235 WRITE_REG(hcryp->Instance->IVR2, (uint32_t)(pcont->IVR2_Reg)); in HAL_CRYP_RestoreContext()
1236 WRITE_REG(hcryp->Instance->IVR3, (uint32_t)(pcont->IVR3_Reg)); in HAL_CRYP_RestoreContext()
1243 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_RestoreContext()
1359 HAL_StatusTypeDef HAL_CRYP_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, uint… in HAL_CRYP_Encrypt() argument
1365 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1368 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt()
1371 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt()
1374 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt()
1375 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt()
1378 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt()
1379 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt()
1380 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Encrypt()
1381 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Encrypt()
1384 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt()
1386 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt()
1390 hcryp->Size = Size; in HAL_CRYP_Encrypt()
1395 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt()
1397 if (hcryp->Instance == AES) in HAL_CRYP_Encrypt()
1400 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt()
1405 …MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE | AES_CR_KMOD, CRYP_OPERATINGMODE_ENCRYPT | CRYP_KEYMO… in HAL_CRYP_Encrypt()
1409 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1417 status = CRYP_AES_Encrypt(hcryp, Timeout); in HAL_CRYP_Encrypt()
1422 status = CRYP_AESGCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1427 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1431 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt()
1439 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1440 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1446 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt()
1462 HAL_StatusTypeDef HAL_CRYP_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, uint… in HAL_CRYP_Decrypt() argument
1468 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1471 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt()
1474 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt()
1477 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt()
1478 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt()
1481 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt()
1482 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt()
1483 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Decrypt()
1484 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Decrypt()
1487 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt()
1489 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt()
1493 hcryp->Size = Size; in HAL_CRYP_Decrypt()
1497 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt()
1500 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1508 status = CRYP_AES_Decrypt(hcryp, Timeout); in HAL_CRYP_Decrypt()
1513 status = CRYP_AESGCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1518 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1522 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt()
1530 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1531 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1537 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt()
1553 HAL_StatusTypeDef HAL_CRYP_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, u… in HAL_CRYP_Encrypt_IT() argument
1558 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1561 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_IT()
1564 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_IT()
1567 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_IT()
1568 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1572 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Encrypt_IT()
1574 hcryp->ResumingFlag = 0U; in HAL_CRYP_Encrypt_IT()
1575 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Encrypt_IT()
1577 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Encrypt_IT()
1578 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Encrypt_IT()
1582 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1583 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1589 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1590 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1593 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Encrypt_IT()
1594 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Encrypt_IT()
1597 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_IT()
1599 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_IT()
1603 hcryp->Size = Size; in HAL_CRYP_Encrypt_IT()
1607 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_IT()
1610 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1619 status = CRYP_AES_Encrypt_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1624 status = CRYP_AESGCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1629 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1633 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_IT()
1641 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_IT()
1657 HAL_StatusTypeDef HAL_CRYP_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, u… in HAL_CRYP_Decrypt_IT() argument
1662 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1665 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_IT()
1668 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_IT()
1671 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_IT()
1672 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1676 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Decrypt_IT()
1678 hcryp->ResumingFlag = 0U; in HAL_CRYP_Decrypt_IT()
1679 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Decrypt_IT()
1681 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Decrypt_IT()
1682 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Decrypt_IT()
1686 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1687 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1693 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1694 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1696 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Decrypt_IT()
1697 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Decrypt_IT()
1700 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_IT()
1702 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_IT()
1706 hcryp->Size = Size; in HAL_CRYP_Decrypt_IT()
1710 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_IT()
1713 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1721 status = CRYP_AES_Decrypt_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1726 status = CRYP_AESGCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1731 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1735 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_IT()
1743 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_IT()
1759 HAL_StatusTypeDef HAL_CRYP_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, … in HAL_CRYP_Encrypt_DMA() argument
1768 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1771 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_DMA()
1774 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_DMA()
1777 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_DMA()
1778 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1781 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_DMA()
1782 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_DMA()
1783 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Encrypt_DMA()
1784 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Encrypt_DMA()
1787 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_DMA()
1789 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_DMA()
1793 hcryp->Size = Size; in HAL_CRYP_Encrypt_DMA()
1797 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_DMA()
1800 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1807 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in HAL_CRYP_Encrypt_DMA()
1809 if (hcryp->KeyIVConfig == 1U) in HAL_CRYP_Encrypt_DMA()
1820 hcryp->KeyIVConfig = 1U; in HAL_CRYP_Encrypt_DMA()
1824 if ((dokeyivconfig == 1U) && (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG)) in HAL_CRYP_Encrypt_DMA()
1827 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1829 if (hcryp->Instance == AES) in HAL_CRYP_Encrypt_DMA()
1832 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in HAL_CRYP_Encrypt_DMA()
1834 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1838 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in HAL_CRYP_Encrypt_DMA()
1844 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in HAL_CRYP_Encrypt_DMA()
1847 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1857 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Encrypt_DMA()
1860 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in HAL_CRYP_Encrypt_DMA()
1861 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_DMA()
1862 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1865 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in HAL_CRYP_Encrypt_DMA()
1869 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1871 CRYP_SetIV(hcryp); in HAL_CRYP_Encrypt_DMA()
1876 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYNOCONFIG) in HAL_CRYP_Encrypt_DMA()
1878 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1881 CRYP_SetIV(hcryp); in HAL_CRYP_Encrypt_DMA()
1886 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1889 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size), (uint32_t)(hcryp->pCryp… in HAL_CRYP_Encrypt_DMA()
1895 status = CRYP_AESGCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1900 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1904 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_DMA()
1912 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_DMA()
1928 HAL_StatusTypeDef HAL_CRYP_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, … in HAL_CRYP_Decrypt_DMA() argument
1933 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1936 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_DMA()
1939 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_DMA()
1943 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_DMA()
1944 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1947 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_DMA()
1948 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_DMA()
1949 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Decrypt_DMA()
1950 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Decrypt_DMA()
1953 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_DMA()
1955 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_DMA()
1959 hcryp->Size = Size; in HAL_CRYP_Decrypt_DMA()
1963 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_DMA()
1966 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1974 status = CRYP_AES_Decrypt_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1979 status = CRYP_AESGCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1984 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1988 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_DMA()
1996 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_DMA()
2030 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_IRQHandler() argument
2033 if (__HAL_CRYP_GET_IT_SOURCE(hcryp, CRYP_IT_RWEIE) != RESET) in HAL_CRYP_IRQHandler()
2036 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_FLAG_WRERR) != RESET) in HAL_CRYP_IRQHandler()
2038 hcryp->ErrorCode |= HAL_CRYP_ERROR_WRITE; in HAL_CRYP_IRQHandler()
2039 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF); in HAL_CRYP_IRQHandler()
2042 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_FLAG_RDERR) != RESET) in HAL_CRYP_IRQHandler()
2044 hcryp->ErrorCode |= HAL_CRYP_ERROR_READ; in HAL_CRYP_IRQHandler()
2045 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF); in HAL_CRYP_IRQHandler()
2049 if (__HAL_CRYP_GET_IT_SOURCE(hcryp, CRYP_IT_KEIE) != RESET) in HAL_CRYP_IRQHandler()
2051 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_FLAG_KEIF) != RESET) in HAL_CRYP_IRQHandler()
2053 hcryp->ErrorCode |= HAL_CRYP_ERROR_KEY; in HAL_CRYP_IRQHandler()
2054 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_KEIF); in HAL_CRYP_IRQHandler()
2056 HAL_CRYP_ErrorCallback(hcryp); in HAL_CRYP_IRQHandler()
2060 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_FLAG_CCF) != RESET) in HAL_CRYP_IRQHandler()
2062 if (__HAL_CRYP_GET_IT_SOURCE(hcryp, CRYP_IT_CCFIE) != RESET) in HAL_CRYP_IRQHandler()
2065 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in HAL_CRYP_IRQHandler()
2067 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_IRQHandler()
2070 if ((hcryp->Instance->CR & CRYP_PHASE_HEADER) == CRYP_PHASE_HEADER) in HAL_CRYP_IRQHandler()
2072 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2076 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2081 CRYP_AES_IT(hcryp); in HAL_CRYP_IRQHandler()
2093 uint32_t HAL_CRYP_GetError(const CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetError() argument
2095 return hcryp->ErrorCode; in HAL_CRYP_GetError()
2104 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(const CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetState() argument
2106 return hcryp->State; in HAL_CRYP_GetState()
2115 __weak void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_InCpltCallback() argument
2118 UNUSED(hcryp); in HAL_CRYP_InCpltCallback()
2131 __weak void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_OutCpltCallback() argument
2134 UNUSED(hcryp); in HAL_CRYP_OutCpltCallback()
2147 __weak void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ErrorCallback() argument
2150 UNUSED(hcryp); in HAL_CRYP_ErrorCallback()
2175 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Encrypt() argument
2184 …if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || (hcryp->Init.KeyIVConfigSkip == CRYP… in CRYP_AES_Encrypt()
2186 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt()
2197 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt()
2203 if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || \ in CRYP_AES_Encrypt()
2204 (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ALWAYS)) in CRYP_AES_Encrypt()
2207 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2209 if (hcryp->Instance == AES) in CRYP_AES_Encrypt()
2212 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Encrypt()
2214 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2218 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Encrypt()
2224 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Encrypt()
2227 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2232 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)) in CRYP_AES_Encrypt()
2240 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2243 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Encrypt()
2244 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2245 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt()
2252 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2255 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt()
2259 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Encrypt()
2262 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2263 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2266 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt()
2273 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Encrypt()
2276 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2280 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYNOCONFIG) in CRYP_AES_Encrypt()
2282 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2285 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt()
2290 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt()
2293 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt()
2295 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2296 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2297 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Encrypt()
2300 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Encrypt()
2301 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2302 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2306 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2309 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2320 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Encrypt_IT() argument
2327 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt_IT()
2329 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt_IT()
2340 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt_IT()
2344 if ((dokeyivconfig == 1U) && (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG)) in CRYP_AES_Encrypt_IT()
2347 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2349 if (hcryp->Instance == AES) in CRYP_AES_Encrypt_IT()
2352 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Encrypt_IT()
2354 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2358 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Encrypt_IT()
2364 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Encrypt_IT()
2367 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2377 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt_IT()
2380 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Encrypt_IT()
2381 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2382 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2385 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AES_Encrypt_IT()
2388 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2391 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt_IT()
2395 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYNOCONFIG) in CRYP_AES_Encrypt_IT()
2397 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2400 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt_IT()
2405 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt_IT()
2407 if (hcryp->Size != 0U) in CRYP_AES_Encrypt_IT()
2410 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt_IT()
2413 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2414 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2415 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2416 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2417 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2418 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2419 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2420 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2423 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_Encrypt_IT()
2428 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2429 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2441 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Decrypt() argument
2447 …if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || (hcryp->Init.KeyIVConfigSkip == CRYP… in CRYP_AES_Decrypt()
2449 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt()
2460 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt()
2468 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2471 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2474 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2476 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2480 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2483 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2488 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2491 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2496 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2498 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2502 if (hcryp->Instance == AES) in CRYP_AES_Decrypt()
2505 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2508 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt()
2509 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2512 if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || \ in CRYP_AES_Decrypt()
2513 (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ALWAYS)) in CRYP_AES_Decrypt()
2515 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt()
2517 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2521 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt()
2526 else if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Decrypt()
2529 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2537 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2540 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2545 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2548 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2553 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2555 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt()
2557 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2561 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt()
2568 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2571 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2574 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt()
2576 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2578 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2583 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2586 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2591 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2595 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2600 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt()
2602 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2604 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2611 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt()
2614 CRYP_SetIV(hcryp); in CRYP_AES_Decrypt()
2621 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Decrypt()
2623 if (hcryp->Instance == AES) in CRYP_AES_Decrypt()
2626 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2629 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt()
2630 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2633 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2636 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2639 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2644 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2647 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2652 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2660 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt()
2663 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2665 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2666 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2667 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Decrypt()
2670 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Decrypt()
2671 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2672 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2675 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2678 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2688 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_IT() argument
2693 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_IT()
2695 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_IT()
2706 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_IT()
2714 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2717 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2720 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2722 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2726 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2736 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2739 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2740 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2741 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2744 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_IT()
2747 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_IT()
2750 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2754 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2756 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2760 if (hcryp->Instance == AES) in CRYP_AES_Decrypt_IT()
2763 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2766 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt_IT()
2767 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2770 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2772 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_IT()
2774 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2778 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_IT()
2783 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2793 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2796 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2797 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2798 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2801 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_IT()
2804 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_IT()
2807 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2812 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2814 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_IT()
2816 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2820 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_IT()
2828 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2831 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2834 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_IT()
2836 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2838 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2842 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2852 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2855 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2856 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2857 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2860 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_IT()
2863 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_IT()
2867 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2872 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_IT()
2874 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2876 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2883 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_IT()
2886 CRYP_SetIV(hcryp); in CRYP_AES_Decrypt_IT()
2891 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_IT()
2892 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_IT()
2895 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2898 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2899 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2900 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2901 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2902 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2903 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2904 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2905 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2908 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_Decrypt_IT()
2912 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2915 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2926 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_DMA() argument
2931 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_DMA()
2933 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_DMA()
2944 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_DMA()
2952 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2955 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
2958 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
2960 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2964 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2974 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2977 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
2978 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2979 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2982 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_DMA()
2985 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_DMA()
2988 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
2993 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
2995 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2999 if (hcryp->Instance == AES) in CRYP_AES_Decrypt_DMA()
3002 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
3005 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt_DMA()
3006 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
3009 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
3011 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_DMA()
3013 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
3017 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_DMA()
3022 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
3032 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
3035 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
3036 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
3037 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
3040 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_DMA()
3043 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_DMA()
3046 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
3051 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
3053 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_DMA()
3055 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
3059 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_DMA()
3067 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
3070 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
3073 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_DMA()
3075 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
3077 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
3081 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
3091 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
3094 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
3095 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
3096 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
3099 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_DMA()
3102 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_DMA()
3106 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
3111 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_DMA()
3113 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
3115 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
3122 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_DMA()
3125 CRYP_SetIV(hcryp); in CRYP_AES_Decrypt_DMA()
3130 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_DMA()
3132 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_DMA()
3135 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size), (uint32_t)(hcryp->pCryp… in CRYP_AES_Decrypt_DMA()
3139 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
3142 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
3156 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAInCplt() local
3168 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_DMAInCplt()
3170 if (hcryp->Phase == CRYP_PHASE_HEADER_DMA_FEED) in CRYP_DMAInCplt()
3173 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
3176 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_DMAInCplt()
3178 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_DMAInCplt()
3180 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_DMAInCplt()
3184 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_DMAInCplt()
3190 hcryp->CrypHeaderCount = (uint16_t)((headersize_in_bytes / 16U) * 4U); in CRYP_DMAInCplt()
3193 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
3194 hcryp->CrypHeaderCount++ ; in CRYP_DMAInCplt()
3202 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
3209 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
3210 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_DMAInCplt()
3211 hcryp->Instance->DINR = tmp; in CRYP_DMAInCplt()
3216 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
3222 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
3226 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_DMAInCplt()
3229 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_DMAInCplt()
3232 (void)CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp); in CRYP_DMAInCplt()
3239 algo = hcryp->Instance->CR & AES_CR_CHMOD; in CRYP_DMAInCplt()
3246 (((hcryp->Size) % 16U) != 0U))) in CRYP_DMAInCplt()
3251 hcryp->InCpltCallback(hcryp); in CRYP_DMAInCplt()
3254 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAInCplt()
3273 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAOutCplt() local
3278 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAOUTEN); in CRYP_DMAOutCplt()
3281 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_DMAOutCplt()
3284 if (((hcryp->Size) % 16U) != 0U) in CRYP_DMAOutCplt()
3287 hcryp->CrypInCount = (hcryp->Size / 16U) * 4U; in CRYP_DMAOutCplt()
3288 hcryp->CrypOutCount = hcryp->CrypInCount; in CRYP_DMAOutCplt()
3291 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_DMAOutCplt()
3293 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_DMAOutCplt()
3294 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_DMAOutCplt()
3295 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_DMAOutCplt()
3298 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_DMAOutCplt()
3314 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_DMAOutCplt()
3315 hcryp->CrypInCount++; in CRYP_DMAOutCplt()
3320 hcryp->Instance->DINR = 0x0U; in CRYP_DMAOutCplt()
3326 hcryp->InCpltCallback(hcryp); in CRYP_DMAOutCplt()
3329 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAOutCplt()
3333 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAOutCplt()
3340 temp[count] = hcryp->Instance->DOUTR; in CRYP_DMAOutCplt()
3344 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (count < 4U)) in CRYP_DMAOutCplt()
3346 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[count]; in CRYP_DMAOutCplt()
3347 hcryp->CrypOutCount++; in CRYP_DMAOutCplt()
3352 if (((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_DMAOutCplt()
3353 && ((hcryp->Init.Algorithm & CRYP_AES_CCM) != CRYP_AES_CCM)) in CRYP_DMAOutCplt()
3356 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
3360 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAOutCplt()
3361 __HAL_UNLOCK(hcryp); in CRYP_DMAOutCplt()
3366 hcryp->OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
3369 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
3380 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAError() local
3383 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAError()
3386 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_DMAError()
3389 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_DMAError()
3394 hcryp->ErrorCallback(hcryp); in CRYP_DMAError()
3397 HAL_CRYP_ErrorCallback(hcryp); in CRYP_DMAError()
3410 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_… in CRYP_SetDMAConfig() argument
3415 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetDMAConfig()
3418 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
3421 hcryp->hdmaout->XferCpltCallback = CRYP_DMAOutCplt; in CRYP_SetDMAConfig()
3424 hcryp->hdmaout->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
3426 if ((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_SetDMAConfig()
3429 __HAL_CRYP_ENABLE(hcryp); in CRYP_SetDMAConfig()
3433 if ((hcryp->hdmain->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in CRYP_SetDMAConfig()
3435 if ((hcryp->hdmain->LinkedListQueue != NULL) && (hcryp->hdmain->LinkedListQueue->Head != NULL)) in CRYP_SetDMAConfig()
3438 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetDMAConfig()
3440 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetDMAConfig()
3442 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetDMAConfig()
3443 …LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hcryp->Instance->DINR; /* Set DMA destination… in CRYP_SetDMAConfig()
3445 status = HAL_DMAEx_List_Start_IT(hcryp->hdmain); in CRYP_SetDMAConfig()
3455 status = HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size); in CRYP_SetDMAConfig()
3461 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3465 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3468 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3472 if ((hcryp->hdmaout->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in CRYP_SetDMAConfig()
3474 … if ((hcryp->hdmaout->LinkedListQueue != NULL) && (hcryp->hdmaout->LinkedListQueue->Head != NULL)) in CRYP_SetDMAConfig()
3477 hcryp->hdmaout->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = \ in CRYP_SetDMAConfig()
3479 hcryp->hdmaout->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = \ in CRYP_SetDMAConfig()
3480 (uint32_t)&hcryp->Instance->DOUTR; /* Set DMA source address */ in CRYP_SetDMAConfig()
3481 hcryp->hdmaout->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = \ in CRYP_SetDMAConfig()
3484 status = HAL_DMAEx_List_Start_IT(hcryp->hdmaout); in CRYP_SetDMAConfig()
3494 status = HAL_DMA_Start_IT(hcryp->hdmaout, (uint32_t)&hcryp->Instance->DOUTR, outputaddr, Size); in CRYP_SetDMAConfig()
3500 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3505 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3508 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3512 SET_BIT(hcryp->Instance->CR, (AES_CR_DMAINEN | AES_CR_DMAOUTEN)); in CRYP_SetDMAConfig()
3523 static HAL_StatusTypeDef CRYP_SetHeaderDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uin… in CRYP_SetHeaderDMAConfig() argument
3528 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetHeaderDMAConfig()
3531 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetHeaderDMAConfig()
3534 hcryp->Phase = CRYP_PHASE_HEADER_DMA_FEED; in CRYP_SetHeaderDMAConfig()
3537 if ((hcryp->hdmain->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in CRYP_SetHeaderDMAConfig()
3539 if ((hcryp->hdmain->LinkedListQueue != NULL) && (hcryp->hdmain->LinkedListQueue->Head != NULL)) in CRYP_SetHeaderDMAConfig()
3542 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetHeaderDMAConfig()
3544 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetHeaderDMAConfig()
3546 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetHeaderDMAConfig()
3547 …LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hcryp->Instance->DINR; /* Set DMA destination… in CRYP_SetHeaderDMAConfig()
3549 status = HAL_DMAEx_List_Start_IT(hcryp->hdmain); in CRYP_SetHeaderDMAConfig()
3559 status = HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size); in CRYP_SetHeaderDMAConfig()
3564 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetHeaderDMAConfig()
3569 hcryp->ErrorCallback(hcryp); in CRYP_SetHeaderDMAConfig()
3572 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetHeaderDMAConfig()
3577 SET_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_SetHeaderDMAConfig()
3589 static void CRYP_AES_ProcessData(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_ProcessData() argument
3596 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3597 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3598 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3599 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3600 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3601 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3602 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3603 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3606 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_ProcessData()
3610 hcryp->ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3613 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3618 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_ProcessData()
3624 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_ProcessData()
3627 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_ProcessData()
3629 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_ProcessData()
3630 hcryp->CrypOutCount++; in CRYP_AES_ProcessData()
3643 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_IT() argument
3648 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_AES_IT()
3654 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_IT()
3657 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_IT()
3659 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_IT()
3660 hcryp->CrypOutCount++; in CRYP_AES_IT()
3663 if (hcryp->CrypOutCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3666 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_IT()
3669 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_IT()
3672 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_IT()
3673 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3678 hcryp->OutCpltCallback(hcryp); in CRYP_AES_IT()
3681 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_AES_IT()
3689 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_AES_IT()
3692 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_IT()
3695 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_AES_IT()
3697 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_IT()
3699 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_AES_IT()
3701 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_AES_IT()
3702 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3708 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3709 hcryp->CrypInCount++; in CRYP_AES_IT()
3710 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3711 hcryp->CrypInCount++; in CRYP_AES_IT()
3712 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3713 hcryp->CrypInCount++; in CRYP_AES_IT()
3714 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3715 hcryp->CrypInCount++; in CRYP_AES_IT()
3717 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3722 hcryp->InCpltCallback(hcryp); in CRYP_AES_IT()
3725 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AES_IT()
3734 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_AES_IT()
3737 hcryp->ErrorCallback(hcryp); in CRYP_AES_IT()
3740 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_IT()
3753 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize) in CRYP_SetKey() argument
3755 if (hcryp->Init.pKey != NULL) in CRYP_SetKey()
3760 hcryp->Instance->KEYR7 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3761 hcryp->Instance->KEYR6 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3762 hcryp->Instance->KEYR5 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3763 hcryp->Instance->KEYR4 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3764 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_SetKey()
3765 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_SetKey()
3766 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_SetKey()
3767 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_SetKey()
3770 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3771 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3772 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3773 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3788 static void CRYP_SetIV(CRYP_HandleTypeDef *hcryp) in CRYP_SetIV() argument
3790 if (hcryp->Init.pInitVect != NULL) in CRYP_SetIV()
3793 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_SetIV()
3794 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_SetIV()
3795 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_SetIV()
3796 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_SetIV()
3807 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESGCM_Process() argument
3810 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U); in CRYP_AESGCM_Process()
3819 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process()
3821 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process()
3826 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process()
3833 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process()
3834 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process()
3839 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process()
3846 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process()
3850 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process()
3852 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESGCM_Process()
3855 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3857 if (hcryp->Instance == AES) in CRYP_AESGCM_Process()
3859 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESGCM_Process()
3861 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3865 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESGCM_Process()
3871 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESGCM_Process()
3874 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3879 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)) in CRYP_AESGCM_Process()
3887 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3890 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3891 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3892 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3901 CRYP_SetIV(hcryp); in CRYP_AESGCM_Process()
3904 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3907 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3912 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process()
3916 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3924 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process()
3927 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process()
3930 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process()
3934 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3944 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3945 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3949 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESGCM_Process()
3957 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3960 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3961 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3962 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3966 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3967 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3970 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3973 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process()
3976 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process()
3979 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process()
3994 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process()
3995 hcryp->CrypInCount++; in CRYP_AESGCM_Process()
4000 hcryp->Instance->DINR = 0U; in CRYP_AESGCM_Process()
4004 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
4008 hcryp->ErrorCallback(hcryp); in CRYP_AESGCM_Process()
4011 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESGCM_Process()
4016 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process()
4023 temp[index] = hcryp->Instance->DOUTR; in CRYP_AESGCM_Process()
4027 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp[index]; in CRYP_AESGCM_Process()
4028 hcryp->CrypOutCount++; in CRYP_AESGCM_Process()
4041 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_IT() argument
4056 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESGCM_Process_IT()
4058 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESGCM_Process_IT()
4065 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESGCM_Process_IT()
4067 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESGCM_Process_IT()
4071 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESGCM_Process_IT()
4074 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_IT()
4076 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_IT()
4081 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_IT()
4088 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_IT()
4089 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_IT()
4094 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_IT()
4101 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_IT()
4105 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_IT()
4107 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESGCM_Process_IT()
4110 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
4112 if (hcryp->Instance == AES) in CRYP_AESGCM_Process_IT()
4114 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESGCM_Process_IT()
4116 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
4120 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESGCM_Process_IT()
4126 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESGCM_Process_IT()
4129 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
4139 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
4142 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
4143 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4144 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4147 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AESGCM_Process_IT()
4152 CRYP_SetIV(hcryp); in CRYP_AESGCM_Process_IT()
4155 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
4165 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
4168 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
4169 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4170 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4173 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESGCM_Process_IT()
4176 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process_IT()
4181 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESGCM_Process_IT()
4184 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4187 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
4189 if (hcryp->Init.HeaderSize == 0U) /*header phase is skipped*/ in CRYP_AESGCM_Process_IT()
4192 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_IT()
4195 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_IT()
4198 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
4201 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
4204 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4207 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4208 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4210 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
4212 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4213 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4214 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4215 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4216 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4217 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4218 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4219 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4220 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
4225 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4228 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4240 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
4242 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
4245 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
4261 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4262 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4267 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4273 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4276 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4287 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4288 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
4296 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4298 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4304 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4305 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESGCM_Process_IT()
4306 hcryp->Instance->DINR = tmp; in CRYP_AESGCM_Process_IT()
4308 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
4312 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4314 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4320 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4323 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4330 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4331 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4332 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4333 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4334 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4335 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4336 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4337 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4347 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4350 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
4353 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
4356 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4359 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4360 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4362 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
4364 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4365 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4366 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4367 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4368 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4369 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4370 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4371 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4372 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
4377 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4380 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4392 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
4394 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
4397 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
4413 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4414 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4419 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4425 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4428 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4443 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_DMA() argument
4448 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_DMA()
4450 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_DMA()
4455 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_DMA()
4462 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_DMA()
4463 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_DMA()
4468 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_DMA()
4475 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_DMA()
4479 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_DMA()
4481 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESGCM_Process_DMA()
4484 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
4486 if (hcryp->Instance == AES) in CRYP_AESGCM_Process_DMA()
4488 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESGCM_Process_DMA()
4490 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
4494 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESGCM_Process_DMA()
4500 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESGCM_Process_DMA()
4503 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
4513 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4516 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
4517 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
4518 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
4521 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AESGCM_Process_DMA()
4526 CRYP_SetIV(hcryp); in CRYP_AESGCM_Process_DMA()
4529 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4539 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4542 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
4543 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
4544 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
4547 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESGCM_Process_DMA()
4550 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process_DMA()
4554 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
4563 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
4581 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESCCM_Process() argument
4584 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U); in CRYP_AESCCM_Process()
4593 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process()
4595 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process()
4600 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process()
4607 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process()
4608 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process()
4613 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process()
4619 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process()
4623 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process()
4625 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESCCM_Process()
4628 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
4630 if (hcryp->Instance == AES) in CRYP_AESCCM_Process()
4632 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESCCM_Process()
4634 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
4638 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESCCM_Process()
4644 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESCCM_Process()
4647 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
4652 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)) in CRYP_AESCCM_Process()
4660 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4663 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4664 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4665 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4674 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
4675 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process()
4676 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process()
4677 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process()
4680 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
4683 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4688 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process()
4693 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4701 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process()
4704 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process()
4707 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process()
4711 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4720 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
4721 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4725 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESCCM_Process()
4733 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4736 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4737 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4738 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4742 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
4743 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4746 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4749 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESCCM_Process()
4751 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_AESCCM_Process()
4754 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20); in CRYP_AESCCM_Process()
4770 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process()
4771 hcryp->CrypInCount++; in CRYP_AESCCM_Process()
4777 hcryp->Instance->DINR = 0U; in CRYP_AESCCM_Process()
4781 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4786 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process()
4792 temp[loopcounter] = hcryp->Instance->DOUTR; in CRYP_AESCCM_Process()
4796 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[loopcounter]; in CRYP_AESCCM_Process()
4797 hcryp->CrypOutCount++; in CRYP_AESCCM_Process()
4811 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_IT() argument
4827 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESCCM_Process_IT()
4829 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESCCM_Process_IT()
4834 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_IT()
4836 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_IT()
4841 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_IT()
4848 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_IT()
4849 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_IT()
4854 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_IT()
4861 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_IT()
4865 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_IT()
4867 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESCCM_Process_IT()
4870 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
4872 if (hcryp->Instance == AES) in CRYP_AESCCM_Process_IT()
4874 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESCCM_Process_IT()
4876 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
4880 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESCCM_Process_IT()
4886 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESCCM_Process_IT()
4889 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
4899 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_IT()
4902 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_IT()
4903 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4904 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4907 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AESCCM_Process_IT()
4912 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_IT()
4913 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_IT()
4914 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_IT()
4915 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_IT()
4918 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4928 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_IT()
4931 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_IT()
4932 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4933 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4936 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESCCM_Process_IT()
4939 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process_IT()
4944 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESCCM_Process_IT()
4947 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESCCM_Process_IT()
4950 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4952 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESCCM_Process_IT()
4954 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESCCM_Process_IT()
4958 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESCCM_Process_IT()
4964 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process_IT()
4966 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process_IT()
4968 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process_IT()
4970 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_AESCCM_Process_IT()
4973 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4976 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4979 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESCCM_Process_IT()
4982 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4983 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4985 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
4987 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4988 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4989 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4990 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4991 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4992 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4993 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4994 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4996 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
5001 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5004 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5011 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
5013 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
5014 … if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
5015 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
5018 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
5034 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5035 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5040 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
5046 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5049 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5060 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5061 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5069 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
5076 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5077 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESCCM_Process_IT()
5078 hcryp->Instance->DINR = tmp; in CRYP_AESCCM_Process_IT()
5079 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5085 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
5092 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5095 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5102 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5103 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5104 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5105 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5106 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5107 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5108 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5109 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5118 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
5121 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESCCM_Process_IT()
5124 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
5125 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
5127 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
5129 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5130 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5131 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5132 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5133 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5134 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5135 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5136 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5138 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
5143 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5146 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5153 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
5155 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
5156 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
5157 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
5160 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
5176 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5177 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5182 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
5188 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5191 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5206 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_DMA() argument
5211 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_DMA()
5213 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_DMA()
5218 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_DMA()
5225 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_DMA()
5226 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_DMA()
5231 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_DMA()
5238 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_DMA()
5243 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_DMA()
5245 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESCCM_Process_DMA()
5248 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
5250 if (hcryp->Instance == AES) in CRYP_AESCCM_Process_DMA()
5252 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESCCM_Process_DMA()
5254 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
5258 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESCCM_Process_DMA()
5264 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESCCM_Process_DMA()
5267 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
5277 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
5280 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
5281 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
5282 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
5285 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AESCCM_Process_DMA()
5290 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_DMA()
5291 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_DMA()
5292 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_DMA()
5293 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_DMA()
5296 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_DMA()
5306 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
5309 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
5310 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
5311 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
5314 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESCCM_Process_DMA()
5317 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process_DMA()
5322 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
5331 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
5346 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_IT() argument
5363 temp[i] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_IT()
5366 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
5368 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_GCMCCM_SetPayloadPhase_IT()
5369 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5372 incount = hcryp->CrypInCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
5373 outcount = hcryp->CrypOutCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
5374 if ((outcount >= (hcryp->Size / 4U)) && ((incount * 4U) >= hcryp->Size)) in CRYP_GCMCCM_SetPayloadPhase_IT()
5378 if (!((hcryp->Init.Algorithm == CRYP_AES_CCM) && (hcryp->KeyIVConfig == 1U))) in CRYP_GCMCCM_SetPayloadPhase_IT()
5381 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
5385 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_IT()
5386 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5391 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5394 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5398 else if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_GCMCCM_SetPayloadPhase_IT()
5404 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetPayloadPhase_IT()
5407 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetPayloadPhase_IT()
5410 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetPayloadPhase_IT()
5412 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
5414 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
5416 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
5417 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5423 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5424 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5425 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5426 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5427 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5428 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5429 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5430 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5431 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
5436 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5439 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5447 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetPayloadPhase_IT()
5449 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetPayloadPhase_IT()
5450 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetPayloadPhase_IT()
5451 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetPayloadPhase_IT()
5454 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_IT()
5470 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5471 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5476 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetPayloadPhase_IT()
5488 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_DMA() argument
5498 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
5501 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5504 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5506 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
5509 … CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (uint16_t)((hcryp->Size / 16U) * 16U), in CRYP_GCMCCM_SetPayloadPhase_DMA()
5510 (uint32_t)(hcryp->pCrypOutBuffPtr)); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5515 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5518 reg = hcryp->Instance->CR & (AES_CR_CHMOD | AES_CR_MODE); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5523 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5540 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5541 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5546 hcryp->Instance->DINR = 0U; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5552 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5555 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5565 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5568 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5569 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5572 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5575 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5578 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5585 temp[index] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5589 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[index]; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5590 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5594 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5597 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5601 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5604 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5618 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_GCMCCM_SetHeaderPhase() argument
5629 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase()
5631 size_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase()
5635 size_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase()
5641 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
5644 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
5653 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5654 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5655 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5656 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5657 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5658 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5659 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5660 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5662 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
5667 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase()
5676 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5677 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5678 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5679 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5680 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5681 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5682 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5683 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5685 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
5690 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase()
5695 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5696 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5704 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
5711 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5712 tmp &= mask[(hcryp->Init.DataType * 2U) + (size_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase()
5713 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase()
5718 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
5723 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
5728 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase()
5734 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType); in CRYP_GCMCCM_SetHeaderPhase()
5737 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
5740 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
5752 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_DMA() argument
5763 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5765 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5769 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5773 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5776 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5779 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5787 if (CRYP_SetHeaderDMAConfig(hcryp, (uint32_t)(hcryp->Init.Header), in CRYP_GCMCCM_SetHeaderPhase_DMA()
5801 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5802 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5810 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5817 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5818 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5819 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5824 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5829 if (CRYP_WaitOnCCFlag(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5832 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5835 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5836 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5839 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5843 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5850 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5853 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5856 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5871 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_IT() argument
5884 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_IT()
5886 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5890 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_IT()
5896 if (headersize_in_bytes <= ((uint32_t)(hcryp->CrypHeaderCount) * 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5899 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_IT()
5901 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_IT()
5903 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5905 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_GCMCCM_SetHeaderPhase_IT()
5908 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5911 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5914 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5917 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_IT()
5918 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5920 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5922 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5923 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5924 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5925 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5926 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5927 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5928 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5929 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5931 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5936 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5939 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5946 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetHeaderPhase_IT()
5947 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5948 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetHeaderPhase_IT()
5949 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetHeaderPhase_IT()
5952 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5968 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5969 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5974 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5980 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5983 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5987 else if ((((headersize_in_bytes / 4U) - (hcryp->CrypHeaderCount)) >= 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5993 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetHeaderPhase_IT()
5996 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase_IT()
5999 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetHeaderPhase_IT()
6001 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
6003 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
6005 hcryp->Phase = CRYP_PHASE_HEADER_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
6006 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
6012 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
6013 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
6014 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
6015 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
6016 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
6017 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
6018 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
6019 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
6027 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
6028 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
6036 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
6038 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
6044 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
6045 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_IT()
6046 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_IT()
6048 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
6052 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
6054 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
6068 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_WaitOnCCFlag() argument
6075 while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)) in CRYP_WaitOnCCFlag()
6082 __HAL_CRYP_DISABLE(hcryp); in CRYP_WaitOnCCFlag()
6083 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_WaitOnCCFlag()
6084 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_WaitOnCCFlag()
6085 __HAL_UNLOCK(hcryp); in CRYP_WaitOnCCFlag()
6101 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_ClearCCFlagWhenHigh() argument
6111 __HAL_CRYP_DISABLE(hcryp); in CRYP_ClearCCFlagWhenHigh()
6114 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_ClearCCFlagWhenHigh()
6117 __HAL_UNLOCK(hcryp); in CRYP_ClearCCFlagWhenHigh()
6118 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_ClearCCFlagWhenHigh()
6122 hcryp->ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
6125 HAL_CRYP_ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
6128 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_ClearCCFlagWhenHigh()
6131 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_ClearCCFlagWhenHigh()
6144 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output) in CRYP_Read_IVRegisters() argument
6148 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR3; in CRYP_Read_IVRegisters()
6150 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR2; in CRYP_Read_IVRegisters()
6152 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR1; in CRYP_Read_IVRegisters()
6154 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR0; in CRYP_Read_IVRegisters()
6167 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input) in CRYP_Write_IVRegisters() argument
6171 hcryp->Instance->IVR3 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
6173 hcryp->Instance->IVR2 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
6175 hcryp->Instance->IVR1 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
6177 hcryp->Instance->IVR0 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
6190 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output) in CRYP_Read_SuspendRegisters() argument
6196 …if (READ_BIT(hcryp->Instance->CR, (AES_CR_CHMOD | AES_CR_GCMPH | AES_CR_MODE)) == (CRYP_AES_GCM_GM… in CRYP_Read_SuspendRegisters()
6208 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Read_SuspendRegisters()
6209 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Read_SuspendRegisters()
6210 __HAL_UNLOCK(hcryp); in CRYP_Read_SuspendRegisters()
6211 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Read_SuspendRegisters()
6214 } while (HAL_IS_BIT_SET(hcryp->Instance->SR, AES_SR_BUSY)); in CRYP_Read_SuspendRegisters()
6218 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP7R; in CRYP_Read_SuspendRegisters()
6220 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP6R; in CRYP_Read_SuspendRegisters()
6222 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP5R; in CRYP_Read_SuspendRegisters()
6224 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP4R; in CRYP_Read_SuspendRegisters()
6226 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP3R; in CRYP_Read_SuspendRegisters()
6228 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP2R; in CRYP_Read_SuspendRegisters()
6230 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP1R; in CRYP_Read_SuspendRegisters()
6232 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP0R; in CRYP_Read_SuspendRegisters()
6245 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input) in CRYP_Write_SuspendRegisters() argument
6249 hcryp->Instance->SUSP7R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6251 hcryp->Instance->SUSP6R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6253 hcryp->Instance->SUSP5R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6255 hcryp->Instance->SUSP4R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6257 hcryp->Instance->SUSP3R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6259 hcryp->Instance->SUSP2R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6261 hcryp->Instance->SUSP1R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6263 hcryp->Instance->SUSP0R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6276 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output, uint32_t KeyS… in CRYP_Read_KeyRegisters() argument
6283 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
6285 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
6287 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
6289 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
6291 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_Read_KeyRegisters()
6293 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_Read_KeyRegisters()
6295 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_Read_KeyRegisters()
6297 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_Read_KeyRegisters()
6300 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
6302 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
6304 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
6306 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
6324 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input, uint32_t KeyS… in CRYP_Write_KeyRegisters() argument
6330 hcryp->Instance->KEYR7 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6332 hcryp->Instance->KEYR6 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6334 hcryp->Instance->KEYR5 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6336 hcryp->Instance->KEYR4 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6340 hcryp->Instance->KEYR3 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6342 hcryp->Instance->KEYR2 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6344 hcryp->Instance->KEYR1 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6346 hcryp->Instance->KEYR0 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6355 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp) in CRYP_PhaseProcessingResume() argument
6362 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF | CRYP_CLEAR_CCF); in CRYP_PhaseProcessingResume()
6365 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_PhaseProcessingResume()
6368 __HAL_CRYP_ENABLE(hcryp); in CRYP_PhaseProcessingResume()
6371 if (hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) in CRYP_PhaseProcessingResume()
6374 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
6377 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_PhaseProcessingResume()
6379 if (((hcryp->Init.HeaderSize) - (hcryp->CrypHeaderCount) >= 4U)) in CRYP_PhaseProcessingResume()
6382 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6383 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6384 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6385 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6386 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6387 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6388 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6389 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6394 for (loopcounter = 0U; loopcounter < (hcryp->Init.HeaderSize % 4U); loopcounter++) in CRYP_PhaseProcessingResume()
6396 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6397 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6402 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()
6410 if (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED) in CRYP_PhaseProcessingResume()
6414 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
6417 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_PhaseProcessingResume()
6420 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_PhaseProcessingResume()
6422 if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_PhaseProcessingResume()
6425 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6426 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6427 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6428 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6429 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6430 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6431 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6432 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6433 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_PhaseProcessingResume()
6438 hcryp->InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
6441 HAL_CRYP_InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
6448 npblb = (((hcryp->Size / 16U) + 1U) * 16U) - (hcryp->Size); in CRYP_PhaseProcessingResume()
6449 cr_temp = hcryp->Instance->CR; in CRYP_PhaseProcessingResume()
6450 …if ((((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES… in CRYP_PhaseProcessingResume()
6451 …(((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM… in CRYP_PhaseProcessingResume()
6454 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, ((uint32_t)npblb) << 20U); in CRYP_PhaseProcessingResume()
6470 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6471 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6476 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()