diff --git a/Src/stm32l0xx_hal_cryp.c b/Src/stm32l0xx_hal_cryp.c
index 4ca4430..b8aa102 100644
--- a/Src/stm32l0xx_hal_cryp.c
+++ b/Src/stm32l0xx_hal_cryp.c
@@ -822,7 +822,13 @@
     
     /* Get the last input data address */
     inputaddr = (uint32_t)hcryp->pCrypInBuffPtr;
-    
+
+    /* Increment the pointer before writing the input block in the IN FIFO to make sure that
+       when Computation Completed IRQ fires, the hcryp->CrypInCount has always a consistent value
+       and it is ready for the next operation. */
+    hcryp->pCrypInBuffPtr += 16U;
+    hcryp->CrypInCount -= 16U;
+
     /* Write the Input block in the Data Input register */
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
@@ -831,9 +837,7 @@
     hcryp->Instance->DINR  = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
-    hcryp->pCrypInBuffPtr += 16U;
-    hcryp->CrypInCount -= 16U;
-    
+
     /* Return function status */
     return HAL_OK;
   }
@@ -911,7 +915,13 @@
     
     /* Get the last input data address */
     inputaddr = (uint32_t)hcryp->pCrypInBuffPtr;
-    
+
+    /* Increment the pointer before writing the input block in the IN FIFO to make sure that
+       when Computation Completed IRQ fires, the hcryp->CrypInCount has always a consistent value
+       and it is ready for the next operation. */
+    hcryp->pCrypInBuffPtr += 16U;
+    hcryp->CrypInCount -= 16U;
+
     /* Write the Input block in the Data Input register */
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
@@ -920,9 +930,7 @@
     hcryp->Instance->DINR  = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
-    hcryp->pCrypInBuffPtr += 16U;
-    hcryp->CrypInCount -= 16U;
-    
+
     /* Return function status */
     return HAL_OK;
   }
@@ -1000,7 +1008,13 @@
     
     /* Get the last input data address */
     inputaddr = (uint32_t)hcryp->pCrypInBuffPtr;
-    
+
+    /* Increment the pointer before writing the input block in the IN FIFO to make sure that
+       when Computation Completed IRQ fires, the hcryp->CrypInCount has always a consistent value
+       and it is ready for the next operation. */
+    hcryp->pCrypInBuffPtr += 16U;
+    hcryp->CrypInCount -= 16U;
+
     /* Write the Input block in the Data Input register */
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
@@ -1009,9 +1023,7 @@
     hcryp->Instance->DINR  = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
-    hcryp->pCrypInBuffPtr += 16U;
-    hcryp->CrypInCount -= 16U;
-    
+
     /* Return function status */
     return HAL_OK;
   }
@@ -1086,7 +1098,13 @@
     
     /* Get the last input data address */
     inputaddr = (uint32_t)hcryp->pCrypInBuffPtr;
-    
+
+    /* Increment the pointer before writing the input block in the IN FIFO to make sure that
+       when Computation Completed IRQ fires, the hcryp->CrypInCount has always a consistent value
+       and it is ready for the next operation. */
+    hcryp->pCrypInBuffPtr += 16U;
+    hcryp->CrypInCount -= 16U;
+
     /* Write the Input block in the Data Input register */
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
@@ -1095,9 +1113,7 @@
     hcryp->Instance->DINR  = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
-    hcryp->pCrypInBuffPtr += 16U;
-    hcryp->CrypInCount -= 16U;    
-    
+
     /* Return function status */
     return HAL_OK;
   }
@@ -1175,7 +1191,13 @@
     
     /* Get the last input data address */
     inputaddr = (uint32_t)hcryp->pCrypInBuffPtr;
-    
+
+    /* Increment the pointer before writing the input block in the IN FIFO to make sure that
+       when Computation Completed IRQ fires, the hcryp->CrypInCount has always a consistent value
+       and it is ready for the next operation. */
+    hcryp->pCrypInBuffPtr += 16U;
+    hcryp->CrypInCount -= 16U;
+
     /* Write the Input block in the Data Input register */
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
@@ -1184,9 +1206,7 @@
     hcryp->Instance->DINR  = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
-    hcryp->pCrypInBuffPtr += 16U;
-    hcryp->CrypInCount -= 16U;    
-    
+
     /* Return function status */
     return HAL_OK;
   }
@@ -1264,7 +1284,13 @@
     
     /* Get the last input data address */
     inputaddr = (uint32_t)hcryp->pCrypInBuffPtr;
-    
+
+    /* Increment the pointer before writing the input block in the IN FIFO to make sure that
+       when Computation Completed IRQ fires, the hcryp->CrypInCount has always a consistent value
+       and it is ready for the next operation. */
+    hcryp->pCrypInBuffPtr += 16U;
+    hcryp->CrypInCount -= 16U;
+
     /* Write the Input block in the Data Input register */
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
@@ -1272,10 +1298,8 @@
     inputaddr+=4U;
     hcryp->Instance->DINR  = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
-    hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
-    hcryp->pCrypInBuffPtr += 16U;
-    hcryp->CrypInCount -= 16U;    
-    
+    hcryp->Instance->DINR = *(uint32_t*)(inputaddr); 
+
     /* Return function status */
     return HAL_OK;
   }
@@ -1921,7 +1945,13 @@
   {
     /* Get the last Input data address */
     inputaddr = (uint32_t)hcryp->pCrypInBuffPtr;
-    
+
+    /* Increment the pointer before writing the input block in the IN FIFO to make sure that
+       when Computation Completed IRQ fires, the hcryp->CrypInCount has always a consistent value
+       and it is ready for the next operation. */
+    hcryp->pCrypInBuffPtr += 16U;
+    hcryp->CrypInCount -= 16U;
+
     /* Write the Input block in the Data Input register */
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
@@ -1930,8 +1960,6 @@
     hcryp->Instance->DINR  = *(uint32_t*)(inputaddr);
     inputaddr+=4U;
     hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
-    hcryp->pCrypInBuffPtr += 16U;
-    hcryp->CrypInCount -= 16U;      
   }
   return HAL_OK;
 }
