Merge pull request #3627 from elms/EVP/ofb_rc4_size

EVP: return proper cipher type and block size
This commit is contained in:
toddouska
2021-01-18 15:13:55 -08:00
committed by GitHub
2 changed files with 101 additions and 3 deletions

View File

@ -34620,6 +34620,78 @@ static void test_wolfSSL_EVP_X_STATE_LEN(void)
printf(resultFmt, passed);
#endif
}
static void test_wolfSSL_EVP_CIPHER_block_size(void)
{
#if defined(OPENSSL_ALL)
#ifdef HAVE_AES_CBC
#ifdef WOLFSSL_AES_128
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_128_cbc()), AES_BLOCK_SIZE);
#endif
#ifdef WOLFSSL_AES_192
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_192_cbc()), AES_BLOCK_SIZE);
#endif
#ifdef WOLFSSL_AES_256
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_256_cbc()), AES_BLOCK_SIZE);
#endif
#endif
#ifdef HAVE_AES_GCM
#ifdef WOLFSSL_AES_128
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_128_gcm()), 1);
#endif
#ifdef WOLFSSL_AES_192
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_192_gcm()), 1);
#endif
#ifdef WOLFSSL_AES_256
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_256_gcm()), 1);
#endif
#endif
#ifdef WOLFSSL_AES_COUNTER
#ifdef WOLFSSL_AES_128
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_128_ctr()), 1);
#endif
#ifdef WOLFSSL_AES_192
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_192_ctr()), 1);
#endif
#ifdef WOLFSSL_AES_256
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_256_ctr()), 1);
#endif
#endif
#ifdef WOLFSSL_AES_ECB
#ifdef WOLFSSL_AES_128
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_128_ecb()), AES_BLOCK_SIZE);
#endif
#ifdef WOLFSSL_AES_192
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_192_ecb()), AES_BLOCK_SIZE);
#endif
#ifdef WOLFSSL_AES_256
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_256_ecb()), AES_BLOCK_SIZE);
#endif
#endif
#ifdef WOLFSSL_AES_OFB
#ifdef WOLFSSL_AES_128
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_128_ofb()), 1);
#endif
#ifdef WOLFSSL_AES_192
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_192_ofb()), 1);
#endif
#ifdef WOLFSSL_AES_256
AssertIntEQ(EVP_CIPHER_block_size(EVP_aes_256_ofb()), 1);
#endif
#endif
#ifndef NO_RC4
AssertIntEQ(EVP_CIPHER_block_size(wolfSSL_EVP_rc4()), 1);
#endif
#endif /* OPENSSL_ALL */
}
static void test_wolfSSL_EVP_CIPHER_iv_length(void)
{
#if defined(OPENSSL_ALL)
@ -40146,6 +40218,7 @@ void ApiTest(void)
test_wolfSSL_EVP_PKEY_get0_EC_KEY();
test_wolfSSL_EVP_X_STATE();
test_wolfSSL_EVP_X_STATE_LEN();
test_wolfSSL_EVP_CIPHER_block_size();
test_wolfSSL_EVP_CIPHER_iv_length();
test_wolfSSL_EVP_SignInit_ex();
test_wolfSSL_EVP_DigestFinal_ex();

View File

@ -1122,7 +1122,26 @@ static unsigned int cipherType(const WOLFSSL_EVP_CIPHER *cipher)
return AES_256_CFB128_TYPE;
#endif
#endif /*HAVE_AES_CBC */
#if defined(WOLFSSL_AES_OFB)
#ifdef WOLFSSL_AES_128
else if (XSTRNCMP(cipher, EVP_AES_128_OFB, EVP_AES_SIZE) == 0)
return AES_128_OFB_TYPE;
#endif
#ifdef WOLFSSL_AES_192
else if (XSTRNCMP(cipher, EVP_AES_192_OFB, EVP_AES_SIZE) == 0)
return AES_192_OFB_TYPE;
#endif
#ifdef WOLFSSL_AES_256
else if (XSTRNCMP(cipher, EVP_AES_256_OFB, EVP_AES_SIZE) == 0)
return AES_256_OFB_TYPE;
#endif
#endif
#endif /* !NO_AES */
#ifndef NO_RC4
else if (XSTRNCMP(cipher, EVP_ARC4, EVP_ARC4_SIZE) == 0)
return ARC4_TYPE;
#endif
else return 0;
}
@ -1147,7 +1166,7 @@ int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher)
case AES_128_CTR_TYPE:
case AES_192_CTR_TYPE:
case AES_256_CTR_TYPE:
return AES_BLOCK_SIZE;
return 1;
#endif
#if defined(HAVE_AES_ECB)
case AES_128_ECB_TYPE:
@ -1179,12 +1198,18 @@ int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher)
return 1;
#endif
#endif /* NO_AES */
#ifndef NO_DES3
#ifndef NO_RC4
case ARC4_TYPE:
return 1;
#endif
#ifndef NO_DES3
case DES_CBC_TYPE: return 8;
case DES_EDE3_CBC_TYPE: return 8;
case DES_ECB_TYPE: return 8;
case DES_EDE3_ECB_TYPE: return 8;
#endif
#endif
default:
return 0;
}