mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 02:37:28 +02:00
Restrict AES-GCM IV minimum size to 96-bits for newer FIPS builds.
This commit is contained in:
@ -7387,14 +7387,23 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
* functions */
|
||||
#ifndef WC_NO_RNG
|
||||
|
||||
static WC_INLINE int CheckAesGcmIvSize(int ivSz) {
|
||||
#if defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 4)
|
||||
return (ivSz == GCM_NONCE_MID_SZ ||
|
||||
ivSz == GCM_NONCE_MAX_SZ);
|
||||
#else
|
||||
return (ivSz == GCM_NONCE_MIN_SZ ||
|
||||
ivSz == GCM_NONCE_MID_SZ ||
|
||||
ivSz == GCM_NONCE_MAX_SZ);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int wc_AesGcmSetExtIV(Aes* aes, const byte* iv, word32 ivSz)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (aes == NULL || iv == NULL ||
|
||||
(ivSz != GCM_NONCE_MIN_SZ && ivSz != GCM_NONCE_MID_SZ &&
|
||||
ivSz != GCM_NONCE_MAX_SZ)) {
|
||||
|
||||
if (aes == NULL || iv == NULL || !CheckAesGcmIvSize(ivSz)) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
@ -7419,9 +7428,7 @@ int wc_AesGcmSetIV(Aes* aes, word32 ivSz,
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (aes == NULL || rng == NULL ||
|
||||
(ivSz != GCM_NONCE_MIN_SZ && ivSz != GCM_NONCE_MID_SZ &&
|
||||
ivSz != GCM_NONCE_MAX_SZ) ||
|
||||
if (aes == NULL || rng == NULL || !CheckAesGcmIvSize(ivSz) ||
|
||||
(ivFixed == NULL && ivFixedSz != 0) ||
|
||||
(ivFixed != NULL && ivFixedSz != AES_IV_FIXED_SZ)) {
|
||||
|
||||
|
@ -131,7 +131,7 @@ enum {
|
||||
KEYWRAP_BLOCK_SIZE = 8,
|
||||
|
||||
GCM_NONCE_MAX_SZ = 16, /* wolfCrypt's maximum nonce size allowed. */
|
||||
GCM_NONCE_MID_SZ = 12, /* The usual default nonce size for AES-GCM. */
|
||||
GCM_NONCE_MID_SZ = 12, /* The default nonce size for AES-GCM. */
|
||||
GCM_NONCE_MIN_SZ = 8, /* wolfCrypt's minimum nonce size allowed. */
|
||||
CCM_NONCE_MIN_SZ = 7,
|
||||
CCM_NONCE_MAX_SZ = 13,
|
||||
|
Reference in New Issue
Block a user