Index: net/base/cert_database_nss.cc |
diff --git a/net/base/cert_database_nss.cc b/net/base/cert_database_nss.cc |
index 4dde4fcda3a06d689e32f119c48223aa575f6c5c..516db6ee195109a508de4fd4d3fa0c827f752a6a 100644 |
--- a/net/base/cert_database_nss.cc |
+++ b/net/base/cert_database_nss.cc |
@@ -199,8 +199,9 @@ bool CertDatabase::ImportCACerts(const CertificateList& certificates, |
} |
bool CertDatabase::ImportServerCert(const CertificateList& certificates, |
+ TrustBits trust_bits, |
ImportCertFailureList* not_imported) { |
- return psm::ImportServerCert(certificates, not_imported); |
+ return psm::ImportServerCert(certificates, trust_bits, not_imported); |
} |
CertDatabase::TrustBits CertDatabase::GetCertTrust(const X509Certificate* cert, |
@@ -216,11 +217,20 @@ CertDatabase::TrustBits CertDatabase::GetCertTrust(const X509Certificate* cert, |
case CA_CERT: |
return trust.HasTrustedCA(PR_TRUE, PR_FALSE, PR_FALSE) * TRUSTED_SSL + |
trust.HasTrustedCA(PR_FALSE, PR_TRUE, PR_FALSE) * TRUSTED_EMAIL + |
- trust.HasTrustedCA(PR_FALSE, PR_FALSE, PR_TRUE) * TRUSTED_OBJ_SIGN; |
+ trust.HasTrustedCA(PR_FALSE, PR_FALSE, PR_TRUE) * TRUSTED_OBJ_SIGN + |
+ ((trust.HasTerminalRecord(PR_TRUE, PR_FALSE, PR_FALSE) | |
+ trust.HasTerminalRecord(PR_FALSE, PR_TRUE, PR_FALSE) | |
+ trust.HasTerminalRecord(PR_FALSE, PR_FALSE, PR_TRUE)) * |
+ TRUST_TERMINAL_RECORD); |
case SERVER_CERT: |
+ // Since we don't define per-type terminal-record bits, we can't precisely |
+ // round-trip from NSS trust to TrustBits and back. |
return trust.HasTrustedPeer(PR_TRUE, PR_FALSE, PR_FALSE) * TRUSTED_SSL + |
trust.HasTrustedPeer(PR_FALSE, PR_TRUE, PR_FALSE) * TRUSTED_EMAIL + |
- trust.HasTrustedPeer(PR_FALSE, PR_FALSE, PR_TRUE) * TRUSTED_OBJ_SIGN; |
+ trust.HasTrustedPeer(PR_FALSE, PR_FALSE, PR_TRUE) * TRUSTED_OBJ_SIGN + |
+ ((trust.HasTerminalRecord(PR_FALSE, PR_TRUE, PR_FALSE) | |
+ trust.HasTerminalRecord(PR_FALSE, PR_FALSE, PR_TRUE)) * |
+ TRUST_TERMINAL_RECORD); |
default: |
return UNTRUSTED; |
} |