summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/engine/eng_pkey.c
diff options
context:
space:
mode:
authortb <>2023-07-28 09:53:55 +0000
committertb <>2023-07-28 09:53:55 +0000
commitd4949db8e78438e8bb53c9c1297b068ac0df7827 (patch)
tree307457e0cf8fc786fb4c80edc29a92d5677d406e /src/lib/libcrypto/engine/eng_pkey.c
parent681b4eb7a5896143c26eac201c041f6f22357b18 (diff)
downloadopenbsd-d4949db8e78438e8bb53c9c1297b068ac0df7827.tar.gz
openbsd-d4949db8e78438e8bb53c9c1297b068ac0df7827.tar.bz2
openbsd-d4949db8e78438e8bb53c9c1297b068ac0df7827.zip
Set OPENSSL_NO_ENGINE, remove engine code
ENGINE was special. It's horrible code even by the low standards of this library. Some ports may now try to use the stubs which will fail, but the fallout from this should be minimal. Of course there are various language bindings that expose the ENGINE API. OpenSSL 3 disabling ENGINE by default will likely help fixing this at some point. ok jsing
Diffstat (limited to 'src/lib/libcrypto/engine/eng_pkey.c')
-rw-r--r--src/lib/libcrypto/engine/eng_pkey.c184
1 files changed, 0 insertions, 184 deletions
diff --git a/src/lib/libcrypto/engine/eng_pkey.c b/src/lib/libcrypto/engine/eng_pkey.c
deleted file mode 100644
index a0320e973f..0000000000
--- a/src/lib/libcrypto/engine/eng_pkey.c
+++ /dev/null
@@ -1,184 +0,0 @@
1/* $OpenBSD: eng_pkey.c,v 1.7 2017/01/29 17:49:23 beck Exp $ */
2/* ====================================================================
3 * Copyright (c) 1999-2001 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 <openssl/err.h>
57
58#include "eng_int.h"
59
60/* Basic get/set stuff */
61
62int
63ENGINE_set_load_privkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpriv_f)
64{
65 e->load_privkey = loadpriv_f;
66 return 1;
67}
68
69int
70ENGINE_set_load_pubkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpub_f)
71{
72 e->load_pubkey = loadpub_f;
73 return 1;
74}
75
76int
77ENGINE_set_load_ssl_client_cert_function(ENGINE *e,
78 ENGINE_SSL_CLIENT_CERT_PTR loadssl_f)
79{
80 e->load_ssl_client_cert = loadssl_f;
81 return 1;
82}
83
84ENGINE_LOAD_KEY_PTR
85ENGINE_get_load_privkey_function(const ENGINE *e)
86{
87 return e->load_privkey;
88}
89
90ENGINE_LOAD_KEY_PTR
91ENGINE_get_load_pubkey_function(const ENGINE *e)
92{
93 return e->load_pubkey;
94}
95
96ENGINE_SSL_CLIENT_CERT_PTR
97ENGINE_get_ssl_client_cert_function(const ENGINE *e)
98{
99 return e->load_ssl_client_cert;
100}
101
102/* API functions to load public/private keys */
103
104EVP_PKEY *
105ENGINE_load_private_key(ENGINE *e, const char *key_id, UI_METHOD *ui_method,
106 void *callback_data)
107{
108 EVP_PKEY *pkey;
109
110 if (e == NULL) {
111 ENGINEerror(ERR_R_PASSED_NULL_PARAMETER);
112 return 0;
113 }
114 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
115 if (e->funct_ref == 0) {
116 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
117 ENGINEerror(ENGINE_R_NOT_INITIALISED);
118 return 0;
119 }
120 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
121 if (!e->load_privkey) {
122 ENGINEerror(ENGINE_R_NO_LOAD_FUNCTION);
123 return 0;
124 }
125 pkey = e->load_privkey(e, key_id, ui_method, callback_data);
126 if (!pkey) {
127 ENGINEerror(ENGINE_R_FAILED_LOADING_PRIVATE_KEY);
128 return 0;
129 }
130 return pkey;
131}
132
133EVP_PKEY *
134ENGINE_load_public_key(ENGINE *e, const char *key_id, UI_METHOD *ui_method,
135 void *callback_data)
136{
137 EVP_PKEY *pkey;
138
139 if (e == NULL) {
140 ENGINEerror(ERR_R_PASSED_NULL_PARAMETER);
141 return 0;
142 }
143 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
144 if (e->funct_ref == 0) {
145 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
146 ENGINEerror(ENGINE_R_NOT_INITIALISED);
147 return 0;
148 }
149 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
150 if (!e->load_pubkey) {
151 ENGINEerror(ENGINE_R_NO_LOAD_FUNCTION);
152 return 0;
153 }
154 pkey = e->load_pubkey(e, key_id, ui_method, callback_data);
155 if (!pkey) {
156 ENGINEerror(ENGINE_R_FAILED_LOADING_PUBLIC_KEY);
157 return 0;
158 }
159 return pkey;
160}
161
162int
163ENGINE_load_ssl_client_cert(ENGINE *e, SSL *s, STACK_OF(X509_NAME) *ca_dn,
164 X509 **pcert, EVP_PKEY **ppkey, STACK_OF(X509) **pother,
165 UI_METHOD *ui_method, void *callback_data)
166{
167 if (e == NULL) {
168 ENGINEerror(ERR_R_PASSED_NULL_PARAMETER);
169 return 0;
170 }
171 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
172 if (e->funct_ref == 0) {
173 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
174 ENGINEerror(ENGINE_R_NOT_INITIALISED);
175 return 0;
176 }
177 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
178 if (!e->load_ssl_client_cert) {
179 ENGINEerror(ENGINE_R_NO_LOAD_FUNCTION);
180 return 0;
181 }
182 return e->load_ssl_client_cert(e, s, ca_dn, pcert, ppkey, pother,
183 ui_method, callback_data);
184}