Initialize SSL_METHOD structures at compile time. This removes the need

for locking code. The CRYPTO_LOCK_SSL_METHOD lock is now no longer used.
This commit is contained in:
Dr. Stephen Henson
2005-08-05 23:56:11 +00:00
parent 53b38d37a9
commit f3b656b246
22 changed files with 302 additions and 546 deletions

View File

@@ -60,59 +60,17 @@
#include <openssl/objects.h>
#include "ssl_locl.h"
static int ssl23_num_ciphers(void );
static SSL_CIPHER *ssl23_get_cipher(unsigned int u);
static int ssl23_read(SSL *s, void *buf, int len);
static int ssl23_peek(SSL *s, void *buf, int len);
static int ssl23_write(SSL *s, const void *buf, int len);
static long ssl23_default_timeout(void );
static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p);
static SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p);
const char *SSL23_version_str="SSLv2/3 compatibility" OPENSSL_VERSION_PTEXT;
static SSL_METHOD SSLv23_data= {
TLS1_VERSION,
tls1_new,
tls1_clear,
tls1_free,
ssl_undefined_function,
ssl_undefined_function,
ssl23_read,
ssl23_peek,
ssl23_write,
ssl_undefined_function,
ssl_undefined_function,
ssl_ok,
ssl3_get_message,
ssl3_read_bytes,
ssl3_write_bytes,
ssl3_dispatch_alert,
ssl3_ctrl,
ssl3_ctx_ctrl,
ssl23_get_cipher_by_char,
ssl23_put_cipher_by_char,
ssl_undefined_const_function,
ssl23_num_ciphers,
ssl23_get_cipher,
ssl_bad_method,
ssl23_default_timeout,
&ssl3_undef_enc_method,
ssl_undefined_void_function,
ssl3_callback_ctrl,
ssl3_ctx_callback_ctrl,
};
static long ssl23_default_timeout(void)
long ssl23_default_timeout(void)
{
return(300);
}
SSL_METHOD *sslv23_base_method(void)
{
return(&SSLv23_data);
}
IMPLEMENT_ssl23_meth_func(sslv23_base_method,
ssl_undefined_function,
ssl_undefined_function,
ssl_bad_method)
static int ssl23_num_ciphers(void)
int ssl23_num_ciphers(void)
{
return(ssl3_num_ciphers()
#ifndef OPENSSL_NO_SSL2
@@ -121,7 +79,7 @@ static int ssl23_num_ciphers(void)
);
}
static SSL_CIPHER *ssl23_get_cipher(unsigned int u)
SSL_CIPHER *ssl23_get_cipher(unsigned int u)
{
unsigned int uu=ssl3_num_ciphers();
@@ -137,7 +95,7 @@ static SSL_CIPHER *ssl23_get_cipher(unsigned int u)
/* This function needs to check if the ciphers required are actually
* available */
static SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p)
SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p)
{
SSL_CIPHER c,*cp;
unsigned long id;
@@ -155,7 +113,7 @@ static SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p)
return(cp);
}
static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p)
int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p)
{
long l;
@@ -170,7 +128,7 @@ static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p)
return(3);
}
static int ssl23_read(SSL *s, void *buf, int len)
int ssl23_read(SSL *s, void *buf, int len)
{
int n;
@@ -193,7 +151,7 @@ static int ssl23_read(SSL *s, void *buf, int len)
}
}
static int ssl23_peek(SSL *s, void *buf, int len)
int ssl23_peek(SSL *s, void *buf, int len)
{
int n;
@@ -216,7 +174,7 @@ static int ssl23_peek(SSL *s, void *buf, int len)
}
}
static int ssl23_write(SSL *s, const void *buf, int len)
int ssl23_write(SSL *s, const void *buf, int len)
{
int n;