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()
526 … hcryp->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()
648 … hcryp->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()
680 … hcryp->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()
925 … hcryp->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()
1680 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_IT()
1696 HAL_StatusTypeDef HAL_CRYP_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, u… in HAL_CRYP_Decrypt_IT() argument
1701 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1704 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_IT()
1707 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_IT()
1710 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_IT()
1711 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1715 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Decrypt_IT()
1717 hcryp->ResumingFlag = 0U; in HAL_CRYP_Decrypt_IT()
1718 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Decrypt_IT()
1720 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Decrypt_IT()
1721 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Decrypt_IT()
1725 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1726 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1732 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1733 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1735 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Decrypt_IT()
1736 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Decrypt_IT()
1739 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_IT()
1741 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_IT()
1745 hcryp->Size = Size; in HAL_CRYP_Decrypt_IT()
1748 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Decrypt_IT()
1750 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_IT()
1751 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1755 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_IT()
1758 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1766 status = CRYP_AES_Decrypt_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1771 status = CRYP_AESGCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1776 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1780 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_IT()
1788 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_IT()
1804 HAL_StatusTypeDef HAL_CRYP_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, … in HAL_CRYP_Encrypt_DMA() argument
1811 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1814 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_DMA()
1817 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_DMA()
1820 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_DMA()
1821 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1824 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_DMA()
1825 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_DMA()
1826 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Encrypt_DMA()
1827 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Encrypt_DMA()
1830 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_DMA()
1832 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_DMA()
1836 hcryp->Size = Size; in HAL_CRYP_Encrypt_DMA()
1839 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Encrypt_DMA()
1841 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_DMA()
1842 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1846 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_DMA()
1849 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1856 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in HAL_CRYP_Encrypt_DMA()
1858 if (hcryp->KeyIVConfig == 1U) in HAL_CRYP_Encrypt_DMA()
1869 hcryp->KeyIVConfig = 1U; in HAL_CRYP_Encrypt_DMA()
1873 if ((dokeyivconfig == 1U) && (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG)) in HAL_CRYP_Encrypt_DMA()
1875 if (hcryp->Instance == AES) in HAL_CRYP_Encrypt_DMA()
1878 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in HAL_CRYP_Encrypt_DMA()
1880 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1884 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in HAL_CRYP_Encrypt_DMA()
1890 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in HAL_CRYP_Encrypt_DMA()
1893 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1903 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Encrypt_DMA()
1906 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in HAL_CRYP_Encrypt_DMA()
1907 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_DMA()
1908 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1911 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in HAL_CRYP_Encrypt_DMA()
1914 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1916 CRYP_SetIV(hcryp); in HAL_CRYP_Encrypt_DMA()
1921 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYNOCONFIG) in HAL_CRYP_Encrypt_DMA()
1923 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1926 CRYP_SetIV(hcryp); in HAL_CRYP_Encrypt_DMA()
1931 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1934 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size), (uint32_t)(hcryp->pCryp… in HAL_CRYP_Encrypt_DMA()
1940 status = CRYP_AESGCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1945 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1949 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_DMA()
1957 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_DMA()
1973 HAL_StatusTypeDef HAL_CRYP_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *pInput, uint16_t Size, … in HAL_CRYP_Decrypt_DMA() argument
1978 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1981 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_DMA()
1984 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_DMA()
1988 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_DMA()
1989 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1992 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_DMA()
1993 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_DMA()
1994 hcryp->pCrypInBuffPtr = pInput; in HAL_CRYP_Decrypt_DMA()
1995 hcryp->pCrypOutBuffPtr = pOutput; in HAL_CRYP_Decrypt_DMA()
1998 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_DMA()
2000 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_DMA()
2004 hcryp->Size = Size; in HAL_CRYP_Decrypt_DMA()
2007 if (CRYP_WaitFLAG(hcryp, AES_SR_BUSY, SET, CRYP_GENERAL_TIMEOUT) != HAL_OK) in HAL_CRYP_Decrypt_DMA()
2009 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_DMA()
2010 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
2014 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_DMA()
2017 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
2025 status = CRYP_AES_Decrypt_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
2030 status = CRYP_AESGCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
2035 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
2039 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_DMA()
2047 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_DMA()
2081 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_IRQHandler() argument
2083 uint32_t itsource = hcryp->Instance->IER; in HAL_CRYP_IRQHandler()
2084 uint32_t itflagsr = hcryp->Instance->SR; in HAL_CRYP_IRQHandler()
2085 uint32_t itflagisr = hcryp->Instance->ISR; in HAL_CRYP_IRQHandler()
2093 hcryp->ErrorCode |= HAL_CRYP_ERROR_WRITE; in HAL_CRYP_IRQHandler()
2094 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF); in HAL_CRYP_IRQHandler()
2099 hcryp->ErrorCode |= HAL_CRYP_ERROR_READ; in HAL_CRYP_IRQHandler()
2100 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF); in HAL_CRYP_IRQHandler()
2108 hcryp->ErrorCode |= HAL_CRYP_ERROR_KEY; in HAL_CRYP_IRQHandler()
2109 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_KEIF); in HAL_CRYP_IRQHandler()
2111 HAL_CRYP_ErrorCallback(hcryp); in HAL_CRYP_IRQHandler()
2120 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in HAL_CRYP_IRQHandler()
2122 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_IRQHandler()
2125 if ((hcryp->Instance->CR & CRYP_PHASE_HEADER) == CRYP_PHASE_HEADER) in HAL_CRYP_IRQHandler()
2127 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2131 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2136 CRYP_AES_IT(hcryp); in HAL_CRYP_IRQHandler()
2148 uint32_t HAL_CRYP_GetError(const CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetError() argument
2150 return hcryp->ErrorCode; in HAL_CRYP_GetError()
2159 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(const CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetState() argument
2161 return hcryp->State; in HAL_CRYP_GetState()
2170 __weak void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_InCpltCallback() argument
2173 UNUSED(hcryp); in HAL_CRYP_InCpltCallback()
2186 __weak void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_OutCpltCallback() argument
2189 UNUSED(hcryp); in HAL_CRYP_OutCpltCallback()
2202 __weak void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ErrorCallback() argument
2205 UNUSED(hcryp); in HAL_CRYP_ErrorCallback()
2230 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Encrypt() argument
2237 …if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || (hcryp->Init.KeyIVConfigSkip == CRYP… in CRYP_AES_Encrypt()
2239 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt()
2250 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt()
2256 if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || \ in CRYP_AES_Encrypt()
2257 (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ALWAYS)) in CRYP_AES_Encrypt()
2259 if (hcryp->Instance == AES) in CRYP_AES_Encrypt()
2262 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Encrypt()
2264 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2268 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Encrypt()
2274 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Encrypt()
2277 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2282 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)) in CRYP_AES_Encrypt()
2290 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2293 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Encrypt()
2294 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2295 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt()
2301 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2304 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt()
2308 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Encrypt()
2311 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2312 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2315 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt()
2322 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Encrypt()
2325 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2329 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYNOCONFIG) in CRYP_AES_Encrypt()
2331 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2334 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt()
2339 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt()
2342 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt()
2344 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2345 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2346 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Encrypt()
2349 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Encrypt()
2350 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2351 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2355 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2358 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2369 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Encrypt_IT() argument
2374 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt_IT()
2376 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt_IT()
2387 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt_IT()
2391 if ((dokeyivconfig == 1U) && (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG)) in CRYP_AES_Encrypt_IT()
2393 if (hcryp->Instance == AES) in CRYP_AES_Encrypt_IT()
2396 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Encrypt_IT()
2398 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2402 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Encrypt_IT()
2408 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Encrypt_IT()
2411 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2421 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt_IT()
2424 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Encrypt_IT()
2425 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2426 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2429 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AES_Encrypt_IT()
2431 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2434 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt_IT()
2438 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYNOCONFIG) in CRYP_AES_Encrypt_IT()
2440 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2443 CRYP_SetIV(hcryp); in CRYP_AES_Encrypt_IT()
2448 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt_IT()
2450 if (hcryp->Size != 0U) in CRYP_AES_Encrypt_IT()
2453 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt_IT()
2456 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2457 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2458 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2459 hcryp->CrypInCount++; 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()
2466 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_Encrypt_IT()
2471 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2472 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2484 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Decrypt() argument
2490 …if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || (hcryp->Init.KeyIVConfigSkip == CRYP… in CRYP_AES_Decrypt()
2492 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt()
2503 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt()
2509 if (hcryp->Instance == AES) in CRYP_AES_Decrypt()
2512 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2515 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt()
2516 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2519 if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || \ in CRYP_AES_Decrypt()
2520 (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ALWAYS)) in CRYP_AES_Decrypt()
2522 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt()
2524 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2528 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt()
2533 else if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Decrypt()
2536 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2544 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2547 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2552 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2555 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2560 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2562 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt()
2564 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2568 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt()
2575 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2578 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2581 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt()
2583 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2585 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2590 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2593 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2598 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2602 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2607 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt()
2609 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt()
2611 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2617 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt()
2620 CRYP_SetIV(hcryp); in CRYP_AES_Decrypt()
2627 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Decrypt()
2629 if (hcryp->Instance == AES) in CRYP_AES_Decrypt()
2632 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2635 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt()
2636 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2639 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2642 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2645 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2650 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt()
2653 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2658 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2666 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt()
2669 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2671 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2672 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2673 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Decrypt()
2676 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Decrypt()
2677 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2678 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2681 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2684 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2694 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_IT() argument
2699 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_IT()
2701 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_IT()
2712 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_IT()
2718 if (hcryp->Instance == AES) in CRYP_AES_Decrypt_IT()
2721 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2724 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt_IT()
2725 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2728 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2730 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_IT()
2732 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2736 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_IT()
2741 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2751 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2754 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2755 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2756 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2759 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_IT()
2762 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_IT()
2765 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2770 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2772 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_IT()
2774 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2778 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_IT()
2786 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2789 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2792 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_IT()
2794 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2796 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2800 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2810 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2813 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2814 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2815 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2818 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_IT()
2821 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_IT()
2825 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2830 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_IT()
2832 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_IT()
2834 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2840 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_IT()
2843 CRYP_SetIV(hcryp); in CRYP_AES_Decrypt_IT()
2848 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_IT()
2849 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_IT()
2852 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2855 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2856 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2857 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2858 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2859 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2860 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2861 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2862 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2865 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_Decrypt_IT()
2869 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2872 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2883 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_DMA() argument
2888 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_DMA()
2890 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_DMA()
2901 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_DMA()
2907 if (hcryp->Instance == AES) in CRYP_AES_Decrypt_DMA()
2910 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2913 MODIFY_REG(hcryp->Instance->CR, AES_CR_KMOD, CRYP_KEYMODE_NORMAL); in CRYP_AES_Decrypt_DMA()
2914 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
2917 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
2919 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_DMA()
2921 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2925 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_DMA()
2930 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2940 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2943 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
2944 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2945 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2948 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_DMA()
2951 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_DMA()
2954 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
2959 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
2961 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AES_Decrypt_DMA()
2963 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2967 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AES_Decrypt_DMA()
2975 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2978 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
2981 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_DMA()
2983 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
2985 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2989 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2999 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
3002 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
3003 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
3004 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
3007 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AES_Decrypt_DMA()
3010 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_Decrypt_DMA()
3014 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
3019 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AES_Decrypt_DMA()
3021 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AES_Decrypt_DMA()
3023 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
3029 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_DMA()
3032 CRYP_SetIV(hcryp); in CRYP_AES_Decrypt_DMA()
3037 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_DMA()
3039 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_DMA()
3042 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size), (uint32_t)(hcryp->pCryp… in CRYP_AES_Decrypt_DMA()
3046 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
3049 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
3063 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAInCplt() local
3075 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_DMAInCplt()
3077 if (hcryp->Phase == CRYP_PHASE_HEADER_DMA_FEED) in CRYP_DMAInCplt()
3080 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
3083 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_DMAInCplt()
3085 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_DMAInCplt()
3087 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_DMAInCplt()
3091 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_DMAInCplt()
3097 hcryp->CrypHeaderCount = (uint16_t)((headersize_in_bytes / 16U) * 4U); in CRYP_DMAInCplt()
3100 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
3101 hcryp->CrypHeaderCount++ ; in CRYP_DMAInCplt()
3109 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
3116 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
3117 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_DMAInCplt()
3118 hcryp->Instance->DINR = tmp; in CRYP_DMAInCplt()
3123 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
3129 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
3133 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_DMAInCplt()
3136 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_DMAInCplt()
3139 (void)CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp); in CRYP_DMAInCplt()
3146 algo = hcryp->Instance->CR & AES_CR_CHMOD; in CRYP_DMAInCplt()
3153 (((hcryp->Size) % 16U) != 0U))) in CRYP_DMAInCplt()
3158 hcryp->InCpltCallback(hcryp); in CRYP_DMAInCplt()
3161 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAInCplt()
3180 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAOutCplt() local
3185 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAOUTEN); in CRYP_DMAOutCplt()
3188 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_DMAOutCplt()
3191 if (((hcryp->Size) % 16U) != 0U) in CRYP_DMAOutCplt()
3194 hcryp->CrypInCount = (hcryp->Size / 16U) * 4U; in CRYP_DMAOutCplt()
3195 hcryp->CrypOutCount = hcryp->CrypInCount; in CRYP_DMAOutCplt()
3198 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_DMAOutCplt()
3200 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_DMAOutCplt()
3201 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_DMAOutCplt()
3202 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_DMAOutCplt()
3205 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_DMAOutCplt()
3221 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_DMAOutCplt()
3222 hcryp->CrypInCount++; in CRYP_DMAOutCplt()
3227 hcryp->Instance->DINR = 0x0U; in CRYP_DMAOutCplt()
3233 hcryp->InCpltCallback(hcryp); in CRYP_DMAOutCplt()
3236 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAOutCplt()
3240 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAOutCplt()
3247 temp[count] = hcryp->Instance->DOUTR; in CRYP_DMAOutCplt()
3251 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (count < 4U)) in CRYP_DMAOutCplt()
3253 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[count]; in CRYP_DMAOutCplt()
3254 hcryp->CrypOutCount++; in CRYP_DMAOutCplt()
3259 if (((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_DMAOutCplt()
3260 && ((hcryp->Init.Algorithm & CRYP_AES_CCM) != CRYP_AES_CCM)) in CRYP_DMAOutCplt()
3263 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
3267 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAOutCplt()
3268 __HAL_UNLOCK(hcryp); in CRYP_DMAOutCplt()
3273 hcryp->OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
3276 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
3287 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAError() local
3290 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAError()
3293 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_DMAError()
3296 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_DMAError()
3301 hcryp->ErrorCallback(hcryp); in CRYP_DMAError()
3304 HAL_CRYP_ErrorCallback(hcryp); in CRYP_DMAError()
3317 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_… in CRYP_SetDMAConfig() argument
3322 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetDMAConfig()
3325 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
3328 hcryp->hdmaout->XferCpltCallback = CRYP_DMAOutCplt; in CRYP_SetDMAConfig()
3331 hcryp->hdmaout->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
3333 if ((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_SetDMAConfig()
3336 __HAL_CRYP_ENABLE(hcryp); in CRYP_SetDMAConfig()
3340 if ((hcryp->hdmain->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in CRYP_SetDMAConfig()
3342 if ((hcryp->hdmain->LinkedListQueue != NULL) && (hcryp->hdmain->LinkedListQueue->Head != NULL)) in CRYP_SetDMAConfig()
3345 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetDMAConfig()
3347 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetDMAConfig()
3349 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetDMAConfig()
3350 …LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hcryp->Instance->DINR; /* Set DMA destination… in CRYP_SetDMAConfig()
3352 status = HAL_DMAEx_List_Start_IT(hcryp->hdmain); in CRYP_SetDMAConfig()
3362 status = HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size); in CRYP_SetDMAConfig()
3368 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3372 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3375 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3379 if ((hcryp->hdmaout->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in CRYP_SetDMAConfig()
3381 … if ((hcryp->hdmaout->LinkedListQueue != NULL) && (hcryp->hdmaout->LinkedListQueue->Head != NULL)) in CRYP_SetDMAConfig()
3384 hcryp->hdmaout->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = \ in CRYP_SetDMAConfig()
3386 hcryp->hdmaout->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = \ in CRYP_SetDMAConfig()
3387 (uint32_t)&hcryp->Instance->DOUTR; /* Set DMA source address */ in CRYP_SetDMAConfig()
3388 hcryp->hdmaout->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = \ in CRYP_SetDMAConfig()
3391 status = HAL_DMAEx_List_Start_IT(hcryp->hdmaout); in CRYP_SetDMAConfig()
3401 status = HAL_DMA_Start_IT(hcryp->hdmaout, (uint32_t)&hcryp->Instance->DOUTR, outputaddr, Size); in CRYP_SetDMAConfig()
3407 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3412 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3415 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3419 SET_BIT(hcryp->Instance->CR, (AES_CR_DMAINEN | AES_CR_DMAOUTEN)); in CRYP_SetDMAConfig()
3430 static HAL_StatusTypeDef CRYP_SetHeaderDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uin… in CRYP_SetHeaderDMAConfig() argument
3435 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetHeaderDMAConfig()
3438 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetHeaderDMAConfig()
3441 hcryp->Phase = CRYP_PHASE_HEADER_DMA_FEED; in CRYP_SetHeaderDMAConfig()
3444 if ((hcryp->hdmain->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in CRYP_SetHeaderDMAConfig()
3446 if ((hcryp->hdmain->LinkedListQueue != NULL) && (hcryp->hdmain->LinkedListQueue->Head != NULL)) in CRYP_SetHeaderDMAConfig()
3449 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetHeaderDMAConfig()
3451 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetHeaderDMAConfig()
3453 hcryp->hdmain->LinkedListQueue->Head->\ in CRYP_SetHeaderDMAConfig()
3454 …LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hcryp->Instance->DINR; /* Set DMA destination… in CRYP_SetHeaderDMAConfig()
3456 status = HAL_DMAEx_List_Start_IT(hcryp->hdmain); in CRYP_SetHeaderDMAConfig()
3466 status = HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size); in CRYP_SetHeaderDMAConfig()
3471 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetHeaderDMAConfig()
3476 hcryp->ErrorCallback(hcryp); in CRYP_SetHeaderDMAConfig()
3479 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetHeaderDMAConfig()
3484 SET_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_SetHeaderDMAConfig()
3496 static void CRYP_AES_ProcessData(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_ProcessData() argument
3503 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3504 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3505 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3506 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3507 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3508 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3509 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3510 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3513 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_ProcessData()
3517 hcryp->ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3520 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3525 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_ProcessData()
3531 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_ProcessData()
3534 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_ProcessData()
3536 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_ProcessData()
3537 hcryp->CrypOutCount++; in CRYP_AES_ProcessData()
3550 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_IT() argument
3555 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_AES_IT()
3561 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_IT()
3564 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_IT()
3566 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_IT()
3567 hcryp->CrypOutCount++; in CRYP_AES_IT()
3570 if (hcryp->CrypOutCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3573 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_IT()
3576 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_IT()
3579 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_IT()
3580 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3585 hcryp->OutCpltCallback(hcryp); in CRYP_AES_IT()
3588 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_AES_IT()
3596 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_AES_IT()
3599 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AES_IT()
3602 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_AES_IT()
3604 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AES_IT()
3606 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_AES_IT()
3608 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_AES_IT()
3609 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3615 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3616 hcryp->CrypInCount++; in CRYP_AES_IT()
3617 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3618 hcryp->CrypInCount++; in CRYP_AES_IT()
3619 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3620 hcryp->CrypInCount++; in CRYP_AES_IT()
3621 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3622 hcryp->CrypInCount++; in CRYP_AES_IT()
3624 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3629 hcryp->InCpltCallback(hcryp); in CRYP_AES_IT()
3632 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AES_IT()
3641 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_AES_IT()
3644 hcryp->ErrorCallback(hcryp); in CRYP_AES_IT()
3647 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_IT()
3660 static HAL_StatusTypeDef CRYP_WaitFLAG(CRYP_HandleTypeDef *hcryp, uint32_t flag, FlagStatus Status,… in CRYP_WaitFLAG() argument
3663 while (__HAL_CRYP_GET_FLAG(hcryp, flag) == Status) in CRYP_WaitFLAG()
3667 CLEAR_BIT(hcryp->Instance->CR, AES_CR_EN); in CRYP_WaitFLAG()
3669 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_WaitFLAG()
3684 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize) in CRYP_SetKey() argument
3686 if (hcryp->Init.pKey != NULL) in CRYP_SetKey()
3691 hcryp->Instance->KEYR7 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3692 hcryp->Instance->KEYR6 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3693 hcryp->Instance->KEYR5 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3694 hcryp->Instance->KEYR4 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3695 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_SetKey()
3696 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_SetKey()
3697 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_SetKey()
3698 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_SetKey()
3701 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3702 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3703 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3704 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3719 static void CRYP_SetIV(CRYP_HandleTypeDef *hcryp) in CRYP_SetIV() argument
3721 if (hcryp->Init.pInitVect != NULL) in CRYP_SetIV()
3724 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_SetIV()
3725 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_SetIV()
3726 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_SetIV()
3727 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_SetIV()
3738 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESGCM_Process() argument
3741 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U); in CRYP_AESGCM_Process()
3749 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process()
3751 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process()
3756 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process()
3763 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process()
3764 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process()
3769 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process()
3776 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process()
3780 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process()
3782 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESGCM_Process()
3784 if (hcryp->Instance == AES) in CRYP_AESGCM_Process()
3786 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESGCM_Process()
3788 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3792 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESGCM_Process()
3798 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESGCM_Process()
3801 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3806 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)) in CRYP_AESGCM_Process()
3814 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3817 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3818 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3819 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3827 CRYP_SetIV(hcryp); in CRYP_AESGCM_Process()
3830 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3833 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3838 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process()
3842 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3850 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process()
3853 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process()
3856 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process()
3860 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3870 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3871 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3875 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESGCM_Process()
3883 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3886 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3887 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3888 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3892 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3893 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3896 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3899 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process()
3902 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process()
3905 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process()
3920 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process()
3921 hcryp->CrypInCount++; in CRYP_AESGCM_Process()
3926 hcryp->Instance->DINR = 0U; in CRYP_AESGCM_Process()
3930 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3934 hcryp->ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3937 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3942 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process()
3949 temp[index] = hcryp->Instance->DOUTR; in CRYP_AESGCM_Process()
3953 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp[index]; in CRYP_AESGCM_Process()
3954 hcryp->CrypOutCount++; in CRYP_AESGCM_Process()
3967 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_IT() argument
3982 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESGCM_Process_IT()
3984 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESGCM_Process_IT()
3991 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESGCM_Process_IT()
3993 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESGCM_Process_IT()
3997 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESGCM_Process_IT()
4000 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_IT()
4002 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_IT()
4007 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_IT()
4014 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_IT()
4015 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_IT()
4020 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_IT()
4027 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_IT()
4031 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_IT()
4033 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESGCM_Process_IT()
4035 if (hcryp->Instance == AES) in CRYP_AESGCM_Process_IT()
4037 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESGCM_Process_IT()
4039 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
4043 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESGCM_Process_IT()
4049 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESGCM_Process_IT()
4052 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
4062 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
4065 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
4066 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4067 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4070 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AESGCM_Process_IT()
4074 CRYP_SetIV(hcryp); in CRYP_AESGCM_Process_IT()
4077 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
4087 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
4090 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
4091 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4092 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4095 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESGCM_Process_IT()
4098 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process_IT()
4103 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESGCM_Process_IT()
4106 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4109 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
4111 if (hcryp->Init.HeaderSize == 0U) /*header phase is skipped*/ in CRYP_AESGCM_Process_IT()
4114 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_IT()
4117 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_IT()
4120 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
4123 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
4126 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4129 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4130 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4132 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
4134 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4135 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4136 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4137 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4138 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4139 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4140 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4141 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4142 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
4147 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4150 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4162 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
4164 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
4167 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
4183 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4184 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4189 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4195 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4198 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4209 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4210 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
4218 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4220 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4226 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4227 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESGCM_Process_IT()
4228 hcryp->Instance->DINR = tmp; in CRYP_AESGCM_Process_IT()
4230 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
4234 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4236 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4242 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4245 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4252 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4253 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4254 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4255 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4256 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4257 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4258 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4259 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4269 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4272 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
4275 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
4278 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESGCM_Process_IT()
4281 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4282 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4284 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
4286 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4287 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4288 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4289 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4290 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4291 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4292 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4293 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4294 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
4299 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4302 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4314 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
4316 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
4319 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
4335 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4336 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4341 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4347 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4350 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4365 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_DMA() argument
4370 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_DMA()
4372 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_DMA()
4377 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_DMA()
4384 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_DMA()
4385 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_DMA()
4390 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_DMA()
4397 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_DMA()
4401 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_DMA()
4403 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESGCM_Process_DMA()
4405 if (hcryp->Instance == AES) in CRYP_AESGCM_Process_DMA()
4407 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESGCM_Process_DMA()
4409 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
4413 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESGCM_Process_DMA()
4419 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESGCM_Process_DMA()
4422 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
4432 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4435 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
4436 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
4437 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
4440 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AESGCM_Process_DMA()
4444 CRYP_SetIV(hcryp); in CRYP_AESGCM_Process_DMA()
4447 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4457 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4460 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
4461 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
4462 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
4465 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESGCM_Process_DMA()
4468 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESGCM_Process_DMA()
4472 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
4481 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
4499 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESCCM_Process() argument
4502 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U); in CRYP_AESCCM_Process()
4511 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process()
4513 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process()
4518 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process()
4525 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process()
4526 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process()
4531 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process()
4537 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process()
4541 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process()
4543 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESCCM_Process()
4545 if (hcryp->Instance == AES) in CRYP_AESCCM_Process()
4547 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESCCM_Process()
4549 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
4553 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESCCM_Process()
4559 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESCCM_Process()
4562 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
4567 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)) in CRYP_AESCCM_Process()
4575 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4578 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4579 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4580 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4588 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
4589 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process()
4590 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process()
4591 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process()
4594 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
4597 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4602 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process()
4607 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4615 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process()
4618 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process()
4621 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process()
4625 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4634 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
4635 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4639 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESCCM_Process()
4647 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4650 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4651 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4652 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4656 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
4657 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4660 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4663 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESCCM_Process()
4665 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_AESCCM_Process()
4668 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20); in CRYP_AESCCM_Process()
4684 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process()
4685 hcryp->CrypInCount++; in CRYP_AESCCM_Process()
4691 hcryp->Instance->DINR = 0U; in CRYP_AESCCM_Process()
4695 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4700 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process()
4706 temp[loopcounter] = hcryp->Instance->DOUTR; in CRYP_AESCCM_Process()
4710 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[loopcounter]; in CRYP_AESCCM_Process()
4711 hcryp->CrypOutCount++; in CRYP_AESCCM_Process()
4725 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_IT() argument
4741 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESCCM_Process_IT()
4743 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESCCM_Process_IT()
4748 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_IT()
4750 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_IT()
4755 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_IT()
4762 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_IT()
4763 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_IT()
4768 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_IT()
4775 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_IT()
4779 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_IT()
4781 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESCCM_Process_IT()
4783 if (hcryp->Instance == AES) in CRYP_AESCCM_Process_IT()
4785 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESCCM_Process_IT()
4787 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
4791 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESCCM_Process_IT()
4797 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESCCM_Process_IT()
4800 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
4810 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_IT()
4813 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_IT()
4814 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4815 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4818 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AESCCM_Process_IT()
4822 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_IT()
4823 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_IT()
4824 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_IT()
4825 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_IT()
4828 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4838 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_IT()
4841 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_IT()
4842 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4843 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4846 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESCCM_Process_IT()
4849 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process_IT()
4854 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESCCM_Process_IT()
4857 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESCCM_Process_IT()
4860 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4862 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESCCM_Process_IT()
4864 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESCCM_Process_IT()
4868 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESCCM_Process_IT()
4874 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process_IT()
4876 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process_IT()
4878 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process_IT()
4880 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_AESCCM_Process_IT()
4883 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4886 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4889 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESCCM_Process_IT()
4892 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4893 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4895 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
4897 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4898 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4899 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4900 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4901 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4902 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4903 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4904 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4906 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
4911 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4914 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4921 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
4923 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
4924 … if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
4925 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
4928 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
4944 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4945 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4950 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4956 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4959 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4970 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4971 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4979 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4986 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4987 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESCCM_Process_IT()
4988 hcryp->Instance->DINR = tmp; in CRYP_AESCCM_Process_IT()
4989 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4995 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
5002 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5005 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5012 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5013 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5014 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5015 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5016 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5017 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5018 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
5019 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
5028 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
5031 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_AESCCM_Process_IT()
5034 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
5035 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
5037 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
5039 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5040 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5041 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5042 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5043 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5044 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5045 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5046 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5048 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
5053 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5056 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5063 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
5065 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
5066 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
5067 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
5070 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
5086 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
5087 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
5092 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
5098 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5101 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
5116 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_DMA() argument
5121 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_DMA()
5123 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_DMA()
5128 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_DMA()
5135 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_DMA()
5136 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_DMA()
5141 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_DMA()
5148 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_DMA()
5153 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_DMA()
5155 if (hcryp->Init.KeyIVConfigSkip != CRYP_KEYNOCONFIG) in CRYP_AESCCM_Process_DMA()
5157 if (hcryp->Instance == AES) in CRYP_AESCCM_Process_DMA()
5159 if (hcryp->Init.KeyMode != CRYP_KEYMODE_SHARED) in CRYP_AESCCM_Process_DMA()
5161 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
5165 hcryp->Instance->CR &= ~CRYP_KEYMODE_SHARED; in CRYP_AESCCM_Process_DMA()
5171 … if ((hcryp->Init.KeySelect == CRYP_KEYSEL_NORMAL) && (hcryp->Init.KeyMode == CRYP_KEYMODE_NORMAL)) in CRYP_AESCCM_Process_DMA()
5174 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
5184 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
5187 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
5188 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
5189 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
5192 } while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_KEYVALID)); in CRYP_AESCCM_Process_DMA()
5196 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_DMA()
5197 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_DMA()
5198 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_DMA()
5199 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_DMA()
5202 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_DMA()
5212 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
5215 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
5216 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
5217 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
5220 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_AESCCM_Process_DMA()
5223 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_AESCCM_Process_DMA()
5228 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
5237 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
5252 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_IT() argument
5269 temp[i] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_IT()
5272 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
5274 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_GCMCCM_SetPayloadPhase_IT()
5275 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5278 incount = hcryp->CrypInCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
5279 outcount = hcryp->CrypOutCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
5280 if ((outcount >= (hcryp->Size / 4U)) && ((incount * 4U) >= hcryp->Size)) in CRYP_GCMCCM_SetPayloadPhase_IT()
5284 if (!((hcryp->Init.Algorithm == CRYP_AES_CCM) && (hcryp->KeyIVConfig == 1U))) in CRYP_GCMCCM_SetPayloadPhase_IT()
5287 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
5291 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_IT()
5292 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5297 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5300 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5304 else if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_GCMCCM_SetPayloadPhase_IT()
5310 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetPayloadPhase_IT()
5313 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetPayloadPhase_IT()
5316 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetPayloadPhase_IT()
5318 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
5320 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
5322 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
5323 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5329 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5330 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5331 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5332 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5333 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5334 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5335 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5336 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5337 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
5342 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5345 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
5353 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetPayloadPhase_IT()
5355 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetPayloadPhase_IT()
5356 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetPayloadPhase_IT()
5357 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetPayloadPhase_IT()
5360 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_IT()
5376 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
5377 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
5382 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetPayloadPhase_IT()
5394 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_DMA() argument
5404 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
5407 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5410 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5412 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
5415 … CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (uint16_t)((hcryp->Size / 16U) * 16U), in CRYP_GCMCCM_SetPayloadPhase_DMA()
5416 (uint32_t)(hcryp->pCrypOutBuffPtr)); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5421 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5424 reg = hcryp->Instance->CR & (AES_CR_CHMOD | AES_CR_MODE); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5429 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5446 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5447 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5452 hcryp->Instance->DINR = 0U; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5458 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5461 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5471 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5474 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5475 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5478 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5481 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5484 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5491 temp[index] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5495 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[index]; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5496 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5500 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
5503 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5507 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5510 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
5524 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_GCMCCM_SetHeaderPhase() argument
5535 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase()
5537 size_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase()
5541 size_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase()
5547 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
5550 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
5559 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5560 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5561 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5562 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5563 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5564 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5565 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5566 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5568 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
5573 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase()
5582 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5583 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5584 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5585 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5586 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5587 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5588 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5589 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5591 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
5596 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase()
5601 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5602 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase()
5610 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
5617 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
5618 tmp &= mask[(hcryp->Init.DataType * 2U) + (size_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase()
5619 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase()
5624 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
5629 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
5634 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase()
5640 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType); in CRYP_GCMCCM_SetHeaderPhase()
5643 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
5646 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
5658 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_DMA() argument
5669 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5671 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5675 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5679 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5682 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5685 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5693 if (CRYP_SetHeaderDMAConfig(hcryp, (uint32_t)(hcryp->Init.Header), in CRYP_GCMCCM_SetHeaderPhase_DMA()
5707 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5708 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5716 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5723 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5724 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5725 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5730 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5735 if (CRYP_WaitOnCCFlag(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5738 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5741 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5742 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5745 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5749 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5756 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5759 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5762 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5777 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_IT() argument
5790 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_IT()
5792 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5796 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_IT()
5802 if (headersize_in_bytes <= ((uint32_t)(hcryp->CrypHeaderCount) * 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5805 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_IT()
5807 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_IT()
5809 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5811 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_GCMCCM_SetHeaderPhase_IT()
5814 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5817 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5820 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5823 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_IT()
5824 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5826 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5828 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5829 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5830 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5831 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5832 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5833 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5834 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5835 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5837 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5842 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5845 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5852 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetHeaderPhase_IT()
5853 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5854 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetHeaderPhase_IT()
5855 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetHeaderPhase_IT()
5858 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5874 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5875 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5880 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5886 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5889 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5893 else if ((((headersize_in_bytes / 4U) - (hcryp->CrypHeaderCount)) >= 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5899 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetHeaderPhase_IT()
5902 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_GCMCCM_SetHeaderPhase_IT()
5905 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5907 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5909 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5911 hcryp->Phase = CRYP_PHASE_HEADER_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5912 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5918 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5919 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5920 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5921 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5922 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5923 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5924 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5925 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5933 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5934 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
5942 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5944 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5950 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5951 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_IT()
5952 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_IT()
5954 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5958 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5960 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5974 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_WaitOnCCFlag() argument
5981 while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)) in CRYP_WaitOnCCFlag()
5988 __HAL_CRYP_DISABLE(hcryp); in CRYP_WaitOnCCFlag()
5989 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_WaitOnCCFlag()
5990 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_WaitOnCCFlag()
5991 __HAL_UNLOCK(hcryp); in CRYP_WaitOnCCFlag()
6007 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_ClearCCFlagWhenHigh() argument
6017 __HAL_CRYP_DISABLE(hcryp); in CRYP_ClearCCFlagWhenHigh()
6020 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_ClearCCFlagWhenHigh()
6023 __HAL_UNLOCK(hcryp); in CRYP_ClearCCFlagWhenHigh()
6024 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_ClearCCFlagWhenHigh()
6028 hcryp->ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
6031 HAL_CRYP_ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
6034 } while (HAL_IS_BIT_CLR(hcryp->Instance->ISR, AES_ISR_CCF)); in CRYP_ClearCCFlagWhenHigh()
6037 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_CCF); in CRYP_ClearCCFlagWhenHigh()
6050 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output) in CRYP_Read_IVRegisters() argument
6054 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR3; in CRYP_Read_IVRegisters()
6056 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR2; in CRYP_Read_IVRegisters()
6058 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR1; in CRYP_Read_IVRegisters()
6060 *(uint32_t *)(outputaddr) = hcryp->Instance->IVR0; in CRYP_Read_IVRegisters()
6073 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input) in CRYP_Write_IVRegisters() argument
6077 hcryp->Instance->IVR3 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
6079 hcryp->Instance->IVR2 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
6081 hcryp->Instance->IVR1 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
6083 hcryp->Instance->IVR0 = *(uint32_t *)(ivaddr); in CRYP_Write_IVRegisters()
6096 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output) in CRYP_Read_SuspendRegisters() argument
6102 …if (READ_BIT(hcryp->Instance->CR, (AES_CR_CHMOD | AES_CR_GCMPH | AES_CR_MODE)) == (CRYP_AES_GCM_GM… in CRYP_Read_SuspendRegisters()
6114 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Read_SuspendRegisters()
6115 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Read_SuspendRegisters()
6116 __HAL_UNLOCK(hcryp); in CRYP_Read_SuspendRegisters()
6117 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Read_SuspendRegisters()
6120 } while (HAL_IS_BIT_SET(hcryp->Instance->SR, AES_SR_BUSY)); in CRYP_Read_SuspendRegisters()
6124 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP7R; in CRYP_Read_SuspendRegisters()
6126 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP6R; in CRYP_Read_SuspendRegisters()
6128 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP5R; in CRYP_Read_SuspendRegisters()
6130 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP4R; in CRYP_Read_SuspendRegisters()
6132 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP3R; in CRYP_Read_SuspendRegisters()
6134 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP2R; in CRYP_Read_SuspendRegisters()
6136 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP1R; in CRYP_Read_SuspendRegisters()
6138 *(uint32_t *)(outputaddr) = hcryp->Instance->SUSP0R; in CRYP_Read_SuspendRegisters()
6151 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input) in CRYP_Write_SuspendRegisters() argument
6155 hcryp->Instance->SUSP7R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6157 hcryp->Instance->SUSP6R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6159 hcryp->Instance->SUSP5R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6161 hcryp->Instance->SUSP4R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6163 hcryp->Instance->SUSP3R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6165 hcryp->Instance->SUSP2R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6167 hcryp->Instance->SUSP1R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6169 hcryp->Instance->SUSP0R = *(uint32_t *)(ivaddr); in CRYP_Write_SuspendRegisters()
6182 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Output, uint32_t KeyS… in CRYP_Read_KeyRegisters() argument
6189 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
6191 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
6193 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
6195 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
6197 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_Read_KeyRegisters()
6199 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_Read_KeyRegisters()
6201 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_Read_KeyRegisters()
6203 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_Read_KeyRegisters()
6206 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
6208 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
6210 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
6212 *(uint32_t *)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
6230 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, const uint32_t *Input, uint32_t KeyS… in CRYP_Write_KeyRegisters() argument
6236 hcryp->Instance->KEYR7 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6238 hcryp->Instance->KEYR6 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6240 hcryp->Instance->KEYR5 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6242 hcryp->Instance->KEYR4 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6246 hcryp->Instance->KEYR3 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6248 hcryp->Instance->KEYR2 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6250 hcryp->Instance->KEYR1 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6252 hcryp->Instance->KEYR0 = *(uint32_t *)(keyaddr); in CRYP_Write_KeyRegisters()
6261 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp) in CRYP_PhaseProcessingResume() argument
6268 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CLEAR_RWEIF | CRYP_CLEAR_CCF); in CRYP_PhaseProcessingResume()
6271 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_RWEIE | CRYP_IT_KEIE); in CRYP_PhaseProcessingResume()
6274 __HAL_CRYP_ENABLE(hcryp); in CRYP_PhaseProcessingResume()
6277 if (hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) in CRYP_PhaseProcessingResume()
6280 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
6283 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_PhaseProcessingResume()
6285 if (((hcryp->Init.HeaderSize) - (hcryp->CrypHeaderCount) >= 4U)) in CRYP_PhaseProcessingResume()
6288 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6289 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6290 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6291 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6292 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6293 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6294 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6295 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6300 for (loopcounter = 0U; loopcounter < (hcryp->Init.HeaderSize % 4U); loopcounter++) in CRYP_PhaseProcessingResume()
6302 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
6303 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
6308 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()
6316 if (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED) in CRYP_PhaseProcessingResume()
6320 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
6323 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_PhaseProcessingResume()
6326 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_PhaseProcessingResume()
6328 if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_PhaseProcessingResume()
6331 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6332 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6333 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6334 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6335 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6336 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6337 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6338 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6339 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_PhaseProcessingResume()
6344 hcryp->InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
6347 HAL_CRYP_InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
6354 npblb = (((hcryp->Size / 16U) + 1U) * 16U) - (hcryp->Size); in CRYP_PhaseProcessingResume()
6355 cr_temp = hcryp->Instance->CR; in CRYP_PhaseProcessingResume()
6356 …if ((((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES… in CRYP_PhaseProcessingResume()
6357 …(((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM… in CRYP_PhaseProcessingResume()
6360 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, ((uint32_t)npblb) << 20U); in CRYP_PhaseProcessingResume()
6376 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_PhaseProcessingResume()
6377 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
6382 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()