diff options
Diffstat (limited to 'src/lib/libcrypto/evp')
-rw-r--r-- | src/lib/libcrypto/evp/c_all.c | 23 | ||||
-rw-r--r-- | src/lib/libcrypto/evp/names.c | 20 |
2 files changed, 38 insertions, 5 deletions
diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c index 8ab93fece8..87657eded3 100644 --- a/src/lib/libcrypto/evp/c_all.c +++ b/src/lib/libcrypto/evp/c_all.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: c_all.c,v 1.21 2017/03/01 13:53:58 jsing Exp $ */ | 1 | /* $OpenBSD: c_all.c,v 1.22 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 | * |
@@ -57,6 +57,7 @@ | |||
57 | */ | 57 | */ |
58 | 58 | ||
59 | #include <stdio.h> | 59 | #include <stdio.h> |
60 | #include <pthread.h> | ||
60 | 61 | ||
61 | #include <openssl/opensslconf.h> | 62 | #include <openssl/opensslconf.h> |
62 | 63 | ||
@@ -66,8 +67,8 @@ | |||
66 | 67 | ||
67 | #include "cryptlib.h" | 68 | #include "cryptlib.h" |
68 | 69 | ||
69 | void | 70 | static void |
70 | OpenSSL_add_all_ciphers(void) | 71 | OpenSSL_add_all_ciphers_internal(void) |
71 | { | 72 | { |
72 | #ifndef OPENSSL_NO_DES | 73 | #ifndef OPENSSL_NO_DES |
73 | EVP_add_cipher(EVP_des_cfb()); | 74 | EVP_add_cipher(EVP_des_cfb()); |
@@ -226,7 +227,14 @@ OpenSSL_add_all_ciphers(void) | |||
226 | } | 227 | } |
227 | 228 | ||
228 | void | 229 | void |
229 | OpenSSL_add_all_digests(void) | 230 | OpenSSL_add_all_ciphers(void) |
231 | { | ||
232 | static pthread_once_t add_all_ciphers_once = PTHREAD_ONCE_INIT; | ||
233 | (void) pthread_once(&add_all_ciphers_once, OpenSSL_add_all_ciphers_internal); | ||
234 | } | ||
235 | |||
236 | static void | ||
237 | OpenSSL_add_all_digests_internal(void) | ||
230 | { | 238 | { |
231 | #ifndef OPENSSL_NO_MD4 | 239 | #ifndef OPENSSL_NO_MD4 |
232 | EVP_add_digest(EVP_md4()); | 240 | EVP_add_digest(EVP_md4()); |
@@ -284,6 +292,13 @@ OpenSSL_add_all_digests(void) | |||
284 | } | 292 | } |
285 | 293 | ||
286 | void | 294 | void |
295 | OpenSSL_add_all_digests(void) | ||
296 | { | ||
297 | static pthread_once_t add_all_digests_once = PTHREAD_ONCE_INIT; | ||
298 | (void) pthread_once(&add_all_digests_once, OpenSSL_add_all_digests_internal); | ||
299 | } | ||
300 | |||
301 | void | ||
287 | OPENSSL_add_all_algorithms_noconf(void) | 302 | OPENSSL_add_all_algorithms_noconf(void) |
288 | { | 303 | { |
289 | OPENSSL_cpuid_setup(); | 304 | OPENSSL_cpuid_setup(); |
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); |