Merge pull request #3321 from SparkiDev/evp_xts_2

EVP CIPHER: fix block size, mode and table
This commit is contained in:
toddouska
2020-09-24 12:49:38 -07:00
committed by GitHub

View File

@ -920,7 +920,6 @@ WOLFSSL_API int wolfSSL_EVP_DecryptFinal_legacy(WOLFSSL_EVP_CIPHER_CTX *ctx,
}
#endif
int wolfSSL_EVP_CIPHER_CTX_block_size(const WOLFSSL_EVP_CIPHER_CTX *ctx)
{
if (ctx == NULL) return BAD_FUNC_ARG;
@ -1119,7 +1118,7 @@ int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher)
case AES_128_GCM_TYPE:
case AES_192_GCM_TYPE:
case AES_256_GCM_TYPE:
return AES_BLOCK_SIZE;
return 1;
#endif
#if defined(WOLFSSL_AES_COUNTER)
case AES_128_CTR_TYPE:
@ -1133,6 +1132,29 @@ int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher)
case AES_256_ECB_TYPE:
return AES_BLOCK_SIZE;
#endif
#if defined(WOLFSSL_AES_CFB)
case AES_128_CFB1_TYPE:
case AES_192_CFB1_TYPE:
case AES_256_CFB1_TYPE:
case AES_128_CFB8_TYPE:
case AES_192_CFB8_TYPE:
case AES_256_CFB8_TYPE:
case AES_128_CFB128_TYPE:
case AES_192_CFB128_TYPE:
case AES_256_CFB128_TYPE:
return 1;
#endif
#if defined(WOLFSSL_AES_OFB)
case AES_128_OFB_TYPE:
case AES_192_OFB_TYPE:
case AES_256_OFB_TYPE:
return 1;
#endif
#if defined(HAVE_AES_XTS)
case AES_128_XTS_TYPE:
case AES_256_XTS_TYPE:
return 1;
#endif
#endif /* NO_AES */
#ifndef NO_DES3
case DES_CBC_TYPE: return 8;
@ -1166,12 +1188,35 @@ unsigned long WOLFSSL_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher)
case AES_192_CTR_TYPE:
case AES_256_CTR_TYPE:
return WOLFSSL_EVP_CIPH_CTR_MODE;
#endif
#if defined(WOLFSSL_AES_CFB)
case AES_128_CFB1_TYPE:
case AES_192_CFB1_TYPE:
case AES_256_CFB1_TYPE:
case AES_128_CFB8_TYPE:
case AES_192_CFB8_TYPE:
case AES_256_CFB8_TYPE:
case AES_128_CFB128_TYPE:
case AES_192_CFB128_TYPE:
case AES_256_CFB128_TYPE:
return WOLFSSL_EVP_CIPH_CFB_MODE;
#endif
#if defined(WOLFSSL_AES_OFB)
case AES_128_OFB_TYPE:
case AES_192_OFB_TYPE:
case AES_256_OFB_TYPE:
return WOLFSSL_EVP_CIPH_OFB_MODE;
#endif
#if defined(WOLFSSL_AES_XTS)
case AES_128_XTS_TYPE:
case AES_256_XTS_TYPE:
return WOLFSSL_EVP_CIPH_XTS_MODE;
#endif
case AES_128_ECB_TYPE:
case AES_192_ECB_TYPE:
case AES_256_ECB_TYPE:
return WOLFSSL_EVP_CIPH_ECB_MODE;
#endif /* NO_ASE */
#endif /* NO_AES */
#ifndef NO_DES3
case DES_CBC_TYPE:
case DES_EDE3_CBC_TYPE:
@ -2799,7 +2844,6 @@ static const struct cipher{
{AES_256_ECB_TYPE, EVP_AES_256_ECB, NID_aes_256_ecb},
#endif
#endif
#endif
#ifndef NO_DES3