Chromium Code Reviews| Index: net/socket/ssl_client_socket_openssl.cc |
| diff --git a/net/socket/ssl_client_socket_openssl.cc b/net/socket/ssl_client_socket_openssl.cc |
| index 1e0d799e6a731167e86489a9449142eb78752a91..f5a260c64749b2db6073ca5f4eb01a17d82b0684 100644 |
| --- a/net/socket/ssl_client_socket_openssl.cc |
| +++ b/net/socket/ssl_client_socket_openssl.cc |
| @@ -472,6 +472,24 @@ SSLClientSocketOpenSSL::~SSLClientSocketOpenSSL() { |
| Disconnect(); |
| } |
| +void SSLClientSocketOpenSSL::SetSslKeyLogFile(std::string ssl_keylog_file) { |
| + std::string env_keylog_file; |
| + scoped_ptr<base::Environment> env(base::Environment::Create()); |
|
Bryan McQuade
2015/10/14 00:38:54
I think there's some benefit to centralizing the l
|
| + if (env->GetVar("SSLKEYLOGFILE", &env_keylog_file) && |
| + !env_keylog_file.empty()) { |
| + return; |
| + } |
| + |
| + crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE); |
| + BIO* bio = BIO_new_file(ssl_keylog_file.c_str(), "a"); |
| + if (!bio) { |
| + LOG(ERROR) << "Failed to open " << ssl_keylog_file; |
| + ERR_print_errors_cb(&LogErrorCallback, NULL); |
| + } else { |
| + SSL_CTX_set_keylog_bio(SSLContext::GetInstance()->ssl_ctx(), bio); |
| + } |
| +} |
| + |
| void SSLClientSocketOpenSSL::GetSSLCertRequestInfo( |
| SSLCertRequestInfo* cert_request_info) { |
| cert_request_info->host_and_port = host_and_port_; |