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); |
