summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Larsch <nils@openssl.org>2005-08-21 23:06:23 +0000
committerNils Larsch <nils@openssl.org>2005-08-21 23:06:23 +0000
commit7f3c9036ea1be59c07ab85624d53d6e244dbe851 (patch)
treed3e7618c79d9ee0505472f36b0e0e19b80010ce3
parent725111f7cbf56a724f119c6b9d0bf8a56cd32ce7 (diff)
initialize cipher/digest methods table in SSL_library_init() and hence remove the need for a lock
-rw-r--r--ssl/ssl_algs.c2
-rw-r--r--ssl/ssl_ciph.c12
-rw-r--r--ssl/ssl_locl.h1
3 files changed, 4 insertions, 11 deletions
diff --git a/ssl/ssl_algs.c b/ssl/ssl_algs.c
index 1a41b9967c..ac82d45a9c 100644
--- a/ssl/ssl_algs.c
+++ b/ssl/ssl_algs.c
@@ -115,6 +115,8 @@ int SSL_library_init(void)
be discarded safely */
(void)SSL_COMP_get_compression_methods();
#endif
+ /* initialize cipher/digest methods table */
+ ssl_load_ciphers();
return(1);
}
diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c
index 9493e2d85b..8c2e1c305e 100644
--- a/ssl/ssl_ciph.c
+++ b/ssl/ssl_ciph.c
@@ -165,9 +165,7 @@ static const SSL_CIPHER cipher_aliases[]={
{0,SSL_TXT_HIGH, 0, 0, SSL_HIGH, 0,0,0,0,SSL_STRONG_MASK},
};
-static int init_ciphers=1;
-
-static void load_ciphers(void)
+void ssl_load_ciphers(void)
{
ssl_cipher_methods[SSL_ENC_DES_IDX]=
EVP_get_cipherbyname(SN_des_cbc);
@@ -192,7 +190,6 @@ static void load_ciphers(void)
EVP_get_digestbyname(SN_md5);
ssl_digest_methods[SSL_MD_SHA1_IDX]=
EVP_get_digestbyname(SN_sha1);
- init_ciphers=0;
}
static int sk_comp_cmp(const SSL_COMP * const *a,
@@ -816,13 +813,6 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
if (rule_str == NULL || cipher_list == NULL || cipher_list_by_id == NULL)
return NULL;
- if (init_ciphers)
- {
- CRYPTO_w_lock(CRYPTO_LOCK_SSL);
- if (init_ciphers) load_ciphers();
- CRYPTO_w_unlock(CRYPTO_LOCK_SSL);
- }
-
/*
* To reduce the work to do we only want to process the compiled
* in algorithms, so we first get the mask of disabled ciphers.
diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
index 0b81e09091..6a56384a8c 100644
--- a/ssl/ssl_locl.h
+++ b/ssl/ssl_locl.h
@@ -736,6 +736,7 @@ int ssl_cert_type(X509 *x,EVP_PKEY *pkey);
void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher);
STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s);
int ssl_verify_alarm_type(long type);
+void ssl_load_ciphers(void);
int ssl2_enc_init(SSL *s, int client);
int ssl2_generate_key_material(SSL *s);