Index: chrome/browser/ui/views/certificate_viewer_win.cc |
diff --git a/chrome/browser/ui/views/certificate_viewer_win.cc b/chrome/browser/ui/views/certificate_viewer_win.cc |
index ba54267100e94e820eaaca1da10b65bedfbacd9d..7d8ababfdd46ddbac8e28c13704f7a06ab7f0ee0 100644 |
--- a/chrome/browser/ui/views/certificate_viewer_win.cc |
+++ b/chrome/browser/ui/views/certificate_viewer_win.cc |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -8,10 +8,15 @@ |
#include <cryptuiapi.h> |
#pragma comment(lib, "cryptui.lib") |
+#include "base/logging.h" |
#include "net/base/x509_certificate.h" |
+#include "net/base/x509_util_win.h" |
void ShowCertificateViewer(gfx::NativeWindow parent, |
net::X509Certificate* cert) { |
+ PCCERT_CONTEXT cert_list = net::x509_util::CreateOSCertChainForCert(cert); |
+ CHECK(cert_list); |
+ |
CRYPTUI_VIEWCERTIFICATE_STRUCT view_info = { 0 }; |
view_info.dwSize = sizeof(view_info); |
// We set our parent to the tab window. This makes the cert dialog created |
@@ -19,9 +24,9 @@ void ShowCertificateViewer(gfx::NativeWindow parent, |
view_info.hwndParent = parent; |
view_info.dwFlags = CRYPTUI_DISABLE_EDITPROPERTIES | |
CRYPTUI_DISABLE_ADDTOSTORE; |
- view_info.pCertContext = cert->os_cert_handle(); |
+ view_info.pCertContext = cert_list; |
// Search the cert store that 'cert' is in when building the cert chain. |
wtc
2011/10/16 14:55:49
Nit: this comment sounds weird since the code now
|
- HCERTSTORE cert_store = view_info.pCertContext->hCertStore; |
+ HCERTSTORE cert_store = cert_list->hCertStore; |
view_info.cStores = 1; |
view_info.rghStores = &cert_store; |
BOOL properties_changed; |
@@ -29,4 +34,6 @@ void ShowCertificateViewer(gfx::NativeWindow parent, |
// This next call blocks but keeps processing windows messages, making it |
// modal to the browser window. |
BOOL rv = ::CryptUIDlgViewCertificate(&view_info, &properties_changed); |
+ |
+ CertFreeCertificateContext(cert_list); |
} |