#if USE_OPENSSL
// XXX: temporary performance regression. c_str() data copies and prevents this being a const method
- t = sslCreateClientContext(certFile.c_str(), privateKeyFile.c_str(), sslCipher.c_str(),
+ t = sslCreateClientContext(*this, certFile.c_str(), privateKeyFile.c_str(), sslCipher.c_str(),
(setOptions ? parsedOptions : 0), parsedFlags);
#elif USE_GNUTLS && WHEN_READY_FOR_GNUTLS
#endif
Security::ContextPtr
-sslCreateClientContext(const char *certfile, const char *keyfile, const char *cipher, long options, long fl)
+sslCreateClientContext(Security::PeerOptions &peer, const char *certfile, const char *keyfile, const char *cipher, long options, long fl)
{
- Ssl::Initialize();
-
-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
- Security::ContextPtr sslContext(SSL_CTX_new(TLS_client_method()));
-#else
- Security::ContextPtr sslContext(SSL_CTX_new(SSLv23_client_method()));
-#endif
-
- if (sslContext == NULL) {
- const int ssl_error = ERR_get_error();
- fatalf("Failed to allocate SSL context: %s\n",
- ERR_error_string(ssl_error, NULL));
- }
+ Security::ContextPtr sslContext(peer.createBlankContext());
+ if (!sslContext)
+ return nullptr;
SSL_CTX_set_options(sslContext, options);
Security::ContextPtr sslCreateServerContext(AnyP::PortCfg &port);
/// \ingroup ServerProtocolSSLAPI
-Security::ContextPtr sslCreateClientContext(const char *certfile, const char *keyfile, const char *cipher, long options, long flags);
+Security::ContextPtr sslCreateClientContext(Security::PeerOptions &, const char *certfile, const char *keyfile, const char *cipher, long options, long flags);
/// \ingroup ServerProtocolSSLAPI
int ssl_read_method(int, char *, int);
bool CertError::operator != (const CertError &ce) const STUB_RETVAL(false)
} // namespace Ssl
Security::ContextPtr sslCreateServerContext(AnyP::PortCfg &port) STUB_RETVAL(NULL)
-Security::ContextPtr sslCreateClientContext(const char *certfile, const char *keyfile, const char *cipher, long options, const char *flags) STUB_RETVAL(NULL)
+Security::ContextPtr sslCreateClientContext(Security::PeerOptions &, const char *, const char *, const char *, long, const char *) STUB_RETVAL(nullptr)
int ssl_read_method(int, char *, int) STUB_RETVAL(0)
int ssl_write_method(int, const char *, int) STUB_RETVAL(0)
void ssl_shutdown_method(SSL *ssl) STUB