diff options
author | jsing <> | 2025-05-19 03:55:09 +0000 |
---|---|---|
committer | jsing <> | 2025-05-19 03:55:09 +0000 |
commit | d3be13ea69460bd1cf2b43c5af62e441ad586942 (patch) | |
tree | 54d0b7d13be221d4b222e3b498e5d706d0fa82e2 | |
parent | dbe0564d1cb9d64e3c92a2a76d70de8f71f75b6a (diff) | |
download | openbsd-d3be13ea69460bd1cf2b43c5af62e441ad586942.tar.gz openbsd-d3be13ea69460bd1cf2b43c5af62e441ad586942.tar.bz2 openbsd-d3be13ea69460bd1cf2b43c5af62e441ad586942.zip |
Simplify EVP AES code for OFB.
Provide AES-NI with its own aesni_ofb_cipher() and switch aes_ofb_cipher()
to call AES_ofb128_encrypt() directly.
ok joshua@ tb@
-rw-r--r-- | src/lib/libcrypto/evp/e_aes.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/lib/libcrypto/evp/e_aes.c b/src/lib/libcrypto/evp/e_aes.c index b16a1e930e..d0bcb2b3dd 100644 --- a/src/lib/libcrypto/evp/e_aes.c +++ b/src/lib/libcrypto/evp/e_aes.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: e_aes.c,v 1.66 2025/05/19 01:49:23 jsing Exp $ */ | 1 | /* $OpenBSD: e_aes.c,v 1.67 2025/05/19 03:55:09 jsing Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -278,6 +278,18 @@ aesni_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
278 | } | 278 | } |
279 | 279 | ||
280 | static int | 280 | static int |
281 | aesni_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | ||
282 | const unsigned char *in, size_t len) | ||
283 | { | ||
284 | EVP_AES_KEY *eak = ctx->cipher_data; | ||
285 | |||
286 | CRYPTO_ofb128_encrypt(in, out, len, &eak->ks, ctx->iv, &ctx->num, | ||
287 | (block128_f)aesni_encrypt); | ||
288 | |||
289 | return 1; | ||
290 | } | ||
291 | |||
292 | static int | ||
281 | aesni_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | 293 | aesni_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, |
282 | const unsigned char *iv, int enc) | 294 | const unsigned char *iv, int enc) |
283 | { | 295 | { |
@@ -452,10 +464,10 @@ static int | |||
452 | aes_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 464 | aes_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
453 | const unsigned char *in, size_t len) | 465 | const unsigned char *in, size_t len) |
454 | { | 466 | { |
455 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | 467 | EVP_AES_KEY *eak = ctx->cipher_data; |
468 | |||
469 | AES_ofb128_encrypt(in, out, len, &eak->ks, ctx->iv, &ctx->num); | ||
456 | 470 | ||
457 | CRYPTO_ofb128_encrypt(in, out, len, &dat->ks, ctx->iv, &ctx->num, | ||
458 | dat->block); | ||
459 | return 1; | 471 | return 1; |
460 | } | 472 | } |
461 | 473 | ||
@@ -602,7 +614,7 @@ static const EVP_CIPHER aesni_128_ofb = { | |||
602 | .iv_len = 16, | 614 | .iv_len = 16, |
603 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_OFB_MODE, | 615 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_OFB_MODE, |
604 | .init = aesni_init_key, | 616 | .init = aesni_init_key, |
605 | .do_cipher = aes_ofb_cipher, | 617 | .do_cipher = aesni_ofb_cipher, |
606 | .ctx_size = sizeof(EVP_AES_KEY), | 618 | .ctx_size = sizeof(EVP_AES_KEY), |
607 | }; | 619 | }; |
608 | #endif | 620 | #endif |
@@ -848,7 +860,7 @@ static const EVP_CIPHER aesni_192_ofb = { | |||
848 | .iv_len = 16, | 860 | .iv_len = 16, |
849 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_OFB_MODE, | 861 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_OFB_MODE, |
850 | .init = aesni_init_key, | 862 | .init = aesni_init_key, |
851 | .do_cipher = aes_ofb_cipher, | 863 | .do_cipher = aesni_ofb_cipher, |
852 | .ctx_size = sizeof(EVP_AES_KEY), | 864 | .ctx_size = sizeof(EVP_AES_KEY), |
853 | }; | 865 | }; |
854 | #endif | 866 | #endif |
@@ -1094,7 +1106,7 @@ static const EVP_CIPHER aesni_256_ofb = { | |||
1094 | .iv_len = 16, | 1106 | .iv_len = 16, |
1095 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_OFB_MODE, | 1107 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_OFB_MODE, |
1096 | .init = aesni_init_key, | 1108 | .init = aesni_init_key, |
1097 | .do_cipher = aes_ofb_cipher, | 1109 | .do_cipher = aesni_ofb_cipher, |
1098 | .ctx_size = sizeof(EVP_AES_KEY), | 1110 | .ctx_size = sizeof(EVP_AES_KEY), |
1099 | }; | 1111 | }; |
1100 | #endif | 1112 | #endif |