summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2025-06-16 14:50:30 +0000
committerjsing <>2025-06-16 14:50:30 +0000
commit00fc9ceec0393e897bffa9c4fc4a10b1c178d2e7 (patch)
tree1524a77bc344942b33697ada13d361283244a71d /src
parentd3ae11466b47a59d6352762d87d1de787ef7038b (diff)
downloadopenbsd-00fc9ceec0393e897bffa9c4fc4a10b1c178d2e7.tar.gz
openbsd-00fc9ceec0393e897bffa9c4fc4a10b1c178d2e7.tar.bz2
openbsd-00fc9ceec0393e897bffa9c4fc4a10b1c178d2e7.zip
Remove AES-NI specific EVP_CIPHER methods for CFB/CFB1/CFB8.
These now end up in aesni_encrypt() via AES_encrypt(), when appropriate. ok tb@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/evp/e_aes.c206
1 files changed, 1 insertions, 205 deletions
diff --git a/src/lib/libcrypto/evp/e_aes.c b/src/lib/libcrypto/evp/e_aes.c
index 9b09cf3639..34f5513300 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.74 2025/06/16 14:42:18 jsing Exp $ */ 1/* $OpenBSD: e_aes.c,v 1.75 2025/06/16 14:50:30 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 *
@@ -160,57 +160,6 @@ void aesni_ccm64_decrypt_blocks (const unsigned char *in, unsigned char *out,
160 unsigned char cmac[16]); 160 unsigned char cmac[16]);
161 161
162static int 162static int
163aesni_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
164 const unsigned char *in, size_t len)
165{
166 EVP_AES_KEY *eak = ctx->cipher_data;
167
168 CRYPTO_cfb128_encrypt(in, out, len, &eak->ks, ctx->iv, &ctx->num,
169 ctx->encrypt, (block128_f)aesni_encrypt);
170
171 return 1;
172}
173
174static int
175aesni_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
176 const unsigned char *in, size_t len)
177{
178 EVP_AES_KEY *eak = ctx->cipher_data;
179
180 CRYPTO_cfb128_8_encrypt(in, out, len, &eak->ks, ctx->iv, &ctx->num,
181 ctx->encrypt, (block128_f)aesni_encrypt);
182
183 return 1;
184}
185
186static int
187aesni_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
188 const unsigned char *in, size_t len)
189{
190 EVP_AES_KEY *eak = ctx->cipher_data;
191
192 if ((ctx->flags & EVP_CIPH_FLAG_LENGTH_BITS) != 0) {
193 CRYPTO_cfb128_1_encrypt(in, out, len, &eak->ks, ctx->iv,
194 &ctx->num, ctx->encrypt, (block128_f)aesni_encrypt);
195 return 1;
196 }
197
198 while (len >= MAXBITCHUNK) {
199 CRYPTO_cfb128_1_encrypt(in, out, MAXBITCHUNK * 8, &eak->ks,
200 ctx->iv, &ctx->num, ctx->encrypt, (block128_f)aesni_encrypt);
201 len -= MAXBITCHUNK;
202 in += MAXBITCHUNK;
203 out += MAXBITCHUNK;
204 }
205 if (len > 0) {
206 CRYPTO_cfb128_1_encrypt(in, out, len * 8, &eak->ks,
207 ctx->iv, &ctx->num, ctx->encrypt, (block128_f)aesni_encrypt);
208 }
209
210 return 1;
211}
212
213static int
214aesni_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 163aesni_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
215 const unsigned char *in, size_t len) 164 const unsigned char *in, size_t len)
216{ 165{
@@ -559,19 +508,6 @@ EVP_aes_128_ofb(void)
559} 508}
560LCRYPTO_ALIAS(EVP_aes_128_ofb); 509LCRYPTO_ALIAS(EVP_aes_128_ofb);
561 510
562#ifdef AESNI_CAPABLE
563static const EVP_CIPHER aesni_128_cfb = {
564 .nid = NID_aes_128_cfb128,
565 .block_size = 1,
566 .key_len = 16,
567 .iv_len = 16,
568 .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CFB_MODE,
569 .init = aes_init_key,
570 .do_cipher = aesni_cfb_cipher,
571 .ctx_size = sizeof(EVP_AES_KEY),
572};
573#endif
574
575static const EVP_CIPHER aes_128_cfb = { 511static const EVP_CIPHER aes_128_cfb = {
576 .nid = NID_aes_128_cfb128, 512 .nid = NID_aes_128_cfb128,
577 .block_size = 1, 513 .block_size = 1,
@@ -586,27 +522,10 @@ static const EVP_CIPHER aes_128_cfb = {
586const EVP_CIPHER * 522const EVP_CIPHER *
587EVP_aes_128_cfb128(void) 523EVP_aes_128_cfb128(void)
588{ 524{
589#ifdef AESNI_CAPABLE
590 return AESNI_CAPABLE ? &aesni_128_cfb : &aes_128_cfb;
591#else
592 return &aes_128_cfb; 525 return &aes_128_cfb;
593#endif
594} 526}
595LCRYPTO_ALIAS(EVP_aes_128_cfb128); 527LCRYPTO_ALIAS(EVP_aes_128_cfb128);
596 528
597#ifdef AESNI_CAPABLE
598static const EVP_CIPHER aesni_128_cfb1 = {
599 .nid = NID_aes_128_cfb1,
600 .block_size = 1,
601 .key_len = 16,
602 .iv_len = 16,
603 .flags = EVP_CIPH_CFB_MODE,
604 .init = aes_init_key,
605 .do_cipher = aesni_cfb1_cipher,
606 .ctx_size = sizeof(EVP_AES_KEY),
607};
608#endif
609
610static const EVP_CIPHER aes_128_cfb1 = { 529static const EVP_CIPHER aes_128_cfb1 = {
611 .nid = NID_aes_128_cfb1, 530 .nid = NID_aes_128_cfb1,
612 .block_size = 1, 531 .block_size = 1,
@@ -621,27 +540,10 @@ static const EVP_CIPHER aes_128_cfb1 = {
621const EVP_CIPHER * 540const EVP_CIPHER *
622EVP_aes_128_cfb1(void) 541EVP_aes_128_cfb1(void)
623{ 542{
624#ifdef AESNI_CAPABLE
625 return AESNI_CAPABLE ? &aesni_128_cfb1 : &aes_128_cfb1;
626#else
627 return &aes_128_cfb1; 543 return &aes_128_cfb1;
628#endif
629} 544}
630LCRYPTO_ALIAS(EVP_aes_128_cfb1); 545LCRYPTO_ALIAS(EVP_aes_128_cfb1);
631 546
632#ifdef AESNI_CAPABLE
633static const EVP_CIPHER aesni_128_cfb8 = {
634 .nid = NID_aes_128_cfb8,
635 .block_size = 1,
636 .key_len = 16,
637 .iv_len = 16,
638 .flags = EVP_CIPH_CFB_MODE,
639 .init = aes_init_key,
640 .do_cipher = aesni_cfb8_cipher,
641 .ctx_size = sizeof(EVP_AES_KEY),
642};
643#endif
644
645static const EVP_CIPHER aes_128_cfb8 = { 547static const EVP_CIPHER aes_128_cfb8 = {
646 .nid = NID_aes_128_cfb8, 548 .nid = NID_aes_128_cfb8,
647 .block_size = 1, 549 .block_size = 1,
@@ -656,11 +558,7 @@ static const EVP_CIPHER aes_128_cfb8 = {
656const EVP_CIPHER * 558const EVP_CIPHER *
657EVP_aes_128_cfb8(void) 559EVP_aes_128_cfb8(void)
658{ 560{
659#ifdef AESNI_CAPABLE
660 return AESNI_CAPABLE ? &aesni_128_cfb8 : &aes_128_cfb8;
661#else
662 return &aes_128_cfb8; 561 return &aes_128_cfb8;
663#endif
664} 562}
665LCRYPTO_ALIAS(EVP_aes_128_cfb8); 563LCRYPTO_ALIAS(EVP_aes_128_cfb8);
666 564
@@ -770,19 +668,6 @@ EVP_aes_192_ofb(void)
770} 668}
771LCRYPTO_ALIAS(EVP_aes_192_ofb); 669LCRYPTO_ALIAS(EVP_aes_192_ofb);
772 670
773#ifdef AESNI_CAPABLE
774static const EVP_CIPHER aesni_192_cfb = {
775 .nid = NID_aes_192_cfb128,
776 .block_size = 1,
777 .key_len = 24,
778 .iv_len = 16,
779 .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CFB_MODE,
780 .init = aes_init_key,
781 .do_cipher = aesni_cfb_cipher,
782 .ctx_size = sizeof(EVP_AES_KEY),
783};
784#endif
785
786static const EVP_CIPHER aes_192_cfb = { 671static const EVP_CIPHER aes_192_cfb = {
787 .nid = NID_aes_192_cfb128, 672 .nid = NID_aes_192_cfb128,
788 .block_size = 1, 673 .block_size = 1,
@@ -797,27 +682,10 @@ static const EVP_CIPHER aes_192_cfb = {
797const EVP_CIPHER * 682const EVP_CIPHER *
798EVP_aes_192_cfb128(void) 683EVP_aes_192_cfb128(void)
799{ 684{
800#ifdef AESNI_CAPABLE
801 return AESNI_CAPABLE ? &aesni_192_cfb : &aes_192_cfb;
802#else
803 return &aes_192_cfb; 685 return &aes_192_cfb;
804#endif
805} 686}
806LCRYPTO_ALIAS(EVP_aes_192_cfb128); 687LCRYPTO_ALIAS(EVP_aes_192_cfb128);
807 688
808#ifdef AESNI_CAPABLE
809static const EVP_CIPHER aesni_192_cfb1 = {
810 .nid = NID_aes_192_cfb1,
811 .block_size = 1,
812 .key_len = 24,
813 .iv_len = 16,
814 .flags = EVP_CIPH_CFB_MODE,
815 .init = aes_init_key,
816 .do_cipher = aesni_cfb1_cipher,
817 .ctx_size = sizeof(EVP_AES_KEY),
818};
819#endif
820
821static const EVP_CIPHER aes_192_cfb1 = { 689static const EVP_CIPHER aes_192_cfb1 = {
822 .nid = NID_aes_192_cfb1, 690 .nid = NID_aes_192_cfb1,
823 .block_size = 1, 691 .block_size = 1,
@@ -832,27 +700,10 @@ static const EVP_CIPHER aes_192_cfb1 = {
832const EVP_CIPHER * 700const EVP_CIPHER *
833EVP_aes_192_cfb1(void) 701EVP_aes_192_cfb1(void)
834{ 702{
835#ifdef AESNI_CAPABLE
836 return AESNI_CAPABLE ? &aesni_192_cfb1 : &aes_192_cfb1;
837#else
838 return &aes_192_cfb1; 703 return &aes_192_cfb1;
839#endif
840} 704}
841LCRYPTO_ALIAS(EVP_aes_192_cfb1); 705LCRYPTO_ALIAS(EVP_aes_192_cfb1);
842 706
843#ifdef AESNI_CAPABLE
844static const EVP_CIPHER aesni_192_cfb8 = {
845 .nid = NID_aes_192_cfb8,
846 .block_size = 1,
847 .key_len = 24,
848 .iv_len = 16,
849 .flags = EVP_CIPH_CFB_MODE,
850 .init = aes_init_key,
851 .do_cipher = aesni_cfb8_cipher,
852 .ctx_size = sizeof(EVP_AES_KEY),
853};
854#endif
855
856static const EVP_CIPHER aes_192_cfb8 = { 707static const EVP_CIPHER aes_192_cfb8 = {
857 .nid = NID_aes_192_cfb8, 708 .nid = NID_aes_192_cfb8,
858 .block_size = 1, 709 .block_size = 1,
@@ -867,11 +718,7 @@ static const EVP_CIPHER aes_192_cfb8 = {
867const EVP_CIPHER * 718const EVP_CIPHER *
868EVP_aes_192_cfb8(void) 719EVP_aes_192_cfb8(void)
869{ 720{
870#ifdef AESNI_CAPABLE
871 return AESNI_CAPABLE ? &aesni_192_cfb8 : &aes_192_cfb8;
872#else
873 return &aes_192_cfb8; 721 return &aes_192_cfb8;
874#endif
875} 722}
876LCRYPTO_ALIAS(EVP_aes_192_cfb8); 723LCRYPTO_ALIAS(EVP_aes_192_cfb8);
877 724
@@ -981,19 +828,6 @@ EVP_aes_256_ofb(void)
981} 828}
982LCRYPTO_ALIAS(EVP_aes_256_ofb); 829LCRYPTO_ALIAS(EVP_aes_256_ofb);
983 830
984#ifdef AESNI_CAPABLE
985static const EVP_CIPHER aesni_256_cfb = {
986 .nid = NID_aes_256_cfb128,
987 .block_size = 1,
988 .key_len = 32,
989 .iv_len = 16,
990 .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CFB_MODE,
991 .init = aes_init_key,
992 .do_cipher = aesni_cfb_cipher,
993 .ctx_size = sizeof(EVP_AES_KEY),
994};
995#endif
996
997static const EVP_CIPHER aes_256_cfb = { 831static const EVP_CIPHER aes_256_cfb = {
998 .nid = NID_aes_256_cfb128, 832 .nid = NID_aes_256_cfb128,
999 .block_size = 1, 833 .block_size = 1,
@@ -1008,27 +842,10 @@ static const EVP_CIPHER aes_256_cfb = {
1008const EVP_CIPHER * 842const EVP_CIPHER *
1009EVP_aes_256_cfb128(void) 843EVP_aes_256_cfb128(void)
1010{ 844{
1011#ifdef AESNI_CAPABLE
1012 return AESNI_CAPABLE ? &aesni_256_cfb : &aes_256_cfb;
1013#else
1014 return &aes_256_cfb; 845 return &aes_256_cfb;
1015#endif
1016} 846}
1017LCRYPTO_ALIAS(EVP_aes_256_cfb128); 847LCRYPTO_ALIAS(EVP_aes_256_cfb128);
1018 848
1019#ifdef AESNI_CAPABLE
1020static const EVP_CIPHER aesni_256_cfb1 = {
1021 .nid = NID_aes_256_cfb1,
1022 .block_size = 1,
1023 .key_len = 32,
1024 .iv_len = 16,
1025 .flags = EVP_CIPH_CFB_MODE,
1026 .init = aes_init_key,
1027 .do_cipher = aesni_cfb1_cipher,
1028 .ctx_size = sizeof(EVP_AES_KEY),
1029};
1030#endif
1031
1032static const EVP_CIPHER aes_256_cfb1 = { 849static const EVP_CIPHER aes_256_cfb1 = {
1033 .nid = NID_aes_256_cfb1, 850 .nid = NID_aes_256_cfb1,
1034 .block_size = 1, 851 .block_size = 1,
@@ -1043,27 +860,10 @@ static const EVP_CIPHER aes_256_cfb1 = {
1043const EVP_CIPHER * 860const EVP_CIPHER *
1044EVP_aes_256_cfb1(void) 861EVP_aes_256_cfb1(void)
1045{ 862{
1046#ifdef AESNI_CAPABLE
1047 return AESNI_CAPABLE ? &aesni_256_cfb1 : &aes_256_cfb1;
1048#else
1049 return &aes_256_cfb1; 863 return &aes_256_cfb1;
1050#endif
1051} 864}
1052LCRYPTO_ALIAS(EVP_aes_256_cfb1); 865LCRYPTO_ALIAS(EVP_aes_256_cfb1);
1053 866
1054#ifdef AESNI_CAPABLE
1055static const EVP_CIPHER aesni_256_cfb8 = {
1056 .nid = NID_aes_256_cfb8,
1057 .block_size = 1,
1058 .key_len = 32,
1059 .iv_len = 16,
1060 .flags = EVP_CIPH_CFB_MODE,
1061 .init = aes_init_key,
1062 .do_cipher = aesni_cfb8_cipher,
1063 .ctx_size = sizeof(EVP_AES_KEY),
1064};
1065#endif
1066
1067static const EVP_CIPHER aes_256_cfb8 = { 867static const EVP_CIPHER aes_256_cfb8 = {
1068 .nid = NID_aes_256_cfb8, 868 .nid = NID_aes_256_cfb8,
1069 .block_size = 1, 869 .block_size = 1,
@@ -1078,11 +878,7 @@ static const EVP_CIPHER aes_256_cfb8 = {
1078const EVP_CIPHER * 878const EVP_CIPHER *
1079EVP_aes_256_cfb8(void) 879EVP_aes_256_cfb8(void)
1080{ 880{
1081#ifdef AESNI_CAPABLE
1082 return AESNI_CAPABLE ? &aesni_256_cfb8 : &aes_256_cfb8;
1083#else
1084 return &aes_256_cfb8; 881 return &aes_256_cfb8;
1085#endif
1086} 882}
1087LCRYPTO_ALIAS(EVP_aes_256_cfb8); 883LCRYPTO_ALIAS(EVP_aes_256_cfb8);
1088 884