Index: chrome/browser/views/ssl_client_certificate_selector_win.cc |
diff --git a/chrome/browser/views/ssl_client_certificate_selector_win.cc b/chrome/browser/views/ssl_client_certificate_selector_win.cc |
index 8977787ac44da900cdeff8d261f2a4dea8b8feef..d78151dc7ba5747cfd6b58c7bb7c8c426777dce1 100644 |
--- a/chrome/browser/views/ssl_client_certificate_selector_win.cc |
+++ b/chrome/browser/views/ssl_client_certificate_selector_win.cc |
@@ -26,7 +26,6 @@ void ShowSSLClientCertificateSelector( |
TabContents* parent, |
net::SSLCertRequestInfo* cert_request_info, |
SSLClientAuthHandler* delegate) { |
- net::X509Certificate* cert = NULL; |
// TODO(jcampan): replace this with our own cert selection dialog. |
// CryptUIDlgSelectCertificateFromStore is blocking (but still processes |
// Windows messages), which is scary. |
@@ -51,11 +50,17 @@ void ShowSSLClientCertificateSelector( |
client_certs, parent->GetMessageBoxRootWindow(), |
title.c_str(), text.c_str(), 0, 0, NULL); |
+ net::X509Certificate* cert = NULL; |
if (cert_context) { |
- cert = net::X509Certificate::CreateFromHandle( |
- cert_context, |
- net::X509Certificate::SOURCE_LONE_CERT_IMPORT, |
- net::X509Certificate::OSCertHandles()); |
+ for (size_t i = 0; i < cert_request_info->client_certs.size(); ++i) { |
+ net::X509Certificate* client_cert = cert_request_info->client_certs[i]; |
+ if (net::X509Certificate::IsSameOSCert(cert_context, |
+ client_cert->os_cert_handle())) { |
+ cert = client_cert; |
+ break; |
+ } |
+ } |
+ DCHECK(cert != NULL); |
net::X509Certificate::FreeOSCertHandle(cert_context); |
} |