Fix CFB and OFB

This commit is contained in:
Eric Blankenhorn
2020-02-19 18:32:12 -06:00
parent 61ebfd571c
commit b4563e6af3
2 changed files with 109 additions and 24 deletions

View File

@ -18077,7 +18077,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
ctx->flags |= WOLFSSL_EVP_CIPH_XTS_MODE;
ctx->keyLen = 32;
ctx->block_size = 1;
ctx->ivSz = 16;
ctx->ivSz = AES_BLOCK_SIZE;
if (iv)
XMEMCPY(ctx->iv, iv, ctx->ivSz);
@ -18105,7 +18105,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
ctx->flags |= WOLFSSL_EVP_CIPH_XTS_MODE;
ctx->keyLen = 64;
ctx->block_size = 1;
ctx->ivSz = 16;
ctx->ivSz = AES_BLOCK_SIZE;
if (iv)
XMEMCPY(ctx->iv, iv, ctx->ivSz);
@ -18595,7 +18595,38 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
XMEMCPY(ctx->iv, &ctx->cipher.aes.reg, AES_BLOCK_SIZE);
break;
#endif /* WOLFSSL_AES_COUNTER */
#ifdef WOLFSSL_AES_CFB
#if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS)
case AES_128_CFB1_TYPE:
case AES_192_CFB1_TYPE:
case AES_256_CFB1_TYPE:
WOLFSSL_MSG("AES CFB1");
break;
case AES_128_CFB8_TYPE:
case AES_192_CFB8_TYPE:
case AES_256_CFB8_TYPE:
WOLFSSL_MSG("AES CFB8");
break;
#endif /* !HAVE_SELFTEST && !HAVE_FIPS */
case AES_128_CFB128_TYPE:
case AES_192_CFB128_TYPE:
case AES_256_CFB128_TYPE:
WOLFSSL_MSG("AES CFB128");
break;
#endif /* WOLFSSL_AES_CFB */
#if defined(WOLFSSL_AES_OFB)
case AES_128_OFB_TYPE:
case AES_192_OFB_TYPE:
case AES_256_OFB_TYPE:
WOLFSSL_MSG("AES OFB");
break;
#endif /* WOLFSSL_AES_OFB */
#ifdef WOLFSSL_AES_XTS
case AES_128_XTS_TYPE:
case AES_256_XTS_TYPE:
WOLFSSL_MSG("AES XTS");
break;
#endif /* WOLFSSL_AES_XTS */
#endif /* NO_AES */
#ifndef NO_DES3
@ -33704,6 +33735,38 @@ int wolfSSL_EVP_CIPHER_CTX_iv_length(const WOLFSSL_EVP_CIPHER_CTX* ctx)
WOLFSSL_MSG("ARC4");
return 0;
#endif
#ifdef WOLFSSL_AES_CFB
#if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS)
case AES_128_CFB1_TYPE:
case AES_192_CFB1_TYPE:
case AES_256_CFB1_TYPE:
WOLFSSL_MSG("AES CFB1");
return AES_BLOCK_SIZE;
case AES_128_CFB8_TYPE:
case AES_192_CFB8_TYPE:
case AES_256_CFB8_TYPE:
WOLFSSL_MSG("AES CFB8");
return AES_BLOCK_SIZE;
#endif /* !HAVE_SELFTEST && !HAVE_FIPS */
case AES_128_CFB128_TYPE:
case AES_192_CFB128_TYPE:
case AES_256_CFB128_TYPE:
WOLFSSL_MSG("AES CFB128");
return AES_BLOCK_SIZE;
#endif /* WOLFSSL_AES_CFB */
#if defined(WOLFSSL_AES_OFB)
case AES_128_OFB_TYPE:
case AES_192_OFB_TYPE:
case AES_256_OFB_TYPE:
WOLFSSL_MSG("AES OFB");
return AES_BLOCK_SIZE;
#endif /* WOLFSSL_AES_OFB */
#ifdef WOLFSSL_AES_XTS
case AES_128_XTS_TYPE:
case AES_256_XTS_TYPE:
WOLFSSL_MSG("AES XTS");
return AES_BLOCK_SIZE;
#endif /* WOLFSSL_AES_XTS */
case NULL_CIPHER_TYPE :
WOLFSSL_MSG("NULL");

View File

@ -6423,27 +6423,6 @@ EVP_TEST_END:
}
#endif
#endif /* WOLFSSL_AES_128 */
#ifdef WOLFSSL_AES_192
/* 192 key tests */
#ifdef OPENSSL_EXTRA
ret = EVP_test(EVP_aes_192_cfb8(), key2, iv2, msg2, sizeof(msg2),
cipher2, sizeof(cipher2));
if (ret != 0) {
return ret;
}
#endif
#endif /* WOLFSSL_AES_192 */
#ifdef WOLFSSL_AES_256
/* 192 key tests */
#ifdef OPENSSL_EXTRA
ret = EVP_test(EVP_aes_256_cfb8(), key3, iv3, msg3, sizeof(msg3),
cipher3, sizeof(cipher3));
if (ret != 0) {
return ret;
}
#endif
#endif /* WOLFSSL_AES_256 */
#ifdef WOLFSSL_AES_192
/* 192 key tests */
ret = wc_AesSetKey(&enc, key2, sizeof(key2), iv2, AES_ENCRYPTION);
@ -6635,6 +6614,49 @@ EVP_TEST_END:
return -4746;
#endif /* HAVE_AES_DECRYPT */
#endif /* WOLFSSL_AES_128 */
#ifdef WOLFSSL_AES_192
/* 192 key tests */
ret = wc_AesSetKey(&enc, key2, sizeof(key2), iv2, AES_ENCRYPTION);
if (ret != 0)
return -4749;
XMEMSET(cipher, 0, sizeof(cipher));
ret = wc_AesCfb8Encrypt(&enc, cipher, msg2, sizeof(msg2));
if (ret != 0)
return -4750;
if (XMEMCMP(cipher, cipher2, sizeof(msg2)) != 0)
return -4751;
#ifdef OPENSSL_EXTRA
ret = EVP_test(EVP_aes_192_cfb8(), key2, iv2, msg2, sizeof(msg2),
cipher2, sizeof(msg2));
if (ret != 0) {
return ret;
}
#endif
#endif /* WOLFSSL_AES_192 */
#ifdef WOLFSSL_AES_256
/* 256 key tests */
ret = wc_AesSetKey(&enc, key3, sizeof(key3), iv3, AES_ENCRYPTION);
if (ret != 0)
return -4754;
XMEMSET(cipher, 0, sizeof(cipher));
ret = wc_AesCfb8Encrypt(&enc, cipher, msg3, sizeof(msg3));
if (ret != 0)
return -4755;
if (XMEMCMP(cipher, cipher3, sizeof(cipher3)) != 0)
return -4756;
#ifdef OPENSSL_EXTRA
ret = EVP_test(EVP_aes_256_cfb8(), key3, iv3, msg3, sizeof(msg3),
cipher3, sizeof(msg3));
if (ret != 0) {
return ret;
}
#endif
#endif /* WOLFSSL_AES_256 */
return ret;
}