OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/chromeos/net/nss_cert_database_cros.h" |
| 6 |
| 7 #include "chrome/browser/chromeos/net/profile_cert_filter.h" |
| 8 #include "chrome/browser/net/nss_slot_factory.h" |
| 9 #include "net/base/crypto_module.h" |
| 10 #include "net/cert/x509_certificate.h" |
| 11 |
| 12 namespace chromeos { |
| 13 |
| 14 NSSCertDatabaseCros::NSSCertDatabaseCros(crypto::ScopedPK11Slot public_slot, |
| 15 crypto::ScopedPK11Slot private_slot) |
| 16 : public_slot_(public_slot.Pass()), private_slot_(private_slot.Pass()) { |
| 17 VLOG(1) << __func__ << " pub:" << PK11_GetModuleID(public_slot_.get()) << ":" |
| 18 << PK11_GetSlotID(public_slot_.get()) |
| 19 << " priv:" << PK11_GetModuleID(private_slot_.get()) << ":" |
| 20 << PK11_GetSlotID(private_slot_.get()); |
| 21 profile_cert_filter_.Init(GetPublicSlot(), GetPrivateSlot()); |
| 22 } |
| 23 |
| 24 NSSCertDatabaseCros::~NSSCertDatabaseCros() {} |
| 25 |
| 26 void NSSCertDatabaseCros::ListCerts(net::CertificateList* certs) { |
| 27 NSSCertDatabase::ListCerts(certs); |
| 28 |
| 29 size_t pre_size = certs->size(); |
| 30 certs->erase( |
| 31 std::remove_if(certs->begin(), certs->end(), |
| 32 ProfileCertFilter::Predicate(profile_cert_filter_)), |
| 33 certs->end()); |
| 34 LOG(WARNING) << "filtered " << pre_size - certs->size() << " of " |
| 35 << pre_size << " certs"; |
| 36 } |
| 37 |
| 38 void NSSCertDatabaseCros::ListModules(net::CryptoModuleList* modules, |
| 39 bool need_rw) const { |
| 40 NSSCertDatabase::ListModules(modules, need_rw); |
| 41 |
| 42 size_t pre_size = modules->size(); |
| 43 modules->erase( |
| 44 std::remove_if(modules->begin(), modules->end(), |
| 45 ProfileCertFilter::Predicate(profile_cert_filter_)), |
| 46 modules->end()); |
| 47 LOG(WARNING) << "filtered " << pre_size - modules->size() << " of " |
| 48 << pre_size << " modules"; |
| 49 } |
| 50 |
| 51 crypto::ScopedPK11Slot NSSCertDatabaseCros::GetPublicSlot() const { |
| 52 return crypto::ScopedPK11Slot( |
| 53 public_slot_ ? PK11_ReferenceSlot(public_slot_.get()) : NULL); |
| 54 } |
| 55 |
| 56 crypto::ScopedPK11Slot NSSCertDatabaseCros::GetPrivateSlot() const { |
| 57 return crypto::ScopedPK11Slot( |
| 58 private_slot_ ? PK11_ReferenceSlot(private_slot_.get()) : NULL); |
| 59 } |
| 60 |
| 61 } // namespace chromeos |
OLD | NEW |