diff options
author | beck <> | 2018-03-17 16:20:01 +0000 |
---|---|---|
committer | beck <> | 2018-03-17 16:20:01 +0000 |
commit | d18ae25f28e72831dc3c51f78e0735342540098b (patch) | |
tree | 12cc674e7652f4d67e57ec9e1882e6e824b4808d /src/lib/libcrypto/evp/names.c | |
parent | 736fdc7bedf7fe8b17717032f7380c5c6e247d0d (diff) | |
download | openbsd-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.c | 20 |
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); |