mirror of https://github.com/wolfSSL/wolfssl.git
Fix for Cube HAL v2 back-to-back DES/DES3. Whitespace. Enable the new FIFO 16 block logic for all hardware that supports it.
parent
c52c2e5dfb
commit
fb10c90935
|
@ -173,7 +173,7 @@
|
||||||
(void)dir;
|
(void)dir;
|
||||||
|
|
||||||
#ifndef WOLFSSL_STM32_CUBEMX
|
#ifndef WOLFSSL_STM32_CUBEMX
|
||||||
{
|
{
|
||||||
word32 *dkey1 = des->key[0];
|
word32 *dkey1 = des->key[0];
|
||||||
word32 *dkey2 = des->key[1];
|
word32 *dkey2 = des->key[1];
|
||||||
word32 *dkey3 = des->key[2];
|
word32 *dkey3 = des->key[2];
|
||||||
|
@ -224,7 +224,6 @@
|
||||||
hcryp.Init.pInitVect = (STM_CRYPT_TYPE*)des->reg;
|
hcryp.Init.pInitVect = (STM_CRYPT_TYPE*)des->reg;
|
||||||
#ifdef STM32_HAL_V2
|
#ifdef STM32_HAL_V2
|
||||||
hcryp.Init.DataWidthUnit = CRYP_DATAWIDTHUNIT_BYTE;
|
hcryp.Init.DataWidthUnit = CRYP_DATAWIDTHUNIT_BYTE;
|
||||||
ByteReverseWords(des->reg, des->reg, DES_BLOCK_SIZE);
|
|
||||||
if (mode == DES_CBC)
|
if (mode == DES_CBC)
|
||||||
hcryp.Init.Algorithm = CRYP_DES_CBC;
|
hcryp.Init.Algorithm = CRYP_DES_CBC;
|
||||||
else
|
else
|
||||||
|
@ -242,11 +241,14 @@
|
||||||
HAL_CRYP_Decrypt(&hcryp, (uint32_t*)in, sz, (uint32_t*)out,
|
HAL_CRYP_Decrypt(&hcryp, (uint32_t*)in, sz, (uint32_t*)out,
|
||||||
STM32_HAL_TIMEOUT);
|
STM32_HAL_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
/* save off IV */
|
||||||
|
des->reg[0] = hcryp.Instance->IV0LR;
|
||||||
|
des->reg[1] = hcryp.Instance->IV0RR;
|
||||||
#else
|
#else
|
||||||
while (sz > 0) {
|
while (sz > 0) {
|
||||||
/* if input and output same will overwrite input iv */
|
/* if input and output same will overwrite input iv */
|
||||||
XMEMCPY(des->tmp, in + sz - DES_BLOCK_SIZE, DES_BLOCK_SIZE);
|
XMEMCPY(des->tmp, in + sz - DES_BLOCK_SIZE, DES_BLOCK_SIZE);
|
||||||
|
|
||||||
if (mode == DES_CBC) {
|
if (mode == DES_CBC) {
|
||||||
if (dir == DES_ENCRYPTION) {
|
if (dir == DES_ENCRYPTION) {
|
||||||
HAL_CRYP_DESCBC_Encrypt(&hcryp, (uint8_t*)in,
|
HAL_CRYP_DESCBC_Encrypt(&hcryp, (uint8_t*)in,
|
||||||
|
@ -386,7 +388,6 @@
|
||||||
hcryp.Init.pInitVect = (STM_CRYPT_TYPE*)des->reg;
|
hcryp.Init.pInitVect = (STM_CRYPT_TYPE*)des->reg;
|
||||||
#ifdef STM32_HAL_V2
|
#ifdef STM32_HAL_V2
|
||||||
hcryp.Init.DataWidthUnit = CRYP_DATAWIDTHUNIT_BYTE;
|
hcryp.Init.DataWidthUnit = CRYP_DATAWIDTHUNIT_BYTE;
|
||||||
ByteReverseWords(des->reg, des->reg, DES_BLOCK_SIZE);
|
|
||||||
hcryp.Init.Algorithm = CRYP_TDES_CBC;
|
hcryp.Init.Algorithm = CRYP_TDES_CBC;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -401,6 +402,9 @@
|
||||||
HAL_CRYP_Decrypt(&hcryp, (uint32_t*)in, sz, (uint32_t*)out,
|
HAL_CRYP_Decrypt(&hcryp, (uint32_t*)in, sz, (uint32_t*)out,
|
||||||
STM32_HAL_TIMEOUT);
|
STM32_HAL_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
/* save off IV */
|
||||||
|
des->reg[0] = hcryp.Instance->IV0LR;
|
||||||
|
des->reg[1] = hcryp.Instance->IV0RR;
|
||||||
#else
|
#else
|
||||||
while (sz > 0) {
|
while (sz > 0) {
|
||||||
if (dir == DES_ENCRYPTION) {
|
if (dir == DES_ENCRYPTION) {
|
||||||
|
@ -1818,8 +1822,12 @@
|
||||||
|
|
||||||
void wc_Des_SetIV(Des* des, const byte* iv)
|
void wc_Des_SetIV(Des* des, const byte* iv)
|
||||||
{
|
{
|
||||||
if (des && iv)
|
if (des && iv) {
|
||||||
XMEMCPY(des->reg, iv, DES_BLOCK_SIZE);
|
XMEMCPY(des->reg, iv, DES_BLOCK_SIZE);
|
||||||
|
#ifdef STM32_HAL_V2
|
||||||
|
ByteReverseWords(des->reg, des->reg, DES_BLOCK_SIZE);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
else if (des)
|
else if (des)
|
||||||
XMEMSET(des->reg, 0, DES_BLOCK_SIZE);
|
XMEMSET(des->reg, 0, DES_BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
|
@ -1829,8 +1837,12 @@ int wc_Des3_SetIV(Des3* des, const byte* iv)
|
||||||
if (des == NULL) {
|
if (des == NULL) {
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
}
|
}
|
||||||
if (iv)
|
if (iv) {
|
||||||
XMEMCPY(des->reg, iv, DES_BLOCK_SIZE);
|
XMEMCPY(des->reg, iv, DES_BLOCK_SIZE);
|
||||||
|
#ifdef STM32_HAL_V2
|
||||||
|
ByteReverseWords(des->reg, des->reg, DES_BLOCK_SIZE);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
else
|
else
|
||||||
XMEMSET(des->reg, 0, DES_BLOCK_SIZE);
|
XMEMSET(des->reg, 0, DES_BLOCK_SIZE);
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,10 @@
|
||||||
|
|
||||||
/* STM32 register size in bytes */
|
/* STM32 register size in bytes */
|
||||||
#define STM32_HASH_REG_SIZE 4
|
#define STM32_HASH_REG_SIZE 4
|
||||||
#if defined(WOLFSSL_STM32U5) || defined(WOLFSSL_STM32H7)
|
#if defined(WOLFSSL_STM32F4) || defined(WOLFSSL_STM32F7) || \
|
||||||
|
defined(WOLFSSL_STM32L4) || defined(WOLFSSL_STM32L5) || \
|
||||||
|
defined(WOLFSSL_STM32H7) || defined(WOLFSSL_STM32U5) || \
|
||||||
|
defined(WOLFSSL_STM32WB)
|
||||||
#define STM32_HASH_FIFO_SIZE 16 /* FIFO is 16 deep 32-bits wide */
|
#define STM32_HASH_FIFO_SIZE 16 /* FIFO is 16 deep 32-bits wide */
|
||||||
#else
|
#else
|
||||||
#define STM32_HASH_FIFO_SIZE 1
|
#define STM32_HASH_FIFO_SIZE 1
|
||||||
|
|
Loading…
Reference in New Issue