| Index: net/cert/nss_cert_database.cc
|
| diff --git a/net/cert/nss_cert_database.cc b/net/cert/nss_cert_database.cc
|
| index d4ece1057454ff70ddb6c27896b9dda6e5513a02..935b271bd47b479aa46338de540737efe2ba33af 100644
|
| --- a/net/cert/nss_cert_database.cc
|
| +++ b/net/cert/nss_cert_database.cc
|
| @@ -10,9 +10,9 @@
|
| #include <pk11pub.h>
|
| #include <secmod.h>
|
|
|
| +#include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/singleton.h"
|
| #include "base/observer_list_threadsafe.h"
|
| #include "crypto/nss_util.h"
|
| #include "crypto/nss_util_internal.h"
|
| @@ -35,6 +35,14 @@ namespace psm = mozilla_security_manager;
|
|
|
| namespace net {
|
|
|
| +namespace {
|
| +
|
| +base::LazyInstance<NSSCertDatabase>::Leaky
|
| + g_nss_cert_database = LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +} // namespace
|
| +
|
| +
|
| NSSCertDatabase::ImportCertFailure::ImportCertFailure(
|
| const scoped_refptr<X509Certificate>& cert,
|
| int err)
|
| @@ -44,13 +52,20 @@ NSSCertDatabase::ImportCertFailure::~ImportCertFailure() {}
|
|
|
| // static
|
| NSSCertDatabase* NSSCertDatabase::GetInstance() {
|
| - return Singleton<NSSCertDatabase,
|
| - LeakySingletonTraits<NSSCertDatabase> >::get();
|
| + // TODO(mattm): Remove this ifdef guard once the linux impl of
|
| + // GetNSSCertDatabaseForResourceContext does not call GetInstance.
|
| +#if defined(OS_CHROMEOS)
|
| + LOG(ERROR) << "NSSCertDatabase::GetInstance() is deprecated."
|
| + << "See http://crbug.com/329735.";
|
| +#endif
|
| + return &g_nss_cert_database.Get();
|
| }
|
|
|
| NSSCertDatabase::NSSCertDatabase()
|
| : observer_list_(new ObserverListThreadSafe<Observer>) {
|
| - crypto::EnsureNSSInit();
|
| + // This also makes sure that NSS has been initialized.
|
| + CertDatabase::GetInstance()->ObserveNSSCertDatabase(this);
|
| +
|
| psm::EnsurePKCS12Init();
|
| }
|
|
|
| @@ -117,6 +132,9 @@ int NSSCertDatabase::ImportFromPKCS12(
|
| const base::string16& password,
|
| bool is_extractable,
|
| net::CertificateList* imported_certs) {
|
| + DVLOG(1) << __func__ << " "
|
| + << PK11_GetModuleID(module->os_module_handle()) << ":"
|
| + << PK11_GetSlotID(module->os_module_handle());
|
| int result = psm::nsPKCS12Blob_Import(module->os_module_handle(),
|
| data.data(), data.size(),
|
| password,
|
| @@ -154,7 +172,7 @@ X509Certificate* NSSCertDatabase::FindRootInList(
|
| &certn_1->os_cert_handle()->subject) == SECEqual)
|
| return certn_1;
|
|
|
| - VLOG(1) << "certificate list is not a hierarchy";
|
| + LOG(WARNING) << "certificate list is not a hierarchy";
|
| return cert0;
|
| }
|
|
|
|
|