summaryrefslogtreecommitdiff
path: root/databases/mongodb34/files/patch-asio-openssl-1.1.0
diff options
context:
space:
mode:
Diffstat (limited to 'databases/mongodb34/files/patch-asio-openssl-1.1.0')
-rw-r--r--databases/mongodb34/files/patch-asio-openssl-1.1.0666
1 files changed, 0 insertions, 666 deletions
diff --git a/databases/mongodb34/files/patch-asio-openssl-1.1.0 b/databases/mongodb34/files/patch-asio-openssl-1.1.0
deleted file mode 100644
index e127e0dd6d19..000000000000
--- a/databases/mongodb34/files/patch-asio-openssl-1.1.0
+++ /dev/null
@@ -1,666 +0,0 @@
-From 628e3ca9fe7a1bed1ce2308e2df4a1a4ecd1dfe7 Mon Sep 17 00:00:00 2001
-From: Christopher Kohlhoff <chris@kohlhoff.com>
-Date: Fri, 20 Mar 2015 08:46:51 +1100
-Subject: [PATCH] ERR_remove_state is deprecated, use ERR_remove_thread_state
- instead.
-
----
- asio/include/asio/ssl/detail/impl/openssl_init.ipp | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-index 2c40d40..da66fc1 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-@@ -63,7 +63,11 @@ public:
- ::CRYPTO_set_id_callback(0);
- ::CRYPTO_set_locking_callback(0);
- ::ERR_free_strings();
-+#if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
-+ ::ERR_remove_thread_state(NULL);
-+#else // (OPENSSL_VERSION_NUMBER >= 0x10000000L)
- ::ERR_remove_state(0);
-+#endif // (OPENSSL_VERSION_NUMBER >= 0x10000000L)
- ::EVP_cleanup();
- ::CRYPTO_cleanup_all_ex_data();
- ::CONF_modules_unload(1);
-From aa21de0944b4327f998fe161dde5ddaaf38cec5c Mon Sep 17 00:00:00 2001
-From: Christopher Kohlhoff <chris@kohlhoff.com>
-Date: Sat, 21 Mar 2015 20:52:42 +1100
-Subject: [PATCH] Remove redundant pointer check in SSL engine.
-
----
- asio/include/asio/ssl/detail/impl/engine.ipp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp
-index 5504411..2e4a39d 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp
-@@ -206,7 +206,7 @@ const asio::error_code& engine::map_error_code(
-
- // SSL v2 doesn't provide a protocol-level shutdown, so an eof on the
- // underlying transport is passed through.
-- if (ssl_ && ssl_->version == SSL2_VERSION)
-+ if (ssl_->version == SSL2_VERSION)
- return ec;
-
- // Otherwise, the peer should have negotiated a proper shutdown.
-From 6c70257e20ef159c581298b54838361bb54bfce4 Mon Sep 17 00:00:00 2001
-From: Christopher Kohlhoff <chris@kohlhoff.com>
-Date: Thu, 1 Oct 2015 08:44:30 +1000
-Subject: [PATCH] Use SSL_CTX_clear_chain_certs, if available.
-
----
- asio/include/asio/ssl/impl/context.ipp | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp
-index 08705e7..77da84e 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp
-@@ -539,11 +539,15 @@ asio::error_code context::use_certificate_chain(
- return ec;
- }
-
-+#if (OPENSSL_VERSION_NUMBER >= 0x10002000L)
-+ ::SSL_CTX_clear_chain_certs(handle_);
-+#else
- if (handle_->extra_certs)
- {
- ::sk_X509_pop_free(handle_->extra_certs, X509_free);
- handle_->extra_certs = 0;
- }
-+#endif // (OPENSSL_VERSION_NUMBER >= 0x10002000L)
-
- while (X509* cacert = ::PEM_read_bio_X509(bio.p, 0,
- handle_->default_passwd_callback,
-From 92bfc623e6a71353dd2c783f4c9fef5591ac550d Mon Sep 17 00:00:00 2001
-From: Christopher Kohlhoff <chris@kohlhoff.com>
-Date: Thu, 19 Nov 2015 10:24:56 +1100
-Subject: [PATCH] Add new error category and constant for
- ssl::error::stream_truncated.
-
-This error replaces uses of SSL_R_SHORT_READ, and indicates that the
-SSL stream has been shut down abruptly. (I.e. the underlying socket
-has been closed without performing an SSL-layer shutdown.)
----
- asio/include/asio/ssl/detail/impl/engine.ipp | 8 ++-----
- asio/include/asio/ssl/error.hpp | 34 ++++++++++++++++++++++++++++
- asio/include/asio/ssl/impl/error.ipp | 33 ++++++++++++++++++++++++++-
- 3 files changed, 68 insertions(+), 7 deletions(-)
-
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp
-index b59cf18..9abe010 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp
-@@ -195,9 +195,7 @@ const asio::error_code& engine::map_error_code(
- // If there's data yet to be read, it's an error.
- if (BIO_wpending(ext_bio_))
- {
-- ec = asio::error_code(
-- ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ),
-- asio::error::get_ssl_category());
-+ ec = asio::ssl::error::stream_truncated;
- return ec;
- }
-
-@@ -209,9 +207,7 @@ const asio::error_code& engine::map_error_code(
- // Otherwise, the peer should have negotiated a proper shutdown.
- if ((::SSL_get_shutdown(ssl_) & SSL_RECEIVED_SHUTDOWN) == 0)
- {
-- ec = asio::error_code(
-- ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ),
-- asio::error::get_ssl_category());
-+ ec = asio::ssl::error::stream_truncated;
- }
-
- return ec;
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/error.hpp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/error.hpp
-index 1385d2a..f044f59 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/error.hpp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/error.hpp
-@@ -25,6 +25,7 @@ namespace error {
-
- enum ssl_errors
- {
-+ // Error numbers are those produced by openssl.
- };
-
- extern ASIO_DECL
-@@ -34,6 +35,23 @@ static const asio::error_category& ssl_category
- = asio::error::get_ssl_category();
-
- } // namespace error
-+namespace ssl {
-+namespace error {
-+
-+enum stream_errors
-+{
-+ /// The underlying stream closed before the ssl stream gracefully shut down.
-+ stream_truncated = 1
-+};
-+
-+extern ASIO_DECL
-+const asio::error_category& get_stream_category();
-+
-+static const asio::error_category& stream_category
-+ = asio::ssl::error::get_stream_category();
-+
-+} // namespace error
-+} // namespace ssl
- } // namespace asio
-
- #if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-@@ -44,6 +62,11 @@ template<> struct is_error_code_enum<asio::error::ssl_errors>
- static const bool value = true;
- };
-
-+template<> struct is_error_code_enum<asio::ssl::error::stream_errors>
-+{
-+ static const bool value = true;
-+};
-+
- } // namespace std
- #endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-@@ -57,6 +80,17 @@ inline asio::error_code make_error_code(ssl_errors e)
- }
-
- } // namespace error
-+namespace ssl {
-+namespace error {
-+
-+inline asio::error_code make_error_code(stream_errors e)
-+{
-+ return asio::error_code(
-+ static_cast<int>(e), get_stream_category());
-+}
-+
-+} // namespace error
-+} // namespace ssl
- } // namespace asio
-
- #include "asio/detail/pop_options.hpp"
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/error.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/error.ipp
-index 9e76039..8c20e81 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/error.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/error.ipp
-@@ -23,7 +23,6 @@
-
- namespace asio {
- namespace error {
--
- namespace detail {
-
- class ssl_category : public asio::error_category
-@@ -50,6 +49,38 @@ const asio::error_category& get_ssl_category()
- }
-
- } // namespace error
-+namespace ssl {
-+namespace error {
-+namespace detail {
-+
-+class stream_category : public asio::error_category
-+{
-+public:
-+ const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
-+ {
-+ return "asio.ssl.stream";
-+ }
-+
-+ std::string message(int value) const
-+ {
-+ switch (value)
-+ {
-+ case stream_truncated: return "stream truncated";
-+ default: return "asio.ssl.stream error";
-+ }
-+ }
-+};
-+
-+} // namespace detail
-+
-+const asio::error_category& get_stream_category()
-+{
-+ static detail::stream_category instance;
-+ return instance;
-+}
-+
-+} // namespace error
-+} // namespace ssl
- } // namespace asio
-
- #include "asio/detail/pop_options.hpp"
-From 5fa80539834c10406611bb02c20cdba2a9171f4a Mon Sep 17 00:00:00 2001
-From: Christopher Kohlhoff <chris@kohlhoff.com>
-Date: Thu, 19 Nov 2015 10:25:42 +1100
-Subject: [PATCH] BoringSSL does not provide CONF_modules_unload.
-
----
- asio/include/asio/ssl/detail/impl/openssl_init.ipp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-index da66fc1..2a70bf5 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-@@ -70,7 +70,9 @@ public:
- #endif // (OPENSSL_VERSION_NUMBER >= 0x10000000L)
- ::EVP_cleanup();
- ::CRYPTO_cleanup_all_ex_data();
-+#if !defined(OPENSSL_IS_BORINGSSL)
- ::CONF_modules_unload(1);
-+#endif // !defined(OPENSSL_IS_BORINGSSL)
- #if !defined(OPENSSL_NO_ENGINE)
- ::ENGINE_cleanup();
- #endif // !defined(OPENSSL_NO_ENGINE)
-From 062b19c97bb85f4625b46f93ee19b234948ff235 Mon Sep 17 00:00:00 2001
-From: Marcel Raad <raad@teamviewer.com>
-Date: Fri, 1 Apr 2016 10:46:17 +0200
-Subject: [PATCH] Add compatibility with OpenSSL 1.1 - SSLv2 has been
- completely removed from OpenSSL, even without OPENSSL_NO_SSL2 - there is a
- new threading API without locking callbacks - struct SSL_CTX has been made
- opaque and must be used via accessor functions - some cleanup functions have
- been removed
-
----
- asio/include/asio/ssl/detail/impl/engine.ipp | 2 +
- asio/include/asio/ssl/detail/impl/openssl_init.ipp | 20 ++++--
- asio/include/asio/ssl/impl/context.ipp | 71 +++++++++++++++++-----
- 3 files changed, 72 insertions(+), 21 deletions(-)
-
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp
-index fa5d4b0..22b7cdd 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/engine.ipp
-@@ -201,8 +201,10 @@ const asio::error_code& engine::map_error_code(
-
- // SSL v2 doesn't provide a protocol-level shutdown, so an eof on the
- // underlying transport is passed through.
-+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
- if (ssl_->version == SSL2_VERSION)
- return ec;
-+#endif // (OPENSSL_VERSION_NUMBER < 0x10100000L)
-
- // Otherwise, the peer should have negotiated a proper shutdown.
- if ((::SSL_get_shutdown(ssl_) & SSL_RECEIVED_SHUTDOWN) == 0)
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-index 700b678..62a49cd 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-@@ -39,11 +39,13 @@ public:
- ::SSL_load_error_strings();
- ::OpenSSL_add_all_algorithms();
-
-+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
- mutexes_.resize(::CRYPTO_num_locks());
- for (size_t i = 0; i < mutexes_.size(); ++i)
- mutexes_[i].reset(new asio::detail::mutex);
- ::CRYPTO_set_locking_callback(&do_init::openssl_locking_func);
- ::CRYPTO_set_id_callback(&do_init::openssl_id_func);
-+#endif // (OPENSSL_VERSION_NUMBER < 0x10100000L)
-
- #if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-@@ -60,22 +62,26 @@ public:
- #endif // !defined(SSL_OP_NO_COMPRESSION)
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
-+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
- ::CRYPTO_set_id_callback(0);
- ::CRYPTO_set_locking_callback(0);
- ::ERR_free_strings();
--#if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
-- ::ERR_remove_thread_state(NULL);
--#else // (OPENSSL_VERSION_NUMBER >= 0x10000000L)
-- ::ERR_remove_state(0);
--#endif // (OPENSSL_VERSION_NUMBER >= 0x10000000L)
- ::EVP_cleanup();
- ::CRYPTO_cleanup_all_ex_data();
-+#endif // (OPENSSL_VERSION_NUMBER < 0x10100000L)
-+#if (OPENSSL_VERSION_NUMBER < 0x10000000L)
-+ ::ERR_remove_state(0);
-+#elif (OPENSSL_VERSION_NUMBER < 0x10100000L)
-+ ::ERR_remove_thread_state(NULL);
-+#endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
- #if !defined(OPENSSL_IS_BORINGSSL)
- ::CONF_modules_unload(1);
- #endif // !defined(OPENSSL_IS_BORINGSSL)
--#if !defined(OPENSSL_NO_ENGINE)
-+#if !defined(OPENSSL_NO_ENGINE) \
-+ && (OPENSSL_VERSION_NUMBER < 0x10100000L)
- ::ENGINE_cleanup();
- #endif // !defined(OPENSSL_NO_ENGINE)
-+ // && (OPENSSL_VERSION_NUMBER < 0x10100000L)
- }
-
- #if !defined(SSL_OP_NO_COMPRESSION) \
-@@ -104,10 +110,12 @@ private:
- static void openssl_locking_func(int mode, int n,
- const char* /*file*/, int /*line*/)
- {
-+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
- if (mode & CRYPTO_LOCK)
- instance()->mutexes_[n]->lock();
- else
- instance()->mutexes_[n]->unlock();
-+#endif // (OPENSSL_VERSION_NUMBER < 0x10100000L)
- }
-
- // Mutexes to be used in locking callbacks.
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp
-index 02210d9..fde7709 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp
-@@ -66,7 +66,8 @@ context::context(context::method m)
-
- switch (m)
- {
--#if defined(OPENSSL_NO_SSL2)
-+#if defined(OPENSSL_NO_SSL2) \
-+ || (OPENSSL_VERSION_NUMBER >= 0x10100000L)
- case context::sslv2:
- case context::sslv2_client:
- case context::sslv2_server:
-@@ -74,6 +75,7 @@ context::context(context::method m)
- asio::error::invalid_argument, "context");
- break;
- #else // defined(OPENSSL_NO_SSL2)
-+ // || (OPENSSL_VERSION_NUMBER >= 0x10100000L)
- case context::sslv2:
- handle_ = ::SSL_CTX_new(::SSLv2_method());
- break;
-@@ -84,6 +86,7 @@ context::context(context::method m)
- handle_ = ::SSL_CTX_new(::SSLv2_server_method());
- break;
- #endif // defined(OPENSSL_NO_SSL2)
-+ // || (OPENSSL_VERSION_NUMBER >= 0x10100000L)
- #if defined(OPENSSL_NO_SSL3)
- case context::sslv3:
- case context::sslv3_client:
-@@ -192,13 +195,22 @@ context::~context()
- {
- if (handle_)
- {
-- if (handle_->default_passwd_callback_userdata)
-+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
-+#else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ void* cb_userdata = handle_->default_passwd_callback_userdata;
-+#endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ if (cb_userdata)
- {
- detail::password_callback_base* callback =
- static_cast<detail::password_callback_base*>(
-- handle_->default_passwd_callback_userdata);
-+ cb_userdata);
- delete callback;
-+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ ::SSL_CTX_set_default_passwd_cb_userdata(handle_, 0);
-+#else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
- handle_->default_passwd_callback_userdata = 0;
-+#endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
- }
-
- if (SSL_CTX_get_app_data(handle_))
-@@ -528,10 +540,17 @@ ASIO_SYNC_OP_VOID context::use_certificate_chain(
- bio_cleanup bio = { make_buffer_bio(chain) };
- if (bio.p)
- {
-+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
-+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
-+#else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ pem_password_cb* callback = handle_->default_passwd_callback;
-+ void* cb_userdata = handle_->default_passwd_callback_userdata;
-+#endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
- x509_cleanup cert = {
- ::PEM_read_bio_X509_AUX(bio.p, 0,
-- handle_->default_passwd_callback,
-- handle_->default_passwd_callback_userdata) };
-+ callback,
-+ cb_userdata) };
- if (!cert.p)
- {
- ec = asio::error_code(ERR_R_PEM_LIB,
-@@ -559,8 +578,8 @@ ASIO_SYNC_OP_VOID context::use_certificate_chain(
- #endif // (OPENSSL_VERSION_NUMBER >= 0x10002000L)
-
- while (X509* cacert = ::PEM_read_bio_X509(bio.p, 0,
-- handle_->default_passwd_callback,
-- handle_->default_passwd_callback_userdata))
-+ callback,
-+ cb_userdata))
- {
- if (!::SSL_CTX_add_extra_chain_cert(handle_, cacert))
- {
-@@ -625,6 +644,14 @@ ASIO_SYNC_OP_VOID context::use_private_key(
- {
- ::ERR_clear_error();
-
-+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
-+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
-+#else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ pem_password_cb* callback = handle_->default_passwd_callback;
-+ void* cb_userdata = handle_->default_passwd_callback_userdata;
-+#endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+
- bio_cleanup bio = { make_buffer_bio(private_key) };
- if (bio.p)
- {
-@@ -636,8 +663,8 @@ ASIO_SYNC_OP_VOID context::use_private_key(
- break;
- case context_base::pem:
- evp_private_key.p = ::PEM_read_bio_PrivateKey(
-- bio.p, 0, handle_->default_passwd_callback,
-- handle_->default_passwd_callback_userdata);
-+ bio.p, 0, callback,
-+ cb_userdata);
- break;
- default:
- {
-@@ -684,6 +711,14 @@ ASIO_SYNC_OP_VOID context::use_rsa_private_key(
- {
- ::ERR_clear_error();
-
-+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
-+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
-+#else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ pem_password_cb* callback = handle_->default_passwd_callback;
-+ void* cb_userdata = handle_->default_passwd_callback_userdata;
-+#endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+
- bio_cleanup bio = { make_buffer_bio(private_key) };
- if (bio.p)
- {
-@@ -695,8 +730,8 @@ ASIO_SYNC_OP_VOID context::use_rsa_private_key(
- break;
- case context_base::pem:
- rsa_private_key.p = ::PEM_read_bio_RSAPrivateKey(
-- bio.p, 0, handle_->default_passwd_callback,
-- handle_->default_passwd_callback_userdata);
-+ bio.p, 0, callback,
-+ cb_userdata);
- break;
- default:
- {
-@@ -915,11 +950,17 @@ int context::verify_callback_function(int preverified, X509_STORE_CTX* ctx)
- ASIO_SYNC_OP_VOID context::do_set_password_callback(
- detail::password_callback_base* callback, asio::error_code& ec)
- {
-- if (handle_->default_passwd_callback_userdata)
-- delete static_cast<detail::password_callback_base*>(
-- handle_->default_passwd_callback_userdata);
--
-+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ void* old_callback = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
-+ ::SSL_CTX_set_default_passwd_cb_userdata(handle_, callback);
-+#else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+ void* old_callback = handle_->default_passwd_callback_userdata;
- handle_->default_passwd_callback_userdata = callback;
-+#endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-+
-+ if (old_callback)
-+ delete static_cast<detail::password_callback_base*>(
-+ old_callback);
-
- SSL_CTX_set_default_passwd_cb(handle_, &context::password_callback_function);
-
-From 69e44a4cc6eb5ba21ede409779a7b777c0eb3869 Mon Sep 17 00:00:00 2001
-From: Christopher Kohlhoff <chris@kohlhoff.com>
-Date: Sun, 28 Aug 2016 10:02:08 +1000
-Subject: [PATCH] Fix errors when OPENSSL_NO_DEPRECATED is defined.
-
----
- asio/include/asio/ssl/detail/impl/openssl_init.ipp | 23 +++++++++++-----------
- asio/include/asio/ssl/detail/openssl_types.hpp | 2 ++
- 2 files changed, 13 insertions(+), 12 deletions(-)
-
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-index 62a49cd..4cc9859 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-@@ -44,8 +44,10 @@ public:
- for (size_t i = 0; i < mutexes_.size(); ++i)
- mutexes_[i].reset(new asio::detail::mutex);
- ::CRYPTO_set_locking_callback(&do_init::openssl_locking_func);
-- ::CRYPTO_set_id_callback(&do_init::openssl_id_func);
- #endif // (OPENSSL_VERSION_NUMBER < 0x10100000L)
-+#if (OPENSSL_VERSION_NUMBER < 0x10000000L)
-+ ::CRYPTO_set_id_callback(&do_init::openssl_id_func);
-+#endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
-
- #if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-@@ -62,8 +64,10 @@ public:
- #endif // !defined(SSL_OP_NO_COMPRESSION)
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
--#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
-+#if (OPENSSL_VERSION_NUMBER < 0x10000000L)
- ::CRYPTO_set_id_callback(0);
-+#endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
-+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
- ::CRYPTO_set_locking_callback(0);
- ::ERR_free_strings();
- ::EVP_cleanup();
-@@ -94,38 +98,33 @@ public:
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
- private:
-+#if (OPENSSL_VERSION_NUMBER < 0x10000000L)
- static unsigned long openssl_id_func()
- {
- #if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- return ::GetCurrentThreadId();
- #else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-- void* id = instance()->thread_id_;
-- if (id == 0)
-- instance()->thread_id_ = id = &id; // Ugh.
-+ void* id = &errno;
- ASIO_ASSERT(sizeof(unsigned long) >= sizeof(void*));
- return reinterpret_cast<unsigned long>(id);
- #endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- }
-+#endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
-
-+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
- static void openssl_locking_func(int mode, int n,
- const char* /*file*/, int /*line*/)
- {
--#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
- if (mode & CRYPTO_LOCK)
- instance()->mutexes_[n]->lock();
- else
- instance()->mutexes_[n]->unlock();
--#endif // (OPENSSL_VERSION_NUMBER < 0x10100000L)
- }
-
- // Mutexes to be used in locking callbacks.
- std::vector<asio::detail::shared_ptr<
- asio::detail::mutex> > mutexes_;
--
--#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-- // The thread identifiers to be used by openssl.
-- asio::detail::tss_ptr<void> thread_id_;
--#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-+#endif // (OPENSSL_VERSION_NUMBER < 0x10100000L)
-
- #if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/openssl_types.hpp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/openssl_types.hpp
-index d9cfc71..eda740d 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/openssl_types.hpp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/openssl_types.hpp
-@@ -21,7 +21,9 @@
- #if !defined(OPENSSL_NO_ENGINE)
- # include <openssl/engine.h>
- #endif // !defined(OPENSSL_NO_ENGINE)
-+#include <openssl/dh.h>
- #include <openssl/err.h>
-+#include <openssl/rsa.h>
- #include <openssl/x509v3.h>
- #include "asio/detail/socket_types.hpp"
-
-From 2cde22623ca0fd9571d8d57c5a8965082d815e1c Mon Sep 17 00:00:00 2001
-From: Christopher Kohlhoff <chris@kohlhoff.com>
-Date: Tue, 13 Sep 2016 21:59:03 +1000
-Subject: [PATCH] Call SSL_COMP_free_compression_methods() on ssl cleanup.
-
-This call is needed for OpenSSL >=1.0.2 and <1.1.0.
----
- asio/include/asio/ssl/detail/impl/openssl_init.ipp | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-index 4cc9859..392eff9 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-@@ -78,6 +78,11 @@ public:
- #elif (OPENSSL_VERSION_NUMBER < 0x10100000L)
- ::ERR_remove_thread_state(NULL);
- #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
-+#if (OPENSSL_VERSION_NUMBER >= 0x10002000L) \
-+ && (OPENSSL_VERSION_NUMBER < 0x10100000L)
-+ ::SSL_COMP_free_compression_methods();
-+#endif // (OPENSSL_VERSION_NUMBER >= 0x10002000L)
-+ // && (OPENSSL_VERSION_NUMBER < 0x10100000L)
- #if !defined(OPENSSL_IS_BORINGSSL)
- ::CONF_modules_unload(1);
- #endif // !defined(OPENSSL_IS_BORINGSSL)
-From dc2b5b9ac09326ba1e38a28b48170063ca2b1332 Mon Sep 17 00:00:00 2001
-From: Marcel Raad <MarcelRaad@users.noreply.github.com>
-Date: Mon, 31 Oct 2016 10:32:19 +0100
-Subject: [PATCH] Fix compilation with OpenSSL 1.1 API
-
-With OPENSSL_API_COMPAT=0x10100000L, SSL_library_init, SSL_load_error_strings, and OpenSSL_add_all_algorithms are removed.
-With OPENSSL_API_COMPAT=0x10000000L, these are function-style macros mapping to OPENSSL_init_ssl, which is called automatically anyway.
-
-References:
-https://www.openssl.org/docs/man1.1.0/ssl/OPENSSL_init_ssl.html
-https://www.openssl.org/docs/man1.1.0/crypto/OPENSSL_init_crypto.html
----
- asio/include/asio/ssl/detail/impl/openssl_init.ipp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-index 392eff9..5de0caa 100644
---- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/detail/impl/openssl_init.ipp
-@@ -35,11 +35,11 @@ class openssl_init_base::do_init
- public:
- do_init()
- {
-+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
- ::SSL_library_init();
- ::SSL_load_error_strings();
- ::OpenSSL_add_all_algorithms();
-
--#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
- mutexes_.resize(::CRYPTO_num_locks());
- for (size_t i = 0; i < mutexes_.size(); ++i)
- mutexes_[i].reset(new asio::detail::mutex);