diff --git a/src/lib/core/CMakeLists.txt b/src/lib/core/CMakeLists.txt index f17ae163d87a69f57cdd1857572cf0286817c994..d6646fe23e3cbea3fcfa22fc711c5584074fd760 100644 --- a/src/lib/core/CMakeLists.txt +++ b/src/lib/core/CMakeLists.txt @@ -39,6 +39,7 @@ set(core_sources mp_interval.c prbuf.c clock_lowres.c + ssl_init.c ) if(ENABLE_TUPLE_COMPRESSION) diff --git a/src/lib/core/ssl.c b/src/lib/core/ssl.c index 57989ea99d4545a7c1701a8744ae2adf02dfac97..e8eb667f13f18134d9189db3867862f1c165930d 100644 --- a/src/lib/core/ssl.c +++ b/src/lib/core/ssl.c @@ -5,14 +5,11 @@ */ #include "ssl.h" -#include <openssl/crypto.h> -#include <openssl/err.h> -#include <openssl/evp.h> -#include <openssl/ssl.h> #include <stddef.h> #include "diag.h" #include "iostream.h" +#include "ssl_init.h" #include "trivia/config.h" #if defined(ENABLE_SSL) @@ -22,22 +19,13 @@ void ssl_init(void) { -#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) - OpenSSL_add_all_digests(); - OpenSSL_add_all_ciphers(); - ERR_load_crypto_strings(); -#else - OPENSSL_init_crypto(0, NULL); - OPENSSL_init_ssl(0, NULL); -#endif + ssl_init_impl(); } void ssl_free(void) { -#ifdef OPENSSL_cleanup - OPENSSL_cleanup(); -#endif + ssl_free_impl(); } struct ssl_iostream_ctx * diff --git a/src/lib/core/ssl_init.c b/src/lib/core/ssl_init.c new file mode 100644 index 0000000000000000000000000000000000000000..dbfcec07ba9c3eb017bc87816baa95a991caabe4 --- /dev/null +++ b/src/lib/core/ssl_init.c @@ -0,0 +1,33 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright 2010-2022, Tarantool AUTHORS, please see AUTHORS file. + */ +#include "ssl_init.h" + +#include <openssl/crypto.h> +#include <openssl/err.h> +#include <openssl/evp.h> +#include <openssl/ssl.h> +#include <stddef.h> + +void +ssl_init_impl(void) +{ +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + OpenSSL_add_all_digests(); + OpenSSL_add_all_ciphers(); + ERR_load_crypto_strings(); +#else + OPENSSL_init_crypto(0, NULL); + OPENSSL_init_ssl(0, NULL); +#endif +} + +void +ssl_free_impl(void) +{ +#ifdef OPENSSL_cleanup + OPENSSL_cleanup(); +#endif +} diff --git a/src/lib/core/ssl_init.h b/src/lib/core/ssl_init.h new file mode 100644 index 0000000000000000000000000000000000000000..006b66419fb2a774b5fb28f8c01a295a2d025228 --- /dev/null +++ b/src/lib/core/ssl_init.h @@ -0,0 +1,18 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright 2010-2022, Tarantool AUTHORS, please see AUTHORS file. + */ +#pragma once + +/** + * Initializes OpenSSL library. Internal method. Use ssl_init() instead. + */ +void +ssl_init_impl(void); + +/** + * Frees OpenSSL library. Internal method. Use ssl_free() instead. + */ +void +ssl_free_impl(void);