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

Side by Side Diff: chrome/browser/certificate_manager_model.cc

Issue 18121007: *WIP* Store NSS slots per profile. Move keygen to chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more refactoring Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/certificate_manager_model.h ('k') | chrome/browser/net/nss_context.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/certificate_manager_model.h" 5 #include "chrome/browser/certificate_manager_model.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/i18n/time_formatting.h" 8 #include "base/i18n/time_formatting.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/net/nss_context.h"
11 #include "chrome/browser/ui/crypto_module_password_dialog_nss.h" 12 #include "chrome/browser/ui/crypto_module_password_dialog_nss.h"
12 #include "chrome/common/net/x509_certificate_model.h" 13 #include "chrome/common/net/x509_certificate_model.h"
14 #include "content/public/browser/browser_context.h"
15 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/resource_context.h"
13 #include "grit/generated_resources.h" 17 #include "grit/generated_resources.h"
14 #include "net/base/crypto_module.h" 18 #include "net/base/crypto_module.h"
15 #include "net/base/net_errors.h" 19 #include "net/base/net_errors.h"
16 #include "net/cert/x509_certificate.h" 20 #include "net/cert/x509_certificate.h"
17 #include "ui/base/l10n/l10n_util.h" 21 #include "ui/base/l10n/l10n_util.h"
18 22
19 CertificateManagerModel::CertificateManagerModel(Observer* observer) 23 using content::BrowserThread;
20 : cert_db_(net::NSSCertDatabase::GetInstance()), 24
21 observer_(observer) { 25 namespace {
26
27 void DidGetCertDBOnIOThread(
28 const base::Callback<void(net::NSSCertDatabase*)>& callback,
29 net::NSSCertDatabase* cert_db) {
30 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
31
32 BrowserThread::PostTask(
33 BrowserThread::UI, FROM_HERE, base::Bind(callback, cert_db));
34 }
35
36 void GetCertDBOnIOThread(
37 content::ResourceContext* context,
38 const base::Callback<void(net::NSSCertDatabase*)>& callback) {
39 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
40 net::NSSCertDatabase* cert_db = GetNSSCertDatabaseForResourceContext(
41 context, base::Bind(&DidGetCertDBOnIOThread, callback));
42 if (cert_db)
43 DidGetCertDBOnIOThread(callback, cert_db);
44 }
45
46 } // namespace
47
48 CertificateManagerModel::CertificateManagerModel(
49 content::BrowserContext* browser_context,
50 Observer* observer)
51 : observer_(observer),
52 weak_ptr_factory_(this) {
53 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
54 DVLOG(1) << "Getting cert_db for profile...";
55 BrowserThread::PostTask(
56 BrowserThread::IO,
57 FROM_HERE,
58 base::Bind(&GetCertDBOnIOThread,
59 browser_context->GetResourceContext(),
60 base::Bind(&CertificateManagerModel::DidGetCertDB,
61 weak_ptr_factory_.GetWeakPtr())));
22 } 62 }
23 63
24 CertificateManagerModel::~CertificateManagerModel() { 64 CertificateManagerModel::~CertificateManagerModel() {
25 } 65 }
26 66
27 void CertificateManagerModel::Refresh() { 67 void CertificateManagerModel::Refresh() {
68 // TODO(mattm): XXX move the NSS operations stuff onto a worker thread?
28 DVLOG(1) << "refresh started"; 69 DVLOG(1) << "refresh started";
29 net::CryptoModuleList modules; 70 net::CryptoModuleList modules;
30 cert_db_->ListModules(&modules, false); 71 cert_db_->ListModules(&modules, false);
31 DVLOG(1) << "refresh waiting for unlocking..."; 72 DVLOG(1) << "refresh waiting for unlocking...";
32 chrome::UnlockSlotsIfNecessary( 73 chrome::UnlockSlotsIfNecessary(
33 modules, 74 modules,
34 chrome::kCryptoModulePasswordListCerts, 75 chrome::kCryptoModulePasswordListCerts,
35 std::string(), // unused. 76 std::string(), // unused.
36 NULL, // TODO(mattm): supply parent window. 77 NULL, // TODO(mattm): supply parent window.
37 base::Bind(&CertificateManagerModel::RefreshSlotsUnlocked, 78 base::Bind(&CertificateManagerModel::RefreshSlotsUnlocked,
38 base::Unretained(this))); 79 base::Unretained(this)));
39 } 80 }
40 81
82 void CertificateManagerModel::DidGetCertDB(net::NSSCertDatabase* cert_db) {
83 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
84 DCHECK(cert_db);
85 DVLOG(1) << "Got cert_db";
86 cert_db_ = cert_db;
87 observer_->CertificateManagerModelReady();
88 }
89
41 void CertificateManagerModel::RefreshSlotsUnlocked() { 90 void CertificateManagerModel::RefreshSlotsUnlocked() {
42 DVLOG(1) << "refresh listing certs..."; 91 DVLOG(1) << "refresh listing certs...";
43 cert_db_->ListCerts(&cert_list_); 92 cert_db_->ListCerts(&cert_list_);
44 observer_->CertificatesRefreshed(); 93 observer_->CertificatesRefreshed();
45 DVLOG(1) << "refresh finished"; 94 DVLOG(1) << "refresh finished";
46 } 95 }
47 96
48 void CertificateManagerModel::FilterAndBuildOrgGroupingMap( 97 void CertificateManagerModel::FilterAndBuildOrgGroupingMap(
49 net::CertType filter_type, 98 net::CertType filter_type,
50 CertificateManagerModel::OrgGroupingMap* map) const { 99 CertificateManagerModel::OrgGroupingMap* map) const {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 bool result = cert_db_->DeleteCertAndKey(cert); 193 bool result = cert_db_->DeleteCertAndKey(cert);
145 if (result) 194 if (result)
146 Refresh(); 195 Refresh();
147 return result; 196 return result;
148 } 197 }
149 198
150 bool CertificateManagerModel::IsHardwareBacked( 199 bool CertificateManagerModel::IsHardwareBacked(
151 const net::X509Certificate* cert) const { 200 const net::X509Certificate* cert) const {
152 return cert_db_->IsHardwareBacked(cert); 201 return cert_db_->IsHardwareBacked(cert);
153 } 202 }
OLDNEW
« no previous file with comments | « chrome/browser/certificate_manager_model.h ('k') | chrome/browser/net/nss_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698