diff options
author | haavardm@opera.com <haavardm@opera.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-12 14:36:54 +0000 |
---|---|---|
committer | haavardm@opera.com <haavardm@opera.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-12 14:36:54 +0000 |
commit | 2b85635c4f9d0974c871401e7b6b6aaa2820a72f (patch) | |
tree | 09b798d26838a2f7b1994ea7dcbde6e0743e138a /net | |
parent | ba8379b88556dd6860d3714bb9abfc218458899d (diff) | |
download | chromium_src-2b85635c4f9d0974c871401e7b6b6aaa2820a72f.zip chromium_src-2b85635c4f9d0974c871401e7b6b6aaa2820a72f.tar.gz chromium_src-2b85635c4f9d0974c871401e7b6b6aaa2820a72f.tar.bz2 |
Compile fix for OpenSSL on Mac and Windows.
OSCertHandle is not defined to OpenSSL's X509
on Mac/Windows.
BUG=None
TEST=None
Review URL: https://codereview.chromium.org/329143002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276678 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r-- | net/socket/ssl_server_socket_openssl.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/net/socket/ssl_server_socket_openssl.cc b/net/socket/ssl_server_socket_openssl.cc index 556f87d..f6bd0cd 100644 --- a/net/socket/ssl_server_socket_openssl.cc +++ b/net/socket/ssl_server_socket_openssl.cc @@ -616,10 +616,31 @@ int SSLServerSocketOpenSSL::Init() { // Set certificate and private key. DCHECK(cert_->os_cert_handle()); +#if defined(USE_OPENSSL_CERTS) if (SSL_use_certificate(ssl_, cert_->os_cert_handle()) != 1) { LOG(ERROR) << "Cannot set certificate."; return ERR_UNEXPECTED; } +#else + // Convert OSCertHandle to X509 structure. + std::string der_string; + if (!X509Certificate::GetDEREncoded(cert_->os_cert_handle(), &der_string)) + return ERR_UNEXPECTED; + + const unsigned char* der_string_array = + reinterpret_cast<const unsigned char*>(der_string.data()); + + crypto::ScopedOpenSSL<X509, X509_free> + x509(d2i_X509(NULL, &der_string_array, der_string.length())); + if (!x509.get()) + return ERR_UNEXPECTED; + + // On success, SSL_use_certificate acquires a reference to |x509|. + if (SSL_use_certificate(ssl_, x509.get()) != 1) { + LOG(ERROR) << "Cannot set certificate."; + return ERR_UNEXPECTED; + } +#endif // USE_OPENSSL_CERTS DCHECK(key_->key()); if (SSL_use_PrivateKey(ssl_, key_->key()) != 1) { |