From 4895fd7b0b063d5737325b857db0b8b928b11320 Mon Sep 17 00:00:00 2001 From: David Garske Date: Tue, 3 Mar 2020 09:18:11 -0800 Subject: [PATCH] Added "either" side functions for SSLv3. These are only enabled with `WOLFSSL_EITHER_SIDE` and `WOLFSSL_ALLOW_SSLV3`. ZD 9984. --- src/ssl.c | 31 ++++++++++++++++++++++++++----- wolfssl/ssl.h | 2 ++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/ssl.c b/src/ssl.c index 96b99596c..62015efd8 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -11963,20 +11963,41 @@ int wolfSSL_DTLS_SetCookieSecret(WOLFSSL* ssl, } WOLFSSL_METHOD* wolfSSLv23_method_ex(void* heap) { - WOLFSSL_METHOD* m; + WOLFSSL_METHOD* m = NULL; WOLFSSL_ENTER("SSLv23_method"); #if !defined(NO_WOLFSSL_CLIENT) m = wolfSSLv23_client_method_ex(heap); - m->side = WOLFSSL_NEITHER_END; #elif !defined(NO_WOLFSSL_SERVER) m = wolfSSLv23_server_method_ex(heap); - m->side = WOLFSSL_NEITHER_END; - #else - m = NULL; #endif + if (m != NULL) { + m->side = WOLFSSL_NEITHER_END; + } return m; } + + #ifdef WOLFSSL_ALLOW_SSLV3 + WOLFSSL_METHOD* wolfSSLv3_method(void) + { + return wolfSSLv3_method_ex(NULL); + } + WOLFSSL_METHOD* wolfSSLv3_method_ex(void* heap) + { + WOLFSSL_METHOD* m = NULL; + WOLFSSL_ENTER("SSLv3_method"); + #if !defined(NO_WOLFSSL_CLIENT) + m = wolfSSLv3_client_method_ex(heap); + #elif !defined(NO_WOLFSSL_SERVER) + m = wolfSSLv3_server_method_ex(heap); + #endif + if (m != NULL) { + m->side = WOLFSSL_NEITHER_END; + } + + return m; + } + #endif #endif /* OPENSSL_EXTRA || WOLFSSL_EITHER_SIDE */ /* client only parts */ diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 6397fa177..b04415f72 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -659,6 +659,7 @@ typedef WOLFSSL_METHOD* (*wolfSSL_method_func)(void* heap); /* CTX Method EX Constructor Functions */ WOLFSSL_API WOLFSSL_METHOD *wolfTLS_client_method_ex(void* heap); WOLFSSL_API WOLFSSL_METHOD *wolfTLS_server_method_ex(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_method_ex(void* heap); WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method_ex(void* heap); WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method_ex(void* heap); WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_method_ex(void* heap); @@ -695,6 +696,7 @@ WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_client_method_ex(void* heap); /* CTX Method Constructor Functions */ WOLFSSL_API WOLFSSL_METHOD *wolfTLS_client_method(void); WOLFSSL_API WOLFSSL_METHOD *wolfTLS_server_method(void); +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_method(void); WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_method(void); WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method(void); WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method(void);