| Index: net/third_party/mozilla_security_manager/nsNSSCertificateDB.cpp
|
| diff --git a/net/third_party/mozilla_security_manager/nsNSSCertificateDB.cpp b/net/third_party/mozilla_security_manager/nsNSSCertificateDB.cpp
|
| index 0cf430d793195af800d8e5746bbdea134f892e0e..40600490d20c257b638ecbcda1e53740b9e033e0 100644
|
| --- a/net/third_party/mozilla_security_manager/nsNSSCertificateDB.cpp
|
| +++ b/net/third_party/mozilla_security_manager/nsNSSCertificateDB.cpp
|
| @@ -158,6 +158,7 @@ bool ImportCACerts(const net::CertificateList& certificates,
|
|
|
| // Based on nsNSSCertificateDB::ImportServerCertificate.
|
| bool ImportServerCert(const net::CertificateList& certificates,
|
| + net::CertDatabase::TrustBits trustBits,
|
| net::CertDatabase::ImportCertFailureList* not_imported) {
|
| crypto::ScopedPK11Slot slot(crypto::GetPublicNSSKeySlot());
|
| if (!slot.get()) {
|
| @@ -184,9 +185,7 @@ bool ImportServerCert(const net::CertificateList& certificates,
|
| }
|
| }
|
|
|
| - // Set as valid peer, but without any extra trust.
|
| - SetCertTrust(certificates[0].get(), net::SERVER_CERT,
|
| - net::CertDatabase::UNTRUSTED);
|
| + SetCertTrust(certificates[0].get(), net::SERVER_CERT, trustBits);
|
| // TODO(mattm): Report SetCertTrust result? Putting in not_imported
|
| // wouldn't quite match up since it was imported...
|
|
|
| @@ -209,13 +208,20 @@ SetCertTrust(const net::X509Certificate* cert,
|
| trust.AddCATrust(trustBits & net::CertDatabase::TRUSTED_SSL,
|
| trustBits & net::CertDatabase::TRUSTED_EMAIL,
|
| trustBits & net::CertDatabase::TRUSTED_OBJ_SIGN);
|
| + if (trustBits & net::CertDatabase::TRUST_TERMINAL_RECORD)
|
| + trust.SetTerminalRecord();
|
| srv = CERT_ChangeCertTrust(CERT_GetDefaultCertDB(),
|
| nsscert,
|
| trust.GetTrust());
|
| } else if (type == net::SERVER_CERT) {
|
| // always start with untrusted and move up
|
| - trust.SetValidPeer();
|
| - trust.AddPeerTrust(trustBits & net::CertDatabase::TRUSTED_SSL, 0, 0);
|
| + if (trustBits & net::CertDatabase::TRUSTED_SSL) {
|
| + trust.SetTerminalServerRecord();
|
| + trust.AddPeerTrust(PR_TRUE, PR_FALSE, PR_FALSE);
|
| + }
|
| + if (trustBits & net::CertDatabase::TRUST_TERMINAL_RECORD)
|
| + trust.SetTerminalRecord();
|
| +
|
| srv = CERT_ChangeCertTrust(CERT_GetDefaultCertDB(),
|
| nsscert,
|
| trust.GetTrust());
|
|
|