diff options
author | tb <> | 2024-01-04 16:41:56 +0000 |
---|---|---|
committer | tb <> | 2024-01-04 16:41:56 +0000 |
commit | 7a63cf228d8c89efdb78c641551b9bac57739698 (patch) | |
tree | 42c88a97ebc87bb0e93b4c3ce66bffb8d866247f /src/lib/libcrypto | |
parent | 5476a9d1ff0475bb9440b5e67a3837b7ed91fd7c (diff) | |
download | openbsd-7a63cf228d8c89efdb78c641551b9bac57739698.tar.gz openbsd-7a63cf228d8c89efdb78c641551b9bac57739698.tar.bz2 openbsd-7a63cf228d8c89efdb78c641551b9bac57739698.zip |
Split ameth arrays into individual methods
For some reason DSA, GOST, and RSA had their ASN.1 methods stored in
an array. This is clumsy and the only benefit is that one saves a few
externs in p_lib.c. They were also arranged by ascending NID because
of bsearch() madness.
Split them up and arrange the methods by name, which is much saner
and simpler.
ok jsing
Diffstat (limited to 'src/lib/libcrypto')
-rw-r--r-- | src/lib/libcrypto/dsa/dsa_ameth.c | 118 | ||||
-rw-r--r-- | src/lib/libcrypto/evp/p_lib.c | 35 | ||||
-rw-r--r-- | src/lib/libcrypto/gost/gostr341001_ameth.c | 82 | ||||
-rw-r--r-- | src/lib/libcrypto/rsa/rsa_ameth.c | 64 |
4 files changed, 150 insertions, 149 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_ameth.c b/src/lib/libcrypto/dsa/dsa_ameth.c index 4c20b45b18..d4cce72fcb 100644 --- a/src/lib/libcrypto/dsa/dsa_ameth.c +++ b/src/lib/libcrypto/dsa/dsa_ameth.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dsa_ameth.c,v 1.55 2023/08/12 07:59:48 tb Exp $ */ | 1 | /* $OpenBSD: dsa_ameth.c,v 1.56 2024/01/04 16:41:56 tb Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project 2006. | 3 | * project 2006. |
4 | */ | 4 | */ |
@@ -674,64 +674,60 @@ dsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) | |||
674 | } | 674 | } |
675 | } | 675 | } |
676 | 676 | ||
677 | /* NB these are sorted in pkey_id order, lowest first */ | 677 | const EVP_PKEY_ASN1_METHOD dsa_asn1_meth = { |
678 | 678 | .pkey_id = EVP_PKEY_DSA, | |
679 | const EVP_PKEY_ASN1_METHOD dsa_asn1_meths[] = { | 679 | .pkey_base_id = EVP_PKEY_DSA, |
680 | { | 680 | |
681 | .pkey_id = EVP_PKEY_DSA2, | 681 | .pem_str = "DSA", |
682 | .pkey_base_id = EVP_PKEY_DSA, | 682 | .info = "OpenSSL DSA method", |
683 | .pkey_flags = ASN1_PKEY_ALIAS | 683 | |
684 | }, | 684 | .pub_decode = dsa_pub_decode, |
685 | 685 | .pub_encode = dsa_pub_encode, | |
686 | { | 686 | .pub_cmp = dsa_pub_cmp, |
687 | .pkey_id = EVP_PKEY_DSA1, | 687 | .pub_print = dsa_pub_print, |
688 | .pkey_base_id = EVP_PKEY_DSA, | 688 | |
689 | .pkey_flags = ASN1_PKEY_ALIAS | 689 | .priv_decode = dsa_priv_decode, |
690 | }, | 690 | .priv_encode = dsa_priv_encode, |
691 | 691 | .priv_print = dsa_priv_print, | |
692 | { | 692 | |
693 | .pkey_id = EVP_PKEY_DSA4, | 693 | .pkey_size = dsa_size, |
694 | .pkey_base_id = EVP_PKEY_DSA, | 694 | .pkey_bits = dsa_bits, |
695 | .pkey_flags = ASN1_PKEY_ALIAS | 695 | .pkey_security_bits = dsa_security_bits, |
696 | }, | 696 | |
697 | 697 | .param_decode = dsa_param_decode, | |
698 | { | 698 | .param_encode = dsa_param_encode, |
699 | .pkey_id = EVP_PKEY_DSA3, | 699 | .param_missing = dsa_missing_parameters, |
700 | .pkey_base_id = EVP_PKEY_DSA, | 700 | .param_copy = dsa_copy_parameters, |
701 | .pkey_flags = ASN1_PKEY_ALIAS | 701 | .param_cmp = dsa_cmp_parameters, |
702 | }, | 702 | .param_print = dsa_param_print, |
703 | 703 | .sig_print = dsa_sig_print, | |
704 | { | 704 | |
705 | .pkey_id = EVP_PKEY_DSA, | 705 | .pkey_free = dsa_free, |
706 | .pkey_base_id = EVP_PKEY_DSA, | 706 | .pkey_ctrl = dsa_pkey_ctrl, |
707 | 707 | .old_priv_decode = old_dsa_priv_decode, | |
708 | .pem_str = "DSA", | 708 | .old_priv_encode = old_dsa_priv_encode |
709 | .info = "OpenSSL DSA method", | 709 | }; |
710 | 710 | ||
711 | .pub_decode = dsa_pub_decode, | 711 | const EVP_PKEY_ASN1_METHOD dsa1_asn1_meth = { |
712 | .pub_encode = dsa_pub_encode, | 712 | .pkey_id = EVP_PKEY_DSA1, |
713 | .pub_cmp = dsa_pub_cmp, | 713 | .pkey_base_id = EVP_PKEY_DSA, |
714 | .pub_print = dsa_pub_print, | 714 | .pkey_flags = ASN1_PKEY_ALIAS, |
715 | 715 | }; | |
716 | .priv_decode = dsa_priv_decode, | 716 | |
717 | .priv_encode = dsa_priv_encode, | 717 | const EVP_PKEY_ASN1_METHOD dsa2_asn1_meth = { |
718 | .priv_print = dsa_priv_print, | 718 | .pkey_id = EVP_PKEY_DSA2, |
719 | 719 | .pkey_base_id = EVP_PKEY_DSA, | |
720 | .pkey_size = dsa_size, | 720 | .pkey_flags = ASN1_PKEY_ALIAS, |
721 | .pkey_bits = dsa_bits, | 721 | }; |
722 | .pkey_security_bits = dsa_security_bits, | 722 | |
723 | 723 | const EVP_PKEY_ASN1_METHOD dsa3_asn1_meth = { | |
724 | .param_decode = dsa_param_decode, | 724 | .pkey_id = EVP_PKEY_DSA3, |
725 | .param_encode = dsa_param_encode, | 725 | .pkey_base_id = EVP_PKEY_DSA, |
726 | .param_missing = dsa_missing_parameters, | 726 | .pkey_flags = ASN1_PKEY_ALIAS, |
727 | .param_copy = dsa_copy_parameters, | 727 | }; |
728 | .param_cmp = dsa_cmp_parameters, | 728 | |
729 | .param_print = dsa_param_print, | 729 | const EVP_PKEY_ASN1_METHOD dsa4_asn1_meth = { |
730 | .sig_print = dsa_sig_print, | 730 | .pkey_id = EVP_PKEY_DSA4, |
731 | 731 | .pkey_base_id = EVP_PKEY_DSA, | |
732 | .pkey_free = dsa_free, | 732 | .pkey_flags = ASN1_PKEY_ALIAS, |
733 | .pkey_ctrl = dsa_pkey_ctrl, | ||
734 | .old_priv_decode = old_dsa_priv_decode, | ||
735 | .old_priv_encode = old_dsa_priv_encode | ||
736 | } | ||
737 | }; | 733 | }; |
diff --git a/src/lib/libcrypto/evp/p_lib.c b/src/lib/libcrypto/evp/p_lib.c index b64977bab8..f46666a008 100644 --- a/src/lib/libcrypto/evp/p_lib.c +++ b/src/lib/libcrypto/evp/p_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: p_lib.c,v 1.52 2024/01/01 15:23:00 tb Exp $ */ | 1 | /* $OpenBSD: p_lib.c,v 1.53 2024/01/04 16:41:56 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -133,33 +133,40 @@ | |||
133 | 133 | ||
134 | extern const EVP_PKEY_ASN1_METHOD cmac_asn1_meth; | 134 | extern const EVP_PKEY_ASN1_METHOD cmac_asn1_meth; |
135 | extern const EVP_PKEY_ASN1_METHOD dh_asn1_meth; | 135 | extern const EVP_PKEY_ASN1_METHOD dh_asn1_meth; |
136 | extern const EVP_PKEY_ASN1_METHOD dsa_asn1_meths[]; | 136 | extern const EVP_PKEY_ASN1_METHOD dsa_asn1_meth; |
137 | extern const EVP_PKEY_ASN1_METHOD dsa1_asn1_meth; | ||
138 | extern const EVP_PKEY_ASN1_METHOD dsa2_asn1_meth; | ||
139 | extern const EVP_PKEY_ASN1_METHOD dsa3_asn1_meth; | ||
140 | extern const EVP_PKEY_ASN1_METHOD dsa4_asn1_meth; | ||
137 | extern const EVP_PKEY_ASN1_METHOD eckey_asn1_meth; | 141 | extern const EVP_PKEY_ASN1_METHOD eckey_asn1_meth; |
138 | extern const EVP_PKEY_ASN1_METHOD ed25519_asn1_meth; | 142 | extern const EVP_PKEY_ASN1_METHOD ed25519_asn1_meth; |
139 | extern const EVP_PKEY_ASN1_METHOD gostimit_asn1_meth; | 143 | extern const EVP_PKEY_ASN1_METHOD gostimit_asn1_meth; |
140 | extern const EVP_PKEY_ASN1_METHOD gostr01_asn1_meths[]; | 144 | extern const EVP_PKEY_ASN1_METHOD gostr01_asn1_meth; |
145 | extern const EVP_PKEY_ASN1_METHOD gostr12_256_asn1_meth; | ||
146 | extern const EVP_PKEY_ASN1_METHOD gostr12_512_asn1_meth; | ||
141 | extern const EVP_PKEY_ASN1_METHOD hmac_asn1_meth; | 147 | extern const EVP_PKEY_ASN1_METHOD hmac_asn1_meth; |
142 | extern const EVP_PKEY_ASN1_METHOD rsa_asn1_meths[]; | 148 | extern const EVP_PKEY_ASN1_METHOD rsa_asn1_meth; |
149 | extern const EVP_PKEY_ASN1_METHOD rsa2_asn1_meth; | ||
143 | extern const EVP_PKEY_ASN1_METHOD rsa_pss_asn1_meth; | 150 | extern const EVP_PKEY_ASN1_METHOD rsa_pss_asn1_meth; |
144 | extern const EVP_PKEY_ASN1_METHOD x25519_asn1_meth; | 151 | extern const EVP_PKEY_ASN1_METHOD x25519_asn1_meth; |
145 | 152 | ||
146 | static const EVP_PKEY_ASN1_METHOD *asn1_methods[] = { | 153 | static const EVP_PKEY_ASN1_METHOD *asn1_methods[] = { |
147 | &cmac_asn1_meth, | 154 | &cmac_asn1_meth, |
148 | &dh_asn1_meth, | 155 | &dh_asn1_meth, |
149 | &dsa_asn1_meths[0], | 156 | &dsa_asn1_meth, |
150 | &dsa_asn1_meths[1], | 157 | &dsa1_asn1_meth, |
151 | &dsa_asn1_meths[2], | 158 | &dsa2_asn1_meth, |
152 | &dsa_asn1_meths[3], | 159 | &dsa3_asn1_meth, |
153 | &dsa_asn1_meths[4], | 160 | &dsa4_asn1_meth, |
154 | &eckey_asn1_meth, | 161 | &eckey_asn1_meth, |
155 | &ed25519_asn1_meth, | 162 | &ed25519_asn1_meth, |
156 | &gostimit_asn1_meth, | 163 | &gostimit_asn1_meth, |
157 | &gostr01_asn1_meths[0], | 164 | &gostr01_asn1_meth, |
158 | &gostr01_asn1_meths[1], | 165 | &gostr12_256_asn1_meth, |
159 | &gostr01_asn1_meths[2], | 166 | &gostr12_512_asn1_meth, |
160 | &hmac_asn1_meth, | 167 | &hmac_asn1_meth, |
161 | &rsa_asn1_meths[0], | 168 | &rsa_asn1_meth, |
162 | &rsa_asn1_meths[1], | 169 | &rsa2_asn1_meth, |
163 | &rsa_pss_asn1_meth, | 170 | &rsa_pss_asn1_meth, |
164 | &x25519_asn1_meth, | 171 | &x25519_asn1_meth, |
165 | }; | 172 | }; |
diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c index fc3bce412a..f917827f7a 100644 --- a/src/lib/libcrypto/gost/gostr341001_ameth.c +++ b/src/lib/libcrypto/gost/gostr341001_ameth.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: gostr341001_ameth.c,v 1.22 2023/12/28 21:53:09 tb Exp $ */ | 1 | /* $OpenBSD: gostr341001_ameth.c,v 1.23 2024/01/04 16:41:56 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> | 3 | * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> |
4 | * Copyright (c) 2005-2006 Cryptocom LTD | 4 | * Copyright (c) 2005-2006 Cryptocom LTD |
@@ -682,46 +682,46 @@ pkey_ctrl_gost01(EVP_PKEY *pkey, int op, long arg1, void *arg2) | |||
682 | return 1; | 682 | return 1; |
683 | } | 683 | } |
684 | 684 | ||
685 | const EVP_PKEY_ASN1_METHOD gostr01_asn1_meths[] = { | 685 | const EVP_PKEY_ASN1_METHOD gostr01_asn1_meth = { |
686 | { | 686 | .pkey_id = EVP_PKEY_GOSTR01, |
687 | .pkey_id = EVP_PKEY_GOSTR01, | 687 | .pkey_base_id = EVP_PKEY_GOSTR01, |
688 | .pkey_base_id = EVP_PKEY_GOSTR01, | 688 | .pkey_flags = ASN1_PKEY_SIGPARAM_NULL, |
689 | .pkey_flags = ASN1_PKEY_SIGPARAM_NULL, | 689 | |
690 | 690 | .pem_str = "GOST2001", | |
691 | .pem_str = "GOST2001", | 691 | .info = "GOST R 34.10-2001", |
692 | .info = "GOST R 34.10-2001", | 692 | |
693 | 693 | .pkey_free = pkey_free_gost01, | |
694 | .pkey_free = pkey_free_gost01, | 694 | .pkey_ctrl = pkey_ctrl_gost01, |
695 | .pkey_ctrl = pkey_ctrl_gost01, | 695 | |
696 | 696 | .priv_decode = priv_decode_gost01, | |
697 | .priv_decode = priv_decode_gost01, | 697 | .priv_encode = priv_encode_gost01, |
698 | .priv_encode = priv_encode_gost01, | 698 | .priv_print = priv_print_gost01, |
699 | .priv_print = priv_print_gost01, | 699 | |
700 | 700 | .param_decode = param_decode_gost01, | |
701 | .param_decode = param_decode_gost01, | 701 | .param_encode = param_encode_gost01, |
702 | .param_encode = param_encode_gost01, | 702 | .param_missing = param_missing_gost01, |
703 | .param_missing = param_missing_gost01, | 703 | .param_copy = param_copy_gost01, |
704 | .param_copy = param_copy_gost01, | 704 | .param_cmp = param_cmp_gost01, |
705 | .param_cmp = param_cmp_gost01, | 705 | .param_print = param_print_gost01, |
706 | .param_print = param_print_gost01, | 706 | |
707 | 707 | .pub_decode = pub_decode_gost01, | |
708 | .pub_decode = pub_decode_gost01, | 708 | .pub_encode = pub_encode_gost01, |
709 | .pub_encode = pub_encode_gost01, | 709 | .pub_cmp = pub_cmp_gost01, |
710 | .pub_cmp = pub_cmp_gost01, | 710 | .pub_print = pub_print_gost01, |
711 | .pub_print = pub_print_gost01, | 711 | .pkey_size = pkey_size_gost01, |
712 | .pkey_size = pkey_size_gost01, | 712 | .pkey_bits = pkey_bits_gost01, |
713 | .pkey_bits = pkey_bits_gost01, | 713 | }; |
714 | }, | 714 | |
715 | { | 715 | const EVP_PKEY_ASN1_METHOD gostr12_256_asn1_meth = { |
716 | .pkey_id = EVP_PKEY_GOSTR12_256, | 716 | .pkey_id = EVP_PKEY_GOSTR12_256, |
717 | .pkey_base_id = EVP_PKEY_GOSTR01, | 717 | .pkey_base_id = EVP_PKEY_GOSTR01, |
718 | .pkey_flags = ASN1_PKEY_ALIAS | 718 | .pkey_flags = ASN1_PKEY_ALIAS, |
719 | }, | 719 | }; |
720 | { | 720 | |
721 | .pkey_id = EVP_PKEY_GOSTR12_512, | 721 | const EVP_PKEY_ASN1_METHOD gostr12_512_asn1_meth = { |
722 | .pkey_base_id = EVP_PKEY_GOSTR01, | 722 | .pkey_id = EVP_PKEY_GOSTR12_512, |
723 | .pkey_flags = ASN1_PKEY_ALIAS | 723 | .pkey_base_id = EVP_PKEY_GOSTR01, |
724 | }, | 724 | .pkey_flags = ASN1_PKEY_ALIAS, |
725 | }; | 725 | }; |
726 | 726 | ||
727 | #endif | 727 | #endif |
diff --git a/src/lib/libcrypto/rsa/rsa_ameth.c b/src/lib/libcrypto/rsa/rsa_ameth.c index 2266f0cbd5..918e7b8901 100644 --- a/src/lib/libcrypto/rsa/rsa_ameth.c +++ b/src/lib/libcrypto/rsa/rsa_ameth.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rsa_ameth.c,v 1.54 2024/01/01 15:43:02 tb Exp $ */ | 1 | /* $OpenBSD: rsa_ameth.c,v 1.55 2024/01/04 16:41:56 tb Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project 2006. | 3 | * project 2006. |
4 | */ | 4 | */ |
@@ -1148,47 +1148,45 @@ rsa_cms_encrypt(CMS_RecipientInfo *ri) | |||
1148 | } | 1148 | } |
1149 | #endif | 1149 | #endif |
1150 | 1150 | ||
1151 | const EVP_PKEY_ASN1_METHOD rsa_asn1_meths[] = { | 1151 | const EVP_PKEY_ASN1_METHOD rsa_asn1_meth = { |
1152 | { | 1152 | .pkey_id = EVP_PKEY_RSA, |
1153 | .pkey_id = EVP_PKEY_RSA, | 1153 | .pkey_base_id = EVP_PKEY_RSA, |
1154 | .pkey_base_id = EVP_PKEY_RSA, | 1154 | .pkey_flags = ASN1_PKEY_SIGPARAM_NULL, |
1155 | .pkey_flags = ASN1_PKEY_SIGPARAM_NULL, | ||
1156 | 1155 | ||
1157 | .pem_str = "RSA", | 1156 | .pem_str = "RSA", |
1158 | .info = "OpenSSL RSA method", | 1157 | .info = "OpenSSL RSA method", |
1159 | 1158 | ||
1160 | .pub_decode = rsa_pub_decode, | 1159 | .pub_decode = rsa_pub_decode, |
1161 | .pub_encode = rsa_pub_encode, | 1160 | .pub_encode = rsa_pub_encode, |
1162 | .pub_cmp = rsa_pub_cmp, | 1161 | .pub_cmp = rsa_pub_cmp, |
1163 | .pub_print = rsa_pub_print, | 1162 | .pub_print = rsa_pub_print, |
1164 | 1163 | ||
1165 | .priv_decode = rsa_priv_decode, | 1164 | .priv_decode = rsa_priv_decode, |
1166 | .priv_encode = rsa_priv_encode, | 1165 | .priv_encode = rsa_priv_encode, |
1167 | .priv_print = rsa_priv_print, | 1166 | .priv_print = rsa_priv_print, |
1168 | 1167 | ||
1169 | .pkey_size = rsa_size, | 1168 | .pkey_size = rsa_size, |
1170 | .pkey_bits = rsa_bits, | 1169 | .pkey_bits = rsa_bits, |
1171 | .pkey_security_bits = rsa_security_bits, | 1170 | .pkey_security_bits = rsa_security_bits, |
1172 | 1171 | ||
1173 | .sig_print = rsa_sig_print, | 1172 | .sig_print = rsa_sig_print, |
1174 | 1173 | ||
1175 | .pkey_free = rsa_free, | 1174 | .pkey_free = rsa_free, |
1176 | .pkey_ctrl = rsa_pkey_ctrl, | 1175 | .pkey_ctrl = rsa_pkey_ctrl, |
1177 | .old_priv_decode = old_rsa_priv_decode, | 1176 | .old_priv_decode = old_rsa_priv_decode, |
1178 | .old_priv_encode = old_rsa_priv_encode, | 1177 | .old_priv_encode = old_rsa_priv_encode, |
1179 | .item_verify = rsa_item_verify, | 1178 | .item_verify = rsa_item_verify, |
1180 | .item_sign = rsa_item_sign, | 1179 | .item_sign = rsa_item_sign, |
1181 | 1180 | ||
1182 | .pkey_check = rsa_pkey_check, | 1181 | .pkey_check = rsa_pkey_check, |
1183 | }, | 1182 | }; |
1184 | 1183 | ||
1185 | { | 1184 | const EVP_PKEY_ASN1_METHOD rsa2_asn1_meth = { |
1186 | .pkey_id = EVP_PKEY_RSA2, | 1185 | .pkey_id = EVP_PKEY_RSA2, |
1187 | .pkey_base_id = EVP_PKEY_RSA, | 1186 | .pkey_base_id = EVP_PKEY_RSA, |
1188 | .pkey_flags = ASN1_PKEY_ALIAS, | 1187 | .pkey_flags = ASN1_PKEY_ALIAS, |
1189 | 1188 | ||
1190 | .pkey_check = rsa_pkey_check, | 1189 | .pkey_check = rsa_pkey_check, |
1191 | }, | ||
1192 | }; | 1190 | }; |
1193 | 1191 | ||
1194 | const EVP_PKEY_ASN1_METHOD rsa_pss_asn1_meth = { | 1192 | const EVP_PKEY_ASN1_METHOD rsa_pss_asn1_meth = { |