summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2023-07-28 09:08:31 +0000
committertb <>2023-07-28 09:08:31 +0000
commit5fdc6aff8969f405877cb212f681afded1f948e6 (patch)
tree9fbfcaf47aa3e6f663d8128e3944ef1c5715ad5f
parent4b0019a4c482019d6ceec85774d0379f5d4f7009 (diff)
downloadopenbsd-5fdc6aff8969f405877cb212f681afded1f948e6.tar.gz
openbsd-5fdc6aff8969f405877cb212f681afded1f948e6.tar.bz2
openbsd-5fdc6aff8969f405877cb212f681afded1f948e6.zip
Remove ECDSA_METHOD
After smtpd (in base) and libtls finally switched from ECDSA_METHOD to EC_KEY_METHOD, much of the ECDSA_METHOD code was neutered. Remove the remaining public API as well as numerous tentacles into ENGINE. ok jsing
-rw-r--r--src/lib/libcrypto/Makefile4
-rw-r--r--src/lib/libcrypto/Symbols.list14
-rw-r--r--src/lib/libcrypto/Symbols.namespace7
-rw-r--r--src/lib/libcrypto/ecdsa/ecdsa.h23
-rw-r--r--src/lib/libcrypto/ecdsa/ecs_lib.c129
-rw-r--r--src/lib/libcrypto/engine/eng_fat.c11
-rw-r--r--src/lib/libcrypto/engine/eng_int.h3
-rw-r--r--src/lib/libcrypto/engine/eng_list.c5
-rw-r--r--src/lib/libcrypto/engine/eng_openssl.c5
-rw-r--r--src/lib/libcrypto/engine/engine.h14
-rw-r--r--src/lib/libcrypto/engine/tb_ecdsa.c127
-rw-r--r--src/lib/libcrypto/hidden/openssl/ecdsa.h9
-rw-r--r--src/lib/libcrypto/ossl_typ.h3
13 files changed, 9 insertions, 345 deletions
diff --git a/src/lib/libcrypto/Makefile b/src/lib/libcrypto/Makefile
index 64bdb97eef..5e6cd43138 100644
--- a/src/lib/libcrypto/Makefile
+++ b/src/lib/libcrypto/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.140 2023/07/28 09:01:25 tb Exp $ 1# $OpenBSD: Makefile,v 1.141 2023/07/28 09:08:31 tb Exp $
2 2
3LIB= crypto 3LIB= crypto
4LIBREBUILD=y 4LIBREBUILD=y
@@ -357,7 +357,6 @@ SRCS+= ech_err.c
357SRCS+= ech_lib.c 357SRCS+= ech_lib.c
358 358
359# ecdsa/ 359# ecdsa/
360SRCS+= ecs_lib.c
361SRCS+= ecdsa.c 360SRCS+= ecdsa.c
362 361
363# engine/ 362# engine/
@@ -380,7 +379,6 @@ SRCS+= tb_dh.c
380SRCS+= tb_digest.c 379SRCS+= tb_digest.c
381SRCS+= tb_dsa.c 380SRCS+= tb_dsa.c
382SRCS+= tb_ecdh.c 381SRCS+= tb_ecdh.c
383SRCS+= tb_ecdsa.c
384SRCS+= tb_eckey.c 382SRCS+= tb_eckey.c
385SRCS+= tb_pkmeth.c 383SRCS+= tb_pkmeth.c
386SRCS+= tb_rand.c 384SRCS+= tb_rand.c
diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list
index 3cb83777ce..5aed850082 100644
--- a/src/lib/libcrypto/Symbols.list
+++ b/src/lib/libcrypto/Symbols.list
@@ -1019,7 +1019,6 @@ ECDH_set_default_method
1019ECDH_set_ex_data 1019ECDH_set_ex_data
1020ECDH_set_method 1020ECDH_set_method
1021ECDH_size 1021ECDH_size
1022ECDSA_OpenSSL
1023ECDSA_SIG_free 1022ECDSA_SIG_free
1024ECDSA_SIG_get0 1023ECDSA_SIG_get0
1025ECDSA_SIG_get0_r 1024ECDSA_SIG_get0_r
@@ -1029,12 +1028,6 @@ ECDSA_SIG_new
1029ECDSA_SIG_set0 1028ECDSA_SIG_set0
1030ECDSA_do_sign 1029ECDSA_do_sign
1031ECDSA_do_verify 1030ECDSA_do_verify
1032ECDSA_get_default_method
1033ECDSA_get_ex_data
1034ECDSA_get_ex_new_index
1035ECDSA_set_default_method
1036ECDSA_set_ex_data
1037ECDSA_set_method
1038ECDSA_sign 1031ECDSA_sign
1039ECDSA_size 1032ECDSA_size
1040ECDSA_verify 1033ECDSA_verify
@@ -1188,7 +1181,6 @@ ENGINE_get_DH
1188ENGINE_get_DSA 1181ENGINE_get_DSA
1189ENGINE_get_EC 1182ENGINE_get_EC
1190ENGINE_get_ECDH 1183ENGINE_get_ECDH
1191ENGINE_get_ECDSA
1192ENGINE_get_RAND 1184ENGINE_get_RAND
1193ENGINE_get_RSA 1185ENGINE_get_RSA
1194ENGINE_get_STORE 1186ENGINE_get_STORE
@@ -1201,7 +1193,6 @@ ENGINE_get_default_DH
1201ENGINE_get_default_DSA 1193ENGINE_get_default_DSA
1202ENGINE_get_default_EC 1194ENGINE_get_default_EC
1203ENGINE_get_default_ECDH 1195ENGINE_get_default_ECDH
1204ENGINE_get_default_ECDSA
1205ENGINE_get_default_RAND 1196ENGINE_get_default_RAND
1206ENGINE_get_default_RSA 1197ENGINE_get_default_RSA
1207ENGINE_get_destroy_function 1198ENGINE_get_destroy_function
@@ -1244,7 +1235,6 @@ ENGINE_register_DH
1244ENGINE_register_DSA 1235ENGINE_register_DSA
1245ENGINE_register_EC 1236ENGINE_register_EC
1246ENGINE_register_ECDH 1237ENGINE_register_ECDH
1247ENGINE_register_ECDSA
1248ENGINE_register_RAND 1238ENGINE_register_RAND
1249ENGINE_register_RSA 1239ENGINE_register_RSA
1250ENGINE_register_STORE 1240ENGINE_register_STORE
@@ -1252,7 +1242,6 @@ ENGINE_register_all_DH
1252ENGINE_register_all_DSA 1242ENGINE_register_all_DSA
1253ENGINE_register_all_EC 1243ENGINE_register_all_EC
1254ENGINE_register_all_ECDH 1244ENGINE_register_all_ECDH
1255ENGINE_register_all_ECDSA
1256ENGINE_register_all_RAND 1245ENGINE_register_all_RAND
1257ENGINE_register_all_RSA 1246ENGINE_register_all_RSA
1258ENGINE_register_all_STORE 1247ENGINE_register_all_STORE
@@ -1271,7 +1260,6 @@ ENGINE_set_DH
1271ENGINE_set_DSA 1260ENGINE_set_DSA
1272ENGINE_set_EC 1261ENGINE_set_EC
1273ENGINE_set_ECDH 1262ENGINE_set_ECDH
1274ENGINE_set_ECDSA
1275ENGINE_set_RAND 1263ENGINE_set_RAND
1276ENGINE_set_RSA 1264ENGINE_set_RSA
1277ENGINE_set_STORE 1265ENGINE_set_STORE
@@ -1283,7 +1271,6 @@ ENGINE_set_default_DH
1283ENGINE_set_default_DSA 1271ENGINE_set_default_DSA
1284ENGINE_set_default_EC 1272ENGINE_set_default_EC
1285ENGINE_set_default_ECDH 1273ENGINE_set_default_ECDH
1286ENGINE_set_default_ECDSA
1287ENGINE_set_default_RAND 1274ENGINE_set_default_RAND
1288ENGINE_set_default_RSA 1275ENGINE_set_default_RSA
1289ENGINE_set_default_ciphers 1276ENGINE_set_default_ciphers
@@ -1309,7 +1296,6 @@ ENGINE_unregister_DH
1309ENGINE_unregister_DSA 1296ENGINE_unregister_DSA
1310ENGINE_unregister_EC 1297ENGINE_unregister_EC
1311ENGINE_unregister_ECDH 1298ENGINE_unregister_ECDH
1312ENGINE_unregister_ECDSA
1313ENGINE_unregister_RAND 1299ENGINE_unregister_RAND
1314ENGINE_unregister_RSA 1300ENGINE_unregister_RSA
1315ENGINE_unregister_STORE 1301ENGINE_unregister_STORE
diff --git a/src/lib/libcrypto/Symbols.namespace b/src/lib/libcrypto/Symbols.namespace
index ede2752b88..d57a72510e 100644
--- a/src/lib/libcrypto/Symbols.namespace
+++ b/src/lib/libcrypto/Symbols.namespace
@@ -1430,16 +1430,9 @@ _libre_ECDSA_SIG_get0_s
1430_libre_ECDSA_SIG_set0 1430_libre_ECDSA_SIG_set0
1431_libre_ECDSA_do_sign 1431_libre_ECDSA_do_sign
1432_libre_ECDSA_do_verify 1432_libre_ECDSA_do_verify
1433_libre_ECDSA_OpenSSL
1434_libre_ECDSA_set_default_method
1435_libre_ECDSA_get_default_method
1436_libre_ECDSA_set_method
1437_libre_ECDSA_size 1433_libre_ECDSA_size
1438_libre_ECDSA_sign 1434_libre_ECDSA_sign
1439_libre_ECDSA_verify 1435_libre_ECDSA_verify
1440_libre_ECDSA_get_ex_new_index
1441_libre_ECDSA_set_ex_data
1442_libre_ECDSA_get_ex_data
1443_libre_EC_KEY_METHOD_set_sign 1436_libre_EC_KEY_METHOD_set_sign
1444_libre_EC_KEY_METHOD_set_verify 1437_libre_EC_KEY_METHOD_set_verify
1445_libre_EC_KEY_METHOD_get_sign 1438_libre_EC_KEY_METHOD_get_sign
diff --git a/src/lib/libcrypto/ecdsa/ecdsa.h b/src/lib/libcrypto/ecdsa/ecdsa.h
index 122b0eb000..4b4a10ced4 100644
--- a/src/lib/libcrypto/ecdsa/ecdsa.h
+++ b/src/lib/libcrypto/ecdsa/ecdsa.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecdsa.h,v 1.18 2023/07/28 09:01:25 tb Exp $ */ 1/* $OpenBSD: ecdsa.h,v 1.19 2023/07/28 09:08:31 tb Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project 3 * Written by Nils Larsch for the OpenSSL project
4 */ 4 */
@@ -75,18 +75,6 @@ extern "C" {
75 75
76typedef struct ECDSA_SIG_st ECDSA_SIG; 76typedef struct ECDSA_SIG_st ECDSA_SIG;
77 77
78struct ecdsa_method {
79 const char *name;
80 ECDSA_SIG *(*ecdsa_do_sign)(const unsigned char *dgst, int dgst_len,
81 const BIGNUM *inv, const BIGNUM *rp, EC_KEY *eckey);
82 int (*ecdsa_sign_setup)(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv,
83 BIGNUM **r);
84 int (*ecdsa_do_verify)(const unsigned char *dgst, int dgst_len,
85 const ECDSA_SIG *sig, EC_KEY *eckey);
86 int flags;
87 char *app_data;
88};
89
90/* 78/*
91 * If this flag is set, the ECDSA method is FIPS compliant and can be used 79 * If this flag is set, the ECDSA method is FIPS compliant and can be used
92 * in FIPS mode. This is set in the validated module method. If an 80 * in FIPS mode. This is set in the validated module method. If an
@@ -111,10 +99,6 @@ ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len,
111int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, 99int ECDSA_do_verify(const unsigned char *dgst, int dgst_len,
112 const ECDSA_SIG *sig, EC_KEY* eckey); 100 const ECDSA_SIG *sig, EC_KEY* eckey);
113 101
114const ECDSA_METHOD *ECDSA_OpenSSL(void);
115void ECDSA_set_default_method(const ECDSA_METHOD *meth);
116const ECDSA_METHOD *ECDSA_get_default_method(void);
117int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth);
118int ECDSA_size(const EC_KEY *eckey); 102int ECDSA_size(const EC_KEY *eckey);
119 103
120int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, 104int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen,
@@ -122,11 +106,6 @@ int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen,
122int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, 106int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen,
123 const unsigned char *sig, int siglen, EC_KEY *eckey); 107 const unsigned char *sig, int siglen, EC_KEY *eckey);
124 108
125int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
126 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
127int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg);
128void *ECDSA_get_ex_data(EC_KEY *d, int idx);
129
130/* XXX should be in ec.h, but needs ECDSA_SIG */ 109/* XXX should be in ec.h, but needs ECDSA_SIG */
131void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, 110void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth,
132 int (*sign)(int type, const unsigned char *dgst, 111 int (*sign)(int type, const unsigned char *dgst,
diff --git a/src/lib/libcrypto/ecdsa/ecs_lib.c b/src/lib/libcrypto/ecdsa/ecs_lib.c
deleted file mode 100644
index e3e67ba07d..0000000000
--- a/src/lib/libcrypto/ecdsa/ecs_lib.c
+++ /dev/null
@@ -1,129 +0,0 @@
1/* $OpenBSD: ecs_lib.c,v 1.25 2023/07/07 13:54:45 beck Exp $ */
2/* ====================================================================
3 * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. All advertising materials mentioning features or use of this
18 * software must display the following acknowledgment:
19 * "This product includes software developed by the OpenSSL Project
20 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
21 *
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23 * endorse or promote products derived from this software without
24 * prior written permission. For written permission, please contact
25 * openssl-core@OpenSSL.org.
26 *
27 * 5. Products derived from this software may not be called "OpenSSL"
28 * nor may "OpenSSL" appear in their names without prior written
29 * permission of the OpenSSL Project.
30 *
31 * 6. Redistributions of any form whatsoever must retain the following
32 * acknowledgment:
33 * "This product includes software developed by the OpenSSL Project
34 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
35 *
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 * OF THE POSSIBILITY OF SUCH DAMAGE.
48 * ====================================================================
49 *
50 * This product includes cryptographic software written by Eric Young
51 * (eay@cryptsoft.com). This product includes software written by Tim
52 * Hudson (tjh@cryptsoft.com).
53 *
54 */
55
56#include <string.h>
57
58#include <openssl/opensslconf.h>
59
60#ifndef OPENSSL_NO_ENGINE
61#include <openssl/engine.h>
62#endif
63#include <openssl/err.h>
64#include <openssl/bn.h>
65
66#include "ec_local.h"
67#include "ecdsa_local.h"
68
69static const ECDSA_METHOD *default_ECDSA_method = NULL;
70
71static const ECDSA_METHOD openssl_ecdsa_meth = {
72 .name = "OpenSSL ECDSA method",
73 .ecdsa_do_sign = ecdsa_sign_sig,
74 .ecdsa_sign_setup = ecdsa_sign_setup,
75 .ecdsa_do_verify = ecdsa_verify_sig,
76};
77
78const ECDSA_METHOD *
79ECDSA_OpenSSL(void)
80{
81 return &openssl_ecdsa_meth;
82}
83LCRYPTO_ALIAS(ECDSA_OpenSSL);
84
85void
86ECDSA_set_default_method(const ECDSA_METHOD *meth)
87{
88 default_ECDSA_method = meth;
89}
90LCRYPTO_ALIAS(ECDSA_set_default_method);
91
92const ECDSA_METHOD *
93ECDSA_get_default_method(void)
94{
95 if (!default_ECDSA_method) {
96 default_ECDSA_method = ECDSA_OpenSSL();
97 }
98 return default_ECDSA_method;
99}
100LCRYPTO_ALIAS(ECDSA_get_default_method);
101
102int
103ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth)
104{
105 return 0;
106}
107LCRYPTO_ALIAS(ECDSA_set_method);
108
109int
110ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
111 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
112{
113 return -1;
114}
115LCRYPTO_ALIAS(ECDSA_get_ex_new_index);
116
117int
118ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg)
119{
120 return 0;
121}
122LCRYPTO_ALIAS(ECDSA_set_ex_data);
123
124void *
125ECDSA_get_ex_data(EC_KEY *d, int idx)
126{
127 return NULL;
128}
129LCRYPTO_ALIAS(ECDSA_get_ex_data);
diff --git a/src/lib/libcrypto/engine/eng_fat.c b/src/lib/libcrypto/engine/eng_fat.c
index baf1a54883..cf49c99bb4 100644
--- a/src/lib/libcrypto/engine/eng_fat.c
+++ b/src/lib/libcrypto/engine/eng_fat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: eng_fat.c,v 1.17 2019/01/19 01:07:00 tb Exp $ */ 1/* $OpenBSD: eng_fat.c,v 1.18 2023/07/28 09:08:31 tb Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -89,10 +89,6 @@ ENGINE_set_default(ENGINE *e, unsigned int flags)
89 if ((flags & ENGINE_METHOD_ECDH) && !ENGINE_set_default_ECDH(e)) 89 if ((flags & ENGINE_METHOD_ECDH) && !ENGINE_set_default_ECDH(e))
90 return 0; 90 return 0;
91#endif 91#endif
92#ifndef OPENSSL_NO_ECDSA
93 if ((flags & ENGINE_METHOD_ECDSA) && !ENGINE_set_default_ECDSA(e))
94 return 0;
95#endif
96#ifndef OPENSSL_NO_EC 92#ifndef OPENSSL_NO_EC
97 if ((flags & ENGINE_METHOD_EC) && !ENGINE_set_default_EC(e)) 93 if ((flags & ENGINE_METHOD_EC) && !ENGINE_set_default_EC(e))
98 return 0; 94 return 0;
@@ -123,8 +119,6 @@ int_def_cb(const char *alg, int len, void *arg)
123 *pflags |= ENGINE_METHOD_DSA; 119 *pflags |= ENGINE_METHOD_DSA;
124 else if (!strncmp(alg, "ECDH", len)) 120 else if (!strncmp(alg, "ECDH", len))
125 *pflags |= ENGINE_METHOD_ECDH; 121 *pflags |= ENGINE_METHOD_ECDH;
126 else if (!strncmp(alg, "ECDSA", len))
127 *pflags |= ENGINE_METHOD_ECDSA;
128 else if (!strncmp(alg, "DH", len)) 122 else if (!strncmp(alg, "DH", len))
129 *pflags |= ENGINE_METHOD_DH; 123 *pflags |= ENGINE_METHOD_DH;
130 else if (strncmp(alg, "EC", len) == 0) 124 else if (strncmp(alg, "EC", len) == 0)
@@ -177,9 +171,6 @@ ENGINE_register_complete(ENGINE *e)
177#ifndef OPENSSL_NO_ECDH 171#ifndef OPENSSL_NO_ECDH
178 ENGINE_register_ECDH(e); 172 ENGINE_register_ECDH(e);
179#endif 173#endif
180#ifndef OPENSSL_NO_ECDSA
181 ENGINE_register_ECDSA(e);
182#endif
183#ifndef OPENSSL_NO_EC 174#ifndef OPENSSL_NO_EC
184 ENGINE_register_EC(e); 175 ENGINE_register_EC(e);
185#endif 176#endif
diff --git a/src/lib/libcrypto/engine/eng_int.h b/src/lib/libcrypto/engine/eng_int.h
index 298c0e327f..ad504a5a2b 100644
--- a/src/lib/libcrypto/engine/eng_int.h
+++ b/src/lib/libcrypto/engine/eng_int.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: eng_int.h,v 1.10 2019/01/19 01:07:00 tb Exp $ */ 1/* $OpenBSD: eng_int.h,v 1.11 2023/07/28 09:08:31 tb Exp $ */
2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL 2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -158,7 +158,6 @@ struct engine_st {
158 const DSA_METHOD *dsa_meth; 158 const DSA_METHOD *dsa_meth;
159 const DH_METHOD *dh_meth; 159 const DH_METHOD *dh_meth;
160 const ECDH_METHOD *ecdh_meth; 160 const ECDH_METHOD *ecdh_meth;
161 const ECDSA_METHOD *ecdsa_meth;
162 const EC_KEY_METHOD *ec_meth; 161 const EC_KEY_METHOD *ec_meth;
163 const RAND_METHOD *rand_meth; 162 const RAND_METHOD *rand_meth;
164 const STORE_METHOD *store_meth; 163 const STORE_METHOD *store_meth;
diff --git a/src/lib/libcrypto/engine/eng_list.c b/src/lib/libcrypto/engine/eng_list.c
index 451c8616ef..e460e71136 100644
--- a/src/lib/libcrypto/engine/eng_list.c
+++ b/src/lib/libcrypto/engine/eng_list.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: eng_list.c,v 1.25 2022/12/26 07:18:51 jmc Exp $ */ 1/* $OpenBSD: eng_list.c,v 1.26 2023/07/28 09:08:31 tb Exp $ */
2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL 2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -313,9 +313,6 @@ engine_cpy(ENGINE *dest, const ENGINE *src)
313#ifndef OPENSSL_NO_ECDH 313#ifndef OPENSSL_NO_ECDH
314 dest->ecdh_meth = src->ecdh_meth; 314 dest->ecdh_meth = src->ecdh_meth;
315#endif 315#endif
316#ifndef OPENSSL_NO_ECDSA
317 dest->ecdsa_meth = src->ecdsa_meth;
318#endif
319#ifndef OPENSSL_NO_EC 316#ifndef OPENSSL_NO_EC
320 dest->ec_meth = src->ec_meth; 317 dest->ec_meth = src->ec_meth;
321#endif 318#endif
diff --git a/src/lib/libcrypto/engine/eng_openssl.c b/src/lib/libcrypto/engine/eng_openssl.c
index 4e0f144e81..7abb6114bc 100644
--- a/src/lib/libcrypto/engine/eng_openssl.c
+++ b/src/lib/libcrypto/engine/eng_openssl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: eng_openssl.c,v 1.17 2023/07/20 15:08:12 tb Exp $ */ 1/* $OpenBSD: eng_openssl.c,v 1.18 2023/07/28 09:08:31 tb Exp $ */
2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL 2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -149,9 +149,6 @@ bind_helper(ENGINE *e)
149#ifndef OPENSSL_NO_ECDH 149#ifndef OPENSSL_NO_ECDH
150 || !ENGINE_set_ECDH(e, ECDH_OpenSSL()) 150 || !ENGINE_set_ECDH(e, ECDH_OpenSSL())
151#endif 151#endif
152#ifndef OPENSSL_NO_ECDSA
153 || !ENGINE_set_ECDSA(e, ECDSA_OpenSSL())
154#endif
155#ifndef OPENSSL_NO_DH 152#ifndef OPENSSL_NO_DH
156 || !ENGINE_set_DH(e, DH_get_default_method()) 153 || !ENGINE_set_DH(e, DH_get_default_method())
157#endif 154#endif
diff --git a/src/lib/libcrypto/engine/engine.h b/src/lib/libcrypto/engine/engine.h
index 156c2f856c..dbc3718dca 100644
--- a/src/lib/libcrypto/engine/engine.h
+++ b/src/lib/libcrypto/engine/engine.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: engine.h,v 1.39 2023/07/21 09:04:23 tb Exp $ */ 1/* $OpenBSD: engine.h,v 1.40 2023/07/28 09:08:31 tb Exp $ */
2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL 2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -79,9 +79,6 @@
79#ifndef OPENSSL_NO_ECDH 79#ifndef OPENSSL_NO_ECDH
80#include <openssl/ecdh.h> 80#include <openssl/ecdh.h>
81#endif 81#endif
82#ifndef OPENSSL_NO_ECDSA
83#include <openssl/ecdsa.h>
84#endif
85#include <openssl/err.h> 82#include <openssl/err.h>
86#ifndef OPENSSL_NO_RSA 83#ifndef OPENSSL_NO_RSA
87#include <openssl/rsa.h> 84#include <openssl/rsa.h>
@@ -102,7 +99,6 @@ extern "C" {
102#define ENGINE_METHOD_DH (unsigned int)0x0004 99#define ENGINE_METHOD_DH (unsigned int)0x0004
103#define ENGINE_METHOD_RAND (unsigned int)0x0008 100#define ENGINE_METHOD_RAND (unsigned int)0x0008
104#define ENGINE_METHOD_ECDH (unsigned int)0x0010 101#define ENGINE_METHOD_ECDH (unsigned int)0x0010
105#define ENGINE_METHOD_ECDSA (unsigned int)0x0020
106#define ENGINE_METHOD_CIPHERS (unsigned int)0x0040 102#define ENGINE_METHOD_CIPHERS (unsigned int)0x0040
107#define ENGINE_METHOD_DIGESTS (unsigned int)0x0080 103#define ENGINE_METHOD_DIGESTS (unsigned int)0x0080
108#define ENGINE_METHOD_STORE (unsigned int)0x0100 104#define ENGINE_METHOD_STORE (unsigned int)0x0100
@@ -383,10 +379,6 @@ int ENGINE_register_ECDH(ENGINE *e);
383void ENGINE_unregister_ECDH(ENGINE *e); 379void ENGINE_unregister_ECDH(ENGINE *e);
384void ENGINE_register_all_ECDH(void); 380void ENGINE_register_all_ECDH(void);
385 381
386int ENGINE_register_ECDSA(ENGINE *e);
387void ENGINE_unregister_ECDSA(ENGINE *e);
388void ENGINE_register_all_ECDSA(void);
389
390int ENGINE_register_EC(ENGINE *e); 382int ENGINE_register_EC(ENGINE *e);
391void ENGINE_unregister_EC(ENGINE *e); 383void ENGINE_unregister_EC(ENGINE *e);
392void ENGINE_register_all_EC(void); 384void ENGINE_register_all_EC(void);
@@ -484,7 +476,6 @@ int ENGINE_set_name(ENGINE *e, const char *name);
484int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth); 476int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth);
485int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth); 477int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth);
486int ENGINE_set_ECDH(ENGINE *e, const ECDH_METHOD *ecdh_meth); 478int ENGINE_set_ECDH(ENGINE *e, const ECDH_METHOD *ecdh_meth);
487int ENGINE_set_ECDSA(ENGINE *e, const ECDSA_METHOD *ecdsa_meth);
488int ENGINE_set_EC(ENGINE *e, const EC_KEY_METHOD *ec_meth); 479int ENGINE_set_EC(ENGINE *e, const EC_KEY_METHOD *ec_meth);
489int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth); 480int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth);
490int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth); 481int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth);
@@ -524,7 +515,6 @@ const char *ENGINE_get_name(const ENGINE *e);
524const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e); 515const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e);
525const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e); 516const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e);
526const ECDH_METHOD *ENGINE_get_ECDH(const ENGINE *e); 517const ECDH_METHOD *ENGINE_get_ECDH(const ENGINE *e);
527const ECDSA_METHOD *ENGINE_get_ECDSA(const ENGINE *e);
528const EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e); 518const EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e);
529const DH_METHOD *ENGINE_get_DH(const ENGINE *e); 519const DH_METHOD *ENGINE_get_DH(const ENGINE *e);
530const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e); 520const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e);
@@ -592,7 +582,6 @@ ENGINE *ENGINE_get_default_RSA(void);
592/* Same for the other "methods" */ 582/* Same for the other "methods" */
593ENGINE *ENGINE_get_default_DSA(void); 583ENGINE *ENGINE_get_default_DSA(void);
594ENGINE *ENGINE_get_default_ECDH(void); 584ENGINE *ENGINE_get_default_ECDH(void);
595ENGINE *ENGINE_get_default_ECDSA(void);
596ENGINE *ENGINE_get_default_EC(void); 585ENGINE *ENGINE_get_default_EC(void);
597ENGINE *ENGINE_get_default_DH(void); 586ENGINE *ENGINE_get_default_DH(void);
598ENGINE *ENGINE_get_default_RAND(void); 587ENGINE *ENGINE_get_default_RAND(void);
@@ -612,7 +601,6 @@ int ENGINE_set_default_string(ENGINE *e, const char *def_list);
612/* Same for the other "methods" */ 601/* Same for the other "methods" */
613int ENGINE_set_default_DSA(ENGINE *e); 602int ENGINE_set_default_DSA(ENGINE *e);
614int ENGINE_set_default_ECDH(ENGINE *e); 603int ENGINE_set_default_ECDH(ENGINE *e);
615int ENGINE_set_default_ECDSA(ENGINE *e);
616int ENGINE_set_default_EC(ENGINE *e); 604int ENGINE_set_default_EC(ENGINE *e);
617int ENGINE_set_default_DH(ENGINE *e); 605int ENGINE_set_default_DH(ENGINE *e);
618int ENGINE_set_default_RAND(ENGINE *e); 606int ENGINE_set_default_RAND(ENGINE *e);
diff --git a/src/lib/libcrypto/engine/tb_ecdsa.c b/src/lib/libcrypto/engine/tb_ecdsa.c
deleted file mode 100644
index 226b76e185..0000000000
--- a/src/lib/libcrypto/engine/tb_ecdsa.c
+++ /dev/null
@@ -1,127 +0,0 @@
1/* $OpenBSD: tb_ecdsa.c,v 1.4 2014/06/12 15:49:29 deraadt Exp $ */
2/* ====================================================================
3 * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. All advertising materials mentioning features or use of this
18 * software must display the following acknowledgment:
19 * "This product includes software developed by the OpenSSL Project
20 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
21 *
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23 * endorse or promote products derived from this software without
24 * prior written permission. For written permission, please contact
25 * licensing@OpenSSL.org.
26 *
27 * 5. Products derived from this software may not be called "OpenSSL"
28 * nor may "OpenSSL" appear in their names without prior written
29 * permission of the OpenSSL Project.
30 *
31 * 6. Redistributions of any form whatsoever must retain the following
32 * acknowledgment:
33 * "This product includes software developed by the OpenSSL Project
34 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
35 *
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 * OF THE POSSIBILITY OF SUCH DAMAGE.
48 * ====================================================================
49 *
50 * This product includes cryptographic software written by Eric Young
51 * (eay@cryptsoft.com). This product includes software written by Tim
52 * Hudson (tjh@cryptsoft.com).
53 *
54 */
55
56#include "eng_int.h"
57
58/* If this symbol is defined then ENGINE_get_default_ECDSA(), the function that is
59 * used by ECDSA to hook in implementation code and cache defaults (etc), will
60 * display brief debugging summaries to stderr with the 'nid'. */
61/* #define ENGINE_ECDSA_DEBUG */
62
63static ENGINE_TABLE *ecdsa_table = NULL;
64static const int dummy_nid = 1;
65
66void
67ENGINE_unregister_ECDSA(ENGINE *e)
68{
69 engine_table_unregister(&ecdsa_table, e);
70}
71
72static void
73engine_unregister_all_ECDSA(void)
74{
75 engine_table_cleanup(&ecdsa_table);
76}
77
78int
79ENGINE_register_ECDSA(ENGINE *e)
80{
81 if (e->ecdsa_meth)
82 return engine_table_register(&ecdsa_table,
83 engine_unregister_all_ECDSA, e, &dummy_nid, 1, 0);
84 return 1;
85}
86
87void
88ENGINE_register_all_ECDSA(void)
89{
90 ENGINE *e;
91
92 for (e = ENGINE_get_first(); e; e = ENGINE_get_next(e))
93 ENGINE_register_ECDSA(e);
94}
95
96int
97ENGINE_set_default_ECDSA(ENGINE *e)
98{
99 if (e->ecdsa_meth)
100 return engine_table_register(&ecdsa_table,
101 engine_unregister_all_ECDSA, e, &dummy_nid, 1, 1);
102 return 1;
103}
104
105/* Exposed API function to get a functional reference from the implementation
106 * table (ie. try to get a functional reference from the tabled structural
107 * references). */
108ENGINE *
109ENGINE_get_default_ECDSA(void)
110{
111 return engine_table_select(&ecdsa_table, dummy_nid);
112}
113
114/* Obtains an ECDSA implementation from an ENGINE functional reference */
115const ECDSA_METHOD *
116ENGINE_get_ECDSA(const ENGINE *e)
117{
118 return e->ecdsa_meth;
119}
120
121/* Sets an ECDSA implementation in an ENGINE structure */
122int
123ENGINE_set_ECDSA(ENGINE *e, const ECDSA_METHOD *ecdsa_meth)
124{
125 e->ecdsa_meth = ecdsa_meth;
126 return 1;
127}
diff --git a/src/lib/libcrypto/hidden/openssl/ecdsa.h b/src/lib/libcrypto/hidden/openssl/ecdsa.h
index 90860bf16d..5846906be9 100644
--- a/src/lib/libcrypto/hidden/openssl/ecdsa.h
+++ b/src/lib/libcrypto/hidden/openssl/ecdsa.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecdsa.h,v 1.4 2023/07/28 09:01:25 tb Exp $ */ 1/* $OpenBSD: ecdsa.h,v 1.5 2023/07/28 09:08:31 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2023 Bob Beck <beck@openbsd.org> 3 * Copyright (c) 2023 Bob Beck <beck@openbsd.org>
4 * 4 *
@@ -35,16 +35,9 @@ LCRYPTO_USED(ECDSA_SIG_get0_s);
35LCRYPTO_USED(ECDSA_SIG_set0); 35LCRYPTO_USED(ECDSA_SIG_set0);
36LCRYPTO_USED(ECDSA_do_sign); 36LCRYPTO_USED(ECDSA_do_sign);
37LCRYPTO_USED(ECDSA_do_verify); 37LCRYPTO_USED(ECDSA_do_verify);
38LCRYPTO_USED(ECDSA_OpenSSL);
39LCRYPTO_USED(ECDSA_set_default_method);
40LCRYPTO_USED(ECDSA_get_default_method);
41LCRYPTO_USED(ECDSA_set_method);
42LCRYPTO_USED(ECDSA_size); 38LCRYPTO_USED(ECDSA_size);
43LCRYPTO_USED(ECDSA_sign); 39LCRYPTO_USED(ECDSA_sign);
44LCRYPTO_USED(ECDSA_verify); 40LCRYPTO_USED(ECDSA_verify);
45LCRYPTO_USED(ECDSA_get_ex_new_index);
46LCRYPTO_USED(ECDSA_set_ex_data);
47LCRYPTO_USED(ECDSA_get_ex_data);
48LCRYPTO_USED(EC_KEY_METHOD_set_sign); 41LCRYPTO_USED(EC_KEY_METHOD_set_sign);
49LCRYPTO_USED(EC_KEY_METHOD_set_verify); 42LCRYPTO_USED(EC_KEY_METHOD_set_verify);
50LCRYPTO_USED(EC_KEY_METHOD_get_sign); 43LCRYPTO_USED(EC_KEY_METHOD_get_sign);
diff --git a/src/lib/libcrypto/ossl_typ.h b/src/lib/libcrypto/ossl_typ.h
index 6e33f8cfbd..8ff3779636 100644
--- a/src/lib/libcrypto/ossl_typ.h
+++ b/src/lib/libcrypto/ossl_typ.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ossl_typ.h,v 1.25 2023/04/25 18:28:05 tb Exp $ */ 1/* $OpenBSD: ossl_typ.h,v 1.26 2023/07/28 09:08:31 tb Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -125,7 +125,6 @@ typedef struct rsa_pss_params_st RSA_PSS_PARAMS;
125typedef struct rand_meth_st RAND_METHOD; 125typedef struct rand_meth_st RAND_METHOD;
126 126
127typedef struct ecdh_method ECDH_METHOD; 127typedef struct ecdh_method ECDH_METHOD;
128typedef struct ecdsa_method ECDSA_METHOD;
129 128
130typedef struct x509_st X509; 129typedef struct x509_st X509;
131typedef struct X509_algor_st X509_ALGOR; 130typedef struct X509_algor_st X509_ALGOR;