summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/names.c
diff options
context:
space:
mode:
authorbeck <>2018-03-17 16:20:01 +0000
committerbeck <>2018-03-17 16:20:01 +0000
commitd18ae25f28e72831dc3c51f78e0735342540098b (patch)
tree12cc674e7652f4d67e57ec9e1882e6e824b4808d /src/lib/libcrypto/evp/names.c
parent736fdc7bedf7fe8b17717032f7380c5c6e247d0d (diff)
downloadopenbsd-d18ae25f28e72831dc3c51f78e0735342540098b.tar.gz
openbsd-d18ae25f28e72831dc3c51f78e0735342540098b.tar.bz2
openbsd-d18ae25f28e72831dc3c51f78e0735342540098b.zip
Bring in compatibility for OpenSSL 1.1 style init functions.
This adds OPENSSL_init_crypto and OPENSSL_init_ssl, as well thread safety modifications for the existing LibreSSL init functions. The initialization routines are called automatically by the normal entry points into the library, as in newer OpenSSL ok jsing@, nits by tb@ and deraadt@
Diffstat (limited to 'src/lib/libcrypto/evp/names.c')
-rw-r--r--src/lib/libcrypto/evp/names.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/lib/libcrypto/evp/names.c b/src/lib/libcrypto/evp/names.c
index ebaa3a2f6f..dfcf9ee225 100644
--- a/src/lib/libcrypto/evp/names.c
+++ b/src/lib/libcrypto/evp/names.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: names.c,v 1.13 2017/04/29 21:48:44 jsing Exp $ */ 1/* $OpenBSD: names.c,v 1.14 2018/03/17 16:20:01 beck 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 *
@@ -113,6 +113,9 @@ EVP_get_cipherbyname(const char *name)
113{ 113{
114 const EVP_CIPHER *cp; 114 const EVP_CIPHER *cp;
115 115
116 if (!OPENSSL_init_crypto(0, NULL))
117 return NULL;
118
116 cp = (const EVP_CIPHER *)OBJ_NAME_get(name, OBJ_NAME_TYPE_CIPHER_METH); 119 cp = (const EVP_CIPHER *)OBJ_NAME_get(name, OBJ_NAME_TYPE_CIPHER_METH);
117 return (cp); 120 return (cp);
118} 121}
@@ -122,6 +125,9 @@ EVP_get_digestbyname(const char *name)
122{ 125{
123 const EVP_MD *cp; 126 const EVP_MD *cp;
124 127
128 if (!OPENSSL_init_crypto(0, NULL))
129 return NULL;
130
125 cp = (const EVP_MD *)OBJ_NAME_get(name, OBJ_NAME_TYPE_MD_METH); 131 cp = (const EVP_MD *)OBJ_NAME_get(name, OBJ_NAME_TYPE_MD_METH);
126 return (cp); 132 return (cp);
127} 133}
@@ -167,6 +173,9 @@ EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, const char *from,
167{ 173{
168 struct doall_cipher dc; 174 struct doall_cipher dc;
169 175
176 /* Prayer and clean living lets you ignore errors, OpenSSL style */
177 (void) OPENSSL_init_crypto(0, NULL);
178
170 dc.fn = fn; 179 dc.fn = fn;
171 dc.arg = arg; 180 dc.arg = arg;
172 OBJ_NAME_do_all(OBJ_NAME_TYPE_CIPHER_METH, do_all_cipher_fn, &dc); 181 OBJ_NAME_do_all(OBJ_NAME_TYPE_CIPHER_METH, do_all_cipher_fn, &dc);
@@ -178,6 +187,9 @@ EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, const char *from,
178{ 187{
179 struct doall_cipher dc; 188 struct doall_cipher dc;
180 189
190 /* Prayer and clean living lets you ignore errors, OpenSSL style */
191 (void) OPENSSL_init_crypto(0, NULL);
192
181 dc.fn = fn; 193 dc.fn = fn;
182 dc.arg = arg; 194 dc.arg = arg;
183 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH, 195 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH,
@@ -207,6 +219,9 @@ EVP_MD_do_all(void (*fn)(const EVP_MD *md, const char *from, const char *to,
207{ 219{
208 struct doall_md dc; 220 struct doall_md dc;
209 221
222 /* Prayer and clean living lets you ignore errors, OpenSSL style */
223 (void) OPENSSL_init_crypto(0, NULL);
224
210 dc.fn = fn; 225 dc.fn = fn;
211 dc.arg = arg; 226 dc.arg = arg;
212 OBJ_NAME_do_all(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc); 227 OBJ_NAME_do_all(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc);
@@ -218,6 +233,9 @@ EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *md,
218{ 233{
219 struct doall_md dc; 234 struct doall_md dc;
220 235
236 /* Prayer and clean living lets you ignore errors, OpenSSL style */
237 (void) OPENSSL_init_crypto(0, NULL);
238
221 dc.fn = fn; 239 dc.fn = fn;
222 dc.arg = arg; 240 dc.arg = arg;
223 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc); 241 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc);