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_WaitFLAG(CRYP_HandleTypeDef *hcryp, uint32_t flag, FlagStatus Status,…
367 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
368 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp);
369 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp);
370 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp);
371 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp);
372 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
373 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp);
374 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
375 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
376 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp);
377 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
379 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
380 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
381 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp);
382 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp);
383 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp);
384 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
385 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
387 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output);
388 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input);
389 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output);
390 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input);
391 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output, uint32_t KeyS…
392 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input, uint32_t KeyS…
393 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp);
440 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Init() argument
448 if (hcryp == NULL) in HAL_CRYP_Init()
454 assert_param(IS_CRYP_KEYSIZE(hcryp->Init.KeySize)); in HAL_CRYP_Init()
455 assert_param(IS_CRYP_DATATYPE(hcryp->Init.DataType)); in HAL_CRYP_Init()
456 assert_param(IS_CRYP_ALGORITHM(hcryp->Init.Algorithm)); in HAL_CRYP_Init()
457 assert_param(IS_CRYP_INIT(hcryp->Init.KeyIVConfigSkip)); in HAL_CRYP_Init()
460 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
463 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
465 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_Init()
466 hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_Init()
467 hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_Init()
469 if (hcryp->MspInitCallback == NULL) in HAL_CRYP_Init()
471 hcryp->MspInitCallback = HAL_CRYP_MspInit; /* Legacy weak MspInit */ in HAL_CRYP_Init()
475 hcryp->MspInitCallback(hcryp); in HAL_CRYP_Init()
478 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
481 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
484 HAL_CRYP_MspInit(hcryp); in HAL_CRYP_Init()
488 if (hcryp->Instance == AES) in HAL_CRYP_Init()
491 …cr_value = (uint32_t)(hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm | hcryp->… in HAL_CRYP_Init()
493 …MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD | AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, cr_… in HAL_CRYP_Init()
499 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY)) in HAL_CRYP_Init()
504 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Init()
505 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in HAL_CRYP_Init()
506 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
507 __HAL_UNLOCK(hcryp); in HAL_CRYP_Init()
513 while (HAL_IS_BIT_SET(hcryp->Instance->ISR, CRYP_FLAG_RNGEIF)) in HAL_CRYP_Init()
518 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Init()
519 hcryp->ErrorCode |= HAL_CRYP_ERROR_RNG; in HAL_CRYP_Init()
520 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
521 __HAL_UNLOCK(hcryp); in HAL_CRYP_Init()
525 cr_value = (uint32_t)(hcryp->Init.KeyMode | hcryp->Init.DataType | hcryp->Init.KeySize | \ in HAL_CRYP_Init()
526hcryp->Init.Algorithm | hcryp->Init.KeySelect | hcryp->Init.KeyProtection); in HAL_CRYP_Init()
528 …MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD | AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD | AE… in HAL_CRYP_Init()
532 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_Init()
535 hcryp->KeyIVConfig = 0U; in HAL_CRYP_Init()
538 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
541 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_Init()
552 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_DeInit() argument
555 if (hcryp == NULL) in HAL_CRYP_DeInit()
561 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_DeInit()
564 hcryp->CrypInCount = 0; in HAL_CRYP_DeInit()
565 hcryp->CrypOutCount = 0; in HAL_CRYP_DeInit()
566 hcryp->CrypHeaderCount = 0; in HAL_CRYP_DeInit()
569 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_DeInit()
572 SET_BIT(hcryp->Instance->CR, AES_CR_IPRST); in HAL_CRYP_DeInit()
575 CLEAR_BIT(hcryp->Instance->CR, AES_CR_IPRST); in HAL_CRYP_DeInit()
578 if (hcryp->MspDeInitCallback == NULL) in HAL_CRYP_DeInit()
580 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; /* Legacy weak MspDeInit */ in HAL_CRYP_DeInit()
583 hcryp->MspDeInitCallback(hcryp); in HAL_CRYP_DeInit()
586 HAL_CRYP_MspDeInit(hcryp); in HAL_CRYP_DeInit()
590 hcryp->State = HAL_CRYP_STATE_RESET; in HAL_CRYP_DeInit()
591 __HAL_UNLOCK(hcryp); in HAL_CRYP_DeInit()
604 HAL_StatusTypeDef HAL_CRYP_SetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_SetConfig() argument
607 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_SetConfig()
617 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_SetConfig()
620 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_SetConfig()
621 __HAL_LOCK(hcryp); in HAL_CRYP_SetConfig()
624 hcryp->Init.DataType = pConf->DataType; in HAL_CRYP_SetConfig()
625 hcryp->Init.pKey = pConf->pKey; in HAL_CRYP_SetConfig()
626 hcryp->Init.Algorithm = pConf->Algorithm; in HAL_CRYP_SetConfig()
627 hcryp->Init.KeySize = pConf->KeySize; in HAL_CRYP_SetConfig()
628 hcryp->Init.pInitVect = pConf->pInitVect; in HAL_CRYP_SetConfig()
629 hcryp->Init.Header = pConf->Header; in HAL_CRYP_SetConfig()
630 hcryp->Init.HeaderSize = pConf->HeaderSize; in HAL_CRYP_SetConfig()
631 hcryp->Init.B0 = pConf->B0; in HAL_CRYP_SetConfig()
632 hcryp->Init.DataWidthUnit = pConf->DataWidthUnit; in HAL_CRYP_SetConfig()
633 hcryp->Init.KeyMode = pConf->KeyMode; in HAL_CRYP_SetConfig()
634 hcryp->Init.HeaderWidthUnit = pConf->HeaderWidthUnit; in HAL_CRYP_SetConfig()
635 hcryp->Init.KeyIVConfigSkip = pConf->KeyIVConfigSkip; in HAL_CRYP_SetConfig()
637 if (hcryp->Instance == AES) in HAL_CRYP_SetConfig()
640 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_SetConfig()
642 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_SetConfig()
643 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
647 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD | AES_CR_KMOD, in HAL_CRYP_SetConfig()
648hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm | hcryp->Init.KeyMode); in HAL_CRYP_SetConfig()
652 hcryp->Init.KeySelect = pConf->KeySelect; in HAL_CRYP_SetConfig()
653 hcryp->Init.KeyProtection = pConf->KeyProtection; in HAL_CRYP_SetConfig()
656 …if ((hcryp->Init.KeySelect != CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_WRAPPED)) in HAL_CRYP_SetConfig()
659 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_SetConfig()
661 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_SetConfig()
663 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_SetConfig()
664 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
668 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_WRAPPED); in HAL_CRYP_SetConfig()
671 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_SetConfig()
673 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_SetConfig()
674 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
678 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD | \ in HAL_CRYP_SetConfig()
679 … AES_CR_KEYSEL | AES_CR_KEYPROT | AES_CR_KMOD, hcryp->Init.DataType | hcryp->Init.KeySize | \ in HAL_CRYP_SetConfig()
680hcryp->Init.Algorithm | hcryp->Init.KeySelect | hcryp->Init.KeyProtection | hcryp->Init.KeyMode); in HAL_CRYP_SetConfig()
682 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in HAL_CRYP_SetConfig()
685 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF); in HAL_CRYP_SetConfig()
686 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
689 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_SetConfig()
692 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_SetConfig()
695 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_SetConfig()
702 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_SetConfig()
714 HAL_StatusTypeDef HAL_CRYP_GetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_GetConfig() argument
717 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_GetConfig()
722 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_GetConfig()
725 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_GetConfig()
726 __HAL_LOCK(hcryp); in HAL_CRYP_GetConfig()
729 pConf->DataType = hcryp->Init.DataType; in HAL_CRYP_GetConfig()
730 pConf->pKey = hcryp->Init.pKey; in HAL_CRYP_GetConfig()
731 pConf->Algorithm = hcryp->Init.Algorithm; in HAL_CRYP_GetConfig()
732 pConf->KeySize = hcryp->Init.KeySize; in HAL_CRYP_GetConfig()
733 pConf->pInitVect = hcryp->Init.pInitVect; in HAL_CRYP_GetConfig()
734 pConf->Header = hcryp->Init.Header; in HAL_CRYP_GetConfig()
735 pConf->HeaderSize = hcryp->Init.HeaderSize; in HAL_CRYP_GetConfig()
736 pConf->B0 = hcryp->Init.B0; in HAL_CRYP_GetConfig()
737 pConf->DataWidthUnit = hcryp->Init.DataWidthUnit; in HAL_CRYP_GetConfig()
738 pConf->KeyMode = hcryp->Init.KeyMode; in HAL_CRYP_GetConfig()
739 pConf->KeySelect = hcryp->Init.KeySelect; in HAL_CRYP_GetConfig()
740 pConf->KeyProtection = hcryp->Init.KeyProtection; in HAL_CRYP_GetConfig()
741 pConf->KeyIVConfigSkip = hcryp->Init.KeyIVConfigSkip; in HAL_CRYP_GetConfig()
742 pConf->HeaderWidthUnit = hcryp->Init.HeaderWidthUnit; in HAL_CRYP_GetConfig()
744 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
747 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_GetConfig()
754 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_GetConfig()
764 __weak void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspInit() argument
767 UNUSED(hcryp); in HAL_CRYP_MspInit()
780 __weak void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspDeInit() argument
783 UNUSED(hcryp); in HAL_CRYP_MspDeInit()
805 HAL_StatusTypeDef HAL_CRYP_RegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef C… in HAL_CRYP_RegisterCallback() argument
813 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
818 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_RegisterCallback()
823 hcryp->InCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
827 hcryp->OutCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
831 hcryp->ErrorCallback = pCallback; in HAL_CRYP_RegisterCallback()
835 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
839 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
844 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
850 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_RegisterCallback()
855 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
859 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
864 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
873 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
894 HAL_StatusTypeDef HAL_CRYP_UnRegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef… in HAL_CRYP_UnRegisterCallback() argument
899 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_UnRegisterCallback()
904 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /*!< Legacy weak InCpltCallback */ in HAL_CRYP_UnRegisterCallback()
908 hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /*!< Legacy weak OutCpltCallback */ in HAL_CRYP_UnRegisterCallback()
912 hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /*!< Legacy weak ErrorCallback */ in HAL_CRYP_UnRegisterCallback()
916 hcryp->MspInitCallback = HAL_CRYP_MspInit; /*!< Legacy weak MspInit */ in HAL_CRYP_UnRegisterCallback()
920 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; /*!< Legacy weak MspDeInit */ in HAL_CRYP_UnRegisterCallback()
925hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK;/*!< Legacy weak ERROR INVALID CALLBACK */ in HAL_CRYP_UnRegisterCallback()
931 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_UnRegisterCallback()
936 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
940 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
945 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
954 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK;; in HAL_CRYP_UnRegisterCallback()
977 void HAL_CRYP_ProcessSuspend(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ProcessSuspend() argument
980 hcryp->SuspendRequest = HAL_CRYP_SUSPEND; in HAL_CRYP_ProcessSuspend()
991 HAL_StatusTypeDef HAL_CRYP_Suspend(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Suspend() argument
996 HAL_CRYP_ProcessSuspend(hcryp); in HAL_CRYP_Suspend()
1000 state = HAL_CRYP_GetState(hcryp); in HAL_CRYP_Suspend()
1003 if (HAL_CRYP_GetState(hcryp) == HAL_CRYP_STATE_READY) in HAL_CRYP_Suspend()
1014 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || \ in HAL_CRYP_Suspend()
1015 (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_Suspend()
1018 CRYP_Read_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Suspend()
1020 CRYP_Read_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Suspend()
1022 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
1025 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Suspend()
1028 hcryp->Init_saved = hcryp->Init; in HAL_CRYP_Suspend()
1029 hcryp->pCrypInBuffPtr_saved = hcryp->pCrypInBuffPtr; in HAL_CRYP_Suspend()
1030 hcryp->pCrypOutBuffPtr_saved = hcryp->pCrypOutBuffPtr; in HAL_CRYP_Suspend()
1031 hcryp->CrypInCount_saved = hcryp->CrypInCount; in HAL_CRYP_Suspend()
1032 hcryp->CrypOutCount_saved = hcryp->CrypOutCount; in HAL_CRYP_Suspend()
1033 hcryp->Phase_saved = hcryp->Phase; in HAL_CRYP_Suspend()
1034 hcryp->State_saved = hcryp->State; in HAL_CRYP_Suspend()
1035 hcryp->Size_saved = ((hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD)\ in HAL_CRYP_Suspend()
1036 ? (hcryp->Size / 4U) : hcryp->Size); in HAL_CRYP_Suspend()
1037 hcryp->SizesSum_saved = hcryp->SizesSum; in HAL_CRYP_Suspend()
1038 hcryp->CrypHeaderCount_saved = hcryp->CrypHeaderCount; in HAL_CRYP_Suspend()
1039 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in HAL_CRYP_Suspend()
1041 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Suspend()
1042 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Suspend()
1045 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
1049 hcryp->CR_saved = hcryp->Instance->CR; in HAL_CRYP_Suspend()
1062 HAL_StatusTypeDef HAL_CRYP_Resume(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Resume() argument
1065 if (hcryp == NULL) in HAL_CRYP_Resume()
1070 if (hcryp->State_saved != HAL_CRYP_STATE_SUSPENDED) in HAL_CRYP_Resume()
1078 hcryp->Init = hcryp->Init_saved; in HAL_CRYP_Resume()
1079 hcryp->State = hcryp->State_saved; in HAL_CRYP_Resume()
1082 if ((hcryp->Init_saved.Algorithm == CRYP_AES_ECB) || \ in HAL_CRYP_Resume()
1083 (hcryp->Init_saved.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1084 (hcryp->Init_saved.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1087 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1088 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1090 hcryp->Init.pInitVect = hcryp->IV_saved; in HAL_CRYP_Resume()
1092 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1094 (void) HAL_CRYP_Init(hcryp); in HAL_CRYP_Resume()
1099 hcryp->Phase = hcryp->Phase_saved; in HAL_CRYP_Resume()
1100 hcryp->CrypHeaderCount = hcryp->CrypHeaderCount_saved; in HAL_CRYP_Resume()
1101 hcryp->SizesSum = hcryp->SizesSum_saved; in HAL_CRYP_Resume()
1104 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1106 CRYP_Write_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Resume()
1108 hcryp->Instance->CR = hcryp->CR_saved; in HAL_CRYP_Resume()
1109 CRYP_Write_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Resume()
1110 CRYP_Write_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Resume()
1111 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in HAL_CRYP_Resume()
1112 __HAL_CRYP_ENABLE(hcryp); in HAL_CRYP_Resume()
1116 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Resume()
1120 hcryp->ResumingFlag = 1U; in HAL_CRYP_Resume()
1121 if (READ_BIT(hcryp->CR_saved, AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in HAL_CRYP_Resume()
1123 if (HAL_CRYP_Encrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, in HAL_CRYP_Resume()
1124 hcryp->pCrypOutBuffPtr_saved) != HAL_OK) in HAL_CRYP_Resume()
1131 if (HAL_CRYP_Decrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, in HAL_CRYP_Resume()
1132 hcryp->pCrypOutBuffPtr_saved) != HAL_OK) in HAL_CRYP_Resume()
1149 HAL_StatusTypeDef HAL_CRYP_SaveContext(CRYP_HandleTypeDef *hcryp, CRYP_ContextTypeDef *pcont) in HAL_CRYP_SaveContext() argument
1152 if ((hcryp == NULL) || (pcont == NULL)) in HAL_CRYP_SaveContext()
1157 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_SaveContext()
1160 pcont->DataType = (uint32_t)(hcryp->Init.DataType); in HAL_CRYP_SaveContext()
1161 pcont->KeySize = (uint32_t)(hcryp->Init.KeySize); in HAL_CRYP_SaveContext()
1162 pcont->pKey = hcryp->Init.pKey; in HAL_CRYP_SaveContext()
1163 pcont->pInitVect = hcryp->Init.pInitVect; in HAL_CRYP_SaveContext()
1164 pcont->Algorithm = (uint32_t)(hcryp->Init.Algorithm); in HAL_CRYP_SaveContext()
1165 pcont->DataWidthUnit = (uint32_t)(hcryp->Init.DataWidthUnit); in HAL_CRYP_SaveContext()
1166 pcont->KeyIVConfigSkip = (uint32_t)(hcryp->Init.KeyIVConfigSkip); in HAL_CRYP_SaveContext()
1167 pcont->KeyMode = (uint32_t)(hcryp->Init.KeyMode); in HAL_CRYP_SaveContext()
1168 pcont->Phase = (uint32_t)(hcryp->Phase); in HAL_CRYP_SaveContext()
1169 pcont->KeyIVConfig = (uint32_t)(hcryp->KeyIVConfig); in HAL_CRYP_SaveContext()
1172 pcont->CR_Reg = READ_REG(hcryp->Instance->CR); in HAL_CRYP_SaveContext()
1175 pcont->IER_Reg = READ_BIT(hcryp->Instance->IER, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in HAL_CRYP_SaveContext()
1178 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_SaveContext()
1179 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_SaveContext()
1182 pcont->IVR0_Reg = READ_REG(hcryp->Instance->IVR0); in HAL_CRYP_SaveContext()
1183 pcont->IVR1_Reg = READ_REG(hcryp->Instance->IVR1); in HAL_CRYP_SaveContext()
1184 pcont->IVR2_Reg = READ_REG(hcryp->Instance->IVR2); in HAL_CRYP_SaveContext()
1185 pcont->IVR3_Reg = READ_REG(hcryp->Instance->IVR3); in HAL_CRYP_SaveContext()
1189 hcryp->KeyIVConfig = 0; in HAL_CRYP_SaveContext()
1196 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_SaveContext()
1209 HAL_StatusTypeDef HAL_CRYP_RestoreContext(CRYP_HandleTypeDef *hcryp, CRYP_ContextTypeDef *pcont) in HAL_CRYP_RestoreContext() argument
1212 if ((hcryp == NULL) || (pcont == NULL)) in HAL_CRYP_RestoreContext()
1217 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_RestoreContext()
1220 hcryp->Init.DataType = pcont->DataType; in HAL_CRYP_RestoreContext()
1221 hcryp->Init.KeySize = pcont->KeySize; in HAL_CRYP_RestoreContext()
1222 hcryp->Init.pKey = pcont->pKey; in HAL_CRYP_RestoreContext()
1223 hcryp->Init.pInitVect = pcont->pInitVect; in HAL_CRYP_RestoreContext()
1224 hcryp->Init.Algorithm = pcont->Algorithm; in HAL_CRYP_RestoreContext()
1225 hcryp->Init.DataWidthUnit = pcont->DataWidthUnit; in HAL_CRYP_RestoreContext()
1226 hcryp->Init.KeyIVConfigSkip = pcont->KeyIVConfigSkip; in HAL_CRYP_RestoreContext()
1227 hcryp->Init.KeyMode = pcont->KeyMode; in HAL_CRYP_RestoreContext()
1228 hcryp->Phase = pcont->Phase; in HAL_CRYP_RestoreContext()
1229 hcryp->KeyIVConfig = pcont->KeyIVConfig; in HAL_CRYP_RestoreContext()
1231 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_RestoreContext()
1236 WRITE_REG(hcryp->Instance->CR, (uint32_t)(pcont->CR_Reg)); in HAL_CRYP_RestoreContext()
1239 WRITE_REG(hcryp->Instance->IER, (uint32_t)(pcont->IER_Reg)); in HAL_CRYP_RestoreContext()
1241 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_RestoreContext()
1242 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_RestoreContext()
1245 WRITE_REG(hcryp->Instance->IVR0, (uint32_t)(pcont->IVR0_Reg)); in HAL_CRYP_RestoreContext()
1246 WRITE_REG(hcryp->Instance->IVR1, (uint32_t)(pcont->IVR1_Reg)); in HAL_CRYP_RestoreContext()
1247 WRITE_REG(hcryp->Instance->IVR2, (uint32_t)(pcont->IVR2_Reg)); in HAL_CRYP_RestoreContext()
1248 WRITE_REG(hcryp->Instance->IVR3, (uint32_t)(pcont->IVR3_Reg)); in HAL_CRYP_RestoreContext()
1255 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_RestoreContext()
1371 HAL_StatusTypeDef HAL_CRYP_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, uint… in HAL_CRYP_Encrypt() argument
1377 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1380 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt()
1383 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt()
1386 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt()
1387 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt()
1390 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt()
1391 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt()
1392 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Encrypt()
1393 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Encrypt()
1396 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt()
1398 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt()
1402 hcryp->Size = Size; in HAL_CRYP_Encrypt()
1405 if (hcryp->Instance == AES) in HAL_CRYP_Encrypt()
1408 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Encrypt()
1410 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1411 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1415 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt()
1420 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Encrypt()
1422 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1423 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1427 …MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE | AES_CR_KMOD, CRYP_OPERATINGMODE_ENCRYPT | CRYP_KEYMO… in HAL_CRYP_Encrypt()
1430 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1438 status = CRYP_AES_Encrypt(hcryp, Timeout); in HAL_CRYP_Encrypt()
1443 status = CRYP_AESGCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1448 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1452 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt()
1460 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1461 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1467 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt()
1483 HAL_StatusTypeDef HAL_CRYP_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, uint… in HAL_CRYP_Decrypt() argument
1489 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1492 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt()
1495 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt()
1498 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt()
1499 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt()
1502 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt()
1503 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt()
1504 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Decrypt()
1505 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Decrypt()
1508 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt()
1510 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt()
1514 hcryp->Size = Size; in HAL_CRYP_Decrypt()
1517 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Decrypt()
1519 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1520 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1523 if (IS_AES_ALL_INSTANCE(hcryp->Instance)) in HAL_CRYP_Decrypt()
1526 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt()
1530 …MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE | AES_CR_KMOD, CRYP_OPERATINGMODE_DECRYPT | CRYP_KEYMO… in HAL_CRYP_Decrypt()
1533 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1541 status = CRYP_AES_Decrypt(hcryp, Timeout); in HAL_CRYP_Decrypt()
1546 status = CRYP_AESGCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1551 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1555 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt()
1563 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1564 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1570 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt()
1586 HAL_StatusTypeDef HAL_CRYP_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, u… in HAL_CRYP_Encrypt_IT() argument
1591 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1594 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_IT()
1597 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_IT()
1600 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_IT()
1601 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1605 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Encrypt_IT()
1607 hcryp->ResumingFlag = 0U; in HAL_CRYP_Encrypt_IT()
1608 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Encrypt_IT()
1610 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Encrypt_IT()
1611 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Encrypt_IT()
1615 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1616 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1622 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1623 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1626 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Encrypt_IT()
1627 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Encrypt_IT()
1630 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_IT()
1632 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_IT()
1636 hcryp->Size = Size; in HAL_CRYP_Encrypt_IT()
1639 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Encrypt_IT()
1641 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_IT()
1642 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1646 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_IT()
1649 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1658 status = CRYP_AES_Encrypt_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1663 status = CRYP_AESGCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1668 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1672 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_IT()
1673 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_IT()
1681 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_IT()
1697 HAL_StatusTypeDef HAL_CRYP_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, u… in HAL_CRYP_Decrypt_IT() argument
1702 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1705 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_IT()
1708 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_IT()
1711 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_IT()
1712 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1716 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Decrypt_IT()
1718 hcryp->ResumingFlag = 0U; in HAL_CRYP_Decrypt_IT()
1719 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Decrypt_IT()
1721 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Decrypt_IT()
1722 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Decrypt_IT()
1726 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1727 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1733 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1734 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1736 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Decrypt_IT()
1737 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Decrypt_IT()
1740 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_IT()
1742 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_IT()
1746 hcryp->Size = Size; in HAL_CRYP_Decrypt_IT()
1749 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Decrypt_IT()
1751 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_IT()
1752 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1756 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_IT()
1759 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1767 status = CRYP_AES_Decrypt_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1772 status = CRYP_AESGCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1777 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1781 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_IT()
1782 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_IT()
1790 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_IT()
1806 HAL_StatusTypeDef HAL_CRYP_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, … in HAL_CRYP_Encrypt_DMA() argument
1813 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1816 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_DMA()
1819 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_DMA()
1822 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_DMA()
1823 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1826 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_DMA()
1827 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_DMA()
1828 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Encrypt_DMA()
1829 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Encrypt_DMA()
1832 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_DMA()
1834 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_DMA()
1838 hcryp->Size = Size; in HAL_CRYP_Encrypt_DMA()
1841 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Encrypt_DMA()
1843 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_DMA()
1844 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1848 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_DMA()
1851 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1858 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in HAL_CRYP_Encrypt_DMA()
1860 if (hcryp->KeyIVConfig == 1U) in HAL_CRYP_Encrypt_DMA()
1871 hcryp->KeyIVConfig = 1U; in HAL_CRYP_Encrypt_DMA()
1875 if ((dokeyivconfig == 1U) && (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG)) in HAL_CRYP_Encrypt_DMA()
1877 if (hcryp->Instance == AES) in HAL_CRYP_Encrypt_DMA()
1880 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in HAL_CRYP_Encrypt_DMA()
1882 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1886 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in HAL_CRYP_Encrypt_DMA()
1892 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in HAL_CRYP_Encrypt_DMA()
1895 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1905 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Encrypt_DMA()
1908 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in HAL_CRYP_Encrypt_DMA()
1909 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_DMA()
1910 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1913 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in HAL_CRYP_Encrypt_DMA()
1916 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1918 CRYP_SetIV(hcryp); in HAL_CRYP_Encrypt_DMA()
1923 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYNOCONFIG) in HAL_CRYP_Encrypt_DMA()
1925 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1928 CRYP_SetIV(hcryp); in HAL_CRYP_Encrypt_DMA()
1933 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1936 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size), (uint32_t)(hcryp->pCryp… in HAL_CRYP_Encrypt_DMA()
1942 status = CRYP_AESGCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1947 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1951 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_DMA()
1952 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_DMA()
1960 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_DMA()
1976 HAL_StatusTypeDef HAL_CRYP_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, … in HAL_CRYP_Decrypt_DMA() argument
1981 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1984 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_DMA()
1987 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_DMA()
1991 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_DMA()
1992 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1995 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_DMA()
1996 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_DMA()
1997 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Decrypt_DMA()
1998 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Decrypt_DMA()
2001 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_DMA()
2003 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_DMA()
2007 hcryp->Size = Size; in HAL_CRYP_Decrypt_DMA()
2010 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Decrypt_DMA()
2012 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_DMA()
2013 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
2017 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_DMA()
2020 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
2028 status = CRYP_AES_Decrypt_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
2033 status = CRYP_AESGCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
2038 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
2042 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_DMA()
2043 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_DMA()
2051 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_DMA()
2085 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_IRQHandler() argument
2087 uint32_t itsource = hcryp->Instance->IER; in HAL_CRYP_IRQHandler()
2088 uint32_t itflagsr = hcryp->Instance->SR; in HAL_CRYP_IRQHandler()
2089 uint32_t itflagisr = hcryp->Instance->ISR; in HAL_CRYP_IRQHandler()
2097 hcryp->ErrorCode |= HAL_CRYP_ERROR_WRITE; in HAL_CRYP_IRQHandler()
2098 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF); in HAL_CRYP_IRQHandler()
2103 hcryp->ErrorCode |= HAL_CRYP_ERROR_READ; in HAL_CRYP_IRQHandler()
2104 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF); in HAL_CRYP_IRQHandler()
2112 hcryp->ErrorCode |= HAL_CRYP_ERROR_KEY; in HAL_CRYP_IRQHandler()
2113 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_KEIF); in HAL_CRYP_IRQHandler()
2115 HAL_CRYP_ErrorCallback(hcryp); in HAL_CRYP_IRQHandler()
2124 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in HAL_CRYP_IRQHandler()
2126 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_IRQHandler()
2129 if ((hcryp->Instance->CR & CRYP_PHASE_HEADER) == CRYP_PHASE_HEADER) in HAL_CRYP_IRQHandler()
2131 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2135 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2140 CRYP_AES_IT(hcryp); in HAL_CRYP_IRQHandler()
2152 uint32_t HAL_CRYP_GetError(const CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetError() argument
2154 return hcryp->ErrorCode; in HAL_CRYP_GetError()
2163 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(const CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetState() argument
2165 return hcryp->State; in HAL_CRYP_GetState()
2174 __weak void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_InCpltCallback() argument
2177 UNUSED(hcryp); in HAL_CRYP_InCpltCallback()
2190 __weak void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_OutCpltCallback() argument
2193 UNUSED(hcryp); in HAL_CRYP_OutCpltCallback()
2206 __weak void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ErrorCallback() argument
2209 UNUSED(hcryp); in HAL_CRYP_ErrorCallback()
2234 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Encrypt() argument
2241 …if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || (hcryp->Init.KeyIVConfigSkip == CRYP… in CRYP_AES_Encrypt()
2243 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt()
2254 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt()
2260 if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || \ in CRYP_AES_Encrypt()
2261 (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ALWAYS)) in CRYP_AES_Encrypt()
2263 if (hcryp->Instance == AES) in CRYP_AES_Encrypt()
2266 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Encrypt()
2268 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2272 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Encrypt()
2278 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Encrypt()
2281 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2286 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)) in CRYP_AES_Encrypt()
2294 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2297 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Encrypt()
2298 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2299 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt()
2305 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2308 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt()
2312 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Encrypt()
2315 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2316 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2319 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt()
2326 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Encrypt()
2329 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2333 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYNOCONFIG) in CRYP_AES_Encrypt()
2335 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2338 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt()
2343 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt()
2346 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt()
2348 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2349 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2350 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Encrypt()
2353 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Encrypt()
2354 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2355 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2359 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2362 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2373 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Encrypt_IT() argument
2378 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt_IT()
2380 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt_IT()
2391 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt_IT()
2395 if ((dokeyivconfig == 1U) && (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG)) in CRYP_AES_Encrypt_IT()
2397 if (hcryp->Instance == AES) in CRYP_AES_Encrypt_IT()
2400 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Encrypt_IT()
2402 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2406 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Encrypt_IT()
2412 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Encrypt_IT()
2415 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2425 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt_IT()
2428 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Encrypt_IT()
2429 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2430 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2433 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AES_Encrypt_IT()
2435 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2438 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt_IT()
2442 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYNOCONFIG) in CRYP_AES_Encrypt_IT()
2444 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2447 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt_IT()
2452 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt_IT()
2454 if (hcryp->Size != 0U) in CRYP_AES_Encrypt_IT()
2457 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt_IT()
2460 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2461 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2462 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2463 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2464 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2465 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2466 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2467 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2470 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_Encrypt_IT()
2475 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2476 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2488 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Decrypt() argument
2494 …if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || (hcryp->Init.KeyIVConfigSkip == CRYP… in CRYP_AES_Decrypt()
2496 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt()
2507 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt()
2513 if (hcryp->Instance == AES) in CRYP_AES_Decrypt()
2516 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2519 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt()
2520 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2523 if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || \ in CRYP_AES_Decrypt()
2524 (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ALWAYS)) in CRYP_AES_Decrypt()
2526 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt()
2528 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2532 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt()
2537 else if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Decrypt()
2540 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2548 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2551 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2556 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2559 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2564 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2566 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt()
2568 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2572 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt()
2579 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2582 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2585 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt()
2587 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2589 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2594 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2597 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2602 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2606 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2610 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt()
2613 CRYP_SetIV(hcryp); in CRYP_AES_Decrypt()
2620 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Decrypt()
2622 if (hcryp->Instance == AES) in CRYP_AES_Decrypt()
2625 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2628 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt()
2629 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2632 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2635 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2638 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2643 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2646 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2651 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2659 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt()
2662 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2664 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2665 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2666 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Decrypt()
2669 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Decrypt()
2670 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2671 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2674 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2677 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2687 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_IT() argument
2692 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_IT()
2694 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_IT()
2705 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_IT()
2711 if (hcryp->Instance == AES) 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_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt_IT()
2718 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2721 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2723 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_IT()
2725 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2729 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_IT()
2734 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2744 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2747 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2748 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2749 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2752 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_IT()
2755 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_IT()
2758 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2763 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2765 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_IT()
2767 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2771 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_IT()
2779 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2782 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2785 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_IT()
2787 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2789 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2793 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2803 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2806 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2807 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2808 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2811 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_IT()
2814 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_IT()
2818 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2822 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_IT()
2825 CRYP_SetIV(hcryp); in CRYP_AES_Decrypt_IT()
2830 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_IT()
2831 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_IT()
2834 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2837 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2838 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2839 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2840 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2841 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2842 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2843 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2844 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2847 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_Decrypt_IT()
2851 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2854 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2865 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_DMA() argument
2870 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_DMA()
2872 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_DMA()
2883 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_DMA()
2889 if (hcryp->Instance == AES) in CRYP_AES_Decrypt_DMA()
2892 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2895 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt_DMA()
2896 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
2899 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
2901 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_DMA()
2903 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2907 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_DMA()
2912 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2922 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2925 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
2926 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2927 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2930 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_DMA()
2933 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_DMA()
2936 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
2941 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
2943 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_DMA()
2945 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2949 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_DMA()
2957 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2960 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
2963 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_DMA()
2965 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
2967 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2971 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2981 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2984 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
2985 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2986 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2989 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_DMA()
2992 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_DMA()
2996 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
3000 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_DMA()
3003 CRYP_SetIV(hcryp); in CRYP_AES_Decrypt_DMA()
3008 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_DMA()
3010 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_DMA()
3013 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size), (uint32_t)(hcryp->pCryp… in CRYP_AES_Decrypt_DMA()
3017 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
3020 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
3034 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAInCplt() local
3046 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_DMAInCplt()
3048 if (hcryp->Phase == CRYP_PHASE_HEADER_DMA_FEED) in CRYP_DMAInCplt()
3051 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
3054 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_DMAInCplt()
3056 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_DMAInCplt()
3058 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_DMAInCplt()
3062 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_DMAInCplt()
3068 hcryp->CrypHeaderCount = (uint16_t)((headersize_in_bytes / 16U) * 4U); in CRYP_DMAInCplt()
3071 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
3072 hcryp->CrypHeaderCount++ ; in CRYP_DMAInCplt()
3080 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
3087 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
3088 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_DMAInCplt()
3089 hcryp->Instance->DINR = tmp; in CRYP_DMAInCplt()
3094 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
3100 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
3104 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_DMAInCplt()
3107 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_DMAInCplt()
3110 (void)CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp); in CRYP_DMAInCplt()
3117 algo = hcryp->Instance->CR & AES_CR_CHMOD; in CRYP_DMAInCplt()
3124 (((hcryp->Size) % 16U) != 0U))) in CRYP_DMAInCplt()
3129 hcryp->InCpltCallback(hcryp); in CRYP_DMAInCplt()
3132 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAInCplt()
3151 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAOutCplt() local
3156 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAOUTEN); in CRYP_DMAOutCplt()
3159 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_DMAOutCplt()
3162 if (((hcryp->Size) % 16U) != 0U) in CRYP_DMAOutCplt()
3165 hcryp->CrypInCount = (hcryp->Size / 16U) * 4U; in CRYP_DMAOutCplt()
3166 hcryp->CrypOutCount = hcryp->CrypInCount; in CRYP_DMAOutCplt()
3169 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_DMAOutCplt()
3171 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_DMAOutCplt()
3172 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_DMAOutCplt()
3173 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_DMAOutCplt()
3176 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_DMAOutCplt()
3192 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_DMAOutCplt()
3193 hcryp->CrypInCount++; in CRYP_DMAOutCplt()
3198 hcryp->Instance->DINR = 0x0U; in CRYP_DMAOutCplt()
3204 hcryp->InCpltCallback(hcryp); in CRYP_DMAOutCplt()
3207 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAOutCplt()
3211 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAOutCplt()
3218 temp[count] = hcryp->Instance->DOUTR; in CRYP_DMAOutCplt()
3222 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (count < 4U)) in CRYP_DMAOutCplt()
3224 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[count]; in CRYP_DMAOutCplt()
3225 hcryp->CrypOutCount++; in CRYP_DMAOutCplt()
3230 if (((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_DMAOutCplt()
3231 && ((hcryp->Init.Algorithm & CRYP_AES_CCM) != CRYP_AES_CCM)) in CRYP_DMAOutCplt()
3234 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
3238 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAOutCplt()
3239 __HAL_UNLOCK(hcryp); in CRYP_DMAOutCplt()
3244 hcryp->OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
3247 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
3258 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAError() local
3261 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAError()
3264 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_DMAError()
3267 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_DMAError()
3272 hcryp->ErrorCallback(hcryp); in CRYP_DMAError()
3275 HAL_CRYP_ErrorCallback(hcryp); in CRYP_DMAError()
3288 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_… in CRYP_SetDMAConfig() argument
3293 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetDMAConfig()
3296 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
3299 hcryp->hdmaout->XferCpltCallback = CRYP_DMAOutCplt; in CRYP_SetDMAConfig()
3302 hcryp->hdmaout->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
3304 if ((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_SetDMAConfig()
3307 __HAL_CRYP_ENABLE(hcryp); in CRYP_SetDMAConfig()
3311 if ((hcryp->hdmain->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in CRYP_SetDMAConfig()
3313 if ((hcryp->hdmain->LinkedListQueue != NULL) && (hcryp->hdmain->LinkedListQueue->Head != NULL)) in CRYP_SetDMAConfig()
3316 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetDMAConfig()
3318 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetDMAConfig()
3320 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetDMAConfig()
3321 …LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hcryp->Instance->DINR; /* Set DMA destination… in CRYP_SetDMAConfig()
3323 status = HAL_DMAEx_List_Start_IT(hcryp->hdmain); in CRYP_SetDMAConfig()
3333 status = HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size); in CRYP_SetDMAConfig()
3339 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3343 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3346 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3350 if ((hcryp->hdmaout->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in CRYP_SetDMAConfig()
3352 … if ((hcryp->hdmaout->LinkedListQueue != NULL) && (hcryp->hdmaout->LinkedListQueue->Head != NULL)) in CRYP_SetDMAConfig()
3355 hcryp->hdmaout->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = \ in CRYP_SetDMAConfig()
3357 hcryp->hdmaout->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = \ in CRYP_SetDMAConfig()
3358 (uint32_t)&hcryp->Instance->DOUTR; /* Set DMA source address */ in CRYP_SetDMAConfig()
3359 hcryp->hdmaout->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = \ in CRYP_SetDMAConfig()
3362 status = HAL_DMAEx_List_Start_IT(hcryp->hdmaout); in CRYP_SetDMAConfig()
3372 status = HAL_DMA_Start_IT(hcryp->hdmaout, (uint32_t)&hcryp->Instance->DOUTR, outputaddr, Size); in CRYP_SetDMAConfig()
3378 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3383 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3386 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3390 SET_BIT(hcryp->Instance->CR, (AES_CR_DMAINEN | AES_CR_DMAOUTEN)); in CRYP_SetDMAConfig()
3401 static HAL_StatusTypeDef CRYP_SetHeaderDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uin… in CRYP_SetHeaderDMAConfig() argument
3406 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetHeaderDMAConfig()
3409 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetHeaderDMAConfig()
3412 hcryp->Phase = CRYP_PHASE_HEADER_DMA_FEED; in CRYP_SetHeaderDMAConfig()
3415 if ((hcryp->hdmain->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in CRYP_SetHeaderDMAConfig()
3417 if ((hcryp->hdmain->LinkedListQueue != NULL) && (hcryp->hdmain->LinkedListQueue->Head != NULL)) in CRYP_SetHeaderDMAConfig()
3420 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetHeaderDMAConfig()
3422 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetHeaderDMAConfig()
3424 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetHeaderDMAConfig()
3425 …LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hcryp->Instance->DINR; /* Set DMA destination… in CRYP_SetHeaderDMAConfig()
3427 status = HAL_DMAEx_List_Start_IT(hcryp->hdmain); in CRYP_SetHeaderDMAConfig()
3437 status = HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size); in CRYP_SetHeaderDMAConfig()
3442 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetHeaderDMAConfig()
3447 hcryp->ErrorCallback(hcryp); in CRYP_SetHeaderDMAConfig()
3450 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetHeaderDMAConfig()
3455 SET_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_SetHeaderDMAConfig()
3467 static void CRYP_AES_ProcessData(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_ProcessData() argument
3474 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3475 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3476 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3477 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3478 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3479 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3480 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3481 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3484 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_ProcessData()
3488 hcryp->ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3491 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3496 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_ProcessData()
3502 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_ProcessData()
3505 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_ProcessData()
3507 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_ProcessData()
3508 hcryp->CrypOutCount++; in CRYP_AES_ProcessData()
3521 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_IT() argument
3526 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_AES_IT()
3532 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_IT()
3535 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_IT()
3537 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_IT()
3538 hcryp->CrypOutCount++; in CRYP_AES_IT()
3541 if (hcryp->CrypOutCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3544 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_IT()
3547 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_IT()
3550 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_IT()
3551 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3556 hcryp->OutCpltCallback(hcryp); in CRYP_AES_IT()
3559 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_AES_IT()
3567 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_AES_IT()
3570 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_IT()
3573 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_AES_IT()
3575 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_IT()
3577 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_AES_IT()
3579 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_AES_IT()
3580 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3586 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3587 hcryp->CrypInCount++; in CRYP_AES_IT()
3588 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3589 hcryp->CrypInCount++; in CRYP_AES_IT()
3590 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3591 hcryp->CrypInCount++; in CRYP_AES_IT()
3592 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3593 hcryp->CrypInCount++; in CRYP_AES_IT()
3595 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3600 hcryp->InCpltCallback(hcryp); in CRYP_AES_IT()
3603 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AES_IT()
3612 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_AES_IT()
3615 hcryp->ErrorCallback(hcryp); in CRYP_AES_IT()
3618 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_IT()
3631 static HAL_StatusTypeDef CRYP_WaitFLAG(CRYP_HandleTypeDef *hcryp, uint32_t flag, FlagStatus Status,… in CRYP_WaitFLAG() argument
3634 while (__HAL_CRYP_GET_FLAG(hcryp, flag) == Status) in CRYP_WaitFLAG()
3638 CLEAR_BIT(hcryp->Instance->CR, AES_CR_EN); in CRYP_WaitFLAG()
3640 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_WaitFLAG()
3655 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize) in CRYP_SetKey() argument
3657 if (hcryp->Init.pKey != NULL) in CRYP_SetKey()
3662 hcryp->Instance->KEYR7 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3663 hcryp->Instance->KEYR6 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3664 hcryp->Instance->KEYR5 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3665 hcryp->Instance->KEYR4 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3666 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_SetKey()
3667 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_SetKey()
3668 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_SetKey()
3669 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_SetKey()
3672 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3673 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3674 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3675 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3690 static void CRYP_SetIV(CRYP_HandleTypeDef *hcryp) in CRYP_SetIV() argument
3692 if (hcryp->Init.pInitVect != NULL) in CRYP_SetIV()
3695 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_SetIV()
3696 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_SetIV()
3697 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_SetIV()
3698 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_SetIV()
3709 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESGCM_Process() argument
3712 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U); in CRYP_AESGCM_Process()
3720 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process()
3722 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process()
3727 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process()
3734 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process()
3735 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process()
3740 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process()
3747 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process()
3751 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process()
3753 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESGCM_Process()
3755 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3759 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESGCM_Process()
3762 CRYP_SetIV(hcryp); in CRYP_AESGCM_Process()
3765 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3768 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3773 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process()
3777 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3785 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process()
3788 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process()
3791 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process()
3795 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3805 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3806 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3810 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESGCM_Process()
3818 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3821 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3822 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3823 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3827 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3828 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3831 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3834 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process()
3837 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process()
3840 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process()
3855 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process()
3856 hcryp->CrypInCount++; in CRYP_AESGCM_Process()
3861 hcryp->Instance->DINR = 0U; in CRYP_AESGCM_Process()
3865 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3869 hcryp->ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3872 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3877 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process()
3884 temp[index] = hcryp->Instance->DOUTR; in CRYP_AESGCM_Process()
3888 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp[index]; in CRYP_AESGCM_Process()
3889 hcryp->CrypOutCount++; in CRYP_AESGCM_Process()
3902 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_IT() argument
3917 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESGCM_Process_IT()
3919 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESGCM_Process_IT()
3926 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESGCM_Process_IT()
3928 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESGCM_Process_IT()
3932 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESGCM_Process_IT()
3935 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_IT()
3937 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_IT()
3942 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_IT()
3949 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_IT()
3950 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_IT()
3955 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_IT()
3962 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_IT()
3966 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_IT()
3968 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESGCM_Process_IT()
3970 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
3974 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESGCM_Process_IT()
3977 CRYP_SetIV(hcryp); in CRYP_AESGCM_Process_IT()
3980 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3990 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
3993 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
3994 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3995 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3998 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESGCM_Process_IT()
4001 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process_IT()
4006 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESGCM_Process_IT()
4009 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4012 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
4014 if (hcryp->Init.HeaderSize == 0U) /*header phase is skipped*/ in CRYP_AESGCM_Process_IT()
4017 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_IT()
4020 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_IT()
4023 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
4026 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
4029 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4032 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4033 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4035 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
4037 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4038 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4039 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4040 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4041 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4042 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4043 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4044 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4045 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
4050 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4053 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4065 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
4067 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
4070 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
4086 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4087 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4092 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4098 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4101 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4112 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4113 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
4121 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4123 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4129 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4130 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESGCM_Process_IT()
4131 hcryp->Instance->DINR = tmp; in CRYP_AESGCM_Process_IT()
4133 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
4137 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4139 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4145 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4148 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4155 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4156 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4157 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4158 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4159 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4160 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4161 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4162 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4172 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4175 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
4178 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
4181 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4184 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4185 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4187 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
4189 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4190 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4191 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4192 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4193 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4194 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4195 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4196 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4197 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
4202 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4205 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4217 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
4219 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
4222 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
4238 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4239 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4244 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4250 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4253 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4268 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_DMA() argument
4273 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_DMA()
4275 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_DMA()
4280 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_DMA()
4287 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_DMA()
4288 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_DMA()
4293 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_DMA()
4300 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_DMA()
4304 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_DMA()
4306 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESGCM_Process_DMA()
4308 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
4312 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESGCM_Process_DMA()
4315 CRYP_SetIV(hcryp); in CRYP_AESGCM_Process_DMA()
4318 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4328 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4331 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
4332 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
4333 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
4336 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESGCM_Process_DMA()
4339 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process_DMA()
4343 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
4352 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
4370 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESCCM_Process() argument
4373 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U); in CRYP_AESCCM_Process()
4382 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process()
4384 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process()
4389 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process()
4396 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process()
4397 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process()
4402 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process()
4408 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process()
4412 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process()
4414 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESCCM_Process()
4416 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
4420 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESCCM_Process()
4423 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
4424 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process()
4425 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process()
4426 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process()
4429 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
4432 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4437 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process()
4442 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4450 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process()
4453 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process()
4456 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process()
4460 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4469 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
4470 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4474 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESCCM_Process()
4482 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4485 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4486 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4487 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4491 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
4492 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4495 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4498 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESCCM_Process()
4500 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_AESCCM_Process()
4503 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20); in CRYP_AESCCM_Process()
4519 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process()
4520 hcryp->CrypInCount++; in CRYP_AESCCM_Process()
4526 hcryp->Instance->DINR = 0U; in CRYP_AESCCM_Process()
4530 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4535 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process()
4541 temp[loopcounter] = hcryp->Instance->DOUTR; in CRYP_AESCCM_Process()
4545 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[loopcounter]; in CRYP_AESCCM_Process()
4546 hcryp->CrypOutCount++; in CRYP_AESCCM_Process()
4560 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_IT() argument
4576 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESCCM_Process_IT()
4578 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESCCM_Process_IT()
4583 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_IT()
4585 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_IT()
4590 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_IT()
4597 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_IT()
4598 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_IT()
4603 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_IT()
4610 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_IT()
4614 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_IT()
4616 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESCCM_Process_IT()
4618 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
4622 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESCCM_Process_IT()
4625 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_IT()
4626 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_IT()
4627 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_IT()
4628 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_IT()
4631 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4641 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_IT()
4644 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_IT()
4645 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4646 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4649 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESCCM_Process_IT()
4652 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process_IT()
4657 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESCCM_Process_IT()
4660 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESCCM_Process_IT()
4663 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4665 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESCCM_Process_IT()
4667 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESCCM_Process_IT()
4671 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESCCM_Process_IT()
4677 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process_IT()
4679 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process_IT()
4681 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process_IT()
4683 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_AESCCM_Process_IT()
4686 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4689 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4692 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESCCM_Process_IT()
4695 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4696 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4698 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
4700 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4701 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4702 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4703 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4704 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4705 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4706 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4707 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4709 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
4714 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4717 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4724 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
4726 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
4727 … if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
4728 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
4731 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
4747 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4748 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4753 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4759 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4762 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4773 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4774 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4782 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4789 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4790 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESCCM_Process_IT()
4791 hcryp->Instance->DINR = tmp; in CRYP_AESCCM_Process_IT()
4792 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4798 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4805 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4808 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4815 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4816 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4817 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4818 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4819 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4820 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4821 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4822 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4831 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4834 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESCCM_Process_IT()
4837 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4838 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4840 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
4842 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4843 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4844 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4845 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4846 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4847 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4848 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4849 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4851 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
4856 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4859 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4866 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
4868 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
4869 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
4870 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
4873 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
4889 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4890 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4895 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4901 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4904 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4919 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_DMA() argument
4924 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_DMA()
4926 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_DMA()
4931 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_DMA()
4938 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_DMA()
4939 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_DMA()
4944 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_DMA()
4951 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_DMA()
4956 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_DMA()
4958 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESCCM_Process_DMA()
4960 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
4964 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESCCM_Process_DMA()
4967 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_DMA()
4968 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_DMA()
4969 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_DMA()
4970 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_DMA()
4973 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4983 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4986 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
4987 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
4988 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
4991 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESCCM_Process_DMA()
4994 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process_DMA()
4999 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
5008 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
5023 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_IT() argument
5040 temp[i] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_IT()
5043 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
5045 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_GCMCCM_SetPayloadPhase_IT()
5046 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5049 incount = hcryp->CrypInCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
5050 outcount = hcryp->CrypOutCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
5051 if ((outcount >= (hcryp->Size / 4U)) && ((incount * 4U) >= hcryp->Size)) in CRYP_GCMCCM_SetPayloadPhase_IT()
5055 if (!((hcryp->Init.Algorithm == CRYP_AES_CCM) && (hcryp->KeyIVConfig == 1U))) in CRYP_GCMCCM_SetPayloadPhase_IT()
5058 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
5062 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_IT()
5063 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5068 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5071 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5075 else if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_GCMCCM_SetPayloadPhase_IT()
5081 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetPayloadPhase_IT()
5084 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetPayloadPhase_IT()
5087 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetPayloadPhase_IT()
5089 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
5091 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
5093 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
5094 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5100 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5101 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5102 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5103 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5104 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5105 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5106 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5107 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5108 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
5113 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5116 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5124 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetPayloadPhase_IT()
5126 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetPayloadPhase_IT()
5127 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetPayloadPhase_IT()
5128 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetPayloadPhase_IT()
5131 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_IT()
5147 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5148 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5153 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetPayloadPhase_IT()
5165 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_DMA() argument
5175 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
5178 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5181 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5183 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
5186 … CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (uint16_t)((hcryp->Size / 16U) * 16U), in CRYP_GCMCCM_SetPayloadPhase_DMA()
5187 (uint32_t)(hcryp->pCrypOutBuffPtr)); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5192 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5195 reg = hcryp->Instance->CR & (AES_CR_CHMOD | AES_CR_MODE); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5200 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5217 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5218 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5223 hcryp->Instance->DINR = 0U; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5229 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5232 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5242 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5245 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5246 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5249 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5252 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5255 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5262 temp[index] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5266 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[index]; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5267 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5271 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5274 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5278 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5281 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5295 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_GCMCCM_SetHeaderPhase() argument
5306 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase()
5308 size_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase()
5312 size_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase()
5318 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
5321 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
5330 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5331 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5332 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5333 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5334 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5335 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5336 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5337 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5339 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
5344 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase()
5353 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5354 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5355 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5356 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5357 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5358 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5359 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5360 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5362 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
5367 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase()
5372 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5373 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5381 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
5388 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5389 tmp &= mask[(hcryp->Init.DataType * 2U) + (size_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase()
5390 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase()
5395 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
5400 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
5405 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase()
5411 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType); in CRYP_GCMCCM_SetHeaderPhase()
5414 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
5417 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
5429 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_DMA() argument
5440 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5442 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5446 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5450 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5453 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5456 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5464 if (CRYP_SetHeaderDMAConfig(hcryp, (uint32_t)(hcryp->Init.Header), in CRYP_GCMCCM_SetHeaderPhase_DMA()
5478 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5479 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5487 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5494 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5495 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5496 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5501 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5506 if (CRYP_WaitOnCCFlag(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5509 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5512 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5513 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5516 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5520 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5527 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5530 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5533 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5548 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_IT() argument
5561 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_IT()
5563 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5567 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_IT()
5573 if (headersize_in_bytes <= ((uint32_t)(hcryp->CrypHeaderCount) * 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5576 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_IT()
5578 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_IT()
5580 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5582 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_GCMCCM_SetHeaderPhase_IT()
5585 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5588 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5591 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5594 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_IT()
5595 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5597 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5599 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5600 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5601 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5602 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5603 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5604 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5605 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5606 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5608 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5613 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5616 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5623 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetHeaderPhase_IT()
5624 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5625 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetHeaderPhase_IT()
5626 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetHeaderPhase_IT()
5629 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5645 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5646 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5651 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5657 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5660 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5664 else if ((((headersize_in_bytes / 4U) - (hcryp->CrypHeaderCount)) >= 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5670 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetHeaderPhase_IT()
5673 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase_IT()
5676 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5678 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5680 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5682 hcryp->Phase = CRYP_PHASE_HEADER_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5683 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5689 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5690 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5691 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5692 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5693 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5694 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5695 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5696 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5704 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5705 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
5713 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5715 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5721 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5722 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_IT()
5723 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_IT()
5725 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5729 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5731 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5745 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_WaitOnCCFlag() argument
5752 while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)) in CRYP_WaitOnCCFlag()
5759 __HAL_CRYP_DISABLE(hcryp); in CRYP_WaitOnCCFlag()
5760 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_WaitOnCCFlag()
5761 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_WaitOnCCFlag()
5762 __HAL_UNLOCK(hcryp); in CRYP_WaitOnCCFlag()
5778 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_ClearCCFlagWhenHigh() argument
5788 __HAL_CRYP_DISABLE(hcryp); in CRYP_ClearCCFlagWhenHigh()
5791 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_ClearCCFlagWhenHigh()
5794 __HAL_UNLOCK(hcryp); in CRYP_ClearCCFlagWhenHigh()
5795 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_ClearCCFlagWhenHigh()
5799 hcryp->ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
5802 HAL_CRYP_ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
5805 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_ClearCCFlagWhenHigh()
5808 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_ClearCCFlagWhenHigh()
5821 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output) in CRYP_Read_IVRegisters() argument
5825 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR3; in CRYP_Read_IVRegisters()
5827 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR2; in CRYP_Read_IVRegisters()
5829 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR1; in CRYP_Read_IVRegisters()
5831 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR0; in CRYP_Read_IVRegisters()
5844 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input) in CRYP_Write_IVRegisters() argument
5848 hcryp->Instance->IVR3 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5850 hcryp->Instance->IVR2 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5852 hcryp->Instance->IVR1 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5854 hcryp->Instance->IVR0 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
5867 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output) in CRYP_Read_SuspendRegisters() argument
5873 …if (READ_BIT(hcryp->Instance->CR, (AES_CR_CHMOD | AES_CR_GCMPH | AES_CR_MODE)) == (CRYP_AES_GCM_GM… in CRYP_Read_SuspendRegisters()
5885 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Read_SuspendRegisters()
5886 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Read_SuspendRegisters()
5887 __HAL_UNLOCK(hcryp); in CRYP_Read_SuspendRegisters()
5888 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Read_SuspendRegisters()
5891 } while (HAL_IS_BIT_SET(hcryp->Instance->SR, AES_SR_BUSY)); in CRYP_Read_SuspendRegisters()
5895 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP7R; in CRYP_Read_SuspendRegisters()
5897 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP6R; in CRYP_Read_SuspendRegisters()
5899 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP5R; in CRYP_Read_SuspendRegisters()
5901 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP4R; in CRYP_Read_SuspendRegisters()
5903 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP3R; in CRYP_Read_SuspendRegisters()
5905 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP2R; in CRYP_Read_SuspendRegisters()
5907 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP1R; in CRYP_Read_SuspendRegisters()
5909 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP0R; in CRYP_Read_SuspendRegisters()
5922 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input) in CRYP_Write_SuspendRegisters() argument
5926 hcryp->Instance->SUSP7R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5928 hcryp->Instance->SUSP6R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5930 hcryp->Instance->SUSP5R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5932 hcryp->Instance->SUSP4R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5934 hcryp->Instance->SUSP3R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5936 hcryp->Instance->SUSP2R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5938 hcryp->Instance->SUSP1R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5940 hcryp->Instance->SUSP0R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
5953 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output, uint32_t KeyS… in CRYP_Read_KeyRegisters() argument
5960 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
5962 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
5964 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
5966 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
5968 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_Read_KeyRegisters()
5970 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_Read_KeyRegisters()
5972 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_Read_KeyRegisters()
5974 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_Read_KeyRegisters()
5977 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
5979 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
5981 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
5983 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
6001 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input, uint32_t KeyS… in CRYP_Write_KeyRegisters() argument
6007 hcryp->Instance->KEYR7 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6009 hcryp->Instance->KEYR6 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6011 hcryp->Instance->KEYR5 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6013 hcryp->Instance->KEYR4 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6017 hcryp->Instance->KEYR3 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6019 hcryp->Instance->KEYR2 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6021 hcryp->Instance->KEYR1 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6023 hcryp->Instance->KEYR0 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6032 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp) in CRYP_PhaseProcessingResume() argument
6039 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF | CRYP_CLEAR_CCF); in CRYP_PhaseProcessingResume()
6042 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_PhaseProcessingResume()
6045 __HAL_CRYP_ENABLE(hcryp); in CRYP_PhaseProcessingResume()
6048 if (hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) in CRYP_PhaseProcessingResume()
6051 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
6054 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_PhaseProcessingResume()
6056 if (((hcryp->Init.HeaderSize) - (hcryp->CrypHeaderCount) >= 4U)) in CRYP_PhaseProcessingResume()
6059 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6060 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6061 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6062 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6063 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6064 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6065 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6066 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6071 for (loopcounter = 0U; loopcounter < (hcryp->Init.HeaderSize % 4U); loopcounter++) in CRYP_PhaseProcessingResume()
6073 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6074 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6079 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()
6087 if (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED) in CRYP_PhaseProcessingResume()
6091 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
6094 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_PhaseProcessingResume()
6097 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_PhaseProcessingResume()
6099 if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_PhaseProcessingResume()
6102 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6103 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6104 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6105 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6106 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6107 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6108 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6109 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6110 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_PhaseProcessingResume()
6115 hcryp->InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
6118 HAL_CRYP_InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
6125 npblb = (((hcryp->Size / 16U) + 1U) * 16U) - (hcryp->Size); in CRYP_PhaseProcessingResume()
6126 cr_temp = hcryp->Instance->CR; in CRYP_PhaseProcessingResume()
6127 …if ((((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES… in CRYP_PhaseProcessingResume()
6128 …(((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM… in CRYP_PhaseProcessingResume()
6131 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, ((uint32_t)npblb) << 20U); in CRYP_PhaseProcessingResume()
6147 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6148 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6153 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()