Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Unified Diff: net/http/http_network_transaction.cc

Issue 1304143010: Plumbing SSLPrivateKey Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/http/http_network_transaction.cc
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
index f060cd7485dff317ec198c842d3a22b412888531..b9062c87ca42bbc1305fd0b39e62a678185083e2 100644
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -60,6 +60,7 @@
#include "net/spdy/spdy_session_pool.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "net/ssl/ssl_connection_status_flags.h"
+#include "net/ssl/ssl_private_key.h"
davidben 2015/09/25 20:10:11 [THIS one is actually necessary]
svaldez 2015/09/28 16:54:52 Done.
#include "url/gurl.h"
#include "url/url_canon.h"
@@ -219,7 +220,9 @@ int HttpNetworkTransaction::RestartIgnoringLastError(
}
int HttpNetworkTransaction::RestartWithCertificate(
- X509Certificate* client_cert, const CompletionCallback& callback) {
+ X509Certificate* client_cert,
+ SSLPrivateKey* client_pkey,
+ const CompletionCallback& callback) {
// In HandleCertificateRequest(), we always tear down existing stream
// requests to force a new connection. So we shouldn't have one here.
DCHECK(!stream_request_.get());
@@ -230,8 +233,9 @@ int HttpNetworkTransaction::RestartWithCertificate(
&proxy_ssl_config_ : &server_ssl_config_;
ssl_config->send_client_cert = true;
ssl_config->client_cert = client_cert;
+ ssl_config->client_pkey = client_pkey;
session_->ssl_client_auth_cache()->Add(
- response_.cert_request_info->host_and_port, client_cert);
+ response_.cert_request_info->host_and_port, client_cert, client_pkey);
// Reset the other member variables.
// Note: this is necessary only with SSL renegotiation.
ResetStateForRestart();
@@ -1214,8 +1218,9 @@ int HttpNetworkTransaction::HandleCertificateRequest(int error) {
// to provide one for this server before, use the past decision
// automatically.
scoped_refptr<X509Certificate> client_cert;
+ scoped_refptr<SSLPrivateKey> client_pkey;
bool found_cached_cert = session_->ssl_client_auth_cache()->Lookup(
- response_.cert_request_info->host_and_port, &client_cert);
+ response_.cert_request_info->host_and_port, &client_cert, &client_pkey);
if (!found_cached_cert)
return error;
@@ -1239,6 +1244,7 @@ int HttpNetworkTransaction::HandleCertificateRequest(int error) {
&proxy_ssl_config_ : &server_ssl_config_;
ssl_config->send_client_cert = true;
ssl_config->client_cert = client_cert;
+ ssl_config->client_pkey = client_pkey;
next_state_ = STATE_CREATE_STREAM;
// Reset the other member variables.
// Note: this is necessary only with SSL renegotiation.

Powered by Google App Engine
This is Rietveld 408576698