Lines Matching refs:hcryp

338 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_…
342 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize);
343 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp);
344 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
345 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp);
346 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp);
347 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp);
349 static void CRYP_Workaround(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
351 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
352 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp);
353 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
354 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
355 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp);
356 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp);
358 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
359 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
360 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp);
361 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp);
362 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp);
363 static void CRYP_TDES_IT(CRYP_HandleTypeDef *hcryp);
364 static HAL_StatusTypeDef CRYP_WaitOnIFEMFlag(const CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
365 static HAL_StatusTypeDef CRYP_WaitOnBUSYFlag(const CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
366 static HAL_StatusTypeDef CRYP_WaitOnOFNEFlag(const CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
367 static HAL_StatusTypeDef CRYP_TDES_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout);
414 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_Init() argument
417 if (hcryp == NULL) in HAL_CRYP_Init()
423 assert_param(IS_CRYP_KEYSIZE(hcryp->Init.KeySize)); in HAL_CRYP_Init()
424 assert_param(IS_CRYP_DATATYPE(hcryp->Init.DataType)); in HAL_CRYP_Init()
425 assert_param(IS_CRYP_ALGORITHM(hcryp->Init.Algorithm)); in HAL_CRYP_Init()
426 assert_param(IS_CRYP_INIT(hcryp->Init.KeyIVConfigSkip)); in HAL_CRYP_Init()
429 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
432 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
434 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_Init()
435 hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_Init()
436 hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_Init()
438 if (hcryp->MspInitCallback == NULL) in HAL_CRYP_Init()
440 hcryp->MspInitCallback = HAL_CRYP_MspInit; /* Legacy weak MspInit */ in HAL_CRYP_Init()
444 hcryp->MspInitCallback(hcryp); in HAL_CRYP_Init()
447 if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_Init()
450 hcryp->Lock = HAL_UNLOCKED; in HAL_CRYP_Init()
453 HAL_CRYP_MspInit(hcryp); in HAL_CRYP_Init()
458 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_DATATYPE | CRYP_CR_KEYSIZE | CRYP_CR_ALGOMODE, in HAL_CRYP_Init()
459 hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_Init()
462 hcryp->Version = HAL_GetREVID(); in HAL_CRYP_Init()
465 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_Init()
468 hcryp->KeyIVConfig = 0U; in HAL_CRYP_Init()
471 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Init()
474 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_Init()
486 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_DeInit() argument
489 if (hcryp == NULL) in HAL_CRYP_DeInit()
495 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_DeInit()
498 hcryp->CrypInCount = 0; in HAL_CRYP_DeInit()
499 hcryp->CrypOutCount = 0; in HAL_CRYP_DeInit()
500 hcryp->CrypHeaderCount = 0; in HAL_CRYP_DeInit()
503 __HAL_CRYP_DISABLE(hcryp); in HAL_CRYP_DeInit()
506 if (hcryp->MspDeInitCallback == NULL) in HAL_CRYP_DeInit()
508 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; /* Legacy weak MspDeInit */ in HAL_CRYP_DeInit()
511 hcryp->MspDeInitCallback(hcryp); in HAL_CRYP_DeInit()
515 HAL_CRYP_MspDeInit(hcryp); in HAL_CRYP_DeInit()
519 hcryp->State = HAL_CRYP_STATE_RESET; in HAL_CRYP_DeInit()
522 __HAL_UNLOCK(hcryp); in HAL_CRYP_DeInit()
536 HAL_StatusTypeDef HAL_CRYP_SetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_SetConfig() argument
539 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_SetConfig()
549 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_SetConfig()
552 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_SetConfig()
555 __HAL_LOCK(hcryp); in HAL_CRYP_SetConfig()
558 hcryp->Init.DataType = pConf->DataType; in HAL_CRYP_SetConfig()
559 hcryp->Init.pKey = pConf->pKey; in HAL_CRYP_SetConfig()
560 hcryp->Init.Algorithm = pConf->Algorithm; in HAL_CRYP_SetConfig()
561 hcryp->Init.KeySize = pConf->KeySize; in HAL_CRYP_SetConfig()
562 hcryp->Init.pInitVect = pConf->pInitVect; in HAL_CRYP_SetConfig()
563 hcryp->Init.Header = pConf->Header; in HAL_CRYP_SetConfig()
564 hcryp->Init.HeaderSize = pConf->HeaderSize; in HAL_CRYP_SetConfig()
565 hcryp->Init.B0 = pConf->B0; in HAL_CRYP_SetConfig()
566 hcryp->Init.DataWidthUnit = pConf->DataWidthUnit; in HAL_CRYP_SetConfig()
567 hcryp->Init.HeaderWidthUnit = pConf->HeaderWidthUnit; in HAL_CRYP_SetConfig()
568 hcryp->Init.KeyIVConfigSkip = pConf->KeyIVConfigSkip; in HAL_CRYP_SetConfig()
571 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_DATATYPE | CRYP_CR_KEYSIZE | CRYP_CR_ALGOMODE, in HAL_CRYP_SetConfig()
572 hcryp->Init.DataType | hcryp->Init.KeySize | hcryp->Init.Algorithm); in HAL_CRYP_SetConfig()
575 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
578 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE; in HAL_CRYP_SetConfig()
581 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_SetConfig()
584 hcryp->Phase = CRYP_PHASE_READY; in HAL_CRYP_SetConfig()
592 __HAL_UNLOCK(hcryp); in HAL_CRYP_SetConfig()
595 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_SetConfig()
607 HAL_StatusTypeDef HAL_CRYP_GetConfig(CRYP_HandleTypeDef *hcryp, CRYP_ConfigTypeDef *pConf) in HAL_CRYP_GetConfig() argument
610 if ((hcryp == NULL) || (pConf == NULL)) in HAL_CRYP_GetConfig()
615 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_GetConfig()
618 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_GetConfig()
621 __HAL_LOCK(hcryp); in HAL_CRYP_GetConfig()
624 pConf->DataType = hcryp->Init.DataType; in HAL_CRYP_GetConfig()
625 pConf->pKey = hcryp->Init.pKey; in HAL_CRYP_GetConfig()
626 pConf->Algorithm = hcryp->Init.Algorithm; in HAL_CRYP_GetConfig()
627 pConf->KeySize = hcryp->Init.KeySize ; in HAL_CRYP_GetConfig()
628 pConf->pInitVect = hcryp->Init.pInitVect; in HAL_CRYP_GetConfig()
629 pConf->Header = hcryp->Init.Header ; in HAL_CRYP_GetConfig()
630 pConf->HeaderSize = hcryp->Init.HeaderSize; in HAL_CRYP_GetConfig()
631 pConf->B0 = hcryp->Init.B0; in HAL_CRYP_GetConfig()
632 pConf->DataWidthUnit = hcryp->Init.DataWidthUnit; in HAL_CRYP_GetConfig()
633 pConf->HeaderWidthUnit = hcryp->Init.HeaderWidthUnit; in HAL_CRYP_GetConfig()
634 pConf->KeyIVConfigSkip = hcryp->Init.KeyIVConfigSkip; in HAL_CRYP_GetConfig()
637 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
640 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_GetConfig()
648 __HAL_UNLOCK(hcryp); in HAL_CRYP_GetConfig()
651 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_GetConfig()
661 __weak void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspInit() argument
664 UNUSED(hcryp); in HAL_CRYP_MspInit()
677 __weak void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_MspDeInit() argument
680 UNUSED(hcryp); in HAL_CRYP_MspDeInit()
702 HAL_StatusTypeDef HAL_CRYP_RegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef C… in HAL_CRYP_RegisterCallback() argument
710 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
715 __HAL_LOCK(hcryp); in HAL_CRYP_RegisterCallback()
717 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_RegisterCallback()
722 hcryp->InCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
726 hcryp->OutCpltCallback = pCallback; in HAL_CRYP_RegisterCallback()
730 hcryp->ErrorCallback = pCallback; in HAL_CRYP_RegisterCallback()
734 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
738 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
743 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
749 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_RegisterCallback()
754 hcryp->MspInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
758 hcryp->MspDeInitCallback = pCallback; in HAL_CRYP_RegisterCallback()
763 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
772 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_RegisterCallback()
778 __HAL_UNLOCK(hcryp); in HAL_CRYP_RegisterCallback()
796 HAL_StatusTypeDef HAL_CRYP_UnRegisterCallback(CRYP_HandleTypeDef *hcryp, HAL_CRYP_CallbackIDTypeDef… in HAL_CRYP_UnRegisterCallback() argument
801 __HAL_LOCK(hcryp); in HAL_CRYP_UnRegisterCallback()
803 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_UnRegisterCallback()
808 hcryp->InCpltCallback = HAL_CRYP_InCpltCallback; /* Legacy weak InCpltCallback */ in HAL_CRYP_UnRegisterCallback()
812hcryp->OutCpltCallback = HAL_CRYP_OutCpltCallback; /* Legacy weak OutCpltCallback */ in HAL_CRYP_UnRegisterCallback()
816hcryp->ErrorCallback = HAL_CRYP_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_CRYP_UnRegisterCallback()
820 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
824 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
829 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
835 else if (hcryp->State == HAL_CRYP_STATE_RESET) in HAL_CRYP_UnRegisterCallback()
840 hcryp->MspInitCallback = HAL_CRYP_MspInit; in HAL_CRYP_UnRegisterCallback()
844 hcryp->MspDeInitCallback = HAL_CRYP_MspDeInit; in HAL_CRYP_UnRegisterCallback()
849 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK; in HAL_CRYP_UnRegisterCallback()
858 hcryp->ErrorCode |= HAL_CRYP_ERROR_INVALID_CALLBACK;; in HAL_CRYP_UnRegisterCallback()
864 __HAL_UNLOCK(hcryp); in HAL_CRYP_UnRegisterCallback()
914 HAL_StatusTypeDef HAL_CRYP_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Encrypt() argument
920 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt()
923 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt()
926 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt()
929 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt()
930 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt()
931 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt()
932 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt()
935 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt()
937 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt()
941 hcryp->Size = Size; in HAL_CRYP_Encrypt()
945 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt()
948 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Encrypt()
958 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Encrypt()
959 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Encrypt()
960 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt()
962 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Encrypt()
963 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Encrypt()
964 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Encrypt()
965 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Encrypt()
969 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt()
971 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt()
972 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Encrypt()
976 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Encrypt()
979 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt()
982 status = CRYP_TDES_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
990 status = CRYP_AES_Encrypt(hcryp, Timeout); in HAL_CRYP_Encrypt()
996 status = CRYP_AESGCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1002 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Encrypt()
1006 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt()
1014 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Encrypt()
1017 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1023 __HAL_UNLOCK(hcryp); in HAL_CRYP_Encrypt()
1026 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt()
1044 HAL_StatusTypeDef HAL_CRYP_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, uint3… in HAL_CRYP_Decrypt() argument
1050 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt()
1053 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt()
1056 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt()
1059 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt()
1060 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt()
1061 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt()
1062 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt()
1065 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt()
1067 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt()
1071 hcryp->Size = Size; in HAL_CRYP_Decrypt()
1075 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt()
1078 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Decrypt()
1088 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Decrypt()
1089 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Decrypt()
1090 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt()
1092 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Decrypt()
1093 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Decrypt()
1094 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Decrypt()
1095 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Decrypt()
1099 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt()
1101 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Decrypt()
1102 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Decrypt()
1106 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Decrypt()
1109 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Decrypt()
1112 status = CRYP_TDES_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1121 status = CRYP_AES_Decrypt(hcryp, Timeout); in HAL_CRYP_Decrypt()
1127 status = CRYP_AESGCM_Process(hcryp, Timeout) ; in HAL_CRYP_Decrypt()
1133 status = CRYP_AESCCM_Process(hcryp, Timeout); in HAL_CRYP_Decrypt()
1137 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt()
1145 hcryp->State = HAL_CRYP_STATE_READY; in HAL_CRYP_Decrypt()
1148 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1154 __HAL_UNLOCK(hcryp); in HAL_CRYP_Decrypt()
1157 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt()
1174 HAL_StatusTypeDef HAL_CRYP_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Encrypt_IT() argument
1179 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_IT()
1182 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_IT()
1185 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_IT()
1188 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_IT()
1189 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_IT()
1190 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_IT()
1191 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_IT()
1194 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_IT()
1196 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_IT()
1200 hcryp->Size = Size; in HAL_CRYP_Encrypt_IT()
1204 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_IT()
1207 algo = (hcryp->Instance->CR & CRYP_CR_ALGOMODE); in HAL_CRYP_Encrypt_IT()
1217 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Encrypt_IT()
1218 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Encrypt_IT()
1219 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt_IT()
1221 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Encrypt_IT()
1222 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Encrypt_IT()
1223 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Encrypt_IT()
1224 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Encrypt_IT()
1227 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt_IT()
1229 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_IT()
1230 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Encrypt_IT()
1234 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Encrypt_IT()
1237 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_IT()
1240 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in HAL_CRYP_Encrypt_IT()
1243 __HAL_CRYP_ENABLE(hcryp); in HAL_CRYP_Encrypt_IT()
1252 status = CRYP_AES_Encrypt_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1257 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Encrypt_IT()
1262 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Encrypt_IT()
1266 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_IT()
1274 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_IT()
1291 HAL_StatusTypeDef HAL_CRYP_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, ui… in HAL_CRYP_Decrypt_IT() argument
1296 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_IT()
1299 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_IT()
1302 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_IT()
1305 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_IT()
1306 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_IT()
1307 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_IT()
1308 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_IT()
1311 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_IT()
1313 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_IT()
1317 hcryp->Size = Size; in HAL_CRYP_Decrypt_IT()
1321 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_IT()
1324 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Decrypt_IT()
1334 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Decrypt_IT()
1335 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Decrypt_IT()
1336 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt_IT()
1338 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Decrypt_IT()
1339 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Decrypt_IT()
1340 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Decrypt_IT()
1341 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Decrypt_IT()
1345 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt_IT()
1347 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Decrypt_IT()
1348 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Decrypt_IT()
1351 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Decrypt_IT()
1354 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Decrypt_IT()
1357 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in HAL_CRYP_Decrypt_IT()
1360 __HAL_CRYP_ENABLE(hcryp); in HAL_CRYP_Decrypt_IT()
1369 status = CRYP_AES_Decrypt_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1375 status = CRYP_AESGCM_Process_IT(hcryp) ; in HAL_CRYP_Decrypt_IT()
1381 status = CRYP_AESCCM_Process_IT(hcryp); in HAL_CRYP_Decrypt_IT()
1385 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_IT()
1393 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_IT()
1410 HAL_StatusTypeDef HAL_CRYP_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Encrypt_DMA() argument
1416 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Encrypt_DMA()
1419 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Encrypt_DMA()
1422 __HAL_LOCK(hcryp); in HAL_CRYP_Encrypt_DMA()
1425 hcryp->CrypInCount = 0U; in HAL_CRYP_Encrypt_DMA()
1426 hcryp->CrypOutCount = 0U; in HAL_CRYP_Encrypt_DMA()
1427 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Encrypt_DMA()
1428 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Encrypt_DMA()
1431 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Encrypt_DMA()
1433 hcryp->Size = Size * 4U; in HAL_CRYP_Encrypt_DMA()
1437 hcryp->Size = Size; in HAL_CRYP_Encrypt_DMA()
1441 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_ENCRYPT); in HAL_CRYP_Encrypt_DMA()
1444 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Encrypt_DMA()
1454 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Encrypt_DMA()
1455 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Encrypt_DMA()
1456 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt_DMA()
1458 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Encrypt_DMA()
1459 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Encrypt_DMA()
1460 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Encrypt_DMA()
1461 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Encrypt_DMA()
1465 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Encrypt_DMA()
1467 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_DMA()
1468 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Encrypt_DMA()
1472 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Encrypt_DMA()
1475 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1478 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), in HAL_CRYP_Encrypt_DMA()
1479 (uint32_t)(hcryp->pCrypOutBuffPtr)); in HAL_CRYP_Encrypt_DMA()
1487 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in HAL_CRYP_Encrypt_DMA()
1489 if (hcryp->KeyIVConfig == 1U) in HAL_CRYP_Encrypt_DMA()
1500 hcryp->KeyIVConfig = 1U; in HAL_CRYP_Encrypt_DMA()
1507 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in HAL_CRYP_Encrypt_DMA()
1510 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in HAL_CRYP_Encrypt_DMA()
1512 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Encrypt_DMA()
1513 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in HAL_CRYP_Encrypt_DMA()
1514 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in HAL_CRYP_Encrypt_DMA()
1515 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in HAL_CRYP_Encrypt_DMA()
1520 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Encrypt_DMA()
1523 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), in HAL_CRYP_Encrypt_DMA()
1524 (uint32_t)(hcryp->pCrypOutBuffPtr)); in HAL_CRYP_Encrypt_DMA()
1530 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Encrypt_DMA()
1536 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Encrypt_DMA()
1540 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Encrypt_DMA()
1548 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Encrypt_DMA()
1565 HAL_StatusTypeDef HAL_CRYP_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Input, uint16_t Size, u… in HAL_CRYP_Decrypt_DMA() argument
1570 if (hcryp->State == HAL_CRYP_STATE_READY) in HAL_CRYP_Decrypt_DMA()
1573 hcryp->State = HAL_CRYP_STATE_BUSY; in HAL_CRYP_Decrypt_DMA()
1576 __HAL_LOCK(hcryp); in HAL_CRYP_Decrypt_DMA()
1579 hcryp->CrypInCount = 0U; in HAL_CRYP_Decrypt_DMA()
1580 hcryp->CrypOutCount = 0U; in HAL_CRYP_Decrypt_DMA()
1581 hcryp->pCrypInBuffPtr = Input; in HAL_CRYP_Decrypt_DMA()
1582 hcryp->pCrypOutBuffPtr = Output; in HAL_CRYP_Decrypt_DMA()
1585 if (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) in HAL_CRYP_Decrypt_DMA()
1587 hcryp->Size = Size * 4U; in HAL_CRYP_Decrypt_DMA()
1591 hcryp->Size = Size; in HAL_CRYP_Decrypt_DMA()
1595 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGODIR, CRYP_OPERATINGMODE_DECRYPT); in HAL_CRYP_Decrypt_DMA()
1598 algo = hcryp->Instance->CR & CRYP_CR_ALGOMODE; in HAL_CRYP_Decrypt_DMA()
1608 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in HAL_CRYP_Decrypt_DMA()
1609 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in HAL_CRYP_Decrypt_DMA()
1610 if ((hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt_DMA()
1612 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in HAL_CRYP_Decrypt_DMA()
1613 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in HAL_CRYP_Decrypt_DMA()
1614 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in HAL_CRYP_Decrypt_DMA()
1615 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in HAL_CRYP_Decrypt_DMA()
1619 if ((hcryp->Init.Algorithm == CRYP_DES_CBC) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_Decrypt_DMA()
1621 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in HAL_CRYP_Decrypt_DMA()
1622 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in HAL_CRYP_Decrypt_DMA()
1626 HAL_CRYP_FIFO_FLUSH(hcryp); in HAL_CRYP_Decrypt_DMA()
1629 hcryp->Phase = CRYP_PHASE_PROCESS; in HAL_CRYP_Decrypt_DMA()
1632 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), in HAL_CRYP_Decrypt_DMA()
1633 (uint32_t)(hcryp->pCrypOutBuffPtr)); in HAL_CRYP_Decrypt_DMA()
1641 status = CRYP_AES_Decrypt_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1647 status = CRYP_AESGCM_Process_DMA(hcryp) ; in HAL_CRYP_Decrypt_DMA()
1654 status = CRYP_AESCCM_Process_DMA(hcryp); in HAL_CRYP_Decrypt_DMA()
1658 hcryp->ErrorCode |= HAL_CRYP_ERROR_NOT_SUPPORTED; in HAL_CRYP_Decrypt_DMA()
1666 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in HAL_CRYP_Decrypt_DMA()
1702 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_IRQHandler() argument
1704 uint32_t itstatus = hcryp->Instance->MISR; in HAL_CRYP_IRQHandler()
1708 if ((hcryp->Init.Algorithm == CRYP_DES_ECB) || (hcryp->Init.Algorithm == CRYP_DES_CBC) || in HAL_CRYP_IRQHandler()
1709 (hcryp->Init.Algorithm == CRYP_TDES_ECB) || (hcryp->Init.Algorithm == CRYP_TDES_CBC)) in HAL_CRYP_IRQHandler()
1711 CRYP_TDES_IT(hcryp); /* DES or TDES*/ in HAL_CRYP_IRQHandler()
1713 else if ((hcryp->Init.Algorithm == CRYP_AES_ECB) || (hcryp->Init.Algorithm == CRYP_AES_CBC) || in HAL_CRYP_IRQHandler()
1714 (hcryp->Init.Algorithm == CRYP_AES_CTR)) in HAL_CRYP_IRQHandler()
1716 CRYP_AES_IT(hcryp); /*AES*/ in HAL_CRYP_IRQHandler()
1719 …else if ((hcryp->Init.Algorithm == CRYP_AES_GCM) || (hcryp->Init.Algorithm == CRYP_CR_ALGOMODE_AES… in HAL_CRYP_IRQHandler()
1722 if ((hcryp->Instance->CR & CRYP_PHASE_HEADER) == CRYP_PHASE_HEADER) in HAL_CRYP_IRQHandler()
1724 CRYP_GCMCCM_SetHeaderPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
1728 CRYP_GCMCCM_SetPayloadPhase_IT(hcryp); in HAL_CRYP_IRQHandler()
1744 uint32_t HAL_CRYP_GetError(const CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetError() argument
1746 return hcryp->ErrorCode; in HAL_CRYP_GetError()
1755 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(const CRYP_HandleTypeDef *hcryp) in HAL_CRYP_GetState() argument
1757 return hcryp->State; in HAL_CRYP_GetState()
1766 __weak void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_InCpltCallback() argument
1769 UNUSED(hcryp); in HAL_CRYP_InCpltCallback()
1782 __weak void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_OutCpltCallback() argument
1785 UNUSED(hcryp); in HAL_CRYP_OutCpltCallback()
1798 __weak void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp) in HAL_CRYP_ErrorCallback() argument
1801 UNUSED(hcryp); in HAL_CRYP_ErrorCallback()
1826 static HAL_StatusTypeDef CRYP_TDES_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_TDES_Process() argument
1834 __HAL_CRYP_ENABLE(hcryp); in CRYP_TDES_Process()
1836 outcount = hcryp->CrypOutCount; in CRYP_TDES_Process()
1839 while ((hcryp->CrypInCount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_TDES_Process()
1842 incount = hcryp->CrypInCount; in CRYP_TDES_Process()
1844 if (((hcryp->Instance->SR & CRYP_FLAG_IFNF) != 0x0U) && (incount < (hcryp->Size / 4U))) in CRYP_TDES_Process()
1847 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_TDES_Process()
1848 hcryp->CrypInCount++; in CRYP_TDES_Process()
1849 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_TDES_Process()
1850 hcryp->CrypInCount++; in CRYP_TDES_Process()
1854 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK) in CRYP_TDES_Process()
1857 __HAL_CRYP_DISABLE(hcryp); in CRYP_TDES_Process()
1860 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_TDES_Process()
1861 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_TDES_Process()
1864 __HAL_UNLOCK(hcryp); in CRYP_TDES_Process()
1867 hcryp->ErrorCallback(hcryp); in CRYP_TDES_Process()
1870 HAL_CRYP_ErrorCallback(hcryp); in CRYP_TDES_Process()
1875 outcount = hcryp->CrypOutCount; in CRYP_TDES_Process()
1877 if (((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) && (outcount < (hcryp->Size / 4U))) in CRYP_TDES_Process()
1881 temp = hcryp->Instance->DOUT; in CRYP_TDES_Process()
1882 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp; in CRYP_TDES_Process()
1883 hcryp->CrypOutCount++; in CRYP_TDES_Process()
1884 temp = hcryp->Instance->DOUT; in CRYP_TDES_Process()
1885 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp; in CRYP_TDES_Process()
1886 hcryp->CrypOutCount++; in CRYP_TDES_Process()
1889 outcount = hcryp->CrypOutCount; in CRYP_TDES_Process()
1892 __HAL_CRYP_DISABLE(hcryp); in CRYP_TDES_Process()
1894 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_TDES_Process()
1908 static void CRYP_TDES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_TDES_IT() argument
1912 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_TDES_IT()
1914 if (__HAL_CRYP_GET_IT(hcryp, CRYP_IT_INI) != 0x0U) in CRYP_TDES_IT()
1916 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_FLAG_INRIS) != 0x0U) in CRYP_TDES_IT()
1919 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_TDES_IT()
1920 hcryp->CrypInCount++; in CRYP_TDES_IT()
1921 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_TDES_IT()
1922 hcryp->CrypInCount++; in CRYP_TDES_IT()
1924 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_TDES_IT()
1927 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI); in CRYP_TDES_IT()
1932 hcryp->InCpltCallback(hcryp); in CRYP_TDES_IT()
1935 HAL_CRYP_InCpltCallback(hcryp); in CRYP_TDES_IT()
1941 if (__HAL_CRYP_GET_IT(hcryp, CRYP_IT_OUTI) != 0x0U) in CRYP_TDES_IT()
1943 if (__HAL_CRYP_GET_FLAG(hcryp, CRYP_FLAG_OUTRIS) != 0x0U) in CRYP_TDES_IT()
1947 temp = hcryp->Instance->DOUT; in CRYP_TDES_IT()
1948 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp; in CRYP_TDES_IT()
1949 hcryp->CrypOutCount++; in CRYP_TDES_IT()
1950 temp = hcryp->Instance->DOUT; in CRYP_TDES_IT()
1951 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp; in CRYP_TDES_IT()
1952 hcryp->CrypOutCount++; in CRYP_TDES_IT()
1953 if (hcryp->CrypOutCount == (hcryp->Size / 4U)) in CRYP_TDES_IT()
1956 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_OUTI); in CRYP_TDES_IT()
1959 __HAL_CRYP_DISABLE(hcryp); in CRYP_TDES_IT()
1962 __HAL_UNLOCK(hcryp); in CRYP_TDES_IT()
1965 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_TDES_IT()
1970 hcryp->OutCpltCallback(hcryp); in CRYP_TDES_IT()
1973 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_TDES_IT()
1983 __HAL_UNLOCK(hcryp); in CRYP_TDES_IT()
1985 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_TDES_IT()
1988 hcryp->ErrorCallback(hcryp); in CRYP_TDES_IT()
1991 HAL_CRYP_ErrorCallback(hcryp); in CRYP_TDES_IT()
2002 static HAL_StatusTypeDef CRYP_AES_Encrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Encrypt() argument
2007 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt()
2009 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt()
2020 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt()
2027 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt()
2029 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt()
2032 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt()
2033 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Encrypt()
2034 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Encrypt()
2035 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Encrypt()
2040 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt()
2043 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt()
2045 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2047 while ((hcryp->CrypInCount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Encrypt()
2050 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Encrypt()
2052 outcount = hcryp->CrypOutCount; in CRYP_AES_Encrypt()
2056 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Encrypt()
2059 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt()
2071 static HAL_StatusTypeDef CRYP_AES_Encrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Encrypt_IT() argument
2075 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Encrypt_IT()
2077 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Encrypt_IT()
2088 hcryp->KeyIVConfig = 1U; in CRYP_AES_Encrypt_IT()
2095 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Encrypt_IT()
2097 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Encrypt_IT()
2100 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Encrypt_IT()
2101 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1U); in CRYP_AES_Encrypt_IT()
2102 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2U); in CRYP_AES_Encrypt_IT()
2103 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3U); in CRYP_AES_Encrypt_IT()
2108 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Encrypt_IT()
2110 if (hcryp->Size != 0U) in CRYP_AES_Encrypt_IT()
2113 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in CRYP_AES_Encrypt_IT()
2116 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Encrypt_IT()
2121 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Encrypt_IT()
2124 __HAL_UNLOCK(hcryp); in CRYP_AES_Encrypt_IT()
2137 static HAL_StatusTypeDef CRYP_AES_Decrypt(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_Decrypt() argument
2142 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt()
2144 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt()
2155 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt()
2162 if (hcryp->Init.Algorithm != CRYP_AES_CTR) /*ECB or CBC*/ in CRYP_AES_Decrypt()
2165 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_CR_ALGOMODE_AES_KEY); in CRYP_AES_Decrypt()
2168 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2171 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2174 if (CRYP_WaitOnBUSYFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_Decrypt()
2177 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2180 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt()
2181 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2184 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt()
2188 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, hcryp->Init.Algorithm); in CRYP_AES_Decrypt()
2193 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt()
2197 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt()
2200 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt()
2201 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Decrypt()
2202 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Decrypt()
2203 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Decrypt()
2208 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt()
2211 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt()
2214 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2216 while ((hcryp->CrypInCount < (hcryp->Size / 4U)) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_Decrypt()
2219 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AES_Decrypt()
2221 outcount = hcryp->CrypOutCount; in CRYP_AES_Decrypt()
2225 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt()
2228 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt()
2239 static HAL_StatusTypeDef CRYP_AES_Decrypt_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_IT() argument
2244 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_IT()
2246 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_IT()
2257 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_IT()
2264 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_IT()
2267 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_CR_ALGOMODE_AES_KEY); in CRYP_AES_Decrypt_IT()
2270 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2273 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2283 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_IT()
2284 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2287 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2291 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY)); in CRYP_AES_Decrypt_IT()
2294 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, hcryp->Init.Algorithm); in CRYP_AES_Decrypt_IT()
2299 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_IT()
2303 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_IT()
2306 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_IT()
2307 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Decrypt_IT()
2308 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Decrypt_IT()
2309 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Decrypt_IT()
2314 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_IT()
2315 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_IT()
2318 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in CRYP_AES_Decrypt_IT()
2321 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_IT()
2326 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_IT()
2329 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_IT()
2340 static HAL_StatusTypeDef CRYP_AES_Decrypt_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AES_Decrypt_DMA() argument
2345 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AES_Decrypt_DMA()
2347 if (hcryp->KeyIVConfig == 1U) in CRYP_AES_Decrypt_DMA()
2358 hcryp->KeyIVConfig = 1U; in CRYP_AES_Decrypt_DMA()
2365 if (hcryp->Init.Algorithm != CRYP_AES_CTR) in CRYP_AES_Decrypt_DMA()
2368 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_CR_ALGOMODE_AES_KEY); in CRYP_AES_Decrypt_DMA()
2371 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2374 __HAL_CRYP_ENABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2384 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_Decrypt_DMA()
2387 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_Decrypt_DMA()
2388 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2391 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2395 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY)); in CRYP_AES_Decrypt_DMA()
2398 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, hcryp->Init.Algorithm); in CRYP_AES_Decrypt_DMA()
2403 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AES_Decrypt_DMA()
2406 if (hcryp->Init.Algorithm != CRYP_AES_ECB) in CRYP_AES_Decrypt_DMA()
2409 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AES_Decrypt_DMA()
2410 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AES_Decrypt_DMA()
2411 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AES_Decrypt_DMA()
2412 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AES_Decrypt_DMA()
2417 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AES_Decrypt_DMA()
2419 if (hcryp->Size != 0U) in CRYP_AES_Decrypt_DMA()
2422 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (hcryp->Size / 4U), in CRYP_AES_Decrypt_DMA()
2423 (uint32_t)(hcryp->pCrypOutBuffPtr)); in CRYP_AES_Decrypt_DMA()
2428 __HAL_UNLOCK(hcryp); in CRYP_AES_Decrypt_DMA()
2431 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_Decrypt_DMA()
2446 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAInCplt() local
2450 hcryp->Instance->DMACR &= (uint32_t)(~CRYP_DMACR_DIEN); in CRYP_DMAInCplt()
2455 hcryp->InCpltCallback(hcryp); in CRYP_DMAInCplt()
2458 HAL_CRYP_InCpltCallback(hcryp); in CRYP_DMAInCplt()
2474 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAOutCplt() local
2478 hcryp->Instance->DMACR &= (uint32_t)(~CRYP_DMACR_DOEN); in CRYP_DMAOutCplt()
2481 if (((hcryp->Size) % 16U) != 0U) in CRYP_DMAOutCplt()
2484 hcryp->CrypInCount = (hcryp->Size / 16U) * 4U ; in CRYP_DMAOutCplt()
2485 hcryp->CrypOutCount = hcryp->CrypInCount; in CRYP_DMAOutCplt()
2488 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size); in CRYP_DMAOutCplt()
2491 if (hcryp->Version >= REV_ID_B) in CRYP_DMAOutCplt()
2495 temp_cr_algodir = hcryp->Instance->CR & CRYP_CR_ALGODIR; in CRYP_DMAOutCplt()
2496 …if (((temp_cr_algodir == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM)) || in CRYP_DMAOutCplt()
2497 … ((temp_cr_algodir == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_DMAOutCplt()
2500 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
2503 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, npblb << 20); in CRYP_DMAOutCplt()
2506 __HAL_CRYP_ENABLE(hcryp); in CRYP_DMAOutCplt()
2522 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_DMAOutCplt()
2523 hcryp->CrypInCount++; in CRYP_DMAOutCplt()
2528 hcryp->Instance->DIN = 0U; in CRYP_DMAOutCplt()
2539 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
2542 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_DMAOutCplt()
2543 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAOutCplt()
2546 __HAL_UNLOCK(hcryp); in CRYP_DMAOutCplt()
2549 hcryp->ErrorCallback(hcryp); in CRYP_DMAOutCplt()
2552 HAL_CRYP_ErrorCallback(hcryp); in CRYP_DMAOutCplt()
2556 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_OFNE)); in CRYP_DMAOutCplt()
2563 temp = hcryp->Instance->DOUT; in CRYP_DMAOutCplt()
2565 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp; in CRYP_DMAOutCplt()
2566 hcryp->CrypOutCount++; in CRYP_DMAOutCplt()
2570 if ((hcryp->Init.Algorithm & CRYP_AES_GCM) != CRYP_AES_GCM) in CRYP_DMAOutCplt()
2573 __HAL_CRYP_DISABLE(hcryp); in CRYP_DMAOutCplt()
2577 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAOutCplt()
2580 __HAL_UNLOCK(hcryp); in CRYP_DMAOutCplt()
2585 hcryp->OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
2588 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_DMAOutCplt()
2599 CRYP_HandleTypeDef *hcryp = (CRYP_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in CRYP_DMAError() local
2602 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_DMAError()
2605 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_DMAError()
2610 hcryp->ErrorCallback(hcryp); in CRYP_DMAError()
2613 HAL_CRYP_ErrorCallback(hcryp); in CRYP_DMAError()
2626 static void CRYP_SetDMAConfig(CRYP_HandleTypeDef *hcryp, uint32_t inputaddr, uint16_t Size, uint32_… in CRYP_SetDMAConfig() argument
2629 hcryp->hdmain->XferCpltCallback = CRYP_DMAInCplt; in CRYP_SetDMAConfig()
2632 hcryp->hdmain->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
2635 hcryp->hdmaout->XferCpltCallback = CRYP_DMAOutCplt; in CRYP_SetDMAConfig()
2638 hcryp->hdmaout->XferErrorCallback = CRYP_DMAError; in CRYP_SetDMAConfig()
2641 __HAL_CRYP_ENABLE(hcryp); in CRYP_SetDMAConfig()
2644 if (HAL_DMA_Start_IT(hcryp->hdmain, inputaddr, (uint32_t)&hcryp->Instance->DIN, Size) != HAL_OK) in CRYP_SetDMAConfig()
2647 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
2652 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2655 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2660 …if (HAL_DMA_Start_IT(hcryp->hdmaout, (uint32_t)&hcryp->Instance->DOUT, outputaddr, Size) != HAL_OK) in CRYP_SetDMAConfig()
2663 hcryp->ErrorCode |= HAL_CRYP_ERROR_DMA; in CRYP_SetDMAConfig()
2668 hcryp->ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2671 HAL_CRYP_ErrorCallback(hcryp); in CRYP_SetDMAConfig()
2675 hcryp->Instance->DMACR = CRYP_DMACR_DOEN | CRYP_DMACR_DIEN; in CRYP_SetDMAConfig()
2685 static void CRYP_AES_ProcessData(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AES_ProcessData() argument
2694 incount = hcryp->CrypInCount; in CRYP_AES_ProcessData()
2696 if (((hcryp->Instance->SR & CRYP_FLAG_IFNF) != 0x0U) && (incount < ((hcryp->Size) / 4U))) in CRYP_AES_ProcessData()
2699 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
2700 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
2701 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
2702 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
2703 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
2704 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
2705 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_ProcessData()
2706 hcryp->CrypInCount++; in CRYP_AES_ProcessData()
2710 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK) in CRYP_AES_ProcessData()
2713 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_ProcessData()
2716 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AES_ProcessData()
2717 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_ProcessData()
2720 __HAL_UNLOCK(hcryp); in CRYP_AES_ProcessData()
2723 hcryp->ErrorCallback(hcryp); in CRYP_AES_ProcessData()
2726 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_ProcessData()
2730 outcount = hcryp->CrypOutCount; in CRYP_AES_ProcessData()
2732 if (((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) && (outcount < ((hcryp->Size) / 4U))) in CRYP_AES_ProcessData()
2738 temp[i] = hcryp->Instance->DOUT; in CRYP_AES_ProcessData()
2741 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 4U)) in CRYP_AES_ProcessData()
2743 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_ProcessData()
2744 hcryp->CrypOutCount++; in CRYP_AES_ProcessData()
2758 static void CRYP_AES_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AES_IT() argument
2765 if (hcryp->State == HAL_CRYP_STATE_BUSY) in CRYP_AES_IT()
2768 incount = hcryp->CrypInCount; in CRYP_AES_IT()
2770 if (((hcryp->Instance->SR & CRYP_FLAG_IFNF) != 0x0U) && (incount < (hcryp->Size / 4U))) in CRYP_AES_IT()
2773 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
2774 hcryp->CrypInCount++; in CRYP_AES_IT()
2775 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
2776 hcryp->CrypInCount++; in CRYP_AES_IT()
2777 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
2778 hcryp->CrypInCount++; in CRYP_AES_IT()
2779 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AES_IT()
2780 hcryp->CrypInCount++; in CRYP_AES_IT()
2781 if (hcryp->CrypInCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
2784 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI); in CRYP_AES_IT()
2789 hcryp->InCpltCallback(hcryp); in CRYP_AES_IT()
2792 HAL_CRYP_InCpltCallback(hcryp); in CRYP_AES_IT()
2798 outcount = hcryp->CrypOutCount; in CRYP_AES_IT()
2800 if (((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) && (outcount < (hcryp->Size / 4U))) in CRYP_AES_IT()
2806 temp[i] = hcryp->Instance->DOUT; in CRYP_AES_IT()
2809 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 4U)) in CRYP_AES_IT()
2811 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_AES_IT()
2812 hcryp->CrypOutCount++; in CRYP_AES_IT()
2815 if (hcryp->CrypOutCount == (hcryp->Size / 4U)) in CRYP_AES_IT()
2818 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_OUTI); in CRYP_AES_IT()
2821 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AES_IT()
2824 __HAL_CRYP_DISABLE(hcryp); in CRYP_AES_IT()
2827 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
2832 hcryp->OutCpltCallback(hcryp); in CRYP_AES_IT()
2835 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_AES_IT()
2843 __HAL_UNLOCK(hcryp); in CRYP_AES_IT()
2845 hcryp->ErrorCode |= HAL_CRYP_ERROR_BUSY; in CRYP_AES_IT()
2848 hcryp->ErrorCallback(hcryp); in CRYP_AES_IT()
2851 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AES_IT()
2863 static void CRYP_SetKey(CRYP_HandleTypeDef *hcryp, uint32_t KeySize) in CRYP_SetKey() argument
2868 hcryp->Instance->K0LR = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
2869 hcryp->Instance->K0RR = *(uint32_t *)(hcryp->Init.pKey + 1); in CRYP_SetKey()
2870 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey + 2); in CRYP_SetKey()
2871 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 3); in CRYP_SetKey()
2872 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 4); in CRYP_SetKey()
2873 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 5); in CRYP_SetKey()
2874 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 6); in CRYP_SetKey()
2875 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 7); in CRYP_SetKey()
2878 hcryp->Instance->K1LR = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
2879 hcryp->Instance->K1RR = *(uint32_t *)(hcryp->Init.pKey + 1); in CRYP_SetKey()
2880 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey + 2); in CRYP_SetKey()
2881 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 3); in CRYP_SetKey()
2882 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 4); in CRYP_SetKey()
2883 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 5); in CRYP_SetKey()
2886 hcryp->Instance->K2LR = *(uint32_t *)(hcryp->Init.pKey); in CRYP_SetKey()
2887 hcryp->Instance->K2RR = *(uint32_t *)(hcryp->Init.pKey + 1); in CRYP_SetKey()
2888 hcryp->Instance->K3LR = *(uint32_t *)(hcryp->Init.pKey + 2); in CRYP_SetKey()
2889 hcryp->Instance->K3RR = *(uint32_t *)(hcryp->Init.pKey + 3); in CRYP_SetKey()
2904 static HAL_StatusTypeDef CRYP_AESGCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESGCM_Process() argument
2907 uint32_t wordsize = (uint32_t)(hcryp->Size) / 4U; in CRYP_AESGCM_Process()
2917 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process()
2919 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process()
2924 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process()
2931 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process()
2932 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process()
2937 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process()
2943 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process()
2947 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process()
2950 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process()
2953 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process()
2954 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AESGCM_Process()
2955 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AESGCM_Process()
2956 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AESGCM_Process()
2959 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
2965 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN) in CRYP_AESGCM_Process()
2973 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
2976 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
2977 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
2980 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
2988 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
2996 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process()
2999 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3002 if (hcryp->Version >= REV_ID_B) in CRYP_AESGCM_Process()
3006 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, 0U); in CRYP_AESGCM_Process()
3010 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process()
3013 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3016 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3025 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3028 while ((hcryp->CrypInCount < wordsize) && (outcount < wordsize)) in CRYP_AESGCM_Process()
3031 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESGCM_Process()
3034 outcount = hcryp->CrypOutCount; in CRYP_AESGCM_Process()
3042 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3045 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3046 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3049 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3055 if ((hcryp->Size % 16U) != 0U) in CRYP_AESGCM_Process()
3059 if (hcryp->Version >= REV_ID_B) in CRYP_AESGCM_Process()
3063 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size); in CRYP_AESGCM_Process()
3066 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process()
3069 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3072 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, npblb << 20); in CRYP_AESGCM_Process()
3075 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process()
3090 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process()
3091 hcryp->CrypInCount++; in CRYP_AESGCM_Process()
3097 hcryp->Instance->DIN = 0U; in CRYP_AESGCM_Process()
3102 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESGCM_Process()
3105 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process()
3108 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process()
3109 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process()
3112 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process()
3115 hcryp->ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3118 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESGCM_Process()
3123 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) in CRYP_AESGCM_Process()
3129 temp[index] = hcryp->Instance->DOUT; in CRYP_AESGCM_Process()
3134 pval = (uint8_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)); in CRYP_AESGCM_Process()
3170 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = temp[index]; in CRYP_AESGCM_Process()
3173 hcryp->CrypOutCount++; in CRYP_AESGCM_Process()
3182 CRYP_Workaround(hcryp, Timeout); in CRYP_AESGCM_Process()
3197 static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_IT() argument
3202 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_IT()
3204 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_IT()
3209 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_IT()
3216 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_IT()
3217 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_IT()
3222 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_IT()
3229 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_IT()
3233 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_IT()
3236 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_IT()
3239 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_IT()
3240 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AESGCM_Process_IT()
3241 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AESGCM_Process_IT()
3242 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AESGCM_Process_IT()
3245 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3255 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_IT()
3258 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_IT()
3259 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_IT()
3262 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_IT()
3266 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN); in CRYP_AESGCM_Process_IT()
3271 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESGCM_Process_IT()
3274 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI); in CRYP_AESGCM_Process_IT()
3277 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_IT()
3290 static HAL_StatusTypeDef CRYP_AESGCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESGCM_Process_DMA() argument
3293 uint32_t wordsize = (uint32_t)(hcryp->Size) / 4U ; in CRYP_AESGCM_Process_DMA()
3300 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESGCM_Process_DMA()
3302 if (hcryp->KeyIVConfig == 1U) in CRYP_AESGCM_Process_DMA()
3307 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESGCM_Process_DMA()
3314 hcryp->KeyIVConfig = 1U; in CRYP_AESGCM_Process_DMA()
3315 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESGCM_Process_DMA()
3320 hcryp->SizesSum = hcryp->Size; in CRYP_AESGCM_Process_DMA()
3326 hcryp->CrypHeaderCount = 0U; in CRYP_AESGCM_Process_DMA()
3330 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESGCM_Process_DMA()
3333 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESGCM_Process_DMA()
3336 hcryp->Instance->IV0LR = *(uint32_t *)(hcryp->Init.pInitVect); in CRYP_AESGCM_Process_DMA()
3337 hcryp->Instance->IV0RR = *(uint32_t *)(hcryp->Init.pInitVect + 1); in CRYP_AESGCM_Process_DMA()
3338 hcryp->Instance->IV1LR = *(uint32_t *)(hcryp->Init.pInitVect + 2); in CRYP_AESGCM_Process_DMA()
3339 hcryp->Instance->IV1RR = *(uint32_t *)(hcryp->Init.pInitVect + 3); in CRYP_AESGCM_Process_DMA()
3342 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3352 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3355 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
3356 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
3359 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
3363 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN); in CRYP_AESGCM_Process_DMA()
3367 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESGCM_Process_DMA()
3375 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESGCM_Process_DMA()
3378 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3381 if (hcryp->Version >= REV_ID_B) in CRYP_AESGCM_Process_DMA()
3385 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, 0U); in CRYP_AESGCM_Process_DMA()
3389 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESGCM_Process_DMA()
3393 if (hcryp->Size == 0U) in CRYP_AESGCM_Process_DMA()
3396 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
3399 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
3401 else if (hcryp->Size >= 16U) in CRYP_AESGCM_Process_DMA()
3411 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (uint16_t)wordsize, in CRYP_AESGCM_Process_DMA()
3412 (uint32_t)(hcryp->pCrypOutBuffPtr)); in CRYP_AESGCM_Process_DMA()
3417 npblb = 16U - (uint32_t)hcryp->Size; in CRYP_AESGCM_Process_DMA()
3420 if (hcryp->Version >= REV_ID_B) in CRYP_AESGCM_Process_DMA()
3424 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_AESGCM_Process_DMA()
3427 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, npblb << 20); in CRYP_AESGCM_Process_DMA()
3431 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3446 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESGCM_Process_DMA()
3447 hcryp->CrypInCount++; in CRYP_AESGCM_Process_DMA()
3453 hcryp->Instance->DIN = 0U; in CRYP_AESGCM_Process_DMA()
3465 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESGCM_Process_DMA()
3468 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESGCM_Process_DMA()
3469 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
3472 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
3475 hcryp->ErrorCallback(hcryp); in CRYP_AESGCM_Process_DMA()
3478 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESGCM_Process_DMA()
3482 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_OFNE)); in CRYP_AESGCM_Process_DMA()
3489 temp[index] = hcryp->Instance->DOUT; in CRYP_AESGCM_Process_DMA()
3493 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[index]; in CRYP_AESGCM_Process_DMA()
3494 hcryp->CrypOutCount++; in CRYP_AESGCM_Process_DMA()
3498 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESGCM_Process_DMA()
3501 __HAL_UNLOCK(hcryp); in CRYP_AESGCM_Process_DMA()
3516 static HAL_StatusTypeDef CRYP_AESCCM_Process(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_AESCCM_Process() argument
3519 uint32_t wordsize = (uint32_t)(hcryp->Size) / 4U; in CRYP_AESCCM_Process()
3527 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process()
3529 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process()
3534 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process()
3541 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process()
3542 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process()
3547 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process()
3553 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process()
3557 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process()
3560 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process()
3563 hcryp->Instance->IV0LR = (hcryp->Init.B0[0]) & CRYP_CCM_CTR1_0; in CRYP_AESCCM_Process()
3564 hcryp->Instance->IV0RR = hcryp->Init.B0[1]; in CRYP_AESCCM_Process()
3565 hcryp->Instance->IV1LR = hcryp->Init.B0[2]; in CRYP_AESCCM_Process()
3566 hcryp->Instance->IV1RR = (hcryp->Init.B0[3] & CRYP_CCM_CTR1_1) | CRYP_CCM_CTR1_2; in CRYP_AESCCM_Process()
3569 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
3574 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
3575 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1); in CRYP_AESCCM_Process()
3576 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2); in CRYP_AESCCM_Process()
3577 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3); in CRYP_AESCCM_Process()
3580 if (hcryp->Version >= REV_ID_B) in CRYP_AESCCM_Process()
3583 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
3584 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1); in CRYP_AESCCM_Process()
3585 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2); in CRYP_AESCCM_Process()
3586 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3); in CRYP_AESCCM_Process()
3590 if (hcryp->Init.DataType == CRYP_BYTE_SWAP) in CRYP_AESCCM_Process()
3592 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0)); in CRYP_AESCCM_Process()
3593 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 1)); in CRYP_AESCCM_Process()
3594 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 2)); in CRYP_AESCCM_Process()
3595 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 3)); in CRYP_AESCCM_Process()
3597 else if (hcryp->Init.DataType == CRYP_HALFWORD_SWAP) in CRYP_AESCCM_Process()
3599 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0), 16); in CRYP_AESCCM_Process()
3600 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 1), 16); in CRYP_AESCCM_Process()
3601 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 2), 16); in CRYP_AESCCM_Process()
3602 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 3), 16); in CRYP_AESCCM_Process()
3604 else if (hcryp->Init.DataType == CRYP_BIT_SWAP) in CRYP_AESCCM_Process()
3606 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0)); in CRYP_AESCCM_Process()
3607 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 1)); in CRYP_AESCCM_Process()
3608 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 2)); in CRYP_AESCCM_Process()
3609 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 3)); in CRYP_AESCCM_Process()
3613 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process()
3614 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1); in CRYP_AESCCM_Process()
3615 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2); in CRYP_AESCCM_Process()
3616 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3); in CRYP_AESCCM_Process()
3624 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN) in CRYP_AESCCM_Process()
3632 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
3635 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3636 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3639 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3649 if (CRYP_GCMCCM_SetHeaderPhase(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3656 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process()
3659 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
3661 if (hcryp->Version >= REV_ID_B) in CRYP_AESCCM_Process()
3665 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, 0U); in CRYP_AESCCM_Process()
3669 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process()
3672 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
3676 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
3685 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
3688 while ((hcryp->CrypInCount < wordsize) && (outcount < wordsize)) in CRYP_AESCCM_Process()
3691 CRYP_AES_ProcessData(hcryp, Timeout); in CRYP_AESCCM_Process()
3694 outcount = hcryp->CrypOutCount; in CRYP_AESCCM_Process()
3702 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
3705 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3706 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3709 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3715 if ((hcryp->Size % 16U) != 0U) in CRYP_AESCCM_Process()
3718 if (hcryp->Version >= REV_ID_B) in CRYP_AESCCM_Process()
3722 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size); in CRYP_AESCCM_Process()
3724 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_AESCCM_Process()
3727 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
3730 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, npblb << 20); in CRYP_AESCCM_Process()
3733 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process()
3749 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process()
3750 hcryp->CrypInCount++; in CRYP_AESCCM_Process()
3756 hcryp->Instance->DIN = 0U; in CRYP_AESCCM_Process()
3761 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK) in CRYP_AESCCM_Process()
3764 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process()
3767 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process()
3768 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process()
3771 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process()
3774 hcryp->ErrorCallback(hcryp); in CRYP_AESCCM_Process()
3777 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESCCM_Process()
3782 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) in CRYP_AESCCM_Process()
3788 temp[index] = hcryp->Instance->DOUT; in CRYP_AESCCM_Process()
3792 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[index]; in CRYP_AESCCM_Process()
3793 hcryp->CrypOutCount++; in CRYP_AESCCM_Process()
3803 CRYP_Workaround(hcryp, Timeout); in CRYP_AESCCM_Process()
3818 static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_IT() argument
3823 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_IT()
3825 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_IT()
3830 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_IT()
3837 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_IT()
3838 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_IT()
3843 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_IT()
3850 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_IT()
3854 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_IT()
3857 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_IT()
3860 hcryp->Instance->IV0LR = (hcryp->Init.B0[0]) & CRYP_CCM_CTR1_0; in CRYP_AESCCM_Process_IT()
3861 hcryp->Instance->IV0RR = hcryp->Init.B0[1]; in CRYP_AESCCM_Process_IT()
3862 hcryp->Instance->IV1LR = hcryp->Init.B0[2]; in CRYP_AESCCM_Process_IT()
3863 hcryp->Instance->IV1RR = (hcryp->Init.B0[3] & CRYP_CCM_CTR1_1) | CRYP_CCM_CTR1_2; in CRYP_AESCCM_Process_IT()
3866 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
3870 if (hcryp->Version >= REV_ID_B) in CRYP_AESCCM_Process_IT()
3874 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_IT()
3875 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1); in CRYP_AESCCM_Process_IT()
3876 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2); in CRYP_AESCCM_Process_IT()
3877 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3); in CRYP_AESCCM_Process_IT()
3882 if (hcryp->Init.DataType == CRYP_BYTE_SWAP) in CRYP_AESCCM_Process_IT()
3884 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0)); in CRYP_AESCCM_Process_IT()
3885 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 1)); in CRYP_AESCCM_Process_IT()
3886 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 2)); in CRYP_AESCCM_Process_IT()
3887 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 3)); in CRYP_AESCCM_Process_IT()
3889 else if (hcryp->Init.DataType == CRYP_HALFWORD_SWAP) in CRYP_AESCCM_Process_IT()
3891 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0), 16); in CRYP_AESCCM_Process_IT()
3892 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 1), 16); in CRYP_AESCCM_Process_IT()
3893 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 2), 16); in CRYP_AESCCM_Process_IT()
3894 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 3), 16); in CRYP_AESCCM_Process_IT()
3896 else if (hcryp->Init.DataType == CRYP_BIT_SWAP) in CRYP_AESCCM_Process_IT()
3898 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0)); in CRYP_AESCCM_Process_IT()
3899 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 1)); in CRYP_AESCCM_Process_IT()
3900 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 2)); in CRYP_AESCCM_Process_IT()
3901 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 3)); in CRYP_AESCCM_Process_IT()
3905 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_IT()
3906 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1); in CRYP_AESCCM_Process_IT()
3907 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2); in CRYP_AESCCM_Process_IT()
3908 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3); in CRYP_AESCCM_Process_IT()
3920 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_IT()
3923 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_IT()
3924 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_IT()
3927 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_IT()
3931 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN); in CRYP_AESCCM_Process_IT()
3934 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_AESCCM_Process_IT()
3937 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI); in CRYP_AESCCM_Process_IT()
3940 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_IT()
3951 static HAL_StatusTypeDef CRYP_AESCCM_Process_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_AESCCM_Process_DMA() argument
3954 uint32_t wordsize = (uint32_t)(hcryp->Size) / 4U ; in CRYP_AESCCM_Process_DMA()
3961 if (hcryp->Init.KeyIVConfigSkip == CRYP_KEYIVCONFIG_ONCE) in CRYP_AESCCM_Process_DMA()
3963 if (hcryp->KeyIVConfig == 1U) in CRYP_AESCCM_Process_DMA()
3968 hcryp->SizesSum += hcryp->Size; /* Compute message total payload length */ in CRYP_AESCCM_Process_DMA()
3975 hcryp->KeyIVConfig = 1U; in CRYP_AESCCM_Process_DMA()
3976 hcryp->SizesSum = hcryp->Size; /* Merely store payload length */ in CRYP_AESCCM_Process_DMA()
3981 hcryp->SizesSum = hcryp->Size; in CRYP_AESCCM_Process_DMA()
3987 hcryp->CrypHeaderCount = 0U; in CRYP_AESCCM_Process_DMA()
3991 CRYP_SET_PHASE(hcryp, CRYP_PHASE_INIT); in CRYP_AESCCM_Process_DMA()
3994 CRYP_SetKey(hcryp, hcryp->Init.KeySize); in CRYP_AESCCM_Process_DMA()
3997 hcryp->Instance->IV0LR = (hcryp->Init.B0[0]) & CRYP_CCM_CTR1_0; in CRYP_AESCCM_Process_DMA()
3998 hcryp->Instance->IV0RR = hcryp->Init.B0[1]; in CRYP_AESCCM_Process_DMA()
3999 hcryp->Instance->IV1LR = hcryp->Init.B0[2]; in CRYP_AESCCM_Process_DMA()
4000 hcryp->Instance->IV1RR = (hcryp->Init.B0[3] & CRYP_CCM_CTR1_1) | CRYP_CCM_CTR1_2; in CRYP_AESCCM_Process_DMA()
4003 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4007 if (hcryp->Version >= REV_ID_B) in CRYP_AESCCM_Process_DMA()
4011 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_DMA()
4012 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1); in CRYP_AESCCM_Process_DMA()
4013 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2); in CRYP_AESCCM_Process_DMA()
4014 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3); in CRYP_AESCCM_Process_DMA()
4019 if (hcryp->Init.DataType == CRYP_BYTE_SWAP) in CRYP_AESCCM_Process_DMA()
4021 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0)); in CRYP_AESCCM_Process_DMA()
4022 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 1)); in CRYP_AESCCM_Process_DMA()
4023 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 2)); in CRYP_AESCCM_Process_DMA()
4024 hcryp->Instance->DIN = __REV(*(uint32_t *)(hcryp->Init.B0 + 3)); in CRYP_AESCCM_Process_DMA()
4026 else if (hcryp->Init.DataType == CRYP_HALFWORD_SWAP) in CRYP_AESCCM_Process_DMA()
4028 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0), 16); in CRYP_AESCCM_Process_DMA()
4029 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 1), 16); in CRYP_AESCCM_Process_DMA()
4030 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 2), 16); in CRYP_AESCCM_Process_DMA()
4031 hcryp->Instance->DIN = __ROR(*(uint32_t *)(hcryp->Init.B0 + 3), 16); in CRYP_AESCCM_Process_DMA()
4033 else if (hcryp->Init.DataType == CRYP_BIT_SWAP) in CRYP_AESCCM_Process_DMA()
4035 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0)); in CRYP_AESCCM_Process_DMA()
4036 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 1)); in CRYP_AESCCM_Process_DMA()
4037 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 2)); in CRYP_AESCCM_Process_DMA()
4038 hcryp->Instance->DIN = __RBIT(*(uint32_t *)(hcryp->Init.B0 + 3)); in CRYP_AESCCM_Process_DMA()
4042 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0); in CRYP_AESCCM_Process_DMA()
4043 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 1); in CRYP_AESCCM_Process_DMA()
4044 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 2); in CRYP_AESCCM_Process_DMA()
4045 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.B0 + 3); in CRYP_AESCCM_Process_DMA()
4057 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4060 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
4061 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
4064 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
4068 while ((hcryp->Instance->CR & CRYP_CR_CRYPEN) == CRYP_CR_CRYPEN); in CRYP_AESCCM_Process_DMA()
4072 if (CRYP_GCMCCM_SetHeaderPhase_DMA(hcryp) != HAL_OK) in CRYP_AESCCM_Process_DMA()
4080 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_AESCCM_Process_DMA()
4083 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4085 if (hcryp->Version >= REV_ID_B) in CRYP_AESCCM_Process_DMA()
4089 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, 0U); in CRYP_AESCCM_Process_DMA()
4093 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_AESCCM_Process_DMA()
4096 if (hcryp->Size == 0U) in CRYP_AESCCM_Process_DMA()
4099 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
4102 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
4104 else if (hcryp->Size >= 16U) in CRYP_AESCCM_Process_DMA()
4112 CRYP_SetDMAConfig(hcryp, (uint32_t)(hcryp->pCrypInBuffPtr), (uint16_t) wordsize, in CRYP_AESCCM_Process_DMA()
4113 (uint32_t)(hcryp->pCrypOutBuffPtr)); in CRYP_AESCCM_Process_DMA()
4118 npblb = 16U - (uint32_t)(hcryp->Size); in CRYP_AESCCM_Process_DMA()
4121 if (hcryp->Version >= REV_ID_B) in CRYP_AESCCM_Process_DMA()
4125 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_AESCCM_Process_DMA()
4128 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, npblb << 20); in CRYP_AESCCM_Process_DMA()
4132 __HAL_CRYP_ENABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4147 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_AESCCM_Process_DMA()
4148 hcryp->CrypInCount++; in CRYP_AESCCM_Process_DMA()
4154 hcryp->Instance->DIN = 0U; in CRYP_AESCCM_Process_DMA()
4166 __HAL_CRYP_DISABLE(hcryp); in CRYP_AESCCM_Process_DMA()
4169 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_AESCCM_Process_DMA()
4170 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
4173 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
4176 hcryp->ErrorCallback(hcryp); in CRYP_AESCCM_Process_DMA()
4179 HAL_CRYP_ErrorCallback(hcryp); in CRYP_AESCCM_Process_DMA()
4183 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_OFNE)); in CRYP_AESCCM_Process_DMA()
4190 temp[index] = hcryp->Instance->DOUT; in CRYP_AESCCM_Process_DMA()
4194 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[index]; in CRYP_AESCCM_Process_DMA()
4195 hcryp->CrypOutCount++; in CRYP_AESCCM_Process_DMA()
4199 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_AESCCM_Process_DMA()
4202 __HAL_UNLOCK(hcryp); in CRYP_AESCCM_Process_DMA()
4215 static void CRYP_GCMCCM_SetPayloadPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetPayloadPhase_IT() argument
4227 if ((hcryp->Size / 4U) < hcryp->CrypInCount) in CRYP_GCMCCM_SetPayloadPhase_IT()
4232 if (hcryp->Size == 0U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4235 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in CRYP_GCMCCM_SetPayloadPhase_IT()
4238 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4241 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_IT()
4244 else if ((((hcryp->Size / 4U) - (hcryp->CrypInCount)) >= 4U) && in CRYP_GCMCCM_SetPayloadPhase_IT()
4247 if ((hcryp->Instance->IMSCR & CRYP_IMSCR_INIM) != 0x0U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4250 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4251 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4252 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4253 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4254 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4255 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4256 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4257 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4258 if (((hcryp->Size / 4U) == hcryp->CrypInCount) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4261 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI); in CRYP_GCMCCM_SetPayloadPhase_IT()
4265 hcryp->InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4268 HAL_CRYP_InCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4272 if (hcryp->CrypOutCount < (hcryp->Size / 4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4274 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4280 temp[i] = hcryp->Instance->DOUT; in CRYP_GCMCCM_SetPayloadPhase_IT()
4283 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4285 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_GCMCCM_SetPayloadPhase_IT()
4286 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4289 if (((hcryp->Size / 4U) == hcryp->CrypOutCount) && ((hcryp->Size % 16U) == 0U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4292 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_OUTI); in CRYP_GCMCCM_SetPayloadPhase_IT()
4295 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_IT()
4298 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4301 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4306 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4309 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4316 else if ((hcryp->Size % 16U) != 0U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4319 if ((hcryp->Instance->IMSCR & CRYP_IMSCR_INIM) != 0x0U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4322 npblb = ((((uint32_t)hcryp->Size / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size); in CRYP_GCMCCM_SetPayloadPhase_IT()
4325 if (hcryp->Version >= REV_ID_B) in CRYP_GCMCCM_SetPayloadPhase_IT()
4329 temp_cr_algodir = hcryp->Instance->CR & CRYP_CR_ALGODIR; in CRYP_GCMCCM_SetPayloadPhase_IT()
4331 …if (((temp_cr_algodir == CRYP_OPERATINGMODE_ENCRYPT) && (hcryp->Init.Algorithm == CRYP_AES_GCM)) || in CRYP_GCMCCM_SetPayloadPhase_IT()
4332 … ((temp_cr_algodir == CRYP_OPERATINGMODE_DECRYPT) && (hcryp->Init.Algorithm == CRYP_AES_CCM))) in CRYP_GCMCCM_SetPayloadPhase_IT()
4335 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4338 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, npblb << 20); in CRYP_GCMCCM_SetPayloadPhase_IT()
4341 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4358 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_GCMCCM_SetPayloadPhase_IT()
4359 hcryp->CrypInCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4364 hcryp->Instance->DIN = 0U; in CRYP_GCMCCM_SetPayloadPhase_IT()
4369 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI); in CRYP_GCMCCM_SetPayloadPhase_IT()
4373 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4377 temp[i] = hcryp->Instance->DOUT; in CRYP_GCMCCM_SetPayloadPhase_IT()
4379 if (((hcryp->Size) / 4U) == 0U) in CRYP_GCMCCM_SetPayloadPhase_IT()
4381 for (i = 0U; (uint16_t)i < ((hcryp->Size) % 4U); i++) in CRYP_GCMCCM_SetPayloadPhase_IT()
4383 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_GCMCCM_SetPayloadPhase_IT()
4384 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4388 while (((hcryp->CrypOutCount < ((hcryp->Size) / 4U))) && (i < 4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4390 *(uint32_t *)(hcryp->pCrypOutBuffPtr + hcryp->CrypOutCount) = temp[i]; in CRYP_GCMCCM_SetPayloadPhase_IT()
4391 hcryp->CrypOutCount++; in CRYP_GCMCCM_SetPayloadPhase_IT()
4397 if (hcryp->CrypOutCount >= ((hcryp->Size) / 4U)) in CRYP_GCMCCM_SetPayloadPhase_IT()
4400 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_OUTI | CRYP_IT_INI); in CRYP_GCMCCM_SetPayloadPhase_IT()
4403 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetPayloadPhase_IT()
4406 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4411 hcryp->OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4414 HAL_CRYP_OutCpltCallback(hcryp); in CRYP_GCMCCM_SetPayloadPhase_IT()
4432 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_GCMCCM_SetHeaderPhase() argument
4442 if (hcryp->Init.HeaderWidthUnit == CRYP_HEADERWIDTHUNIT_WORD) in CRYP_GCMCCM_SetHeaderPhase()
4444 size_in_bytes = hcryp->Init.HeaderSize * 4U; in CRYP_GCMCCM_SetHeaderPhase()
4448 size_in_bytes = hcryp->Init.HeaderSize; in CRYP_GCMCCM_SetHeaderPhase()
4454 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase()
4457 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4466 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4467 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4468 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4469 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4470 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4471 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4472 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4473 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4476 if (CRYP_WaitOnIFEMFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4479 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4482 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4483 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4486 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4496 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4497 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4498 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4499 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4500 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4501 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4502 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4503 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4506 if (CRYP_WaitOnIFEMFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4509 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4512 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4513 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4516 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4523 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4524 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase()
4532 hcryp->Instance->DIN = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
4539 tmp = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase()
4541 hcryp->Instance->DIN = tmp; in CRYP_GCMCCM_SetHeaderPhase()
4546 hcryp->Instance->DIN = 0x0U; in CRYP_GCMCCM_SetHeaderPhase()
4551 if (CRYP_WaitOnIFEMFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4554 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4557 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4558 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4561 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4566 if (CRYP_WaitOnBUSYFlag(hcryp, Timeout) != HAL_OK) in CRYP_GCMCCM_SetHeaderPhase()
4569 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4572 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase()
4573 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase()
4576 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase()
4590 static HAL_StatusTypeDef CRYP_GCMCCM_SetHeaderPhase_DMA(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_DMA() argument
4596 if ((hcryp->Init.HeaderSize != 0U)) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4599 CRYP_SET_PHASE(hcryp, CRYP_PHASE_HEADER); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4602 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4604 if ((hcryp->Init.HeaderSize % 4U) == 0U) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4607 for (loopcounter = 0U; (loopcounter < hcryp->Init.HeaderSize); loopcounter += 4U) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4609 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4610 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4611 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4612 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4613 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4614 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4615 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4616 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4626 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4629 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4630 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4633 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4637 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_IFEM)); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4643 … for (loopcounter = 0U; (loopcounter < ((hcryp->Init.HeaderSize) - (hcryp->Init.HeaderSize % 4U))); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4646 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4647 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4648 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4649 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4650 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4651 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4652 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4653 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4663 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4666 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4667 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4670 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4674 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_IFEM)); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4677 for (loopcounter = 0U; (loopcounter < (hcryp->Init.HeaderSize % 4U)); loopcounter++) in CRYP_GCMCCM_SetHeaderPhase_DMA()
4679 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4680 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4685 hcryp->Instance->DIN = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4696 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4698 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4699 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4701 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4705 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_IFEM)); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4715 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4717 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4718 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_GCMCCM_SetHeaderPhase_DMA()
4720 __HAL_UNLOCK(hcryp); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4724 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY)); in CRYP_GCMCCM_SetHeaderPhase_DMA()
4737 static void CRYP_GCMCCM_SetHeaderPhase_IT(CRYP_HandleTypeDef *hcryp) in CRYP_GCMCCM_SetHeaderPhase_IT() argument
4743 if (hcryp->Init.HeaderSize == hcryp->CrypHeaderCount) in CRYP_GCMCCM_SetHeaderPhase_IT()
4746 __HAL_CRYP_DISABLE_IT(hcryp, CRYP_IT_INI); in CRYP_GCMCCM_SetHeaderPhase_IT()
4749 __HAL_CRYP_DISABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
4752 if (hcryp->Version >= REV_ID_B) in CRYP_GCMCCM_SetHeaderPhase_IT()
4756 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_NPBLB, 0U); in CRYP_GCMCCM_SetHeaderPhase_IT()
4760 hcryp->Phase = CRYP_PHASE_PROCESS; in CRYP_GCMCCM_SetHeaderPhase_IT()
4763 CRYP_SET_PHASE(hcryp, CRYP_PHASE_PAYLOAD); in CRYP_GCMCCM_SetHeaderPhase_IT()
4766 __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_INI | CRYP_IT_OUTI); in CRYP_GCMCCM_SetHeaderPhase_IT()
4769 __HAL_CRYP_ENABLE(hcryp); in CRYP_GCMCCM_SetHeaderPhase_IT()
4771 else if (((hcryp->Init.HeaderSize) - (hcryp->CrypHeaderCount)) >= 4U) in CRYP_GCMCCM_SetHeaderPhase_IT()
4775 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
4776 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
4777 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
4778 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
4779 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
4780 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
4781 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
4782 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
4787 for (loopcounter = 0U; loopcounter < (hcryp->Init.HeaderSize % 4U); loopcounter++) in CRYP_GCMCCM_SetHeaderPhase_IT()
4789 hcryp->Instance->DIN = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount); in CRYP_GCMCCM_SetHeaderPhase_IT()
4790 hcryp->CrypHeaderCount++ ; in CRYP_GCMCCM_SetHeaderPhase_IT()
4795 hcryp->Instance->DIN = 0x0U; in CRYP_GCMCCM_SetHeaderPhase_IT()
4809 static void CRYP_Workaround(CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_Workaround() argument
4820 npblb = ((((uint32_t)(hcryp->Size) / 16U) + 1U) * 16U) - (uint32_t)(hcryp->Size); in CRYP_Workaround()
4833 if (hcryp->Init.Algorithm == CRYP_AES_GCM) in CRYP_Workaround()
4835 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_Workaround()
4840 __HAL_CRYP_DISABLE(hcryp); in CRYP_Workaround()
4843 hcryp->Instance->IV1RR = ((hcryp->Instance->CSGCMCCM7R) - 1U); in CRYP_Workaround()
4844 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_AES_CTR); in CRYP_Workaround()
4847 __HAL_CRYP_ENABLE(hcryp); in CRYP_Workaround()
4853 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_Workaround()
4854 hcryp->CrypInCount++; in CRYP_Workaround()
4859 hcryp->Instance->DIN = 0U; in CRYP_Workaround()
4863 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK) in CRYP_Workaround()
4866 __HAL_CRYP_DISABLE(hcryp); in CRYP_Workaround()
4869 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Workaround()
4870 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Workaround()
4873 __HAL_UNLOCK(hcryp); in CRYP_Workaround()
4876 hcryp->ErrorCallback(hcryp); in CRYP_Workaround()
4879 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Workaround()
4882 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) in CRYP_Workaround()
4887 intermediate_data[index] = hcryp->Instance->DOUT; in CRYP_Workaround()
4890 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = intermediate_data[index]; in CRYP_Workaround()
4891 hcryp->CrypOutCount++; in CRYP_Workaround()
4895 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_ENCRYPT) in CRYP_Workaround()
4901 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_AES_GCM); in CRYP_Workaround()
4904 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_GCM_CCMPH, CRYP_PHASE_FINAL); in CRYP_Workaround()
4906 if ((hcryp->Instance->CR & CRYP_CR_DATATYPE) == CRYP_NO_SWAP) in CRYP_Workaround()
4921 else if ((hcryp->Instance->CR & CRYP_CR_DATATYPE) == CRYP_BYTE_SWAP) in CRYP_Workaround()
4936 else if ((hcryp->Instance->CR & CRYP_CR_DATATYPE) == CRYP_HALFWORD_SWAP) in CRYP_Workaround()
4970 hcryp->Instance->DIN = intermediate_data[index]; in CRYP_Workaround()
4975 hcryp->Instance->DIN = 0x0U; in CRYP_Workaround()
4979 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK) in CRYP_Workaround()
4982 __HAL_CRYP_DISABLE(hcryp); in CRYP_Workaround()
4985 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Workaround()
4986 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Workaround()
4989 __HAL_UNLOCK(hcryp); in CRYP_Workaround()
4992 hcryp->ErrorCallback(hcryp); in CRYP_Workaround()
4995 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Workaround()
4999 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) in CRYP_Workaround()
5003 intermediate_data[index] = hcryp->Instance->DOUT; in CRYP_Workaround()
5014 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_Workaround()
5016 iv1temp = hcryp->Instance->CSGCMCCM7R; in CRYP_Workaround()
5019 __HAL_CRYP_DISABLE(hcryp); in CRYP_Workaround()
5021 temp[0] = hcryp->Instance->CSGCMCCM0R; in CRYP_Workaround()
5022 temp[1] = hcryp->Instance->CSGCMCCM1R; in CRYP_Workaround()
5023 temp[2] = hcryp->Instance->CSGCMCCM2R; in CRYP_Workaround()
5024 temp[3] = hcryp->Instance->CSGCMCCM3R; in CRYP_Workaround()
5026 hcryp->Instance->IV1RR = iv1temp; in CRYP_Workaround()
5029 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_AES_CTR); in CRYP_Workaround()
5032 __HAL_CRYP_ENABLE(hcryp); in CRYP_Workaround()
5038 hcryp->Instance->DIN = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount); in CRYP_Workaround()
5039 hcryp->CrypInCount++; in CRYP_Workaround()
5044 hcryp->Instance->DIN = 0U; in CRYP_Workaround()
5048 if (CRYP_WaitOnOFNEFlag(hcryp, Timeout) != HAL_OK) in CRYP_Workaround()
5051 __HAL_CRYP_DISABLE(hcryp); in CRYP_Workaround()
5054 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Workaround()
5055 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Workaround()
5058 __HAL_UNLOCK(hcryp); in CRYP_Workaround()
5061 hcryp->ErrorCallback(hcryp); in CRYP_Workaround()
5064 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Workaround()
5068 if ((hcryp->Instance->SR & CRYP_FLAG_OFNE) != 0x0U) in CRYP_Workaround()
5073 intermediate_data[index] = hcryp->Instance->DOUT; in CRYP_Workaround()
5076 *(uint32_t *)(hcryp->pCrypOutBuffPtr + (hcryp->CrypOutCount)) = intermediate_data[index]; in CRYP_Workaround()
5077 hcryp->CrypOutCount++; in CRYP_Workaround()
5081 if ((hcryp->Instance->CR & CRYP_CR_ALGODIR) == CRYP_OPERATINGMODE_DECRYPT) in CRYP_Workaround()
5083 temp2[0] = hcryp->Instance->CSGCMCCM0R; in CRYP_Workaround()
5084 temp2[1] = hcryp->Instance->CSGCMCCM1R; in CRYP_Workaround()
5085 temp2[2] = hcryp->Instance->CSGCMCCM2R; in CRYP_Workaround()
5086 temp2[3] = hcryp->Instance->CSGCMCCM3R; in CRYP_Workaround()
5089 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_ALGOMODE, CRYP_AES_CCM); in CRYP_Workaround()
5092 MODIFY_REG(hcryp->Instance->CR, CRYP_CR_GCM_CCMPH, CRYP_PHASE_HEADER); in CRYP_Workaround()
5121 hcryp->Instance->DIN = intermediate_data[index] ; in CRYP_Workaround()
5125 if (CRYP_WaitOnBUSYFlag(hcryp, Timeout) != HAL_OK) in CRYP_Workaround()
5128 __HAL_CRYP_DISABLE(hcryp); in CRYP_Workaround()
5131 hcryp->ErrorCode |= HAL_CRYP_ERROR_TIMEOUT; in CRYP_Workaround()
5132 hcryp->State = HAL_CRYP_STATE_READY; in CRYP_Workaround()
5135 __HAL_UNLOCK(hcryp); in CRYP_Workaround()
5138 hcryp->ErrorCallback(hcryp); in CRYP_Workaround()
5141 HAL_CRYP_ErrorCallback(hcryp); in CRYP_Workaround()
5148 __HAL_UNLOCK(hcryp); in CRYP_Workaround()
5159 static HAL_StatusTypeDef CRYP_WaitOnIFEMFlag(const CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_WaitOnIFEMFlag() argument
5166 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_IFEM)) in CRYP_WaitOnIFEMFlag()
5186 static HAL_StatusTypeDef CRYP_WaitOnBUSYFlag(const CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_WaitOnBUSYFlag() argument
5193 while (HAL_IS_BIT_SET(hcryp->Instance->SR, CRYP_FLAG_BUSY)) in CRYP_WaitOnBUSYFlag()
5215 static HAL_StatusTypeDef CRYP_WaitOnOFNEFlag(const CRYP_HandleTypeDef *hcryp, uint32_t Timeout) in CRYP_WaitOnOFNEFlag() argument
5222 while (HAL_IS_BIT_CLR(hcryp->Instance->SR, CRYP_FLAG_OFNE)) in CRYP_WaitOnOFNEFlag()