forked from wolfSSL/wolfssl
Fix for TLS HMAC constant timing to ensure final is called for dummy operations. Added devCtx to AES for CryptoCb.
This commit is contained in:
@ -1112,6 +1112,9 @@ static int Hmac_UpdateFinal(Hmac* hmac, byte* digest, const byte* in,
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* call final to cleanup */
|
||||||
|
if (ret == 0)
|
||||||
|
ret = wc_HmacFinal(hmac, dummy);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -6528,6 +6528,7 @@ int wc_AesInit(Aes* aes, void* heap, int devId)
|
|||||||
|
|
||||||
#ifdef WOLF_CRYPTO_CB
|
#ifdef WOLF_CRYPTO_CB
|
||||||
aes->devId = devId;
|
aes->devId = devId;
|
||||||
|
aes->devCtx = NULL;
|
||||||
#else
|
#else
|
||||||
(void)devId;
|
(void)devId;
|
||||||
#endif
|
#endif
|
||||||
@ -6589,6 +6590,9 @@ void wc_AesFree(Aes* aes)
|
|||||||
#if defined(WOLFSSL_DEVCRYPTO) && \
|
#if defined(WOLFSSL_DEVCRYPTO) && \
|
||||||
(defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC))
|
(defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC))
|
||||||
wc_DevCryptoFree(&aes->ctx);
|
wc_DevCryptoFree(&aes->ctx);
|
||||||
|
#endif
|
||||||
|
#if defined(WOLF_CRYPTO_CB) || (defined(WOLFSSL_DEVCRYPTO) && \
|
||||||
|
(defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC)))
|
||||||
ForceZero((byte*)aes->devKey, AES_MAX_KEY_SIZE/WOLFSSL_BIT_SIZE);
|
ForceZero((byte*)aes->devKey, AES_MAX_KEY_SIZE/WOLFSSL_BIT_SIZE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,7 @@ typedef struct Aes {
|
|||||||
#endif /* WOLFSSL_AESNI */
|
#endif /* WOLFSSL_AESNI */
|
||||||
#ifdef WOLF_CRYPTO_CB
|
#ifdef WOLF_CRYPTO_CB
|
||||||
int devId;
|
int devId;
|
||||||
word32 devKey[AES_MAX_KEY_SIZE/WOLFSSL_BIT_SIZE/sizeof(word32)]; /* raw key */
|
void* devCtx;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_PKCS11
|
#ifdef HAVE_PKCS11
|
||||||
byte id[AES_MAX_ID_LEN];
|
byte id[AES_MAX_ID_LEN];
|
||||||
@ -182,9 +182,12 @@ typedef struct Aes {
|
|||||||
GCM_NONCE_MID_SZ)];
|
GCM_NONCE_MID_SZ)];
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(WOLF_CRYPTO_CB) || (defined(WOLFSSL_DEVCRYPTO) && \
|
||||||
|
(defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC)))
|
||||||
|
word32 devKey[AES_MAX_KEY_SIZE/WOLFSSL_BIT_SIZE/sizeof(word32)]; /* raw key */
|
||||||
|
#endif
|
||||||
#if defined(WOLFSSL_DEVCRYPTO) && \
|
#if defined(WOLFSSL_DEVCRYPTO) && \
|
||||||
(defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC))
|
(defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC))
|
||||||
word32 devKey[AES_MAX_KEY_SIZE/WOLFSSL_BIT_SIZE/sizeof(word32)]; /* raw key */
|
|
||||||
WC_CRYPTODEV ctx;
|
WC_CRYPTODEV ctx;
|
||||||
#endif
|
#endif
|
||||||
void* heap; /* memory hint to use */
|
void* heap; /* memory hint to use */
|
||||||
|
Reference in New Issue
Block a user