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

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

Issue 111273002: NSSCertDatabaseChromeOS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: gcc fix 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
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() {
28 DVLOG(1) << "refresh started"; 68 DVLOG(1) << "refresh started";
29 net::CryptoModuleList modules; 69 net::CryptoModuleList modules;
30 cert_db_->ListModules(&modules, false); 70 cert_db_->ListModules(&modules, false);
31 DVLOG(1) << "refresh waiting for unlocking..."; 71 DVLOG(1) << "refresh waiting for unlocking...";
32 chrome::UnlockSlotsIfNecessary( 72 chrome::UnlockSlotsIfNecessary(
33 modules, 73 modules,
34 chrome::kCryptoModulePasswordListCerts, 74 chrome::kCryptoModulePasswordListCerts,
35 std::string(), // unused. 75 std::string(), // unused.
36 NULL, // TODO(mattm): supply parent window. 76 NULL, // TODO(mattm): supply parent window.
37 base::Bind(&CertificateManagerModel::RefreshSlotsUnlocked, 77 base::Bind(&CertificateManagerModel::RefreshSlotsUnlocked,
38 base::Unretained(this))); 78 base::Unretained(this)));
39 } 79 }
40 80
81 void CertificateManagerModel::DidGetCertDB(net::NSSCertDatabase* cert_db) {
82 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
83 DCHECK(cert_db);
84 DVLOG(1) << "Got cert_db";
85 cert_db_ = cert_db;
86 observer_->CertificateManagerModelReady();
87 }
88
41 void CertificateManagerModel::RefreshSlotsUnlocked() { 89 void CertificateManagerModel::RefreshSlotsUnlocked() {
42 DVLOG(1) << "refresh listing certs..."; 90 DVLOG(1) << "refresh listing certs...";
43 cert_db_->ListCerts(&cert_list_); 91 cert_db_->ListCerts(&cert_list_);
44 observer_->CertificatesRefreshed(); 92 observer_->CertificatesRefreshed();
45 DVLOG(1) << "refresh finished"; 93 DVLOG(1) << "refresh finished";
46 } 94 }
47 95
48 void CertificateManagerModel::FilterAndBuildOrgGroupingMap( 96 void CertificateManagerModel::FilterAndBuildOrgGroupingMap(
49 net::CertType filter_type, 97 net::CertType filter_type,
50 CertificateManagerModel::OrgGroupingMap* map) const { 98 CertificateManagerModel::OrgGroupingMap* map) const {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 bool result = cert_db_->DeleteCertAndKey(cert); 192 bool result = cert_db_->DeleteCertAndKey(cert);
145 if (result) 193 if (result)
146 Refresh(); 194 Refresh();
147 return result; 195 return result;
148 } 196 }
149 197
150 bool CertificateManagerModel::IsHardwareBacked( 198 bool CertificateManagerModel::IsHardwareBacked(
151 const net::X509Certificate* cert) const { 199 const net::X509Certificate* cert) const {
152 return cert_db_->IsHardwareBacked(cert); 200 return cert_db_->IsHardwareBacked(cert);
153 } 201 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698