diff options
author | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-04 01:46:57 +0000 |
---|---|---|
committer | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-04 01:46:57 +0000 |
commit | b1f18494233f64c720729039222d9ad66c8ae95f (patch) | |
tree | 0f2848bdedba2a46c3d3b3fc8c7855d2786fd14d /chrome/browser/gtk/certificate_viewer.cc | |
parent | b1995975f4e6b17df513a6d0dae44b37c46c5e00 (diff) | |
download | chromium_src-b1f18494233f64c720729039222d9ad66c8ae95f.zip chromium_src-b1f18494233f64c720729039222d9ad66c8ae95f.tar.gz chromium_src-b1f18494233f64c720729039222d9ad66c8ae95f.tar.bz2 |
Linux: implement Client SSL Certificate selection UI
BUG=25241
TEST=Visit site for which you have a client certificate, verify that dialog comes up and you can select your cert (or cancel)
Review URL: http://codereview.chromium.org/661241
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40587 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/certificate_viewer.cc')
-rw-r--r-- | chrome/browser/gtk/certificate_viewer.cc | 40 |
1 files changed, 9 insertions, 31 deletions
diff --git a/chrome/browser/gtk/certificate_viewer.cc b/chrome/browser/gtk/certificate_viewer.cc index a4cc92b..75a9d4a 100644 --- a/chrome/browser/gtk/certificate_viewer.cc +++ b/chrome/browser/gtk/certificate_viewer.cc @@ -21,6 +21,7 @@ #include "chrome/browser/gtk/gtk_util.h" #include "chrome/third_party/mozilla_security_manager/nsNSSCertHelper.h" #include "chrome/third_party/mozilla_security_manager/nsNSSCertificate.h" +#include "chrome/third_party/mozilla_security_manager/nsUsageArrayHelper.h" #include "grit/generated_resources.h" // PSM = Mozilla's Personal Security Manager. @@ -255,37 +256,14 @@ void CertificateViewer::InitGeneralPage() { l10n_util::GetStringUTF8(IDS_CERT_INFO_VERIFIED_USAGES_GROUP)), FALSE, FALSE, 0); - SECCertificateUsage usages = 0; - // TODO(wtc): See if we should use X509Certificate::Verify instead. - if (CERT_VerifyCertificateNow(CERT_GetDefaultCertDB(), cert, PR_TRUE, - certificateUsageCheckAllUsages, - NULL, &usages) == SECSuccess) { - // List of usages to display is borrowed from - // mozilla/source/security/manager/ssl/src/nsUsageArrayHelper.cpp - static const struct { - SECCertificateUsage usage; - int string_id; - } usage_string_map[] = { - {certificateUsageSSLClient, IDS_CERT_USAGE_SSL_CLIENT}, - {certificateUsageSSLServer, IDS_CERT_USAGE_SSL_SERVER}, - {certificateUsageSSLServerWithStepUp, - IDS_CERT_USAGE_SSL_SERVER_WITH_STEPUP}, - {certificateUsageEmailSigner, IDS_CERT_USAGE_EMAIL_SIGNER}, - {certificateUsageEmailRecipient, IDS_CERT_USAGE_EMAIL_RECEIVER}, - {certificateUsageObjectSigner, IDS_CERT_USAGE_OBJECT_SIGNER}, - {certificateUsageSSLCA, IDS_CERT_USAGE_SSL_CA}, - {certificateUsageStatusResponder, IDS_CERT_USAGE_STATUS_RESPONDER}, - }; - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(usage_string_map); ++i) { - if (usages & usage_string_map[i].usage) - gtk_box_pack_start( - GTK_BOX(uses_vbox), - gtk_util::IndentWidget(gtk_util::LeftAlignMisc(gtk_label_new( - l10n_util::GetStringUTF8( - usage_string_map[i].string_id).c_str()))), - FALSE, FALSE, 0); - } - } + std::vector<std::string> usages; + psm::GetCertUsageStrings(cert, &usages); + for (size_t i = 0; i < usages.size(); ++i) + gtk_box_pack_start( + GTK_BOX(uses_vbox), + gtk_util::IndentWidget(gtk_util::LeftAlignMisc(gtk_label_new( + usages[i].c_str()))), + FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(general_page_vbox_), gtk_hseparator_new(), FALSE, FALSE, 0); |