Lines Matching refs:hcryp
346 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_…
350 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize);
351 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp);
353 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
354 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp);
355 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp);
356 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp);
357 static void CRYP_Workaround(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
358 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
359 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp);
360 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
361 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
362 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp);
363 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
366 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
367 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
368 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp);
369 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp);
370 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp);
372 static void CRYP_TDES_IT(CRYP_HandleTypeDef *hcryp);
374 static HAL_StatusTypeDef CRYP_WaitOnIFEMFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
376 static HAL_StatusTypeDef CRYP_WaitOnBUSYFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
377 static HAL_StatusTypeDef CRYP_WaitOnOFNEFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
378 static HAL_StatusTypeDef CRYP_TDES_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
380 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
430 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Init() argument
433 if (hcryp == NULL) in HAL_CRYP_Init()
439 assert_param(IS_CRYP_KEYSIZE(hcryp->Init.KeySize)); in HAL_CRYP_Init()
440 assert_param(IS_CRYP_DATATYPE(hcryp->Init.DataType)); in HAL_CRYP_Init()
441 assert_param(IS_CRYP_ALGORITHM(hcryp->Init.Algorithm)); in HAL_CRYP_Init()
442 assert_param(IS_CRYP_INIT(hcryp->Init.KeyIVConfigSkip)); in HAL_CRYP_Init()
445 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
448 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
450 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_Init()
451 hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_Init()
452 hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_Init()
454 if (hcryp->MspInitCallback == NULL) in HAL_CRYP_Init()
456 hcryp->MspInitCallback = HAL_CRYP_MspInit; /* Legacy weak MspInit */ in HAL_CRYP_Init()
460 hcryp->MspInitCallback(hcryp); in HAL_CRYP_Init()
463 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
466 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
469 HAL_CRYP_MspInit(hcryp); in HAL_CRYP_Init()
476 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_DATATYPE | CRYP_CR_KEYSIZE | CRYP_CR_ALGOMODE, in HAL_CRYP_Init()
477 hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_Init()
481 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, in HAL_CRYP_Init()
482 hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_Init()
487 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_Init()
490 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
493 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_Init()
505 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_DeInit() argument
508 if (hcryp == NULL) in HAL_CRYP_DeInit()
514 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_DeInit()
517 hcryp->CrypInCount = 0; in HAL_CRYP_DeInit()
518 hcryp->CrypOutCount = 0; in HAL_CRYP_DeInit()
519 hcryp->CrypHeaderCount = 0; in HAL_CRYP_DeInit()
522 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_DeInit()
526 if (hcryp->MspDeInitCallback == NULL) in HAL_CRYP_DeInit()
528 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; /* Legacy weak MspDeInit */ in HAL_CRYP_DeInit()
531 hcryp->MspDeInitCallback(hcryp); in HAL_CRYP_DeInit()
536 HAL_CRYP_MspDeInit(hcryp); in HAL_CRYP_DeInit()
541 hcryp->State = HAL_CRYP_STATE_RESET; in HAL_CRYP_DeInit()
544 __HAL_UNLOCK(hcryp); in HAL_CRYP_DeInit()
558 HAL_StatusTypeDef HAL_CRYP_SetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_SetConfig() argument
561 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_SetConfig()
571 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_SetConfig()
574 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_SetConfig()
577 __HAL_LOCK(hcryp); in HAL_CRYP_SetConfig()
580 hcryp->Init.DataType = pConf->DataType; in HAL_CRYP_SetConfig()
581 hcryp->Init.pKey = pConf->pKey; in HAL_CRYP_SetConfig()
582 hcryp->Init.Algorithm = pConf->Algorithm; in HAL_CRYP_SetConfig()
583 hcryp->Init.KeySize = pConf->KeySize; in HAL_CRYP_SetConfig()
584 hcryp->Init.pInitVect = pConf->pInitVect; in HAL_CRYP_SetConfig()
585 hcryp->Init.Header = pConf->Header; in HAL_CRYP_SetConfig()
586 hcryp->Init.HeaderSize = pConf->HeaderSize; in HAL_CRYP_SetConfig()
587 hcryp->Init.B0 = pConf->B0; in HAL_CRYP_SetConfig()
588 hcryp->Init.DataWidthUnit = pConf->DataWidthUnit; in HAL_CRYP_SetConfig()
589 hcryp->Init.KeyIVConfigSkip = pConf->KeyIVConfigSkip; in HAL_CRYP_SetConfig()
590 hcryp->Init.HeaderWidthUnit = pConf->HeaderWidthUnit; in HAL_CRYP_SetConfig()
595 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_DATATYPE | CRYP_CR_KEYSIZE | CRYP_CR_ALGOMODE, in HAL_CRYP_SetConfig()
596 hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_SetConfig()
599 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE | AES_CR_KEYSIZE | AES_CR_CHMOD, in HAL_CRYP_SetConfig()
600 hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_SetConfig()
603 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_ERR_CLEAR); in HAL_CRYP_SetConfig()
608 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
611 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_SetConfig()
614 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_SetConfig()
617 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_SetConfig()
625 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
628 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_SetConfig()
640 HAL_StatusTypeDef HAL_CRYP_GetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_GetConfig() argument
643 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_GetConfig()
648 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_GetConfig()
651 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_GetConfig()
654 __HAL_LOCK(hcryp); in HAL_CRYP_GetConfig()
657 pConf->DataType = hcryp->Init.DataType; in HAL_CRYP_GetConfig()
658 pConf->pKey = hcryp->Init.pKey; in HAL_CRYP_GetConfig()
659 pConf->Algorithm = hcryp->Init.Algorithm; in HAL_CRYP_GetConfig()
660 pConf->KeySize = hcryp->Init.KeySize ; in HAL_CRYP_GetConfig()
661 pConf->pInitVect = hcryp->Init.pInitVect; in HAL_CRYP_GetConfig()
662 pConf->Header = hcryp->Init.Header ; in HAL_CRYP_GetConfig()
663 pConf->HeaderSize = hcryp->Init.HeaderSize; in HAL_CRYP_GetConfig()
664 pConf->B0 = hcryp->Init.B0; in HAL_CRYP_GetConfig()
665 pConf->DataWidthUnit = hcryp->Init.DataWidthUnit; in HAL_CRYP_GetConfig()
666 pConf->KeyIVConfigSkip = hcryp->Init.KeyIVConfigSkip; in HAL_CRYP_GetConfig()
667 pConf->HeaderWidthUnit = hcryp->Init.HeaderWidthUnit; in HAL_CRYP_GetConfig()
670 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
673 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_GetConfig()
681 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
684 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_GetConfig()
694 __weak void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspInit() argument
697 UNUSED(hcryp); in HAL_CRYP_MspInit()
710 __weak void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspDeInit() argument
713 UNUSED(hcryp); in HAL_CRYP_MspDeInit()
735 HAL_StatusTypeDef HAL_CRYP_RegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef C… in HAL_CRYP_RegisterCallback() argument
743 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
748 __HAL_LOCK(hcryp); in HAL_CRYP_RegisterCallback()
750 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_RegisterCallback()
755 hcryp->InCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
759 hcryp->OutCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
763 hcryp->ErrorCallback = pCallback; in HAL_CRYP_RegisterCallback()
767 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
771 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
776 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
782 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_RegisterCallback()
787 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
791 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
796 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
805 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
811 __HAL_UNLOCK(hcryp); in HAL_CRYP_RegisterCallback()
829 HAL_StatusTypeDef HAL_CRYP_UnRegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef… in HAL_CRYP_UnRegisterCallback() argument
834 __HAL_LOCK(hcryp); in HAL_CRYP_UnRegisterCallback()
836 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_UnRegisterCallback()
841 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_UnRegisterCallback()
845 … hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_UnRegisterCallback()
849 … hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_UnRegisterCallback()
853 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
857 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
862 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
868 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_UnRegisterCallback()
873 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
877 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
882 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
891 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
897 __HAL_UNLOCK(hcryp); in HAL_CRYP_UnRegisterCallback()
946 HAL_StatusTypeDef HAL_CRYP_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Encrypt() argument
952 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt()
955 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt()
958 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt()
961 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt()
962 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt()
963 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt()
964 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt()
967 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt()
969 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt()
973 hcryp->Size = Size; in HAL_CRYP_Encrypt()
978 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt()
981 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Encrypt()
991 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Encrypt()
992 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Encrypt()
993 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt()
995 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Encrypt()
996 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Encrypt()
997 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Encrypt()
998 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Encrypt()
1002 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt()
1004 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt()
1005 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Encrypt()
1009 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Encrypt()
1012 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt()
1015 status = CRYP_TDES_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1023 status = CRYP_AES_Encrypt(hcryp, Timeout); in HAL_CRYP_Encrypt()
1029 status = CRYP_AESGCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1036 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1040 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt()
1042 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1044 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1051 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt()
1054 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt()
1064 status = CRYP_AES_Encrypt(hcryp, Timeout); in HAL_CRYP_Encrypt()
1070 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Encrypt()
1076 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1080 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt()
1082 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1084 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1092 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1095 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1101 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt()
1119 HAL_StatusTypeDef HAL_CRYP_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Decrypt() argument
1125 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt()
1128 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt()
1131 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt()
1134 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt()
1135 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt()
1136 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt()
1137 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt()
1140 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt()
1142 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt()
1146 hcryp->Size = Size; in HAL_CRYP_Decrypt()
1152 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt()
1155 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Decrypt()
1165 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Decrypt()
1166 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Decrypt()
1167 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt()
1169 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Decrypt()
1170 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Decrypt()
1171 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Decrypt()
1172 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Decrypt()
1176 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt()
1178 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Decrypt()
1179 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Decrypt()
1183 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Decrypt()
1186 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Decrypt()
1189 status = CRYP_TDES_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1198 status = CRYP_AES_Decrypt(hcryp, Timeout); in HAL_CRYP_Decrypt()
1204 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Decrypt()
1210 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1214 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt()
1216 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1218 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1225 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt()
1228 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt()
1238 status = CRYP_AES_Decrypt(hcryp, Timeout); in HAL_CRYP_Decrypt()
1244 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Decrypt()
1250 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1254 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt()
1256 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1258 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1266 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1269 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1275 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt()
1292 HAL_StatusTypeDef HAL_CRYP_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Encrypt_IT() argument
1297 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_IT()
1300 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_IT()
1303 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1306 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1307 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1308 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_IT()
1309 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_IT()
1312 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_IT()
1314 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_IT()
1318 hcryp->Size = Size; in HAL_CRYP_Encrypt_IT()
1324 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_IT()
1327 algo = (hcryp->Instance->CR & CRYP_CR_ALGOMODE); in HAL_CRYP_Encrypt_IT()
1337 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Encrypt_IT()
1338 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Encrypt_IT()
1339 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt_IT()
1341 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Encrypt_IT()
1342 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Encrypt_IT()
1343 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Encrypt_IT()
1344 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Encrypt_IT()
1347 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt_IT()
1349 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_IT()
1350 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Encrypt_IT()
1354 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Encrypt_IT()
1357 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_IT()
1360 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in HAL_CRYP_Encrypt_IT()
1363 __HAL_CRYP_ENABLE(hcryp); in HAL_CRYP_Encrypt_IT()
1370 status = CRYP_AES_Encrypt_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1375 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Encrypt_IT()
1380 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1384 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_IT()
1386 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_IT()
1388 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1396 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_IT()
1399 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_IT()
1408 status = CRYP_AES_Encrypt_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1414 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Encrypt_IT()
1420 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1424 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_IT()
1426 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_IT()
1428 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1438 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_IT()
1455 HAL_StatusTypeDef HAL_CRYP_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Decrypt_IT() argument
1460 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_IT()
1463 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_IT()
1466 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1469 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1470 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1471 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_IT()
1472 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_IT()
1475 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_IT()
1477 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_IT()
1481 hcryp->Size = Size; in HAL_CRYP_Decrypt_IT()
1487 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_IT()
1490 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Decrypt_IT()
1500 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Decrypt_IT()
1501 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Decrypt_IT()
1502 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt_IT()
1504 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Decrypt_IT()
1505 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Decrypt_IT()
1506 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Decrypt_IT()
1507 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Decrypt_IT()
1511 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt_IT()
1513 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Decrypt_IT()
1514 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Decrypt_IT()
1517 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Decrypt_IT()
1520 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Decrypt_IT()
1523 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in HAL_CRYP_Decrypt_IT()
1526 __HAL_CRYP_ENABLE(hcryp); in HAL_CRYP_Decrypt_IT()
1535 status = CRYP_AES_Decrypt_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1541 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Decrypt_IT()
1547 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1551 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_IT()
1553 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_IT()
1555 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1563 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_IT()
1566 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_IT()
1575 status = CRYP_AES_Decrypt_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1581 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Decrypt_IT()
1587 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1591 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_IT()
1593 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_IT()
1595 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1605 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_IT()
1622 HAL_StatusTypeDef HAL_CRYP_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Encrypt_DMA() argument
1628 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_DMA()
1631 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_DMA()
1634 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1637 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_DMA()
1638 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_DMA()
1639 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_DMA()
1640 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_DMA()
1643 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_DMA()
1645 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_DMA()
1649 hcryp->Size = Size; in HAL_CRYP_Encrypt_DMA()
1655 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_DMA()
1658 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Encrypt_DMA()
1668 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Encrypt_DMA()
1669 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Encrypt_DMA()
1670 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt_DMA()
1672 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Encrypt_DMA()
1673 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Encrypt_DMA()
1674 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Encrypt_DMA()
1675 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Encrypt_DMA()
1679 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt_DMA()
1681 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_DMA()
1682 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Encrypt_DMA()
1686 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Encrypt_DMA()
1689 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1692 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), ((uint16_t)(hcryp->Size) / 4U), in HAL_CRYP_Encrypt_DMA()
1693 (uint32_t)(hcryp->pCrypOutBuffPtr)); in HAL_CRYP_Encrypt_DMA()
1700 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in HAL_CRYP_Encrypt_DMA()
1702 if (hcryp->KeyIVConfig == 1U) in HAL_CRYP_Encrypt_DMA()
1713 hcryp->KeyIVConfig = 1U; in HAL_CRYP_Encrypt_DMA()
1720 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1723 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1725 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_DMA()
1726 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in HAL_CRYP_Encrypt_DMA()
1727 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in HAL_CRYP_Encrypt_DMA()
1728 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in HAL_CRYP_Encrypt_DMA()
1733 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1736 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), ((uint16_t)(hcryp->Size) / 4U), in HAL_CRYP_Encrypt_DMA()
1737 (uint32_t)(hcryp->pCrypOutBuffPtr)); in HAL_CRYP_Encrypt_DMA()
1742 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Encrypt_DMA()
1747 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1751 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_DMA()
1753 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_DMA()
1755 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1762 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_DMA()
1765 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Encrypt_DMA()
1774 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in HAL_CRYP_Encrypt_DMA()
1776 if (hcryp->KeyIVConfig == 1U) in HAL_CRYP_Encrypt_DMA()
1787 hcryp->KeyIVConfig = 1U; in HAL_CRYP_Encrypt_DMA()
1794 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1797 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1799 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_DMA()
1800 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Encrypt_DMA()
1801 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2); in HAL_CRYP_Encrypt_DMA()
1802 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3); in HAL_CRYP_Encrypt_DMA()
1806 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1809 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), (uint32_t)(hcryp->… in HAL_CRYP_Encrypt_DMA()
1814 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Encrypt_DMA()
1819 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1823 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_DMA()
1825 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt_DMA()
1827 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1837 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_DMA()
1854 HAL_StatusTypeDef HAL_CRYP_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Decrypt_DMA() argument
1859 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_DMA()
1863 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_DMA()
1866 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1869 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_DMA()
1870 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_DMA()
1871 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_DMA()
1872 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_DMA()
1875 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_DMA()
1877 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_DMA()
1881 hcryp->Size = Size; in HAL_CRYP_Decrypt_DMA()
1887 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_DMA()
1890 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Decrypt_DMA()
1900 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Decrypt_DMA()
1901 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Decrypt_DMA()
1902 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt_DMA()
1904 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Decrypt_DMA()
1905 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Decrypt_DMA()
1906 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Decrypt_DMA()
1907 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Decrypt_DMA()
1911 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt_DMA()
1913 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Decrypt_DMA()
1914 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Decrypt_DMA()
1918 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Decrypt_DMA()
1921 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Decrypt_DMA()
1924 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), ((uint16_t)(hcryp->Size) / 4U), in HAL_CRYP_Decrypt_DMA()
1925 (uint32_t)(hcryp->pCrypOutBuffPtr)); in HAL_CRYP_Decrypt_DMA()
1933 status = CRYP_AES_Decrypt_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1938 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Decrypt_DMA()
1943 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1947 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_DMA()
1949 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_DMA()
1951 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1959 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_DMA()
1962 algo = hcryp->Instance->CR & AES_CR_CHMOD; in HAL_CRYP_Decrypt_DMA()
1972 status = CRYP_AES_Decrypt_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1977 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Decrypt_DMA()
1982 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1986 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_DMA()
1988 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt_DMA()
1990 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1999 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_DMA()
2035 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_IRQHandler() argument
2040 uint32_t itstatus = hcryp->Instance->MISR; in HAL_CRYP_IRQHandler()
2044 if ((hcryp->Init.Algorithm == CRYP_DES_ECB) || (hcryp->Init.Algorithm == CRYP_DES_CBC) in HAL_CRYP_IRQHandler()
2045 || (hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_IRQHandler()
2047 CRYP_TDES_IT(hcryp); /* DES or TDES*/ in HAL_CRYP_IRQHandler()
2049 else if ((hcryp->Init.Algorithm == CRYP_AES_ECB) || (hcryp->Init.Algorithm == CRYP_AES_CBC) in HAL_CRYP_IRQHandler()
2050 || (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_IRQHandler()
2052 CRYP_AES_IT(hcryp); /*AES*/ in HAL_CRYP_IRQHandler()
2055 …else if ((hcryp->Init.Algorithm == CRYP_AES_GCM) || (hcryp->Init.Algorithm == CRYP_CR_ALGOMODE_AES… in HAL_CRYP_IRQHandler()
2058 if ((hcryp->Instance->CR & CRYP_PHASE_HEADER) == CRYP_PHASE_HEADER) in HAL_CRYP_IRQHandler()
2060 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2064 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2075 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_IT_CCF) != RESET) in HAL_CRYP_IRQHandler()
2077 if (__HAL_CRYP_GET_IT_SOURCE(hcryp, CRYP_IT_CCFIE) != RESET) in HAL_CRYP_IRQHandler()
2081 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in HAL_CRYP_IRQHandler()
2083 if (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC) in HAL_CRYP_IRQHandler()
2087 if ((hcryp->Instance->CR & CRYP_PHASE_HEADER) == CRYP_PHASE_HEADER) in HAL_CRYP_IRQHandler()
2089 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2093 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2096 else if (hcryp->Init.Algorithm == CRYP_AES_CCM) in HAL_CRYP_IRQHandler()
2099 if (hcryp->Init.HeaderSize >= hcryp->CrypHeaderCount) in HAL_CRYP_IRQHandler()
2101 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2105 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
2110 CRYP_AES_IT(hcryp); in HAL_CRYP_IRQHandler()
2115 if (__HAL_CRYP_GET_IT_SOURCE(hcryp, CRYP_IT_ERRIE) != RESET) in HAL_CRYP_IRQHandler()
2118 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_IT_WRERR) != RESET) in HAL_CRYP_IRQHandler()
2120 hcryp->ErrorCode |= HAL_CRYP_ERROR_WRITE; in HAL_CRYP_IRQHandler()
2123 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_IT_RDERR) != RESET) in HAL_CRYP_IRQHandler()
2125 hcryp->ErrorCode |= HAL_CRYP_ERROR_READ; in HAL_CRYP_IRQHandler()
2137 uint32_t HAL_CRYP_GetError(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetError() argument
2139 return hcryp->ErrorCode; in HAL_CRYP_GetError()
2148 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetState() argument
2150 return hcryp->State; in HAL_CRYP_GetState()
2159 __weak void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_InCpltCallback() argument
2162 UNUSED(hcryp); in HAL_CRYP_InCpltCallback()
2175 __weak void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_OutCpltCallback() argument
2178 UNUSED(hcryp); in HAL_CRYP_OutCpltCallback()
2191 __weak void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ErrorCallback() argument
2194 UNUSED(hcryp); in HAL_CRYP_ErrorCallback()
2218 static HAL_StatusTypeDef CRYP_TDES_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_TDES_Process() argument
2226 __HAL_CRYP_ENABLE(hcryp); in CRYP_TDES_Process()
2228 outcount = hcryp->CrypOutCount; in CRYP_TDES_Process()
2231 while ((hcryp->CrypInCount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_TDES_Process()
2234 incount = hcryp->CrypInCount; in CRYP_TDES_Process()
2236 if (((hcryp->Instance->SR & CRYP_FLAG_IFNF) != 0x0U) && (incount < (hcryp->Size / 4U))) in CRYP_TDES_Process()
2239 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_TDES_Process()
2240 hcryp->CrypInCount++; in CRYP_TDES_Process()
2241 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_TDES_Process()
2242 hcryp->CrypInCount++; in CRYP_TDES_Process()
2246 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK) in CRYP_TDES_Process()
2249 __HAL_CRYP_DISABLE(hcryp); in CRYP_TDES_Process()
2252 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_TDES_Process()
2253 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_TDES_Process()
2256 __HAL_UNLOCK(hcryp); in CRYP_TDES_Process()
2259 hcryp->ErrorCallback(hcryp); in CRYP_TDES_Process()
2262 HAL_CRYP_ErrorCallback(hcryp); in CRYP_TDES_Process()
2267 outcount = hcryp->CrypOutCount; in CRYP_TDES_Process()
2269 if (((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) && (outcount < (hcryp->Size / 4U))) in CRYP_TDES_Process()
2274 temp[i] = hcryp->Instance->DOUT; in CRYP_TDES_Process()
2277 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 2U)) in CRYP_TDES_Process()
2279 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_TDES_Process()
2280 hcryp->CrypOutCount++; in CRYP_TDES_Process()
2285 outcount = hcryp->CrypOutCount; in CRYP_TDES_Process()
2288 __HAL_CRYP_DISABLE(hcryp); in CRYP_TDES_Process()
2290 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_TDES_Process()
2304 static void CRYP_TDES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_TDES_IT() argument
2309 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_TDES_IT()
2311 if (__HAL_CRYP_GET_IT(hcryp, CRYP_IT_INI) != 0x0U) in CRYP_TDES_IT()
2313 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_FLAG_INRIS) != 0x0U) in CRYP_TDES_IT()
2316 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_TDES_IT()
2317 hcryp->CrypInCount++; in CRYP_TDES_IT()
2318 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_TDES_IT()
2319 hcryp->CrypInCount++; in CRYP_TDES_IT()
2321 if (hcryp->CrypInCount == ((uint16_t)(hcryp->Size) / 4U)) in CRYP_TDES_IT()
2324 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI); in CRYP_TDES_IT()
2328 hcryp->InCpltCallback(hcryp); in CRYP_TDES_IT()
2331 HAL_CRYP_InCpltCallback(hcryp); in CRYP_TDES_IT()
2336 if (__HAL_CRYP_GET_IT(hcryp, CRYP_IT_OUTI) != 0x0U) in CRYP_TDES_IT()
2338 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_FLAG_OUTRIS) != 0x0U) in CRYP_TDES_IT()
2343 temp[i] = hcryp->Instance->DOUT; in CRYP_TDES_IT()
2346 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 2U)) in CRYP_TDES_IT()
2348 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_TDES_IT()
2349 hcryp->CrypOutCount++; in CRYP_TDES_IT()
2352 if (hcryp->CrypOutCount == ((uint16_t)(hcryp->Size) / 4U)) in CRYP_TDES_IT()
2355 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_OUTI); in CRYP_TDES_IT()
2358 __HAL_CRYP_DISABLE(hcryp); in CRYP_TDES_IT()
2361 __HAL_UNLOCK(hcryp); in CRYP_TDES_IT()
2364 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_TDES_IT()
2368 hcryp->OutCpltCallback(hcryp); in CRYP_TDES_IT()
2371 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_TDES_IT()
2380 __HAL_UNLOCK(hcryp); in CRYP_TDES_IT()
2382 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_TDES_IT()
2385 hcryp->ErrorCallback(hcryp); in CRYP_TDES_IT()
2388 HAL_CRYP_ErrorCallback(hcryp); in CRYP_TDES_IT()
2401 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Encrypt() argument
2406 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt()
2408 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt()
2419 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt()
2427 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2429 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2433 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt()
2434 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Encrypt()
2435 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Encrypt()
2436 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Encrypt()
2438 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt()
2439 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Encrypt()
2440 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Encrypt()
2441 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Encrypt()
2447 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt()
2450 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt()
2453 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2455 while ((hcryp->CrypInCount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Encrypt()
2458 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Encrypt()
2460 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2464 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2467 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2479 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Encrypt_IT() argument
2483 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt_IT()
2485 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt_IT()
2496 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt_IT()
2503 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2505 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2509 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt_IT()
2510 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Encrypt_IT()
2511 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Encrypt_IT()
2512 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Encrypt_IT()
2515 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt_IT()
2516 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Encrypt_IT()
2517 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Encrypt_IT()
2518 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Encrypt_IT()
2524 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt_IT()
2526 if (hcryp->Size != 0U) in CRYP_AES_Encrypt_IT()
2531 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_Encrypt_IT()
2534 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt_IT()
2539 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2540 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Encrypt_IT()
2541 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2542 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Encrypt_IT()
2543 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2544 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Encrypt_IT()
2545 hcryp->CrypInCount++; in CRYP_AES_Encrypt_IT()
2546 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Encrypt_IT()
2551 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in CRYP_AES_Encrypt_IT()
2554 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt_IT()
2561 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2564 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2577 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Decrypt() argument
2582 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt()
2584 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt()
2595 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt()
2602 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt()
2605 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 Key preparation*/ in CRYP_AES_Decrypt()
2608 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt()
2611 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2614 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2617 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2620 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2623 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt()
2624 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2627 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt()
2631 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt()
2634 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt()
2639 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2642 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt()
2646 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_CR_ALGOMODE_AES_KEY); in CRYP_AES_Decrypt()
2649 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2652 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2655 if (CRYP_WaitOnBUSYFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2658 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2661 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt()
2662 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2665 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt()
2669 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, hcryp->Init.Algorithm); in CRYP_AES_Decrypt()
2676 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2680 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt()
2684 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt()
2685 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Decrypt()
2686 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Decrypt()
2687 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Decrypt()
2689 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt()
2690 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Decrypt()
2691 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Decrypt()
2692 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Decrypt()
2697 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt()
2700 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2703 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2705 while ((hcryp->CrypInCount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Decrypt()
2708 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Decrypt()
2710 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2714 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2717 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2728 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_IT() argument
2733 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_IT()
2735 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_IT()
2746 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_IT()
2753 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2756 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 Key preparation*/ in CRYP_AES_Decrypt_IT()
2759 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_IT()
2762 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2765 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2775 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_IT()
2778 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2779 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2782 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2786 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_IT()
2789 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt_IT()
2792 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_IT()
2797 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2800 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt_IT()
2805 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_CR_ALGOMODE_AES_KEY); in CRYP_AES_Decrypt_IT()
2808 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2811 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2821 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2822 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2825 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2829 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY)); in CRYP_AES_Decrypt_IT()
2832 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, hcryp->Init.Algorithm); in CRYP_AES_Decrypt_IT()
2840 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2844 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_IT()
2848 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_IT()
2849 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Decrypt_IT()
2850 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Decrypt_IT()
2851 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Decrypt_IT()
2853 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_IT()
2854 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Decrypt_IT()
2855 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Decrypt_IT()
2856 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Decrypt_IT()
2862 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_IT()
2863 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_IT()
2869 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_Decrypt_IT()
2872 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2877 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2878 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Decrypt_IT()
2879 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2880 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Decrypt_IT()
2881 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2882 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Decrypt_IT()
2883 hcryp->CrypInCount++; in CRYP_AES_Decrypt_IT()
2884 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U)); in CRYP_AES_Decrypt_IT()
2889 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in CRYP_AES_Decrypt_IT()
2892 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2899 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2902 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2914 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_DMA() argument
2919 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_DMA()
2921 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_DMA()
2932 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_DMA()
2938 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2941 if (hcryp->AutoKeyDerivation == DISABLE)/*Mode 2 key preparation*/ in CRYP_AES_Decrypt_DMA()
2944 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION); in CRYP_AES_Decrypt_DMA()
2947 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2950 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2960 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2963 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
2964 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2967 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2971 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AES_Decrypt_DMA()
2974 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_Decrypt_DMA()
2977 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_DECRYPT); in CRYP_AES_Decrypt_DMA()
2982 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2985 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_KEYDERIVATION_DECRYPT); in CRYP_AES_Decrypt_DMA()
2989 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_CR_ALGOMODE_AES_KEY); in CRYP_AES_Decrypt_DMA()
2992 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2995 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
3005 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
3008 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
3009 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
3012 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
3016 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY)); in CRYP_AES_Decrypt_DMA()
3019 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, hcryp->Init.Algorithm); in CRYP_AES_Decrypt_DMA()
3026 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
3029 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_DMA()
3033 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_DMA()
3034 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Decrypt_DMA()
3035 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Decrypt_DMA()
3036 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Decrypt_DMA()
3038 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_DMA()
3039 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Decrypt_DMA()
3040 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Decrypt_DMA()
3041 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Decrypt_DMA()
3047 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_DMA()
3049 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_DMA()
3052 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), (uint32_t)(hcryp->… in CRYP_AES_Decrypt_DMA()
3057 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
3060 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
3075 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAInCplt() local
3080 hcryp->Instance->DMACR &= (uint32_t)(~CRYP_DMACR_DIEN); in CRYP_DMAInCplt()
3083 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAINEN); in CRYP_DMAInCplt()
3086 if ((hcryp->Init.Algorithm & CRYP_AES_CCM) == CRYP_AES_CCM) in CRYP_DMAInCplt()
3089 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_DMAInCplt()
3092 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAInCplt()
3095 __HAL_UNLOCK(hcryp); in CRYP_DMAInCplt()
3102 hcryp->InCpltCallback(hcryp); in CRYP_DMAInCplt()
3105 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAInCplt()
3116 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAOutCplt() local
3123 hcryp->Instance->DMACR &= (uint32_t)(~CRYP_DMACR_DOEN); in CRYP_DMAOutCplt()
3124 if ((hcryp->Init.Algorithm & CRYP_AES_GCM) != CRYP_AES_GCM) in CRYP_DMAOutCplt()
3127 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
3131 CLEAR_BIT(hcryp->Instance->CR, AES_CR_DMAOUTEN); in CRYP_DMAOutCplt()
3134 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_DMAOutCplt()
3136 if ((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_DMAOutCplt()
3139 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
3144 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAOutCplt()
3147 __HAL_UNLOCK(hcryp); in CRYP_DMAOutCplt()
3151 hcryp->OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
3154 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
3165 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAError() local
3168 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAError()
3171 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_DMAError()
3176 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_DMAError()
3183 hcryp->ErrorCallback(hcryp); in CRYP_DMAError()
3186 HAL_CRYP_ErrorCallback(hcryp); in CRYP_DMAError()
3199 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_… in CRYP_SetDMAConfig() argument
3202 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetDMAConfig()
3205 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
3208 hcryp->hdmaout->XferCpltCallback = CRYP_DMAOutCplt; in CRYP_SetDMAConfig()
3211 hcryp->hdmaout->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
3216 __HAL_CRYP_ENABLE(hcryp); in CRYP_SetDMAConfig()
3219 if (HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DIN, Size) != HAL_OK) in CRYP_SetDMAConfig()
3222 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3227 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3230 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3234 …if (HAL_DMA_Start_IT(hcryp->hdmaout, (uint32_t)&hcryp->Instance->DOUT, outputaddr, Size) != HAL_OK) in CRYP_SetDMAConfig()
3237 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3242 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3245 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3249 hcryp->Instance->DMACR = CRYP_DMACR_DOEN | CRYP_DMACR_DIEN; in CRYP_SetDMAConfig()
3253 if (((hcryp->Init.Algorithm & CRYP_AES_GCM_GMAC) != CRYP_AES_GCM_GMAC) in CRYP_SetDMAConfig()
3254 && ((hcryp->Init.Algorithm & CRYP_AES_CCM) != CRYP_AES_CCM)) in CRYP_SetDMAConfig()
3257 __HAL_CRYP_ENABLE(hcryp); in CRYP_SetDMAConfig()
3261 if (HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DINR, Size) != HAL_OK) in CRYP_SetDMAConfig()
3264 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3269 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3272 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3276 …if (HAL_DMA_Start_IT(hcryp->hdmaout, (uint32_t)&hcryp->Instance->DOUTR, outputaddr, Size) != HAL_O… in CRYP_SetDMAConfig()
3279 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
3284 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3287 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
3292 if ((hcryp->Init.Algorithm & CRYP_AES_CCM) == CRYP_AES_CCM) in CRYP_SetDMAConfig()
3295 SET_BIT(hcryp->Instance->CR, (AES_CR_DMAINEN)); in CRYP_SetDMAConfig()
3300 SET_BIT(hcryp->Instance->CR, (AES_CR_DMAINEN | AES_CR_DMAOUTEN)); in CRYP_SetDMAConfig()
3312 static void CRYP_AES_ProcessData(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_ProcessData() argument
3325 incount = hcryp->CrypInCount; in CRYP_AES_ProcessData()
3327 if (((hcryp->Instance->SR & CRYP_FLAG_IFNF) != 0x0U) && (incount < (hcryp->Size / 4U))) in CRYP_AES_ProcessData()
3330 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3331 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3332 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3333 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3334 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3335 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3336 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3337 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3341 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_ProcessData()
3344 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_ProcessData()
3347 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_ProcessData()
3348 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_ProcessData()
3351 __HAL_UNLOCK(hcryp); in CRYP_AES_ProcessData()
3354 hcryp->ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3357 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3362 outcount = hcryp->CrypOutCount; in CRYP_AES_ProcessData()
3364 if (((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_ProcessData()
3369 temp[i] = hcryp->Instance->DOUT; in CRYP_AES_ProcessData()
3372 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 4U)) in CRYP_AES_ProcessData()
3374 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_ProcessData()
3375 hcryp->CrypOutCount++; in CRYP_AES_ProcessData()
3383 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3384 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3385 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3386 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3387 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3388 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3389 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
3390 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
3393 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_ProcessData()
3396 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_ProcessData()
3399 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_ProcessData()
3400 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_ProcessData()
3403 __HAL_UNLOCK(hcryp); in CRYP_AES_ProcessData()
3406 hcryp->ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3409 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_ProcessData()
3414 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AES_ProcessData()
3419 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_ProcessData()
3422 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_ProcessData()
3424 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_ProcessData()
3425 hcryp->CrypOutCount++; in CRYP_AES_ProcessData()
3439 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_IT() argument
3448 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_AES_IT()
3453 incount = hcryp->CrypInCount; in CRYP_AES_IT()
3454 if (((hcryp->Instance->SR & CRYP_FLAG_IFNF) != 0x0U) && (incount < (hcryp->Size / 4U))) in CRYP_AES_IT()
3457 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3458 hcryp->CrypInCount++; in CRYP_AES_IT()
3459 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3460 hcryp->CrypInCount++; in CRYP_AES_IT()
3461 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3462 hcryp->CrypInCount++; in CRYP_AES_IT()
3463 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3464 hcryp->CrypInCount++; in CRYP_AES_IT()
3465 if (hcryp->CrypInCount == ((uint16_t)(hcryp->Size) / 4U)) in CRYP_AES_IT()
3468 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI); in CRYP_AES_IT()
3473 hcryp->InCpltCallback(hcryp); in CRYP_AES_IT()
3476 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AES_IT()
3481 outcount = hcryp->CrypOutCount; in CRYP_AES_IT()
3483 if (((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_IT()
3488 temp[i] = hcryp->Instance->DOUT; in CRYP_AES_IT()
3491 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 4U)) in CRYP_AES_IT()
3493 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_IT()
3494 hcryp->CrypOutCount++; in CRYP_AES_IT()
3497 if (hcryp->CrypOutCount == ((uint16_t)(hcryp->Size) / 4U)) in CRYP_AES_IT()
3500 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_OUTI); in CRYP_AES_IT()
3503 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_IT()
3506 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_IT()
3509 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3514 hcryp->OutCpltCallback(hcryp); in CRYP_AES_IT()
3517 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_AES_IT()
3527 temp[i] = hcryp->Instance->DOUTR; in CRYP_AES_IT()
3530 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U)) in CRYP_AES_IT()
3532 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_IT()
3533 hcryp->CrypOutCount++; in CRYP_AES_IT()
3537 if (hcryp->CrypOutCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3540 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AES_IT()
3543 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_IT()
3546 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_IT()
3549 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
3554 hcryp->OutCpltCallback(hcryp); in CRYP_AES_IT()
3557 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_AES_IT()
3563 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3564 hcryp->CrypInCount++; in CRYP_AES_IT()
3565 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3566 hcryp->CrypInCount++; in CRYP_AES_IT()
3567 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3568 hcryp->CrypInCount++; in CRYP_AES_IT()
3569 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
3570 hcryp->CrypInCount++; in CRYP_AES_IT()
3572 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
3577 hcryp->InCpltCallback(hcryp); in CRYP_AES_IT()
3580 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AES_IT()
3590 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_AES_IT()
3593 hcryp->ErrorCallback(hcryp); in CRYP_AES_IT()
3596 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_IT()
3608 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize) in CRYP_SetKey() argument
3615 hcryp->Instance->K0LR = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3616 hcryp->Instance->K0RR = *(uint32_t *)(hcryp->Init.pKey + 1); in CRYP_SetKey()
3617 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey + 2); in CRYP_SetKey()
3618 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 3); in CRYP_SetKey()
3619 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 4); in CRYP_SetKey()
3620 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 5); in CRYP_SetKey()
3621 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 6); in CRYP_SetKey()
3622 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 7); in CRYP_SetKey()
3625 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3626 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in CRYP_SetKey()
3627 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in CRYP_SetKey()
3628 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in CRYP_SetKey()
3629 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in CRYP_SetKey()
3630 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in CRYP_SetKey()
3633 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3634 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 1); in CRYP_SetKey()
3635 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 2); in CRYP_SetKey()
3636 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 3); in CRYP_SetKey()
3646 hcryp->Instance->KEYR7 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3647 hcryp->Instance->KEYR6 = *(uint32_t *)(hcryp->Init.pKey + 1); in CRYP_SetKey()
3648 hcryp->Instance->KEYR5 = *(uint32_t *)(hcryp->Init.pKey + 2); in CRYP_SetKey()
3649 hcryp->Instance->KEYR4 = *(uint32_t *)(hcryp->Init.pKey + 3); in CRYP_SetKey()
3650 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey + 4); in CRYP_SetKey()
3651 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 5); in CRYP_SetKey()
3652 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 6); in CRYP_SetKey()
3653 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 7); in CRYP_SetKey()
3656 hcryp->Instance->KEYR3 = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
3657 hcryp->Instance->KEYR2 = *(uint32_t *)(hcryp->Init.pKey + 1); in CRYP_SetKey()
3658 hcryp->Instance->KEYR1 = *(uint32_t *)(hcryp->Init.pKey + 2); in CRYP_SetKey()
3659 hcryp->Instance->KEYR0 = *(uint32_t *)(hcryp->Init.pKey + 3); in CRYP_SetKey()
3676 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESGCM_Process() argument
3679 uint32_t wordsize = (uint32_t)(hcryp->Size) / 4U ; in CRYP_AESGCM_Process()
3683 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process()
3685 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process()
3690 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process()
3697 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process()
3698 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process()
3703 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process()
3709 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process()
3713 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process()
3716 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
3721 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process()
3722 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AESGCM_Process()
3723 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AESGCM_Process()
3724 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AESGCM_Process()
3727 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3733 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN) in CRYP_AESGCM_Process()
3741 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3744 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3745 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3748 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3759 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, CRYP_DATATYPE_32B); in CRYP_AESGCM_Process()
3762 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process()
3763 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AESGCM_Process()
3764 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AESGCM_Process()
3765 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AESGCM_Process()
3768 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3771 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3774 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3775 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3778 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3782 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process()
3788 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3796 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process()
3801 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3804 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process()
3807 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3812 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process()
3817 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3826 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3829 while ((hcryp->CrypInCount < wordsize) && (outcount < wordsize)) in CRYP_AESGCM_Process()
3832 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESGCM_Process()
3835 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3843 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3846 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3847 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3850 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3856 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3861 CRYP_Workaround(hcryp, Timeout); in CRYP_AESGCM_Process()
3874 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_IT() argument
3884 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_IT()
3886 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_IT()
3891 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_IT()
3898 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_IT()
3899 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_IT()
3904 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_IT()
3911 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_IT()
3915 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_IT()
3918 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
3922 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_IT()
3923 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AESGCM_Process_IT()
3924 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AESGCM_Process_IT()
3925 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AESGCM_Process_IT()
3928 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3938 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
3941 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
3942 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3945 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3949 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN); in CRYP_AESGCM_Process_IT()
3957 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, CRYP_DATATYPE_32B); in CRYP_AESGCM_Process_IT()
3960 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_IT()
3961 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AESGCM_Process_IT()
3962 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AESGCM_Process_IT()
3963 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AESGCM_Process_IT()
3966 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3976 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
3979 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
3980 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3983 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3987 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESGCM_Process_IT()
3990 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process_IT()
3999 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESGCM_Process_IT()
4002 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI); in CRYP_AESGCM_Process_IT()
4005 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
4010 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType); in CRYP_AESGCM_Process_IT()
4013 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESGCM_Process_IT()
4016 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
4019 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
4021 if (hcryp->Init.HeaderSize == 0U) /*header phase is skipped*/ in CRYP_AESGCM_Process_IT()
4024 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_IT()
4027 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_IT()
4030 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_IT()
4033 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE); in CRYP_AESGCM_Process_IT()
4036 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
4039 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
4041 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_IT()
4043 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4044 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4045 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4046 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4047 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4048 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4049 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4050 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4051 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_AESGCM_Process_IT()
4056 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4059 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4071 npblb = 16U - (uint32_t)(hcryp->Size); in CRYP_AESGCM_Process_IT()
4086 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_IT()
4087 hcryp->CrypInCount++; in CRYP_AESGCM_Process_IT()
4092 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4097 else if ((hcryp->Init.HeaderSize) < 4U) in CRYP_AESGCM_Process_IT()
4099 for (loopcounter = 0U; loopcounter < hcryp->Init.HeaderSize ; loopcounter++) in CRYP_AESGCM_Process_IT()
4101 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4102 hcryp->CrypHeaderCount++ ; in CRYP_AESGCM_Process_IT()
4107 hcryp->Instance->DINR = 0x0U; in CRYP_AESGCM_Process_IT()
4111 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_IT()
4114 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_IT()
4119 hcryp->InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4122 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AESGCM_Process_IT()
4125 else if ((hcryp->Init.HeaderSize) >= 4U) in CRYP_AESGCM_Process_IT()
4128 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4129 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4130 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4131 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4132 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4133 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4134 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESGCM_Process_IT()
4135 hcryp->CrypHeaderCount++; in CRYP_AESGCM_Process_IT()
4156 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_DMA() argument
4162 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_DMA()
4164 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_DMA()
4169 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_DMA()
4176 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_DMA()
4177 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_DMA()
4182 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_DMA()
4188 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_DMA()
4192 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_DMA()
4195 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
4199 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_DMA()
4200 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AESGCM_Process_DMA()
4201 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AESGCM_Process_DMA()
4202 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AESGCM_Process_DMA()
4205 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4215 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4218 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
4219 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
4222 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
4226 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN); in CRYP_AESGCM_Process_DMA()
4234 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, CRYP_DATATYPE_32B); in CRYP_AESGCM_Process_DMA()
4237 hcryp->Instance->IVR3 = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_DMA()
4238 hcryp->Instance->IVR2 = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AESGCM_Process_DMA()
4239 hcryp->Instance->IVR1 = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AESGCM_Process_DMA()
4240 hcryp->Instance->IVR0 = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AESGCM_Process_DMA()
4243 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4253 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4256 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
4257 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
4260 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
4264 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF)); in CRYP_AESGCM_Process_DMA()
4267 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESGCM_Process_DMA()
4273 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
4281 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_DMA()
4286 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
4291 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_DMA()
4295 if (hcryp->Size != 0U) in CRYP_AESGCM_Process_DMA()
4301 if ((hcryp->Size % 16U) == 0U) in CRYP_AESGCM_Process_DMA()
4303 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), (uint32_t)(hcryp->… in CRYP_AESGCM_Process_DMA()
4307 wordsize = (uint32_t)(hcryp->Size) + (16U - ((uint32_t)(hcryp->Size) % 16U)) ; in CRYP_AESGCM_Process_DMA()
4310 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), ((uint16_t)wordsize / 4U), in CRYP_AESGCM_Process_DMA()
4311 (uint32_t)(hcryp->pCrypOutBuffPtr)); in CRYP_AESGCM_Process_DMA()
4317 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
4320 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
4336 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESCCM_Process() argument
4339 uint32_t wordsize = (uint32_t)(hcryp->Size) / 4U; in CRYP_AESCCM_Process()
4348 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process()
4350 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process()
4355 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process()
4362 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process()
4363 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process()
4368 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process()
4375 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process()
4381 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process()
4384 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
4387 hcryp->Instance->IV0LR = (hcryp->Init.B0[0]) & CRYP_CCM_CTR1_0; in CRYP_AESCCM_Process()
4388 hcryp->Instance->IV0RR = hcryp->Init.B0[1]; in CRYP_AESCCM_Process()
4389 hcryp->Instance->IV1LR = hcryp->Init.B0[2]; in CRYP_AESCCM_Process()
4390 hcryp->Instance->IV1RR = (hcryp->Init.B0[3] & CRYP_CCM_CTR1_1) | CRYP_CCM_CTR1_2; in CRYP_AESCCM_Process()
4394 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
4397 if (hcryp->Init.DataType == CRYP_DATATYPE_8B) in CRYP_AESCCM_Process()
4399 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0)); in CRYP_AESCCM_Process()
4400 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 1)); in CRYP_AESCCM_Process()
4401 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 2)); in CRYP_AESCCM_Process()
4402 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 3)); in CRYP_AESCCM_Process()
4404 else if (hcryp->Init.DataType == CRYP_DATATYPE_16B) in CRYP_AESCCM_Process()
4406 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0), 16); in CRYP_AESCCM_Process()
4407 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 1), 16); in CRYP_AESCCM_Process()
4408 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 2), 16); in CRYP_AESCCM_Process()
4409 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 3), 16); in CRYP_AESCCM_Process()
4411 else if (hcryp->Init.DataType == CRYP_DATATYPE_1B) in CRYP_AESCCM_Process()
4413 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0)); in CRYP_AESCCM_Process()
4414 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 1)); in CRYP_AESCCM_Process()
4415 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 2)); in CRYP_AESCCM_Process()
4416 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 3)); in CRYP_AESCCM_Process()
4420 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
4421 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1); in CRYP_AESCCM_Process()
4422 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2); in CRYP_AESCCM_Process()
4423 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3); in CRYP_AESCCM_Process()
4429 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN) in CRYP_AESCCM_Process()
4437 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4440 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4441 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4444 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4452 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESCCM_Process()
4455 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT); in CRYP_AESCCM_Process()
4458 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
4461 hcryp->Instance->IVR3 = 0U; in CRYP_AESCCM_Process()
4462 hcryp->Instance->IVR2 = 0U; in CRYP_AESCCM_Process()
4463 hcryp->Instance->IVR1 = 0U; in CRYP_AESCCM_Process()
4464 hcryp->Instance->IVR0 = 0U; in CRYP_AESCCM_Process()
4467 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
4470 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
4471 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0 + 1); in CRYP_AESCCM_Process()
4472 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0 + 2); in CRYP_AESCCM_Process()
4473 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0 + 3); in CRYP_AESCCM_Process()
4476 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4479 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4480 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4483 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4487 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
4490 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process()
4495 if (hcryp->Init.HeaderSize != 0U) in CRYP_AESCCM_Process()
4497 if ((hcryp->Init.HeaderSize % 4U) == 0U) in CRYP_AESCCM_Process()
4500 for (loopcounter = 0U; (loopcounter < hcryp->Init.HeaderSize); loopcounter += 4U) in CRYP_AESCCM_Process()
4503 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process()
4504 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process()
4505 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process()
4506 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process()
4507 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process()
4508 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process()
4509 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process()
4510 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process()
4512 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4515 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4518 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4519 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4522 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4526 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
4532 …for (loopcounter = 0U; (loopcounter < ((hcryp->Init.HeaderSize) - (hcryp->Init.HeaderSize % 4U)));… in CRYP_AESCCM_Process()
4535 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process()
4536 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process()
4537 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process()
4538 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process()
4539 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process()
4540 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process()
4541 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process()
4542 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process()
4544 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4547 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4550 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4551 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4554 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4558 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
4561 for (loopcounter = 0U; (loopcounter < (hcryp->Init.HeaderSize % 4U)); loopcounter++) in CRYP_AESCCM_Process()
4563 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_AESCCM_Process()
4564 hcryp->CrypHeaderCount++ ; in CRYP_AESCCM_Process()
4569 hcryp->Instance->DINR = 0x0U; in CRYP_AESCCM_Process()
4573 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4576 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4579 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4580 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4583 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4587 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
4593 if (hcryp->Size != 0U) in CRYP_AESCCM_Process()
4595 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4604 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4606 while ((hcryp->CrypInCount < wordsize) && (outcount < wordsize)) in CRYP_AESCCM_Process()
4609 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESCCM_Process()
4612 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
4620 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4623 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4624 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4627 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4633 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
4636 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size); in CRYP_AESCCM_Process()
4651 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process()
4652 hcryp->CrypInCount++; in CRYP_AESCCM_Process()
4657 hcryp->Instance->DINR = 0U; in CRYP_AESCCM_Process()
4661 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4664 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4667 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
4668 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
4671 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
4675 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR); in CRYP_AESCCM_Process()
4687 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
4695 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process()
4698 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
4701 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process()
4704 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
4708 if ((hcryp->Size % 16U) != 0U)
4716 outcount = hcryp->CrypOutCount;
4719 while ((hcryp->CrypInCount < wordsize) && (outcount < wordsize))
4722 CRYP_AES_ProcessData(hcryp, Timeout);
4730 __HAL_CRYP_DISABLE(hcryp);
4733 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
4734 hcryp->State = HAL_CRYP_STATE_READY;
4737 __HAL_UNLOCK(hcryp);
4743 if ((hcryp->Size % 16U) != 0U)
4748 CRYP_Workaround(hcryp, Timeout);
4763 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp)
4770 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE)
4772 if (hcryp->KeyIVConfig == 1U)
4777 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */
4784 hcryp->KeyIVConfig = 1U;
4785 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */
4790 hcryp->SizesSum = hcryp->Size;
4797 hcryp->CrypHeaderCount = 0U;
4803 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT);
4806 CRYP_SetKey(hcryp, hcryp->Init.KeySize);
4809 hcryp->Instance->IV0LR = (hcryp->Init.B0[0]) & CRYP_CCM_CTR1_0;
4810 hcryp->Instance->IV0RR = hcryp->Init.B0[1];
4811 hcryp->Instance->IV1LR = hcryp->Init.B0[2];
4812 hcryp->Instance->IV1RR = (hcryp->Init.B0[3] & CRYP_CCM_CTR1_1) | CRYP_CCM_CTR1_2;
4815 __HAL_CRYP_ENABLE(hcryp);
4818 if (hcryp->Init.DataType == CRYP_DATATYPE_8B)
4820 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0));
4821 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 1));
4822 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 2));
4823 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 3));
4825 else if (hcryp->Init.DataType == CRYP_DATATYPE_16B)
4827 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0), 16);
4828 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 1), 16);
4829 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 2), 16);
4830 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 3), 16);
4832 else if (hcryp->Init.DataType == CRYP_DATATYPE_1B)
4834 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0));
4835 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 1));
4836 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 2));
4837 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 3));
4841 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0);
4842 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1);
4843 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2);
4844 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3);
4854 __HAL_CRYP_DISABLE(hcryp);
4857 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
4858 hcryp->State = HAL_CRYP_STATE_READY;
4861 __HAL_UNLOCK(hcryp);
4865 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN);
4868 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER);
4873 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI);
4876 __HAL_CRYP_ENABLE(hcryp);
4882 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER);
4885 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT);
4888 CRYP_SetKey(hcryp, hcryp->Init.KeySize);
4891 hcryp->Instance->IVR3 = 0U;
4892 hcryp->Instance->IVR2 = 0U;
4893 hcryp->Instance->IVR1 = 0U;
4894 hcryp->Instance->IVR0 = 0U;
4897 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE);
4899 __HAL_CRYP_ENABLE(hcryp);
4902 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0);
4903 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0 + 1);
4904 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0 + 2);
4905 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0 + 3);
4920 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp)
4931 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE)
4933 if (hcryp->KeyIVConfig == 1U)
4938 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */
4945 hcryp->KeyIVConfig = 1U;
4946 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */
4951 hcryp->SizesSum = hcryp->Size;
4958 hcryp->CrypHeaderCount = 0U;
4964 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT);
4967 CRYP_SetKey(hcryp, hcryp->Init.KeySize);
4970 hcryp->Instance->IV0LR = (hcryp->Init.B0[0]) & CRYP_CCM_CTR1_0;
4971 hcryp->Instance->IV0RR = hcryp->Init.B0[1];
4972 hcryp->Instance->IV1LR = hcryp->Init.B0[2];
4973 hcryp->Instance->IV1RR = (hcryp->Init.B0[3] & CRYP_CCM_CTR1_1) | CRYP_CCM_CTR1_2;
4976 __HAL_CRYP_ENABLE(hcryp);
4979 if (hcryp->Init.DataType == CRYP_DATATYPE_8B)
4981 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0));
4982 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 1));
4983 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 2));
4984 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 3));
4986 else if (hcryp->Init.DataType == CRYP_DATATYPE_16B)
4988 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0), 16);
4989 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 1), 16);
4990 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 2), 16);
4991 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 3), 16);
4993 else if (hcryp->Init.DataType == CRYP_DATATYPE_1B)
4995 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0));
4996 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 1));
4997 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 2));
4998 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 3));
5002 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0);
5003 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1);
5004 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2);
5005 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3);
5016 __HAL_CRYP_DISABLE(hcryp);
5019 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5020 hcryp->State = HAL_CRYP_STATE_READY;
5023 __HAL_UNLOCK(hcryp);
5027 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN);
5033 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER);
5036 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_OPERATINGMODE_ENCRYPT);
5039 CRYP_SetKey(hcryp, hcryp->Init.KeySize);
5042 hcryp->Instance->IVR3 = 0U;
5043 hcryp->Instance->IVR2 = 0U;
5044 hcryp->Instance->IVR1 = 0U;
5045 hcryp->Instance->IVR0 = 0U;
5048 __HAL_CRYP_ENABLE(hcryp);
5051 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0);
5052 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0 + 1);
5053 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0 + 2);
5054 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.B0 + 3);
5063 __HAL_CRYP_DISABLE(hcryp);
5066 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5067 hcryp->State = HAL_CRYP_STATE_READY;
5070 __HAL_UNLOCK(hcryp);
5074 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF));
5076 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
5079 hcryp->Phase = CRYP_PHASE_PROCESS;
5084 if (hcryp->Init.HeaderSize != 0U)
5086 if ((hcryp->Init.HeaderSize % 4U) == 0U)
5089 for (loopcounter = 0U; (loopcounter < hcryp->Init.HeaderSize); loopcounter += 4U)
5092 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5093 hcryp->CrypHeaderCount++ ;
5094 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5095 hcryp->CrypHeaderCount++ ;
5096 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5097 hcryp->CrypHeaderCount++ ;
5098 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5099 hcryp->CrypHeaderCount++ ;
5109 __HAL_CRYP_DISABLE(hcryp);
5112 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5113 hcryp->State = HAL_CRYP_STATE_READY;
5116 __HAL_UNLOCK(hcryp);
5120 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF));
5122 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
5128 …for (loopcounter = 0U; (loopcounter < ((hcryp->Init.HeaderSize) - (hcryp->Init.HeaderSize % 4U)));…
5131 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5132 hcryp->CrypHeaderCount++ ;
5133 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5134 hcryp->CrypHeaderCount++ ;
5135 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5136 hcryp->CrypHeaderCount++ ;
5137 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5138 hcryp->CrypHeaderCount++ ;
5147 __HAL_CRYP_DISABLE(hcryp);
5150 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5151 hcryp->State = HAL_CRYP_STATE_READY;
5154 __HAL_UNLOCK(hcryp);
5158 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF));
5160 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
5163 for (loopcounter = 0U; (loopcounter < (hcryp->Init.HeaderSize % 4U)); loopcounter++)
5165 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5166 hcryp->CrypHeaderCount++ ;
5171 hcryp->Instance->DINR = 0x0U;
5182 __HAL_CRYP_DISABLE(hcryp);
5185 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5186 hcryp->State = HAL_CRYP_STATE_READY;
5189 __HAL_UNLOCK(hcryp);
5193 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF));
5195 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
5201 if (hcryp->Size != 0U)
5203 if (hcryp->Size >= 16U)
5205 if ((hcryp->Size % 16U) == 0U)
5207 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), (uint32_t)(hcryp->…
5211 wordsize = (uint32_t)(hcryp->Size) + (16U - ((uint32_t)(hcryp->Size) % 16U)) ;
5214 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), ((uint16_t)wordsize / 4U),
5215 (uint32_t)(hcryp->pCrypOutBuffPtr));
5218 if ((hcryp->Size < 16U) != 0U)
5221 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size);
5236 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5237 hcryp->CrypInCount++;
5242 hcryp->Instance->DINR = 0U;
5252 __HAL_CRYP_DISABLE(hcryp);
5255 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5256 hcryp->State = HAL_CRYP_STATE_READY;
5259 __HAL_UNLOCK(hcryp);
5263 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF));
5265 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
5268 __HAL_UNLOCK(hcryp);
5271 hcryp->State = HAL_CRYP_STATE_READY;
5277 __HAL_UNLOCK(hcryp);
5280 hcryp->State = HAL_CRYP_STATE_READY;
5286 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK)
5294 hcryp->Phase = CRYP_PHASE_PROCESS;
5297 __HAL_CRYP_DISABLE(hcryp);
5300 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD);
5303 if (hcryp->Size != 0U)
5309 if ((hcryp->Size % 16U) == 0U)
5311 …CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), hcryp->Size / 4U, (uint32_t)(hcryp->pC…
5315 wordsize = (uint32_t)(hcryp->Size) + 16U - ((uint32_t)(hcryp->Size) % 16U) ;
5318 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (uint16_t)wordsize / 4U,
5319 (uint32_t)(hcryp->pCrypOutBuffPtr));
5325 __HAL_UNLOCK(hcryp);
5328 hcryp->State = HAL_CRYP_STATE_READY;
5341 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp)
5355 if (hcryp->Size == 0U)
5358 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI);
5361 __HAL_UNLOCK(hcryp);
5364 hcryp->State = HAL_CRYP_STATE_READY;
5367 else if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U)
5370 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5371 hcryp->CrypInCount++;
5372 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5373 hcryp->CrypInCount++;
5374 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5375 hcryp->CrypInCount++;
5376 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5377 hcryp->CrypInCount++;
5378 if (((hcryp->Size / 4U) == hcryp->CrypInCount) && ((hcryp->Size % 16U) == 0U))
5381 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI);
5386 hcryp->InCpltCallback(hcryp);
5389 HAL_CRYP_InCpltCallback(hcryp);
5392 if (hcryp->CrypOutCount < (hcryp->Size / 4U))
5397 temp[i] = hcryp->Instance->DOUT;
5400 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 4U))
5402 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i];
5403 hcryp->CrypOutCount++;
5406 if (((hcryp->Size / 4U) == hcryp->CrypOutCount) && ((hcryp->Size % 16U) == 0U))
5409 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_OUTI);
5412 hcryp->State = HAL_CRYP_STATE_READY;
5415 __HAL_CRYP_DISABLE(hcryp);
5418 __HAL_UNLOCK(hcryp);
5423 hcryp->OutCpltCallback(hcryp);
5426 HAL_CRYP_OutCpltCallback(hcryp);
5431 else if ((hcryp->Size % 16U) != 0U)
5438 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size);
5453 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5454 hcryp->CrypInCount++;
5459 hcryp->Instance->DIN = 0x0U;
5462 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI);
5464 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U)
5468 temp[i] = hcryp->Instance->DOUT;
5470 if (((hcryp->Size) / 4U) == 0U)
5472 for (i = 0U; i < ((uint32_t)(hcryp->Size) % 4U); i++)
5474 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i];
5475 hcryp->CrypOutCount++;
5479 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 4U))
5481 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i];
5482 hcryp->CrypOutCount++;
5486 if (hcryp->CrypOutCount >= (hcryp->Size / 4U))
5489 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_OUTI | CRYP_IT_INI);
5492 hcryp->State = HAL_CRYP_STATE_READY;
5495 __HAL_UNLOCK(hcryp);
5500 hcryp->OutCpltCallback(hcryp);
5503 HAL_CRYP_OutCpltCallback(hcryp);
5516 temp[i] = hcryp->Instance->DOUTR;
5519 while ((hcryp->CrypOutCount < ((hcryp->Size + 3U) / 4U)) && (i < 4U))
5521 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i];
5522 hcryp->CrypOutCount++;
5526 outcount = hcryp->CrypOutCount;
5528 if ((hcryp->CrypOutCount >= (hcryp->Size / 4U)) && ((outcount * 4U) >= hcryp->Size))
5531 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE);
5534 hcryp->State = HAL_CRYP_STATE_READY;
5537 __HAL_UNLOCK(hcryp);
5542 hcryp->OutCpltCallback(hcryp);
5545 HAL_CRYP_OutCpltCallback(hcryp);
5549 else if (((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U)
5552 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5553 hcryp->CrypInCount++;
5554 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5555 hcryp->CrypInCount++;
5556 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5557 hcryp->CrypInCount++;
5558 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5559 hcryp->CrypInCount++;
5560 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U))
5565 hcryp->InCpltCallback(hcryp);
5568 HAL_CRYP_InCpltCallback(hcryp);
5579 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size);
5594 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
5595 hcryp->CrypInCount++;
5600 hcryp->Instance->DINR = 0x0U;
5616 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout)
5627 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD)
5629 size_in_bytes = hcryp->Init.HeaderSize * 4U;
5633 size_in_bytes = hcryp->Init.HeaderSize;
5642 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER);
5645 __HAL_CRYP_ENABLE(hcryp);
5652 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5653 hcryp->CrypHeaderCount++ ;
5654 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5655 hcryp->CrypHeaderCount++ ;
5656 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5657 hcryp->CrypHeaderCount++ ;
5658 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5659 hcryp->CrypHeaderCount++ ;
5662 if (CRYP_WaitOnIFEMFlag(hcryp, Timeout) != HAL_OK)
5665 __HAL_CRYP_DISABLE(hcryp);
5668 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5669 hcryp->State = HAL_CRYP_STATE_READY;
5672 __HAL_UNLOCK(hcryp);
5682 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5683 hcryp->CrypHeaderCount++ ;
5684 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5685 hcryp->CrypHeaderCount++ ;
5686 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5687 hcryp->CrypHeaderCount++ ;
5688 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5689 hcryp->CrypHeaderCount++ ;
5692 if (CRYP_WaitOnIFEMFlag(hcryp, Timeout) != HAL_OK)
5695 __HAL_CRYP_DISABLE(hcryp);
5698 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5699 hcryp->State = HAL_CRYP_STATE_READY;
5702 __HAL_UNLOCK(hcryp);
5709 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5710 hcryp->CrypHeaderCount++ ;
5718 hcryp->Instance->DIN = 0x0U;
5725 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5726 tmp &= mask[(hcryp->Init.DataType * 2U) + (size_in_bytes % 4U)];
5727 hcryp->Instance->DIN = tmp;
5732 hcryp->Instance->DIN = 0x0U;
5737 if (CRYP_WaitOnIFEMFlag(hcryp, Timeout) != HAL_OK)
5740 __HAL_CRYP_DISABLE(hcryp);
5743 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5744 hcryp->State = HAL_CRYP_STATE_READY;
5747 __HAL_UNLOCK(hcryp);
5752 if (CRYP_WaitOnBUSYFlag(hcryp, Timeout) != HAL_OK)
5755 __HAL_CRYP_DISABLE(hcryp);
5758 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5759 hcryp->State = HAL_CRYP_STATE_READY;
5762 __HAL_UNLOCK(hcryp);
5768 if (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)
5771 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType);
5774 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER);
5777 __HAL_CRYP_ENABLE(hcryp);
5787 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5788 hcryp->CrypHeaderCount++ ;
5789 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5790 hcryp->CrypHeaderCount++ ;
5791 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5792 hcryp->CrypHeaderCount++ ;
5793 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5794 hcryp->CrypHeaderCount++ ;
5796 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK)
5799 __HAL_CRYP_DISABLE(hcryp);
5802 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5803 hcryp->State = HAL_CRYP_STATE_READY;
5806 __HAL_UNLOCK(hcryp);
5810 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
5819 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5820 hcryp->CrypHeaderCount++ ;
5821 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5822 hcryp->CrypHeaderCount++ ;
5823 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5824 hcryp->CrypHeaderCount++ ;
5825 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5826 hcryp->CrypHeaderCount++ ;
5828 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK)
5831 __HAL_CRYP_DISABLE(hcryp);
5834 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5835 hcryp->State = HAL_CRYP_STATE_READY;
5838 __HAL_UNLOCK(hcryp);
5842 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
5847 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5848 hcryp->CrypHeaderCount++ ;
5856 hcryp->Instance->DINR = 0x0U;
5863 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5864 tmp &= mask[(hcryp->Init.DataType * 2U) + (size_in_bytes % 4U)];
5865 hcryp->Instance->DINR = tmp;
5870 hcryp->Instance->DINR = 0x0U;
5875 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK)
5878 __HAL_CRYP_DISABLE(hcryp);
5881 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5882 hcryp->State = HAL_CRYP_STATE_READY;
5885 __HAL_UNLOCK(hcryp);
5889 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
5896 if (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)
5899 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType);
5902 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER);
5905 __HAL_CRYP_ENABLE(hcryp);
5919 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp)
5930 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD)
5932 headersize_in_bytes = hcryp->Init.HeaderSize * 4U;
5936 headersize_in_bytes = hcryp->Init.HeaderSize;
5945 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER);
5948 __HAL_CRYP_ENABLE(hcryp);
5955 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5956 hcryp->CrypHeaderCount++ ;
5957 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5958 hcryp->CrypHeaderCount++ ;
5959 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5960 hcryp->CrypHeaderCount++ ;
5961 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5962 hcryp->CrypHeaderCount++ ;
5972 __HAL_CRYP_DISABLE(hcryp);
5975 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
5976 hcryp->State = HAL_CRYP_STATE_READY;
5979 __HAL_UNLOCK(hcryp);
5983 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_IFEM));
5991 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5992 hcryp->CrypHeaderCount++ ;
5993 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5994 hcryp->CrypHeaderCount++ ;
5995 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5996 hcryp->CrypHeaderCount++ ;
5997 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
5998 hcryp->CrypHeaderCount++ ;
6008 __HAL_CRYP_DISABLE(hcryp);
6011 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6012 hcryp->State = HAL_CRYP_STATE_READY;
6015 __HAL_UNLOCK(hcryp);
6019 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_IFEM));
6024 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6025 hcryp->CrypHeaderCount++ ;
6033 hcryp->Instance->DIN = 0x0U;
6040 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6041 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)];
6042 hcryp->Instance->DIN = tmp;
6047 hcryp->Instance->DIN = 0x0U;
6059 __HAL_CRYP_DISABLE(hcryp);
6062 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6063 hcryp->State = HAL_CRYP_STATE_READY;
6066 __HAL_UNLOCK(hcryp);
6070 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_IFEM));
6080 __HAL_CRYP_DISABLE(hcryp);
6083 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6084 hcryp->State = HAL_CRYP_STATE_READY;
6087 __HAL_UNLOCK(hcryp);
6091 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY));
6095 if (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)
6098 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType);
6101 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER);
6104 __HAL_CRYP_ENABLE(hcryp);
6112 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6113 hcryp->CrypHeaderCount++ ;
6114 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6115 hcryp->CrypHeaderCount++ ;
6116 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6117 hcryp->CrypHeaderCount++ ;
6118 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6119 hcryp->CrypHeaderCount++ ;
6129 __HAL_CRYP_DISABLE(hcryp);
6132 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6133 hcryp->State = HAL_CRYP_STATE_READY;
6136 __HAL_UNLOCK(hcryp);
6140 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF));
6143 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
6152 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6153 hcryp->CrypHeaderCount++ ;
6154 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6155 hcryp->CrypHeaderCount++ ;
6156 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6157 hcryp->CrypHeaderCount++ ;
6158 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6159 hcryp->CrypHeaderCount++ ;
6169 __HAL_CRYP_DISABLE(hcryp);
6172 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6173 hcryp->State = HAL_CRYP_STATE_READY;
6176 __HAL_UNLOCK(hcryp);
6180 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF));
6183 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
6188 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6189 hcryp->CrypHeaderCount++ ;
6197 hcryp->Instance->DINR = 0x0U;
6204 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6205 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)];
6206 hcryp->Instance->DINR = tmp;
6211 hcryp->Instance->DINR = 0x0U;
6223 __HAL_CRYP_DISABLE(hcryp);
6226 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6227 hcryp->State = HAL_CRYP_STATE_READY;
6230 __HAL_UNLOCK(hcryp);
6234 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF));
6237 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
6244 if (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)
6247 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE, hcryp->Init.DataType);
6250 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER);
6253 __HAL_CRYP_ENABLE(hcryp);
6267 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp)
6280 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD)
6282 headersize_in_bytes = hcryp->Init.HeaderSize * 4U;
6286 headersize_in_bytes = hcryp->Init.HeaderSize;
6292 if (headersize_in_bytes <= ((uint32_t)(hcryp->CrypHeaderCount) * 4U))
6295 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI);
6298 __HAL_CRYP_DISABLE(hcryp);
6301 hcryp->Phase = CRYP_PHASE_PROCESS;
6304 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD);
6307 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI);
6310 __HAL_CRYP_ENABLE(hcryp);
6312 else if (((headersize_in_bytes / 4U) - (hcryp->CrypHeaderCount)) >= 4U)
6316 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6317 hcryp->CrypHeaderCount++ ;
6318 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6319 hcryp->CrypHeaderCount++ ;
6320 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6321 hcryp->CrypHeaderCount++ ;
6322 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6323 hcryp->CrypHeaderCount++ ;
6330 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6331 hcryp->CrypHeaderCount++ ;
6338 hcryp->Instance->DIN = 0x0U;
6340 hcryp->CrypHeaderCount++;
6346 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6347 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)];
6348 hcryp->Instance->DIN = tmp;
6350 hcryp->CrypHeaderCount++;
6354 hcryp->Instance->DIN = 0x0U;
6356 hcryp->CrypHeaderCount++;
6362 if (headersize_in_bytes <= ((uint32_t)(hcryp->CrypHeaderCount) * 4U))
6365 hcryp->Phase = CRYP_PHASE_PROCESS;
6368 if (hcryp->Init.Algorithm == CRYP_AES_GCM_GMAC)
6371 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_PAYLOAD);
6373 if (hcryp->Init.Algorithm == CRYP_AES_CCM)
6376 hcryp->CrypHeaderCount++;
6379 if (hcryp->Size == 0U)
6382 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE);
6385 hcryp->State = HAL_CRYP_STATE_READY;
6388 __HAL_UNLOCK(hcryp);
6390 else if (hcryp->Size >= 16U)
6392 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
6393 hcryp->CrypInCount++;
6394 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
6395 hcryp->CrypInCount++;
6396 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
6397 hcryp->CrypInCount++;
6398 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
6399 hcryp->CrypInCount++;
6401 if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U))
6406 hcryp->InCpltCallback(hcryp);
6409 HAL_CRYP_InCpltCallback(hcryp);
6420 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size);
6435 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
6436 hcryp->CrypInCount++;
6441 hcryp->Instance->DINR = 0x0U;
6446 else if (((headersize_in_bytes / 4U) - (hcryp->CrypHeaderCount)) >= 4U)
6449 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6450 hcryp->CrypHeaderCount++;
6451 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6452 hcryp->CrypHeaderCount++;
6453 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6454 hcryp->CrypHeaderCount++;
6455 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6456 hcryp->CrypHeaderCount++;
6463 hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6464 hcryp->CrypHeaderCount++ ;
6472 hcryp->Instance->DINR = 0x0U;
6474 hcryp->CrypHeaderCount++;
6480 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
6481 tmp &= mask[(hcryp->Init.DataType * 2U) + (headersize_in_bytes % 4U)];
6482 hcryp->Instance->DINR = tmp;
6484 hcryp->CrypHeaderCount++;
6488 hcryp->Instance->DINR = 0x0U;
6490 hcryp->CrypHeaderCount++;
6505 static void CRYP_Workaround(CRYP_HandleTypeDef *hcryp, uint32_t Timeout)
6518 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size);
6533 if (hcryp->Init.Algorithm == CRYP_AES_GCM)
6535 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_ENCRYPT)
6540 __HAL_CRYP_DISABLE(hcryp);
6543 hcryp->Instance->IV1RR = ((hcryp->Instance->CSGCMCCM7R) - 1U);
6544 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_AES_CTR);
6547 __HAL_CRYP_ENABLE(hcryp);
6553 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
6554 hcryp->CrypInCount++;
6559 hcryp->Instance->DIN = 0U;
6563 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK)
6566 __HAL_CRYP_DISABLE(hcryp);
6569 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6570 hcryp->State = HAL_CRYP_STATE_READY;
6573 __HAL_UNLOCK(hcryp);
6576 hcryp->ErrorCallback(hcryp);
6579 HAL_CRYP_ErrorCallback(hcryp);
6582 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U)
6587 intermediate_data[index] = hcryp->Instance->DOUT;
6590 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = intermediate_data[index];
6591 hcryp->CrypOutCount++;
6595 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_ENCRYPT)
6601 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_AES_GCM);
6604 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_GCM_CCMPH, CRYP_PHASE_FINAL);
6606 if ((hcryp->Instance->CR & CRYP_CR_DATATYPE) == CRYP_DATATYPE_32B)
6621 else if ((hcryp->Instance->CR & CRYP_CR_DATATYPE) == CRYP_DATATYPE_8B)
6636 else if ((hcryp->Instance->CR & CRYP_CR_DATATYPE) == CRYP_DATATYPE_16B)
6669 hcryp->Instance->DIN = intermediate_data[index];
6674 hcryp->Instance->DIN = 0x0U;
6678 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK)
6681 __HAL_CRYP_DISABLE(hcryp);
6684 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6685 hcryp->State = HAL_CRYP_STATE_READY;
6688 __HAL_UNLOCK(hcryp);
6691 hcryp->ErrorCallback(hcryp);
6694 HAL_CRYP_ErrorCallback(hcryp);
6698 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U)
6702 intermediate_data[index] = hcryp->Instance->DOUT;
6713 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_DECRYPT)
6715 iv1temp = hcryp->Instance->CSGCMCCM7R;
6718 __HAL_CRYP_DISABLE(hcryp);
6720 temp[0] = hcryp->Instance->CSGCMCCM0R;
6721 temp[1] = hcryp->Instance->CSGCMCCM1R;
6722 temp[2] = hcryp->Instance->CSGCMCCM2R;
6723 temp[3] = hcryp->Instance->CSGCMCCM3R;
6725 hcryp->Instance->IV1RR = iv1temp;
6728 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_AES_CTR);
6731 __HAL_CRYP_ENABLE(hcryp);
6737 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
6738 hcryp->CrypInCount++;
6743 hcryp->Instance->DIN = 0U;
6747 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK)
6750 __HAL_CRYP_DISABLE(hcryp);
6753 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6754 hcryp->State = HAL_CRYP_STATE_READY;
6757 __HAL_UNLOCK(hcryp);
6760 hcryp->ErrorCallback(hcryp);
6763 HAL_CRYP_ErrorCallback(hcryp);
6767 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U)
6772 intermediate_data[index] = hcryp->Instance->DOUT;
6775 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = intermediate_data[index];
6776 hcryp->CrypOutCount++;
6780 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_DECRYPT)
6782 temp2[0] = hcryp->Instance->CSGCMCCM0R;
6783 temp2[1] = hcryp->Instance->CSGCMCCM1R;
6784 temp2[2] = hcryp->Instance->CSGCMCCM2R;
6785 temp2[3] = hcryp->Instance->CSGCMCCM3R;
6788 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_AES_CCM);
6791 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_GCM_CCMPH, CRYP_PHASE_HEADER);
6818 hcryp->Instance->DIN = intermediate_data[index] ;
6822 if (CRYP_WaitOnBUSYFlag(hcryp, Timeout) != HAL_OK)
6825 __HAL_CRYP_DISABLE(hcryp);
6828 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6829 hcryp->State = HAL_CRYP_STATE_READY;
6832 __HAL_UNLOCK(hcryp);
6835 hcryp->ErrorCallback(hcryp);
6838 HAL_CRYP_ErrorCallback(hcryp);
6845 __HAL_UNLOCK(hcryp);
6852 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT)
6855 MODIFY_REG(hcryp->Instance->CR, AES_CR_CHMOD, CRYP_AES_CTR);
6861 hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
6862 hcryp->CrypInCount++;
6867 hcryp->Instance->DINR = 0U;
6871 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK)
6873 hcryp->State = HAL_CRYP_STATE_READY;
6874 __HAL_UNLOCK(hcryp);
6877 hcryp->ErrorCallback(hcryp);
6880 HAL_CRYP_ErrorCallback(hcryp);
6885 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
6890 intermediate_data[index] = hcryp->Instance->DOUTR;
6893 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = intermediate_data[index];
6894 hcryp->CrypOutCount++;
6897 if ((hcryp->Instance->CR & AES_CR_MODE) == CRYP_OPERATINGMODE_ENCRYPT)
6900 MODIFY_REG(hcryp->Instance->CR, AES_CR_CHMOD, CRYP_AES_GCM_GMAC);
6903 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, CRYP_PHASE_FINAL);
6905 if ((hcryp->Instance->CR & AES_CR_DATATYPE) == CRYP_DATATYPE_32B)
6920 else if ((hcryp->Instance->CR & AES_CR_DATATYPE) == CRYP_DATATYPE_8B)
6935 else if ((hcryp->Instance->CR & AES_CR_DATATYPE) == CRYP_DATATYPE_16B)
6969 hcryp->Instance->DINR = intermediate_data[index];
6974 hcryp->Instance->DINR = 0U;
6978 if (CRYP_WaitOnCCFlag(hcryp, Timeout) != HAL_OK)
6981 __HAL_CRYP_DISABLE(hcryp);
6984 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT;
6985 hcryp->State = HAL_CRYP_STATE_READY;
6988 __HAL_UNLOCK(hcryp);
6991 hcryp->ErrorCallback(hcryp);
6994 HAL_CRYP_ErrorCallback(hcryp);
6998 __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_CCF_CLEAR);
7002 intermediate_data[index] = hcryp->Instance->DOUTR;
7017 static HAL_StatusTypeDef CRYP_WaitOnIFEMFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout)
7024 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_IFEM))
7045 static HAL_StatusTypeDef CRYP_WaitOnBUSYFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout)
7052 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY))
7074 static HAL_StatusTypeDef CRYP_WaitOnOFNEFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout)
7081 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_OFNE))
7104 static HAL_StatusTypeDef CRYP_WaitOnCCFlag(CRYP_HandleTypeDef *hcryp, uint32_t Timeout)
7111 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, AES_SR_CCF))