diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/evp/e_aes.c | 206 |
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 | ||
| 162 | static int | 162 | static int |
| 163 | aesni_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 | |||
| 174 | static int | ||
| 175 | aesni_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 | |||
| 186 | static int | ||
| 187 | aesni_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 | |||
| 213 | static int | ||
| 214 | aesni_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 163 | aesni_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 | } |
| 560 | LCRYPTO_ALIAS(EVP_aes_128_ofb); | 509 | LCRYPTO_ALIAS(EVP_aes_128_ofb); |
| 561 | 510 | ||
| 562 | #ifdef AESNI_CAPABLE | ||
| 563 | static 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 | |||
| 575 | static const EVP_CIPHER aes_128_cfb = { | 511 | static 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 = { | |||
| 586 | const EVP_CIPHER * | 522 | const EVP_CIPHER * |
| 587 | EVP_aes_128_cfb128(void) | 523 | EVP_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 | } |
| 595 | LCRYPTO_ALIAS(EVP_aes_128_cfb128); | 527 | LCRYPTO_ALIAS(EVP_aes_128_cfb128); |
| 596 | 528 | ||
| 597 | #ifdef AESNI_CAPABLE | ||
| 598 | static 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 | |||
| 610 | static const EVP_CIPHER aes_128_cfb1 = { | 529 | static 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 = { | |||
| 621 | const EVP_CIPHER * | 540 | const EVP_CIPHER * |
| 622 | EVP_aes_128_cfb1(void) | 541 | EVP_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 | } |
| 630 | LCRYPTO_ALIAS(EVP_aes_128_cfb1); | 545 | LCRYPTO_ALIAS(EVP_aes_128_cfb1); |
| 631 | 546 | ||
| 632 | #ifdef AESNI_CAPABLE | ||
| 633 | static 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 | |||
| 645 | static const EVP_CIPHER aes_128_cfb8 = { | 547 | static 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 = { | |||
| 656 | const EVP_CIPHER * | 558 | const EVP_CIPHER * |
| 657 | EVP_aes_128_cfb8(void) | 559 | EVP_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 | } |
| 665 | LCRYPTO_ALIAS(EVP_aes_128_cfb8); | 563 | LCRYPTO_ALIAS(EVP_aes_128_cfb8); |
| 666 | 564 | ||
| @@ -770,19 +668,6 @@ EVP_aes_192_ofb(void) | |||
| 770 | } | 668 | } |
| 771 | LCRYPTO_ALIAS(EVP_aes_192_ofb); | 669 | LCRYPTO_ALIAS(EVP_aes_192_ofb); |
| 772 | 670 | ||
| 773 | #ifdef AESNI_CAPABLE | ||
| 774 | static 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 | |||
| 786 | static const EVP_CIPHER aes_192_cfb = { | 671 | static 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 = { | |||
| 797 | const EVP_CIPHER * | 682 | const EVP_CIPHER * |
| 798 | EVP_aes_192_cfb128(void) | 683 | EVP_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 | } |
| 806 | LCRYPTO_ALIAS(EVP_aes_192_cfb128); | 687 | LCRYPTO_ALIAS(EVP_aes_192_cfb128); |
| 807 | 688 | ||
| 808 | #ifdef AESNI_CAPABLE | ||
| 809 | static 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 | |||
| 821 | static const EVP_CIPHER aes_192_cfb1 = { | 689 | static 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 = { | |||
| 832 | const EVP_CIPHER * | 700 | const EVP_CIPHER * |
| 833 | EVP_aes_192_cfb1(void) | 701 | EVP_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 | } |
| 841 | LCRYPTO_ALIAS(EVP_aes_192_cfb1); | 705 | LCRYPTO_ALIAS(EVP_aes_192_cfb1); |
| 842 | 706 | ||
| 843 | #ifdef AESNI_CAPABLE | ||
| 844 | static 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 | |||
| 856 | static const EVP_CIPHER aes_192_cfb8 = { | 707 | static 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 = { | |||
| 867 | const EVP_CIPHER * | 718 | const EVP_CIPHER * |
| 868 | EVP_aes_192_cfb8(void) | 719 | EVP_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 | } |
| 876 | LCRYPTO_ALIAS(EVP_aes_192_cfb8); | 723 | LCRYPTO_ALIAS(EVP_aes_192_cfb8); |
| 877 | 724 | ||
| @@ -981,19 +828,6 @@ EVP_aes_256_ofb(void) | |||
| 981 | } | 828 | } |
| 982 | LCRYPTO_ALIAS(EVP_aes_256_ofb); | 829 | LCRYPTO_ALIAS(EVP_aes_256_ofb); |
| 983 | 830 | ||
| 984 | #ifdef AESNI_CAPABLE | ||
| 985 | static 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 | |||
| 997 | static const EVP_CIPHER aes_256_cfb = { | 831 | static 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 = { | |||
| 1008 | const EVP_CIPHER * | 842 | const EVP_CIPHER * |
| 1009 | EVP_aes_256_cfb128(void) | 843 | EVP_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 | } |
| 1017 | LCRYPTO_ALIAS(EVP_aes_256_cfb128); | 847 | LCRYPTO_ALIAS(EVP_aes_256_cfb128); |
| 1018 | 848 | ||
| 1019 | #ifdef AESNI_CAPABLE | ||
| 1020 | static 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 | |||
| 1032 | static const EVP_CIPHER aes_256_cfb1 = { | 849 | static 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 = { | |||
| 1043 | const EVP_CIPHER * | 860 | const EVP_CIPHER * |
| 1044 | EVP_aes_256_cfb1(void) | 861 | EVP_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 | } |
| 1052 | LCRYPTO_ALIAS(EVP_aes_256_cfb1); | 865 | LCRYPTO_ALIAS(EVP_aes_256_cfb1); |
| 1053 | 866 | ||
| 1054 | #ifdef AESNI_CAPABLE | ||
| 1055 | static 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 | |||
| 1067 | static const EVP_CIPHER aes_256_cfb8 = { | 867 | static 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 = { | |||
| 1078 | const EVP_CIPHER * | 878 | const EVP_CIPHER * |
| 1079 | EVP_aes_256_cfb8(void) | 879 | EVP_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 | } |
| 1087 | LCRYPTO_ALIAS(EVP_aes_256_cfb8); | 883 | LCRYPTO_ALIAS(EVP_aes_256_cfb8); |
| 1088 | 884 | ||
