From 819a7ae9fc7721f675757c0925821f91b20dfc8f Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Mon, 8 Apr 2019 17:19:59 +0100 Subject: [PATCH] Implement AES CTR ciphers in the default provider Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8700) --- crypto/evp/evp_enc.c | 3 +++ providers/common/ciphers/aes.c | 11 +++++++++++ providers/common/include/internal/provider_algs.h | 3 +++ providers/default/defltprov.c | 3 +++ 4 files changed, 20 insertions(+) diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c index 160c04b57c..31e590bd95 100644 --- a/crypto/evp/evp_enc.c +++ b/crypto/evp/evp_enc.c @@ -157,6 +157,9 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, case NID_aes_256_cfb8: case NID_aes_192_cfb8: case NID_aes_128_cfb8: + case NID_aes_256_ctr: + case NID_aes_192_ctr: + case NID_aes_128_ctr: break; default: goto legacy; diff --git a/providers/common/ciphers/aes.c b/providers/common/ciphers/aes.c index a7af6a6773..285fea6ea9 100644 --- a/providers/common/ciphers/aes.c +++ b/providers/common/ciphers/aes.c @@ -219,6 +219,12 @@ IMPLEMENT_new_ctx(cfb8, CFB, 256) IMPLEMENT_new_ctx(cfb8, CFB, 192) IMPLEMENT_new_ctx(cfb8, CFB, 128) +/* CTR */ +IMPLEMENT_new_params(ctr, CTR) +IMPLEMENT_new_ctx(ctr, CTR, 256) +IMPLEMENT_new_ctx(ctr, CTR, 192) +IMPLEMENT_new_ctx(ctr, CTR, 128) + static void aes_freectx(void *vctx) { PROV_AES_KEY *ctx = (PROV_AES_KEY *)vctx; @@ -362,3 +368,8 @@ IMPLEMENT_stream_funcs(cfb1, 128, 16) IMPLEMENT_stream_funcs(cfb8, 256, 16) IMPLEMENT_stream_funcs(cfb8, 192, 16) IMPLEMENT_stream_funcs(cfb8, 128, 16) + +/* CTR */ +IMPLEMENT_stream_funcs(ctr, 256, 16) +IMPLEMENT_stream_funcs(ctr, 192, 16) +IMPLEMENT_stream_funcs(ctr, 128, 16) diff --git a/providers/common/include/internal/provider_algs.h b/providers/common/include/internal/provider_algs.h index 40d7eca304..dd9211bbbc 100644 --- a/providers/common/include/internal/provider_algs.h +++ b/providers/common/include/internal/provider_algs.h @@ -29,3 +29,6 @@ extern const OSSL_DISPATCH aes128cfb1_functions[]; extern const OSSL_DISPATCH aes256cfb8_functions[]; extern const OSSL_DISPATCH aes192cfb8_functions[]; extern const OSSL_DISPATCH aes128cfb8_functions[]; +extern const OSSL_DISPATCH aes256ctr_functions[]; +extern const OSSL_DISPATCH aes192ctr_functions[]; +extern const OSSL_DISPATCH aes128ctr_functions[]; diff --git a/providers/default/defltprov.c b/providers/default/defltprov.c index 54b3b8c9ad..cba2dccf03 100644 --- a/providers/default/defltprov.c +++ b/providers/default/defltprov.c @@ -74,6 +74,9 @@ static const OSSL_ALGORITHM deflt_ciphers[] = { { "AES-256-CFB8", "default=yes", aes256cfb8_functions }, { "AES-192-CFB8", "default=yes", aes192cfb8_functions }, { "AES-128-CFB8", "default=yes", aes128cfb8_functions }, + { "AES-256-CTR", "default=yes", aes256ctr_functions }, + { "AES-192-CTR", "default=yes", aes192ctr_functions }, + { "AES-128-CTR", "default=yes", aes128ctr_functions }, { NULL, NULL, NULL } }; -- 2.34.1