Created
August 14, 2015 16:06
-
-
Save kzemek/37aa2a2138b2651f2c55 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/asio/include/asio/ssl/detail/impl/engine.ipp b/asio/include/asio/ssl/detail/impl/engine.ipp | |
index 139d739..42c5f0f 100644 | |
--- a/asio/include/asio/ssl/detail/impl/engine.ipp | |
+++ b/asio/include/asio/ssl/detail/impl/engine.ipp | |
@@ -202,9 +202,15 @@ 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_)) | |
{ | |
+#if defined(OPENSSL_IS_BORINGSSL) | |
+ ec = asio::error_code( | |
+ ERR_PACK(ERR_LIB_SSL, SSL_R_UNEXPECTED_RECORD), | |
+ asio::error::get_ssl_category()); | |
+#else // defined(OPENSSL_IS_BORINGSSL) | |
ec = asio::error_code( | |
ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ), | |
asio::error::get_ssl_category()); | |
+#endif // defined(OPENSSL_IS_BORINGSSL) | |
return ec; | |
} | |
@@ -216,9 +222,15 @@ 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) | |
{ | |
+#if defined(OPENSSL_IS_BORINGSSL) | |
+ ec = asio::error_code( | |
+ ERR_PACK(ERR_LIB_SSL, SSL_R_UNEXPECTED_RECORD), | |
+ asio::error::get_ssl_category()); | |
+#else // defined(OPENSSL_IS_BORINGSSL) | |
ec = asio::error_code( | |
ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ), | |
asio::error::get_ssl_category()); | |
+#endif // defined(OPENSSL_IS_BORINGSSL) | |
} | |
return ec; | |
diff --git a/asio/include/asio/ssl/detail/impl/openssl_init.ipp b/asio/include/asio/ssl/detail/impl/openssl_init.ipp | |
index da66fc1..5d6ff8f 100644 | |
--- a/asio/include/asio/ssl/detail/impl/openssl_init.ipp | |
+++ b/asio/include/asio/ssl/detail/impl/openssl_init.ipp | |
@@ -36,7 +36,7 @@ public: | |
do_init() | |
{ | |
::SSL_library_init(); | |
- ::SSL_load_error_strings(); | |
+ ::SSL_load_error_strings(); | |
::OpenSSL_add_all_algorithms(); | |
mutexes_.resize(::CRYPTO_num_locks()); | |
@@ -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 | |
#if !defined(OPENSSL_NO_ENGINE) | |
::ENGINE_cleanup(); | |
#endif // !defined(OPENSSL_NO_ENGINE) | |
@@ -99,7 +101,7 @@ private: | |
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) | |
} | |
- static void openssl_locking_func(int mode, int n, | |
+ static void openssl_locking_func(int mode, int n, | |
const char* /*file*/, int /*line*/) | |
{ | |
if (mode & CRYPTO_LOCK) | |
diff --git a/asio/include/asio/ssl/impl/context.ipp b/asio/include/asio/ssl/impl/context.ipp | |
index 4a66a0a..76b333b 100644 | |
--- a/asio/include/asio/ssl/impl/context.ipp | |
+++ b/asio/include/asio/ssl/impl/context.ipp | |
@@ -143,14 +143,14 @@ context::context(context::method m) | |
case context::tlsv12_server: | |
handle_ = ::SSL_CTX_new(::TLSv1_2_server_method()); | |
break; | |
-#else // defined(SSL_TXT_TLSV1_2) | |
+#else // defined(SSL_TXT_TLSV1_2) | |
case context::tlsv12: | |
case context::tlsv12_client: | |
case context::tlsv12_server: | |
asio::detail::throw_error( | |
asio::error::invalid_argument, "context"); | |
break; | |
-#endif // defined(SSL_TXT_TLSV1_2) | |
+#endif // defined(SSL_TXT_TLSV1_2) | |
default: | |
handle_ = ::SSL_CTX_new(0); | |
break; | |
@@ -556,11 +556,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, | |
@@ -574,7 +578,7 @@ asio::error_code context::use_certificate_chain( | |
return ec; | |
} | |
} | |
- | |
+ | |
result = ::ERR_peek_last_error(); | |
if ((ERR_GET_LIB(result) == ERR_LIB_PEM) | |
&& (ERR_GET_REASON(result) == PEM_R_NO_START_LINE)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment