|
|
@@ -3700,10 +3700,6 @@ static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp)
|
|
|
header has already been processed;
|
|
|
only process here message payload */
|
|
|
{
|
|
|
-
|
|
|
- /* Enable computation complete flag and error interrupts */
|
|
|
- __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE);
|
|
|
-
|
|
|
/* Set to 0 the number of non-valid bytes using NPBLB register*/
|
|
|
MODIFY_REG(hcryp->Instance->CR, AES_CR_NPBLB, 0U);
|
|
|
|
|
|
@@ -3740,6 +3736,9 @@ static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp)
|
|
|
HAL_CRYP_InCpltCallback(hcryp);
|
|
|
#endif /* USE_HAL_CRYP_REGISTER_CALLBACKS */
|
|
|
}
|
|
|
+
|
|
|
+ /* Enable computation complete flag and error interrupts */
|
|
|
+ __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE);
|
|
|
}
|
|
|
else /* Size < 16Bytes : first block is the last block*/
|
|
|
{
|
|
|
@@ -3788,6 +3787,9 @@ static HAL_StatusTypeDef CRYP_AESGCM_Process_IT(CRYP_HandleTypeDef *hcryp)
|
|
|
/*Call legacy weak Input complete callback*/
|
|
|
HAL_CRYP_InCpltCallback(hcryp);
|
|
|
#endif /* USE_HAL_CRYP_REGISTER_CALLBACKS */
|
|
|
+
|
|
|
+ /* Enable computation complete flag and error interrupts */
|
|
|
+ __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -4244,14 +4246,14 @@ static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp)
|
|
|
}
|
|
|
else if (hcryp->Size >= 16U)
|
|
|
{
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
|
|
|
hcryp->CrypInCount++;
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U));
|
|
|
hcryp->CrypInCount++;
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U));
|
|
|
hcryp->CrypInCount++;
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U));
|
|
|
hcryp->CrypInCount++;
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U));
|
|
|
|
|
|
if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U))
|
|
|
{
|
|
|
@@ -4357,14 +4359,14 @@ static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp)
|
|
|
{
|
|
|
/* Write the first input header block in the Input FIFO,
|
|
|
the following header data will be fed after interrupt occurrence */
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
|
|
|
hcryp->CrypHeaderCount++;
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount - 1U);
|
|
|
hcryp->CrypHeaderCount++;
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount - 1U);
|
|
|
hcryp->CrypHeaderCount++;
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount);
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount - 1U);
|
|
|
hcryp->CrypHeaderCount++;
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->Init.Header + hcryp->CrypHeaderCount - 1U);
|
|
|
}/* if (hcryp->Init.HeaderSize == 0U) */ /* Header phase is skipped*/
|
|
|
} /* end of if (dokeyivconfig == 1U) */
|
|
|
else /* Key and IV have already been configured,
|
|
|
@@ -4385,14 +4387,14 @@ static HAL_StatusTypeDef CRYP_AESCCM_Process_IT(CRYP_HandleTypeDef *hcryp)
|
|
|
}
|
|
|
else if (hcryp->Size >= 16U)
|
|
|
{
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
|
|
|
hcryp->CrypInCount++;
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U));
|
|
|
hcryp->CrypInCount++;
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U));
|
|
|
hcryp->CrypInCount++;
|
|
|
- hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + hcryp->CrypInCount);
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U));
|
|
|
hcryp->CrypInCount++;
|
|
|
+ hcryp->Instance->DINR = *(uint32_t *)(hcryp->pCrypInBuffPtr + (hcryp->CrypInCount - 1U));
|
|
|
|
|
|
if ((hcryp->CrypInCount == (hcryp->Size / 4U)) && ((hcryp->Size % 16U) == 0U))
|
|
|
{
|