Lines Matching refs:hcryp
366 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_…
367 static HAL_StatusTypeDef CRYP_SetHeaderDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uin…
371 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize);
372 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp);
373 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
374 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp);
375 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp);
376 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp);
377 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp);
378 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
379 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp);
380 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
381 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
382 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp);
383 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
385 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
386 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
387 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp);
388 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp);
389 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp);
390 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
391 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
393 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Output);
394 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Input);
395 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Output);
396 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Input);
397 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Output, uint32_t KeySize);
398 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Input, uint32_t KeySize);
399 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp);
449 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Init() argument
452 if (hcryp == NULL) in HAL_CRYP_Init()
458 assert_param(IS_CRYP_KEYSIZE(hcryp->Init.KeySize)); in HAL_CRYP_Init()
459 assert_param(IS_CRYP_DATATYPE(hcryp->Init.DataType)); in HAL_CRYP_Init()
460 assert_param(IS_CRYP_ALGORITHM(hcryp->Init.Algorithm)); in HAL_CRYP_Init()
461 assert_param(IS_CRYP_INIT(hcryp->Init.KeyIVConfigSkip)); in HAL_CRYP_Init()
464 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
467 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
469 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_Init()
470 hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_Init()
471 hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_Init()
473 if (hcryp->MspInitCallback == NULL) in HAL_CRYP_Init()
475 hcryp->MspInitCallback = HAL_CRYP_MspInit; /* Legacy weak MspInit */ in HAL_CRYP_Init()
479 hcryp->MspInitCallback(hcryp); in HAL_CRYP_Init()
482 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
485 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
488 HAL_CRYP_MspInit(hcryp); in HAL_CRYP_Init()
493 …MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, hcryp->Init.DataT… in HAL_CRYP_Init()
496 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_Init()
499 hcryp->KeyIVConfig = 0U; in HAL_CRYP_Init()
502 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
505 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_Init()
517 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_DeInit() argument
520 if (hcryp == NULL) in HAL_CRYP_DeInit()
526 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_DeInit()
529 hcryp->CrypInCount = 0; in HAL_CRYP_DeInit()
530 hcryp->CrypOutCount = 0; in HAL_CRYP_DeInit()
531 hcryp->CrypHeaderCount = 0; in HAL_CRYP_DeInit()
534 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_DeInit()
538 if (hcryp->MspDeInitCallback == NULL) in HAL_CRYP_DeInit()
540 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; /* Legacy weak MspDeInit */ in HAL_CRYP_DeInit()
543 hcryp->MspDeInitCallback(hcryp); in HAL_CRYP_DeInit()
548 HAL_CRYP_MspDeInit(hcryp); in HAL_CRYP_DeInit()
553 hcryp->State = HAL_CRYP_STATE_RESET; in HAL_CRYP_DeInit()
556 __HAL_UNLOCK(hcryp); in HAL_CRYP_DeInit()
570 HAL_StatusTypeDef HAL_CRYP_SetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_SetConfig() argument
573 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_SetConfig()
583 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_SetConfig()
586 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_SetConfig()
589 __HAL_LOCK(hcryp); in HAL_CRYP_SetConfig()
592 hcryp->Init.DataType = pConf->DataType; in HAL_CRYP_SetConfig()
593 hcryp->Init.pKey = pConf->pKey; in HAL_CRYP_SetConfig()
594 hcryp->Init.Algorithm = pConf->Algorithm; in HAL_CRYP_SetConfig()
595 hcryp->Init.KeySize = pConf->KeySize; in HAL_CRYP_SetConfig()
596 hcryp->Init.pInitVect = pConf->pInitVect; in HAL_CRYP_SetConfig()
597 hcryp->Init.Header = pConf->Header; in HAL_CRYP_SetConfig()
598 hcryp->Init.HeaderSize = pConf->HeaderSize; in HAL_CRYP_SetConfig()
599 hcryp->Init.B0 = pConf->B0; in HAL_CRYP_SetConfig()
600 hcryp->Init.DataWidthUnit = pConf->DataWidthUnit; in HAL_CRYP_SetConfig()
601 hcryp->Init.HeaderWidthUnit = pConf->HeaderWidthUnit; in HAL_CRYP_SetConfig()
602 hcryp->Init.KeyIVConfigSkip = pConf->KeyIVConfigSkip; in HAL_CRYP_SetConfig()
605 …MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, hcryp->Init.DataT… in HAL_CRYP_SetConfig()
608 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_ERR_CLEAR); in HAL_CRYP_SetConfig()
611 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
614 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_SetConfig()
617 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_SetConfig()
620 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_SetConfig()
628 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
631 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_SetConfig()
643 HAL_StatusTypeDef HAL_CRYP_GetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_GetConfig() argument
646 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_GetConfig()
651 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_GetConfig()
654 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_GetConfig()
657 __HAL_LOCK(hcryp); in HAL_CRYP_GetConfig()
660 pConf->DataType = hcryp->Init.DataType; in HAL_CRYP_GetConfig()
661 pConf->pKey = hcryp->Init.pKey; in HAL_CRYP_GetConfig()
662 pConf->Algorithm = hcryp->Init.Algorithm; in HAL_CRYP_GetConfig()
663 pConf->KeySize = hcryp->Init.KeySize ; in HAL_CRYP_GetConfig()
664 pConf->pInitVect = hcryp->Init.pInitVect; in HAL_CRYP_GetConfig()
665 pConf->Header = hcryp->Init.Header ; in HAL_CRYP_GetConfig()
666 pConf->HeaderSize = hcryp->Init.HeaderSize; in HAL_CRYP_GetConfig()
667 pConf->B0 = hcryp->Init.B0; in HAL_CRYP_GetConfig()
668 pConf->DataWidthUnit = hcryp->Init.DataWidthUnit; in HAL_CRYP_GetConfig()
669 pConf->HeaderWidthUnit = hcryp->Init.HeaderWidthUnit; in HAL_CRYP_GetConfig()
670 pConf->KeyIVConfigSkip = hcryp->Init.KeyIVConfigSkip; in HAL_CRYP_GetConfig()
673 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
676 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_GetConfig()
684 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
687 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_GetConfig()
697 __weak void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspInit() argument
700 UNUSED(hcryp); in HAL_CRYP_MspInit()
713 __weak void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspDeInit() argument
716 UNUSED(hcryp); in HAL_CRYP_MspDeInit()
738 HAL_StatusTypeDef HAL_CRYP_RegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef C… in HAL_CRYP_RegisterCallback() argument
745 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
750 __HAL_LOCK(hcryp); in HAL_CRYP_RegisterCallback()
752 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_RegisterCallback()
757 hcryp->InCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
761 hcryp->OutCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
765 hcryp->ErrorCallback = pCallback; in HAL_CRYP_RegisterCallback()
769 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
773 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
778 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
784 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_RegisterCallback()
789 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
793 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
798 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
807 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
813 __HAL_UNLOCK(hcryp); in HAL_CRYP_RegisterCallback()
831 HAL_StatusTypeDef HAL_CRYP_UnRegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef… in HAL_CRYP_UnRegisterCallback() argument
836 __HAL_LOCK(hcryp); in HAL_CRYP_UnRegisterCallback()
838 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_UnRegisterCallback()
843 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_UnRegisterCallback()
847 … hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_UnRegisterCallback()
851 … hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_UnRegisterCallback()
855 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
859 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
864 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
870 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_UnRegisterCallback()
875 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
879 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
884 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
893 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK;; in HAL_CRYP_UnRegisterCallback()
899 __HAL_UNLOCK(hcryp); in HAL_CRYP_UnRegisterCallback()
919 void HAL_CRYP_ProcessSuspend(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ProcessSuspend() argument
922 hcryp->SuspendRequest = HAL_CRYP_SUSPEND; in HAL_CRYP_ProcessSuspend()
935 HAL_StatusTypeDef HAL_CRYP_Suspend(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Suspend() argument
940 HAL_CRYP_ProcessSuspend(hcryp); in HAL_CRYP_Suspend()
944 state = HAL_CRYP_GetState(hcryp); in HAL_CRYP_Suspend()
947 if (HAL_CRYP_GetState(hcryp) == HAL_CRYP_STATE_READY) in HAL_CRYP_Suspend()
958 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || \ in HAL_CRYP_Suspend()
959 (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_Suspend()
962 CRYP_Read_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Suspend()
964 CRYP_Read_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Suspend()
966 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
969 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Suspend()
972 hcryp->Init_saved = hcryp->Init; in HAL_CRYP_Suspend()
973 hcryp->pCrypInBuffPtr_saved = hcryp->pCrypInBuffPtr; in HAL_CRYP_Suspend()
974 hcryp->pCrypOutBuffPtr_saved = hcryp->pCrypOutBuffPtr; in HAL_CRYP_Suspend()
975 hcryp->CrypInCount_saved = hcryp->CrypInCount; in HAL_CRYP_Suspend()
976 hcryp->CrypOutCount_saved = hcryp->CrypOutCount; in HAL_CRYP_Suspend()
977 hcryp->Phase_saved = hcryp->Phase; in HAL_CRYP_Suspend()
978 hcryp->State_saved = hcryp->State; in HAL_CRYP_Suspend()
979 …hcryp->Size_saved = ( (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) ? (hcryp… in HAL_CRYP_Suspend()
980 hcryp->SizesSum_saved = hcryp->SizesSum; in HAL_CRYP_Suspend()
981 hcryp->AutoKeyDerivation_saved = hcryp->AutoKeyDerivation; in HAL_CRYP_Suspend()
982 hcryp->CrypHeaderCount_saved = hcryp->CrypHeaderCount; in HAL_CRYP_Suspend()
983 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in HAL_CRYP_Suspend()
985 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Suspend()
986 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Suspend()
989 CRYP_Read_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Suspend()
993 hcryp->CR_saved = hcryp->Instance->CR; in HAL_CRYP_Suspend()
1008 HAL_StatusTypeDef HAL_CRYP_Resume(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Resume() argument
1011 if (hcryp == NULL) in HAL_CRYP_Resume()
1016 if (hcryp->State_saved != HAL_CRYP_STATE_SUSPENDED) in HAL_CRYP_Resume()
1025 hcryp->Init = hcryp->Init_saved; in HAL_CRYP_Resume()
1026 hcryp->State = hcryp->State_saved; in HAL_CRYP_Resume()
1029 if ((hcryp->Init_saved.Algorithm == CRYP_AES_ECB) || \ in HAL_CRYP_Resume()
1030 (hcryp->Init_saved.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1031 (hcryp->Init_saved.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1034 hcryp->AutoKeyDerivation = hcryp->AutoKeyDerivation_saved; in HAL_CRYP_Resume()
1036 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_Resume()
1037 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_Resume()
1039 hcryp->Init.pInitVect = hcryp->IV_saved; in HAL_CRYP_Resume()
1041 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1042 (void) HAL_CRYP_Init(hcryp); in HAL_CRYP_Resume()
1047 hcryp->Phase = hcryp->Phase_saved; in HAL_CRYP_Resume()
1048 hcryp->CrypHeaderCount = hcryp->CrypHeaderCount_saved; in HAL_CRYP_Resume()
1049 hcryp->SizesSum = hcryp->SizesSum_saved; in HAL_CRYP_Resume()
1052 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_Resume()
1054 CRYP_Write_SuspendRegisters(hcryp, hcryp->SUSPxR_saved); in HAL_CRYP_Resume()
1056 hcryp->Instance->CR = hcryp->CR_saved; in HAL_CRYP_Resume()
1057 CRYP_Write_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize); in HAL_CRYP_Resume()
1058 CRYP_Write_IVRegisters(hcryp, hcryp->IV_saved); in HAL_CRYP_Resume()
1062 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Resume()
1067 hcryp->ResumingFlag = 1U; in HAL_CRYP_Resume()
1068 if (READ_BIT(hcryp->CR_saved, AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in HAL_CRYP_Resume()
1070 …if (HAL_CRYP_Encrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, hcryp->pCrypOutBuff… in HAL_CRYP_Resume()
1077 …if (HAL_CRYP_Decrypt_IT(hcryp, hcryp->pCrypInBuffPtr_saved, hcryp->Size_saved, hcryp->pCrypOutBuff… in HAL_CRYP_Resume()
1094 HAL_StatusTypeDef HAL_CRYP_SaveContext(CRYP_HandleTypeDef *hcryp, CRYP_ContextTypeDef *pcont) in HAL_CRYP_SaveContext() argument
1097 if ((hcryp == NULL) || (pcont == NULL)) in HAL_CRYP_SaveContext()
1102 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_SaveContext()
1105 pcont->DataType = (uint32_t)(hcryp->Init.DataType); in HAL_CRYP_SaveContext()
1106 pcont->KeySize = (uint32_t)(hcryp->Init.KeySize); in HAL_CRYP_SaveContext()
1107 pcont->pKey = hcryp->Init.pKey; in HAL_CRYP_SaveContext()
1108 pcont->pInitVect = hcryp->Init.pInitVect; in HAL_CRYP_SaveContext()
1109 pcont->Algorithm = (uint32_t)(hcryp->Init.Algorithm); in HAL_CRYP_SaveContext()
1110 pcont->DataWidthUnit = (uint32_t)(hcryp->Init.DataWidthUnit); in HAL_CRYP_SaveContext()
1111 pcont->KeyIVConfigSkip = (uint32_t)(hcryp->Init.KeyIVConfigSkip); in HAL_CRYP_SaveContext()
1112 pcont->Phase = (uint32_t)(hcryp->Phase); in HAL_CRYP_SaveContext()
1113 pcont->KeyIVConfig = (uint32_t)(hcryp->KeyIVConfig); in HAL_CRYP_SaveContext()
1116 pcont->CR_Reg = READ_REG(hcryp->Instance->CR); in HAL_CRYP_SaveContext()
1118 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_SaveContext()
1119 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_SaveContext()
1122 pcont->IVR0_Reg = READ_REG(hcryp->Instance->IVR0); in HAL_CRYP_SaveContext()
1123 pcont->IVR1_Reg = READ_REG(hcryp->Instance->IVR1); in HAL_CRYP_SaveContext()
1124 pcont->IVR2_Reg = READ_REG(hcryp->Instance->IVR2); in HAL_CRYP_SaveContext()
1125 pcont->IVR3_Reg = READ_REG(hcryp->Instance->IVR3); in HAL_CRYP_SaveContext()
1129 hcryp->KeyIVConfig = 0; in HAL_CRYP_SaveContext()
1136 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_SaveContext()
1149 HAL_StatusTypeDef HAL_CRYP_RestoreContext(CRYP_HandleTypeDef *hcryp, CRYP_ContextTypeDef *pcont) in HAL_CRYP_RestoreContext() argument
1152 if ((hcryp == NULL) || (pcont == NULL)) in HAL_CRYP_RestoreContext()
1157 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_RestoreContext()
1160 hcryp->Init.DataType = pcont->DataType; in HAL_CRYP_RestoreContext()
1161 hcryp->Init.KeySize = pcont->KeySize; in HAL_CRYP_RestoreContext()
1162 hcryp->Init.pKey = pcont->pKey; in HAL_CRYP_RestoreContext()
1163 hcryp->Init.pInitVect = pcont->pInitVect; in HAL_CRYP_RestoreContext()
1164 hcryp->Init.Algorithm = pcont->Algorithm; in HAL_CRYP_RestoreContext()
1165 hcryp->Init.DataWidthUnit = pcont->DataWidthUnit; in HAL_CRYP_RestoreContext()
1166 hcryp->Init.KeyIVConfigSkip = pcont->KeyIVConfigSkip; in HAL_CRYP_RestoreContext()
1167 hcryp->Phase = pcont->Phase; in HAL_CRYP_RestoreContext()
1168 hcryp->KeyIVConfig = pcont->KeyIVConfig; in HAL_CRYP_RestoreContext()
1171 WRITE_REG(hcryp->Instance->CR, (uint32_t)(pcont->CR_Reg)); in HAL_CRYP_RestoreContext()
1173 if ((hcryp->Init.Algorithm == CRYP_AES_CBC) || \ in HAL_CRYP_RestoreContext()
1174 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_RestoreContext()
1177 WRITE_REG(hcryp->Instance->IVR0, (uint32_t)(pcont->IVR0_Reg)); in HAL_CRYP_RestoreContext()
1178 WRITE_REG(hcryp->Instance->IVR1, (uint32_t)(pcont->IVR1_Reg)); in HAL_CRYP_RestoreContext()
1179 WRITE_REG(hcryp->Instance->IVR2, (uint32_t)(pcont->IVR2_Reg)); in HAL_CRYP_RestoreContext()
1180 WRITE_REG(hcryp->Instance->IVR3, (uint32_t)(pcont->IVR3_Reg)); in HAL_CRYP_RestoreContext()
1187 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_RestoreContext()
1310 HAL_StatusTypeDef HAL_CRYP_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Encrypt() argument
1315 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1318 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt()
1321 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt()
1324 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt()
1327 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt()
1330 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt()
1331 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt()
1332 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt()
1333 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt()
1336 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt()
1338 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt()
1342 hcryp->Size = Size; in HAL_CRYP_Encrypt()
1346 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt()
1349 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1359 status = CRYP_AES_Encrypt(hcryp, Timeout); in HAL_CRYP_Encrypt()
1365 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Encrypt()
1371 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1375 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt()
1383 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1386 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1392 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt()
1410 HAL_StatusTypeDef HAL_CRYP_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Decrypt() argument
1415 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1418 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt()
1421 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt()
1424 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt()
1427 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt()
1430 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt()
1431 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt()
1432 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt()
1433 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt()
1436 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt()
1438 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt()
1442 hcryp->Size = Size; in HAL_CRYP_Decrypt()
1446 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt()
1449 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1459 status = CRYP_AES_Decrypt(hcryp, Timeout); in HAL_CRYP_Decrypt()
1465 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Decrypt()
1471 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1475 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt()
1483 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1486 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1492 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt()
1509 HAL_StatusTypeDef HAL_CRYP_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Encrypt_IT() argument
1514 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1517 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_IT()
1520 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_IT()
1523 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_IT()
1526 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1530 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Encrypt_IT()
1532 hcryp->ResumingFlag = 0U; in HAL_CRYP_Encrypt_IT()
1533 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Encrypt_IT()
1535 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Encrypt_IT()
1536 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Encrypt_IT()
1540 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1541 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1547 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1548 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1551 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_IT()
1552 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_IT()
1555 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_IT()
1557 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_IT()
1561 hcryp->Size = Size; in HAL_CRYP_Encrypt_IT()
1565 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_IT()
1568 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1578 status = CRYP_AES_Encrypt_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1584 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Encrypt_IT()
1590 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1594 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_IT()
1602 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_IT()
1619 HAL_StatusTypeDef HAL_CRYP_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Decrypt_IT() argument
1624 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1627 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_IT()
1630 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_IT()
1633 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_IT()
1636 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1640 if (hcryp->ResumingFlag == 1U) in HAL_CRYP_Decrypt_IT()
1642 hcryp->ResumingFlag = 0U; in HAL_CRYP_Decrypt_IT()
1643 if (hcryp->Phase != CRYP_PHASE_HEADER_SUSPENDED) in HAL_CRYP_Decrypt_IT()
1645 hcryp->CrypInCount = (uint16_t) hcryp->CrypInCount_saved; in HAL_CRYP_Decrypt_IT()
1646 hcryp->CrypOutCount = (uint16_t) hcryp->CrypOutCount_saved; in HAL_CRYP_Decrypt_IT()
1650 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1651 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1657 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1658 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1660 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_IT()
1661 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_IT()
1664 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_IT()
1666 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_IT()
1670 hcryp->Size = Size; in HAL_CRYP_Decrypt_IT()
1674 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_IT()
1677 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1687 status = CRYP_AES_Decrypt_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1693 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Decrypt_IT()
1699 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1703 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_IT()
1711 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_IT()
1728 HAL_StatusTypeDef HAL_CRYP_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Encrypt_DMA() argument
1734 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1737 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Encrypt_DMA()
1740 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_DMA()
1743 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_DMA()
1746 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1749 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_DMA()
1750 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_DMA()
1751 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_DMA()
1752 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_DMA()
1755 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_DMA()
1757 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_DMA()
1761 hcryp->Size = Size; in HAL_CRYP_Encrypt_DMA()
1765 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_DMA()
1768 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1777 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in HAL_CRYP_Encrypt_DMA()
1779 if (hcryp->KeyIVConfig == 1U) in HAL_CRYP_Encrypt_DMA()
1790 hcryp->KeyIVConfig = 1U; in HAL_CRYP_Encrypt_DMA()
1797 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1800 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1802 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_DMA()
1803 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in HAL_CRYP_Encrypt_DMA()
1804 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in HAL_CRYP_Encrypt_DMA()
1805 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in HAL_CRYP_Encrypt_DMA()
1810 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1813 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), (uint32_t)(hcryp->… in HAL_CRYP_Encrypt_DMA()
1820 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Encrypt_DMA()
1826 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1830 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_DMA()
1838 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_DMA()
1855 HAL_StatusTypeDef HAL_CRYP_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Decrypt_DMA() argument
1860 uint32_t algo_assert = (hcryp->Instance->CR) & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1863 assert_param(IS_CRYP_BUFFERSIZE(algo_assert, hcryp->Init.DataWidthUnit, Size)); in HAL_CRYP_Decrypt_DMA()
1866 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_DMA()
1870 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_DMA()
1873 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1876 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_DMA()
1877 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_DMA()
1878 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_DMA()
1879 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_DMA()
1882 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_DMA()
1884 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_DMA()
1888 hcryp->Size = Size; in HAL_CRYP_Decrypt_DMA()
1892 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_DMA()
1895 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1905 status = CRYP_AES_Decrypt_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1911 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Decrypt_DMA()
1917 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1921 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_DMA()
1929 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_DMA()
1964 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_IRQHandler() argument
1968 if (__HAL_CRYP_GET_IT_SOURCE(hcryp,CRYP_IT_ERRIE) != RESET) in HAL_CRYP_IRQHandler()
1971 if (__HAL_CRYP_GET_FLAG(hcryp,CRYP_IT_WRERR) != RESET) in HAL_CRYP_IRQHandler()
1973 hcryp->ErrorCode |= HAL_CRYP_ERROR_WRITE; in HAL_CRYP_IRQHandler()
1976 if (__HAL_CRYP_GET_FLAG(hcryp,CRYP_IT_RDERR) != RESET) in HAL_CRYP_IRQHandler()
1978 hcryp->ErrorCode |= HAL_CRYP_ERROR_READ; in HAL_CRYP_IRQHandler()
1982 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_IT_CCF) != RESET) in HAL_CRYP_IRQHandler()
1984 if(__HAL_CRYP_GET_IT_SOURCE(hcryp, CRYP_IT_CCFIE) != RESET) in HAL_CRYP_IRQHandler()
1987 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in HAL_CRYP_IRQHandler()
1989 if ((hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) || (hcryp->Init.Algorithm == CRYP_AES_CCM)) in HAL_CRYP_IRQHandler()
1993 if ((hcryp->Instance->CR & CRYP_PHASE_HEADER) == CRYP_PHASE_HEADER) in HAL_CRYP_IRQHandler()
1995 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
1999 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2004 CRYP_AES_IT(hcryp); in HAL_CRYP_IRQHandler()
2016 uint32_t HAL_CRYP_GetError(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetError() argument
2018 return hcryp->ErrorCode; in HAL_CRYP_GetError()
2027 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetState() argument
2029 return hcryp->State; in HAL_CRYP_GetState()
2038 __weak void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_InCpltCallback() argument
2041 UNUSED(hcryp); in HAL_CRYP_InCpltCallback()
2054 __weak void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_OutCpltCallback() argument
2057 UNUSED(hcryp); in HAL_CRYP_OutCpltCallback()
2070 __weak void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ErrorCallback() argument
2073 UNUSED(hcryp); in HAL_CRYP_ErrorCallback()
2098 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Encrypt() argument
2104 …if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE)|| (hcryp->Init.KeyIVConfigSkip == CRYP_… in CRYP_AES_Encrypt()
2106 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt()
2117 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt()
2124 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2126 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2129 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt()
2130 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Encrypt()
2131 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Encrypt()
2132 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Encrypt()
2138 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Encrypt()
2141 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2145 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt()
2148 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt()
2150 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2151 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2152 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Encrypt()
2155 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Encrypt()
2156 incount = hcryp->CrypInCount; in CRYP_AES_Encrypt()
2157 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2161 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2164 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2176 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Encrypt_IT() argument
2180 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt_IT()
2182 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt_IT()
2193 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt_IT()
2200 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2202 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2205 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt_IT()
2206 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Encrypt_IT()
2207 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Encrypt_IT()
2208 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Encrypt_IT()
2213 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt_IT()
2215 if (hcryp->Size != 0U) in CRYP_AES_Encrypt_IT()
2219 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_Encrypt_IT()
2222 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt_IT()
2225 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2226 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2227 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2228 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2229 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2230 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2231 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Encrypt_IT()
2232 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2237 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2240 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2253 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Decrypt() argument
2259 …if ((hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) || (hcryp->Init.KeyIVConfigSkip == CRYP… in CRYP_AES_Decrypt()
2261 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt()
2272 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt()
2279 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2281 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 Key preparation*/ in CRYP_AES_Decrypt()
2284 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2287 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2290 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2293 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2296 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2299 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt()
2300 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2303 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt()
2307 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt()
2310 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2315 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2318 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt()
2324 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2328 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt()
2331 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt()
2332 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Decrypt()
2333 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Decrypt()
2334 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Decrypt()
2340 if (hcryp->Init.KeyIVConfigSkip == CRYP_IVCONFIG_ONCE) in CRYP_AES_Decrypt()
2343 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2345 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 Key preparation*/ in CRYP_AES_Decrypt()
2348 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2351 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2354 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2357 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2360 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2363 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt()
2364 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2367 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt()
2371 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt()
2374 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2379 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2382 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt()
2388 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2394 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt()
2397 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2399 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2400 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2401 while ((incount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Decrypt()
2404 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Decrypt()
2405 incount = hcryp->CrypInCount; in CRYP_AES_Decrypt()
2406 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2410 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2413 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2424 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_IT() argument
2429 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_IT()
2431 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_IT()
2442 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_IT()
2449 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2451 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 Key preparation*/ in CRYP_AES_Decrypt_IT()
2454 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2457 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2460 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2470 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2473 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2474 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2477 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2481 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_IT()
2484 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt_IT()
2487 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2492 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2495 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt_IT()
2501 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2505 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_IT()
2508 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_IT()
2509 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Decrypt_IT()
2510 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Decrypt_IT()
2511 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Decrypt_IT()
2516 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_IT()
2517 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_IT()
2520 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_Decrypt_IT()
2523 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2526 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2527 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2528 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2529 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2530 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2531 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2532 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_Decrypt_IT()
2533 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2538 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2541 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2553 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_DMA() argument
2558 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_DMA()
2560 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_DMA()
2571 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_DMA()
2578 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2580 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 key preparation*/ in CRYP_AES_Decrypt_DMA()
2583 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
2586 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2589 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2599 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2602 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
2603 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2606 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2610 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_DMA()
2613 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt_DMA()
2616 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
2621 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2624 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt_DMA()
2630 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2633 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_DMA()
2636 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_DMA()
2637 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Decrypt_DMA()
2638 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Decrypt_DMA()
2639 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Decrypt_DMA()
2644 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_DMA()
2646 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_DMA()
2649 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), (uint32_t)(hcryp->… in CRYP_AES_Decrypt_DMA()
2654 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2657 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2672 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAInCplt() local
2681 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_DMAInCplt()
2683 if (hcryp->Phase == CRYP_PHASE_HEADER_DMA_FEED) in CRYP_DMAInCplt()
2686 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
2689 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_DMAInCplt()
2691 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_DMAInCplt()
2693 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_DMAInCplt()
2697 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_DMAInCplt()
2703 hcryp->CrypHeaderCount = (uint16_t)((headersize_in_bytes / 16U) * 4U); in CRYP_DMAInCplt()
2706 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
2707 hcryp->CrypHeaderCount++ ; in CRYP_DMAInCplt()
2715 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
2722 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_DMAInCplt()
2723 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_DMAInCplt()
2724 hcryp->Instance->DINR = tmp; in CRYP_DMAInCplt()
2729 hcryp->Instance->DINR = 0x0U; in CRYP_DMAInCplt()
2735 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAInCplt()
2739 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_DMAInCplt()
2742 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_DMAInCplt()
2745 (void)CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp); in CRYP_DMAInCplt()
2753 algo = hcryp->Instance->CR & AES_CR_CHMOD; in CRYP_DMAInCplt()
2760 (((hcryp->Size) % 16U) != 0U))) in CRYP_DMAInCplt()
2765 hcryp->InCpltCallback(hcryp); in CRYP_DMAInCplt()
2768 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAInCplt()
2787 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAOutCplt() local
2790 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAOUTEN); in CRYP_DMAOutCplt()
2793 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_DMAOutCplt()
2796 if (((hcryp->Size) % 16U) != 0U) in CRYP_DMAOutCplt()
2799 hcryp->CrypInCount = (hcryp->Size / 16U) * 4U; in CRYP_DMAOutCplt()
2800 hcryp->CrypOutCount = hcryp->CrypInCount; in CRYP_DMAOutCplt()
2803 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_DMAOutCplt()
2805 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_DMAOutCplt()
2806 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_DMAOutCplt()
2807 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_DMAOutCplt()
2810 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_DMAOutCplt()
2826 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_DMAOutCplt()
2827 hcryp->CrypInCount++; in CRYP_DMAOutCplt()
2832 hcryp->Instance->DINR = 0x0U; in CRYP_DMAOutCplt()
2838 hcryp->InCpltCallback(hcryp); in CRYP_DMAOutCplt()
2841 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAOutCplt()
2845 CRYP_ClearCCFlagWhenHigh(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE); in CRYP_DMAOutCplt()
2851 temp[count] = hcryp->Instance->DOUTR; in CRYP_DMAOutCplt()
2855 while((hcryp->CrypOutCount < ((hcryp->Size + 3U)/4U)) && (count<4U)) in CRYP_DMAOutCplt()
2857 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[count]; in CRYP_DMAOutCplt()
2858 hcryp->CrypOutCount++; in CRYP_DMAOutCplt()
2863 …if (((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) && ((hcryp->Init.Algorithm … in CRYP_DMAOutCplt()
2866 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
2870 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAOutCplt()
2873 __HAL_UNLOCK(hcryp); in CRYP_DMAOutCplt()
2878 hcryp->OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
2881 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
2892 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAError() local
2895 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAError()
2898 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_DMAError()
2901 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_DMAError()
2906 hcryp->ErrorCallback(hcryp); in CRYP_DMAError()
2909 HAL_CRYP_ErrorCallback(hcryp); in CRYP_DMAError()
2922 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_… in CRYP_SetDMAConfig() argument
2925 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetDMAConfig()
2928 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
2931 hcryp->hdmaout->XferCpltCallback = CRYP_DMAOutCplt; in CRYP_SetDMAConfig()
2934 hcryp->hdmaout->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
2936 if ((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_SetDMAConfig()
2939 __HAL_CRYP_ENABLE(hcryp); in CRYP_SetDMAConfig()
2943 if (HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size) != HAL_OK) in CRYP_SetDMAConfig()
2946 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
2951 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2954 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2958 …if (HAL_DMA_Start_IT(hcryp->hdmaout, (uint32_t)&hcryp->Instance->DOUTR, outputaddr, Size) != HAL_O… in CRYP_SetDMAConfig()
2961 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
2966 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2969 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2973 SET_BIT(hcryp->Instance->CR, (AES_CR_DMAINEN | AES_CR_DMAOUTEN)); in CRYP_SetDMAConfig()
2984 static HAL_StatusTypeDef CRYP_SetHeaderDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uin… in CRYP_SetHeaderDMAConfig() argument
2987 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetHeaderDMAConfig()
2990 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetHeaderDMAConfig()
2993 hcryp->Phase = CRYP_PHASE_HEADER_DMA_FEED; in CRYP_SetHeaderDMAConfig()
2995 if (HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size) != HAL_OK) in CRYP_SetHeaderDMAConfig()
2998 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetHeaderDMAConfig()
2999 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_SetHeaderDMAConfig()
3002 __HAL_UNLOCK(hcryp); in CRYP_SetHeaderDMAConfig()
3008 SET_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_SetHeaderDMAConfig()
3020 static void CRYP_AES_ProcessData(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_ProcessData() argument
3027 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3028 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3029 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3030 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3031 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3032 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3033 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3034 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3037 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_ProcessData()
3040 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_ProcessData()
3043 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_ProcessData()
3044 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_ProcessData()
3047 __HAL_UNLOCK(hcryp); in CRYP_AES_ProcessData()
3050 hcryp->ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3053 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3058 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_ProcessData()
3063 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_ProcessData()
3066 while((hcryp->CrypOutCount < ((hcryp->Size + 3U)/4U)) && (i<4U)) in CRYP_AES_ProcessData()
3068 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_ProcessData()
3069 hcryp->CrypOutCount++; in CRYP_AES_ProcessData()
3082 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_IT() argument
3087 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_AES_IT()
3092 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_IT()
3095 while((hcryp->CrypOutCount < ((hcryp->Size + 3U)/4U)) && (i<4U)) in CRYP_AES_IT()
3097 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_IT()
3098 hcryp->CrypOutCount++; in CRYP_AES_IT()
3101 if (hcryp->CrypOutCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3104 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_IT()
3107 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_IT()
3110 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_IT()
3113 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3118 hcryp->OutCpltCallback(hcryp); in CRYP_AES_IT()
3121 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_AES_IT()
3129 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_AES_IT()
3132 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_IT()
3135 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_AES_IT()
3137 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE); in CRYP_AES_IT()
3139 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_AES_IT()
3141 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_AES_IT()
3144 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3150 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3151 hcryp->CrypInCount++; in CRYP_AES_IT()
3152 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3153 hcryp->CrypInCount++; in CRYP_AES_IT()
3154 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3155 hcryp->CrypInCount++; in CRYP_AES_IT()
3156 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3157 hcryp->CrypInCount++; in CRYP_AES_IT()
3159 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3164 hcryp->InCpltCallback(hcryp); in CRYP_AES_IT()
3167 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AES_IT()
3176 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_AES_IT()
3179 hcryp->ErrorCallback(hcryp); in CRYP_AES_IT()
3182 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_IT()
3196 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize) in CRYP_SetKey() argument
3198 if (hcryp->Init.pKey != NULL) in CRYP_SetKey()
3203 hcryp->Instance->KEYR7 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3204 hcryp->Instance->KEYR6 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3205 hcryp->Instance->KEYR5 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3206 hcryp->Instance->KEYR4 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3207 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_SetKey()
3208 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_SetKey()
3209 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_SetKey()
3210 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_SetKey()
3213 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3214 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_SetKey()
3215 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_SetKey()
3216 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_SetKey()
3232 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESGCM_Process() argument
3235 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U) ; in CRYP_AESGCM_Process()
3244 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process()
3246 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process()
3251 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process()
3258 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process()
3259 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process()
3264 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process()
3271 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process()
3275 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process()
3278 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3281 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process()
3282 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AESGCM_Process()
3283 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AESGCM_Process()
3284 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AESGCM_Process()
3287 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3290 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3293 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3294 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3297 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3301 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process()
3305 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3313 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process()
3316 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process()
3319 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process()
3323 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3333 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3334 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3338 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESGCM_Process()
3346 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3349 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3350 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3353 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3357 incount = hcryp->CrypInCount; in CRYP_AESGCM_Process()
3358 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3361 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3364 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process()
3367 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process()
3370 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process()
3385 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process()
3386 hcryp->CrypInCount++; in CRYP_AESGCM_Process()
3391 hcryp->Instance->DINR = 0U; in CRYP_AESGCM_Process()
3395 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3397 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3398 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3402 hcryp->ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3405 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3410 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process()
3416 temp[index] = hcryp->Instance->DOUTR; in CRYP_AESGCM_Process()
3420 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp[index]; in CRYP_AESGCM_Process()
3421 hcryp->CrypOutCount++; in CRYP_AESGCM_Process()
3435 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_IT() argument
3450 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESGCM_Process_IT()
3452 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESGCM_Process_IT()
3459 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESGCM_Process_IT()
3461 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESGCM_Process_IT()
3465 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESGCM_Process_IT()
3468 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_IT()
3470 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_IT()
3475 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_IT()
3482 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_IT()
3483 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_IT()
3488 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_IT()
3495 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_IT()
3499 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_IT()
3502 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
3505 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_IT()
3506 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AESGCM_Process_IT()
3507 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AESGCM_Process_IT()
3508 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AESGCM_Process_IT()
3511 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3521 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
3524 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
3525 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3528 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3532 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESGCM_Process_IT()
3535 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process_IT()
3540 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESGCM_Process_IT()
3543 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3546 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3548 if (hcryp->Init.HeaderSize == 0U) /*header phase is skipped*/ in CRYP_AESGCM_Process_IT()
3551 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_IT()
3554 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_IT()
3557 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
3560 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
3563 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3566 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3569 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3571 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
3573 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3574 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3575 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3576 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3577 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3578 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3579 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3580 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3581 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
3586 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3589 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3602 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
3604 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
3607 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
3623 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3624 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3629 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3635 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3638 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3649 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3650 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
3658 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3660 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3666 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3667 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESGCM_Process_IT()
3668 hcryp->Instance->DINR = tmp; in CRYP_AESGCM_Process_IT()
3670 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
3674 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3676 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3684 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3685 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3686 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3687 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3688 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3689 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3690 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
3691 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
3701 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3704 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESGCM_Process_IT()
3707 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
3710 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
3713 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3716 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3718 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
3720 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3721 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3722 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3723 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3724 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3725 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3726 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3727 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3728 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESGCM_Process_IT()
3733 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3736 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3749 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_AESGCM_Process_IT()
3751 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_IT()
3754 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESGCM_Process_IT()
3770 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
3771 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
3776 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
3782 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3785 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
3801 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_DMA() argument
3806 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_DMA()
3808 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_DMA()
3813 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_DMA()
3820 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_DMA()
3821 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_DMA()
3826 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_DMA()
3833 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_DMA()
3837 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_DMA()
3840 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
3843 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_DMA()
3844 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AESGCM_Process_DMA()
3845 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AESGCM_Process_DMA()
3846 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AESGCM_Process_DMA()
3849 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3859 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3862 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
3863 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
3866 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
3870 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESGCM_Process_DMA()
3873 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process_DMA()
3877 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
3886 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
3905 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESCCM_Process() argument
3908 uint32_t wordsize = ((uint32_t)hcryp->Size / 4U) ; in CRYP_AESCCM_Process()
3917 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process()
3919 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process()
3924 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process()
3931 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process()
3932 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process()
3937 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process()
3943 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process()
3947 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process()
3950 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
3953 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
3954 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process()
3955 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process()
3956 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process()
3959 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
3962 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3965 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3966 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3969 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3973 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
3978 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3986 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process()
3989 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process()
3992 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process()
3996 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4005 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
4006 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4010 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESCCM_Process()
4018 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4021 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4022 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4025 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4029 incount = hcryp->CrypInCount; in CRYP_AESCCM_Process()
4030 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4033 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4036 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_AESCCM_Process()
4038 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_AESCCM_Process()
4041 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20); in CRYP_AESCCM_Process()
4057 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process()
4058 hcryp->CrypInCount++; in CRYP_AESCCM_Process()
4064 hcryp->Instance->DINR = 0U; in CRYP_AESCCM_Process()
4068 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4071 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4072 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4075 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4079 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
4084 temp[loopcounter] = hcryp->Instance->DOUTR; in CRYP_AESCCM_Process()
4088 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[loopcounter]; in CRYP_AESCCM_Process()
4089 hcryp->CrypOutCount++; in CRYP_AESCCM_Process()
4104 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_IT() argument
4119 …if ((hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) || (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED… in CRYP_AESCCM_Process_IT()
4121 CRYP_PhaseProcessingResume(hcryp); in CRYP_AESCCM_Process_IT()
4126 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_IT()
4128 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_IT()
4133 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_IT()
4140 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_IT()
4141 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_IT()
4146 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_IT()
4153 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_IT()
4157 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_IT()
4160 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
4163 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_IT()
4164 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_IT()
4165 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_IT()
4166 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_IT()
4169 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4179 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_IT()
4182 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_IT()
4183 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4186 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4190 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESCCM_Process_IT()
4193 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process_IT()
4198 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESCCM_Process_IT()
4201 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESCCM_Process_IT()
4204 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
4206 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_AESCCM_Process_IT()
4208 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_AESCCM_Process_IT()
4212 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_AESCCM_Process_IT()
4218 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process_IT()
4220 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process_IT()
4222 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_AESCCM_Process_IT()
4224 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_AESCCM_Process_IT()
4227 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4230 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4233 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESCCM_Process_IT()
4236 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4239 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4241 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
4243 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4244 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4245 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4246 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4247 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4248 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4249 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4250 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4252 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
4257 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4260 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4267 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
4269 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
4270 … if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
4271 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
4274 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
4290 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4291 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4296 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4302 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4305 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4315 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4316 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process_IT()
4324 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4331 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4332 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_AESCCM_Process_IT()
4333 hcryp->Instance->DINR = tmp; in CRYP_AESCCM_Process_IT()
4334 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4339 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4346 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4349 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4356 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4357 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4358 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4359 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4360 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4361 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4362 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process_IT()
4363 hcryp->CrypHeaderCount++; in CRYP_AESCCM_Process_IT()
4371 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_IT()
4374 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESCCM_Process_IT()
4377 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
4380 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
4382 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_IT()
4384 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4385 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4386 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4387 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4388 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4389 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4390 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4391 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4393 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_AESCCM_Process_IT()
4398 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4401 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4408 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESCCM_Process_IT()
4410 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_AESCCM_Process_IT()
4411 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_AESCCM_Process_IT()
4412 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_AESCCM_Process_IT()
4415 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_AESCCM_Process_IT()
4431 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_IT()
4432 hcryp->CrypInCount++; in CRYP_AESCCM_Process_IT()
4437 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process_IT()
4443 hcryp->InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4446 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESCCM_Process_IT()
4462 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_DMA() argument
4467 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_DMA()
4469 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_DMA()
4474 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_DMA()
4481 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_DMA()
4482 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_DMA()
4487 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_DMA()
4494 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_DMA()
4499 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_DMA()
4502 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
4505 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_DMA()
4506 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.B0 + 1U); in CRYP_AESCCM_Process_DMA()
4507 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.B0 + 2U); in CRYP_AESCCM_Process_DMA()
4508 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.B0 + 3U); in CRYP_AESCCM_Process_DMA()
4511 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4521 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4524 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
4525 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
4528 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
4532 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESCCM_Process_DMA()
4535 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process_DMA()
4540 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
4549 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
4565 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_IT() argument
4581 temp[i] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_IT()
4584 while((hcryp->CrypOutCount < ((hcryp->Size + 3U)/4U)) && (i<4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4586 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_GCMCCM_SetPayloadPhase_IT()
4587 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4590 incount = hcryp->CrypInCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
4591 outcount = hcryp->CrypOutCount; in CRYP_GCMCCM_SetPayloadPhase_IT()
4592 if ((outcount >= (hcryp->Size / 4U)) && ((incount * 4U) >= hcryp->Size)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4596 if (!((hcryp->Init.Algorithm == CRYP_AES_CCM) && (hcryp->KeyIVConfig == 1U))) in CRYP_GCMCCM_SetPayloadPhase_IT()
4599 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
4603 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_IT()
4606 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4611 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4614 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4618 else if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4624 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetPayloadPhase_IT()
4627 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetPayloadPhase_IT()
4630 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetPayloadPhase_IT()
4632 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE); in CRYP_GCMCCM_SetPayloadPhase_IT()
4634 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
4636 hcryp->Phase = CRYP_PHASE_PAYLOAD_SUSPENDED; in CRYP_GCMCCM_SetPayloadPhase_IT()
4639 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4645 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4646 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4647 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4648 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4649 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4650 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4651 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4652 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4653 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4658 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4661 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4669 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetPayloadPhase_IT()
4671 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetPayloadPhase_IT()
4672 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetPayloadPhase_IT()
4673 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetPayloadPhase_IT()
4676 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_IT()
4692 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4693 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4698 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetPayloadPhase_IT()
4704 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4707 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4719 static HAL_StatusTypeDef CRYP_GCMCCM_SetPayloadPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_DMA() argument
4721 uint16_t wordsize = hcryp->Size / 4U ; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4730 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
4733 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4736 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4738 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetPayloadPhase_DMA()
4744 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), wordsize, (uint32_t)(hcryp->pCrypOutBu… in CRYP_GCMCCM_SetPayloadPhase_DMA()
4749 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4752 reg = hcryp->Instance->CR & (AES_CR_CHMOD|AES_CR_MODE); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4757 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4774 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4775 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4780 hcryp->Instance->DINR = 0U; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4786 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4789 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4799 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4802 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4803 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4806 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4810 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4813 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4819 temp[index] = hcryp->Instance->DOUTR; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4823 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[index]; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4824 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4828 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_DMA()
4831 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4836 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4839 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_DMA()
4853 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_GCMCCM_SetHeaderPhase() argument
4863 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase()
4865 size_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase()
4869 size_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase()
4875 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
4878 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4887 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4888 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4889 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4890 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4891 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4892 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4893 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4894 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4896 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4899 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4902 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4903 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4906 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4910 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase()
4919 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4920 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4921 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4922 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4923 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4924 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4925 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4926 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4928 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4931 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4934 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4935 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4938 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4942 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase()
4947 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4948 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4956 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
4963 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4964 tmp &= mask[(hcryp->Init.DataType * 2U) + (size_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase()
4965 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase()
4970 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
4975 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4978 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4981 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4982 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4985 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4989 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase()
4995 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType); in CRYP_GCMCCM_SetHeaderPhase()
4998 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
5001 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
5013 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_DMA() argument
5023 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5025 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5029 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5033 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5036 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5039 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5047 …if (CRYP_SetHeaderDMAConfig(hcryp, (uint32_t)(hcryp->Init.Header), (uint16_t)((headersize_in_bytes… in CRYP_GCMCCM_SetHeaderPhase_DMA()
5060 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5061 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5069 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5076 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5077 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5078 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5083 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5088 if (CRYP_WaitOnCCFlag(hcryp, CRYP_TIMEOUT_GCMCCMHEADERPHASE) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5091 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5094 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5095 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
5098 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5102 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5109 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5112 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_DMA()
5115 if (CRYP_GCMCCM_SetPayloadPhase_DMA(hcryp) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase_DMA()
5131 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_IT() argument
5143 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase_IT()
5145 headersize_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5149 headersize_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase_IT()
5155 if (headersize_in_bytes <= ((uint32_t)(hcryp->CrypHeaderCount) * 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5158 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_IT()
5160 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_IT()
5162 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5164 if (hcryp->Init.Algorithm == CRYP_AES_CCM) in CRYP_GCMCCM_SetHeaderPhase_IT()
5167 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5170 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5173 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5176 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_IT()
5179 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5181 else if (hcryp->Size >= 16U) in CRYP_GCMCCM_SetHeaderPhase_IT()
5183 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5184 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5185 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5186 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5187 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5188 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5189 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5190 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5192 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5197 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5200 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5207 npblb = 16U - ((uint32_t)hcryp->Size); in CRYP_GCMCCM_SetHeaderPhase_IT()
5208 mode = hcryp->Instance->CR & AES_CR_MODE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5209 if (((mode == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)) || in CRYP_GCMCCM_SetHeaderPhase_IT()
5210 ((mode == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetHeaderPhase_IT()
5213 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, npblb << 20U); in CRYP_GCMCCM_SetHeaderPhase_IT()
5229 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5230 hcryp->CrypInCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5235 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5241 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5244 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5248 else if ((((headersize_in_bytes / 4U) - (hcryp->CrypHeaderCount)) >= 4U)) in CRYP_GCMCCM_SetHeaderPhase_IT()
5254 if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND) in CRYP_GCMCCM_SetHeaderPhase_IT()
5257 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_GCMCCM_SetHeaderPhase_IT()
5260 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE; in CRYP_GCMCCM_SetHeaderPhase_IT()
5262 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE|CRYP_IT_ERRIE); in CRYP_GCMCCM_SetHeaderPhase_IT()
5264 hcryp->State = HAL_CRYP_STATE_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5266 hcryp->Phase = CRYP_PHASE_HEADER_SUSPENDED; in CRYP_GCMCCM_SetHeaderPhase_IT()
5269 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
5275 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5276 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5277 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5278 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5279 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5280 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5281 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5282 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5290 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5291 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
5299 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5301 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5307 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
5308 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)]; in CRYP_GCMCCM_SetHeaderPhase_IT()
5309 hcryp->Instance->DINR = tmp; in CRYP_GCMCCM_SetHeaderPhase_IT()
5311 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5315 hcryp->Instance->DINR = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
5317 hcryp->CrypHeaderCount++; in CRYP_GCMCCM_SetHeaderPhase_IT()
5331 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_WaitOnCCFlag() argument
5338 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)) in CRYP_WaitOnCCFlag()
5360 static void CRYP_ClearCCFlagWhenHigh(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_ClearCCFlagWhenHigh() argument
5370 __HAL_CRYP_DISABLE(hcryp); in CRYP_ClearCCFlagWhenHigh()
5373 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_ClearCCFlagWhenHigh()
5376 __HAL_UNLOCK(hcryp); in CRYP_ClearCCFlagWhenHigh()
5377 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_ClearCCFlagWhenHigh()
5381 hcryp->ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
5384 HAL_CRYP_ErrorCallback(hcryp); in CRYP_ClearCCFlagWhenHigh()
5388 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_ClearCCFlagWhenHigh()
5391 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_ClearCCFlagWhenHigh()
5404 static void CRYP_Read_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Output) in CRYP_Read_IVRegisters() argument
5408 *(uint32_t*)(outputaddr) = hcryp->Instance->IVR3; in CRYP_Read_IVRegisters()
5410 *(uint32_t*)(outputaddr) = hcryp->Instance->IVR2; in CRYP_Read_IVRegisters()
5412 *(uint32_t*)(outputaddr) = hcryp->Instance->IVR1; in CRYP_Read_IVRegisters()
5414 *(uint32_t*)(outputaddr) = hcryp->Instance->IVR0; in CRYP_Read_IVRegisters()
5427 static void CRYP_Write_IVRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Input) in CRYP_Write_IVRegisters() argument
5431 hcryp->Instance->IVR3 = *(uint32_t*)(ivaddr); in CRYP_Write_IVRegisters()
5433 hcryp->Instance->IVR2 = *(uint32_t*)(ivaddr); in CRYP_Write_IVRegisters()
5435 hcryp->Instance->IVR1 = *(uint32_t*)(ivaddr); in CRYP_Write_IVRegisters()
5437 hcryp->Instance->IVR0 = *(uint32_t*)(ivaddr); in CRYP_Write_IVRegisters()
5450 static void CRYP_Read_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Output) in CRYP_Read_SuspendRegisters() argument
5456 …if (READ_BIT(hcryp->Instance->CR, (AES_CR_CHMOD|AES_CR_GCMPH|AES_CR_MODE)) == (CRYP_AES_GCM_GMAC|A… in CRYP_Read_SuspendRegisters()
5467 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Read_SuspendRegisters()
5468 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Read_SuspendRegisters()
5471 __HAL_UNLOCK(hcryp); in CRYP_Read_SuspendRegisters()
5472 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Read_SuspendRegisters()
5476 while(HAL_IS_BIT_SET(hcryp->Instance->SR, AES_SR_BUSY)); in CRYP_Read_SuspendRegisters()
5481 *(uint32_t*)(outputaddr) = hcryp->Instance->SUSP7R; in CRYP_Read_SuspendRegisters()
5483 *(uint32_t*)(outputaddr) = hcryp->Instance->SUSP6R; in CRYP_Read_SuspendRegisters()
5485 *(uint32_t*)(outputaddr) = hcryp->Instance->SUSP5R; in CRYP_Read_SuspendRegisters()
5487 *(uint32_t*)(outputaddr) = hcryp->Instance->SUSP4R; in CRYP_Read_SuspendRegisters()
5489 *(uint32_t*)(outputaddr) = hcryp->Instance->SUSP3R; in CRYP_Read_SuspendRegisters()
5491 *(uint32_t*)(outputaddr) = hcryp->Instance->SUSP2R; in CRYP_Read_SuspendRegisters()
5493 *(uint32_t*)(outputaddr) = hcryp->Instance->SUSP1R; in CRYP_Read_SuspendRegisters()
5495 *(uint32_t*)(outputaddr) = hcryp->Instance->SUSP0R; in CRYP_Read_SuspendRegisters()
5508 static void CRYP_Write_SuspendRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Input) in CRYP_Write_SuspendRegisters() argument
5512 hcryp->Instance->SUSP7R = *(uint32_t*)(ivaddr); in CRYP_Write_SuspendRegisters()
5514 hcryp->Instance->SUSP6R = *(uint32_t*)(ivaddr); in CRYP_Write_SuspendRegisters()
5516 hcryp->Instance->SUSP5R = *(uint32_t*)(ivaddr); in CRYP_Write_SuspendRegisters()
5518 hcryp->Instance->SUSP4R = *(uint32_t*)(ivaddr); in CRYP_Write_SuspendRegisters()
5520 hcryp->Instance->SUSP3R = *(uint32_t*)(ivaddr); in CRYP_Write_SuspendRegisters()
5522 hcryp->Instance->SUSP2R = *(uint32_t*)(ivaddr); in CRYP_Write_SuspendRegisters()
5524 hcryp->Instance->SUSP1R = *(uint32_t*)(ivaddr); in CRYP_Write_SuspendRegisters()
5526 hcryp->Instance->SUSP0R = *(uint32_t*)(ivaddr); in CRYP_Write_SuspendRegisters()
5539 static void CRYP_Read_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Output, uint32_t KeySize) in CRYP_Read_KeyRegisters() argument
5546 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
5548 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
5550 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
5552 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
5554 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 4U); in CRYP_Read_KeyRegisters()
5556 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 5U); in CRYP_Read_KeyRegisters()
5558 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 6U); in CRYP_Read_KeyRegisters()
5560 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 7U); in CRYP_Read_KeyRegisters()
5563 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey); in CRYP_Read_KeyRegisters()
5565 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 1U); in CRYP_Read_KeyRegisters()
5567 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 2U); in CRYP_Read_KeyRegisters()
5569 *(uint32_t*)(keyaddr) = *(uint32_t *)(hcryp->Init.pKey + 3U); in CRYP_Read_KeyRegisters()
5587 static void CRYP_Write_KeyRegisters(CRYP_HandleTypeDef *hcryp, uint32_t* Input, uint32_t KeySize) in CRYP_Write_KeyRegisters() argument
5593 hcryp->Instance->KEYR7 = *(uint32_t*)(keyaddr); in CRYP_Write_KeyRegisters()
5595 hcryp->Instance->KEYR6 = *(uint32_t*)(keyaddr); in CRYP_Write_KeyRegisters()
5597 hcryp->Instance->KEYR5 = *(uint32_t*)(keyaddr); in CRYP_Write_KeyRegisters()
5599 hcryp->Instance->KEYR4 = *(uint32_t*)(keyaddr); in CRYP_Write_KeyRegisters()
5603 hcryp->Instance->KEYR3 = *(uint32_t*)(keyaddr); in CRYP_Write_KeyRegisters()
5605 hcryp->Instance->KEYR2 = *(uint32_t*)(keyaddr); in CRYP_Write_KeyRegisters()
5607 hcryp->Instance->KEYR1 = *(uint32_t*)(keyaddr); in CRYP_Write_KeyRegisters()
5609 hcryp->Instance->KEYR0 = *(uint32_t*)(keyaddr); in CRYP_Write_KeyRegisters()
5618 static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp) in CRYP_PhaseProcessingResume() argument
5626 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_ERR_CLEAR | CRYP_CCF_CLEAR); in CRYP_PhaseProcessingResume()
5629 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_PhaseProcessingResume()
5632 __HAL_CRYP_ENABLE(hcryp); in CRYP_PhaseProcessingResume()
5635 if (hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED) in CRYP_PhaseProcessingResume()
5638 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
5641 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_PhaseProcessingResume()
5643 if ((((hcryp->Init.HeaderSize) - (hcryp->CrypHeaderCount)) >= 4U)) in CRYP_PhaseProcessingResume()
5646 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount ); in CRYP_PhaseProcessingResume()
5647 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
5648 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount ); in CRYP_PhaseProcessingResume()
5649 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
5650 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount ); in CRYP_PhaseProcessingResume()
5651 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
5652 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount ); in CRYP_PhaseProcessingResume()
5653 hcryp->CrypHeaderCount++; in CRYP_PhaseProcessingResume()
5658 for(loopcounter = 0U; loopcounter < (hcryp->Init.HeaderSize %4U ); loopcounter++) in CRYP_PhaseProcessingResume()
5660 hcryp->Instance->DINR = *(uint32_t*)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_PhaseProcessingResume()
5661 hcryp->CrypHeaderCount++ ; in CRYP_PhaseProcessingResume()
5666 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()
5674 if (hcryp->Phase == CRYP_PHASE_PAYLOAD_SUSPENDED) in CRYP_PhaseProcessingResume()
5678 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_PhaseProcessingResume()
5681 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_PhaseProcessingResume()
5684 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U); in CRYP_PhaseProcessingResume()
5686 if (((hcryp->Size/4U) - (hcryp->CrypInCount)) >= 4U) in CRYP_PhaseProcessingResume()
5689 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount ); in CRYP_PhaseProcessingResume()
5690 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5691 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount ); in CRYP_PhaseProcessingResume()
5692 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5693 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount ); in CRYP_PhaseProcessingResume()
5694 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5695 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount ); in CRYP_PhaseProcessingResume()
5696 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5697 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U)) in CRYP_PhaseProcessingResume()
5702 hcryp->InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
5705 HAL_CRYP_InCpltCallback(hcryp); in CRYP_PhaseProcessingResume()
5712 npblb = (((hcryp->Size/16U)+1U)*16U) - (hcryp->Size); in CRYP_PhaseProcessingResume()
5713 cr_temp = hcryp->Instance->CR; in CRYP_PhaseProcessingResume()
5714 …if((((cr_temp & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_… in CRYP_PhaseProcessingResume()
5715 …(((cr_temp& AES_CR_MODE) == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM)… in CRYP_PhaseProcessingResume()
5718 MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, ((uint32_t)npblb)<< 20U); in CRYP_PhaseProcessingResume()
5734 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount ); in CRYP_PhaseProcessingResume()
5735 hcryp->CrypInCount++; in CRYP_PhaseProcessingResume()
5740 hcryp->Instance->DINR = 0x0U; in CRYP_PhaseProcessingResume()