Index: chromeos/network/onc/onc_certificate_importer.cc |
diff --git a/chromeos/network/onc/onc_certificate_importer.cc b/chromeos/network/onc/onc_certificate_importer.cc |
index 86641075502d3b37d6d8f439aa29b8a07b037638..b236927831738c930edaa0fd43f3ee17fdc00a00 100644 |
--- a/chromeos/network/onc/onc_certificate_importer.cc |
+++ b/chromeos/network/onc/onc_certificate_importer.cc |
@@ -34,11 +34,8 @@ const char kX509CertificateHeader[] = "X509 CERTIFICATE"; |
namespace chromeos { |
namespace onc { |
-CertificateImporter::CertificateImporter( |
- ONCSource onc_source, |
- bool allow_web_trust_from_policy) |
- : onc_source_(onc_source), |
- allow_web_trust_from_policy_(allow_web_trust_from_policy) { |
+CertificateImporter::CertificateImporter(bool allow_web_trust) |
+ : allow_web_trust_(allow_web_trust) { |
} |
CertificateImporter::ParseResult CertificateImporter::ParseAndStoreCertificates( |
@@ -46,10 +43,8 @@ CertificateImporter::ParseResult CertificateImporter::ParseAndStoreCertificates( |
size_t successful_imports = 0; |
for (size_t i = 0; i < certificates.GetSize(); ++i) { |
const base::DictionaryValue* certificate = NULL; |
- if (!certificates.GetDictionary(i, &certificate)) { |
- ONC_LOG_ERROR("Certificate data malformed"); |
- continue; |
- } |
+ certificates.GetDictionary(i, &certificate); |
+ DCHECK(certificate != NULL); |
VLOG(2) << "Parsing certificate at index " << i << ": " << *certificate; |
@@ -62,22 +57,21 @@ CertificateImporter::ParseResult CertificateImporter::ParseAndStoreCertificates( |
} |
} |
- if (successful_imports == certificates.GetSize()) |
+ if (successful_imports == certificates.GetSize()) { |
return IMPORT_OK; |
- else if (successful_imports == 0) |
+ } else if (successful_imports == 0) { |
return IMPORT_FAILED; |
- else |
+ } else { |
return IMPORT_INCOMPLETE; |
+ } |
} |
bool CertificateImporter::ParseAndStoreCertificate( |
const base::DictionaryValue& certificate) { |
// Get out the attributes of the given certificate. |
std::string guid; |
- if (!certificate.GetString(certificate::kGUID, &guid) || guid.empty()) { |
- ONC_LOG_ERROR("Certificate missing GUID identifier"); |
- return false; |
- } |
+ certificate.GetString(certificate::kGUID, &guid); |
+ DCHECK(!guid.empty()); |
bool remove = false; |
if (certificate.GetBoolean(kRemove, &remove) && remove) { |
@@ -92,13 +86,14 @@ bool CertificateImporter::ParseAndStoreCertificate( |
// Not removing, so let's get the data we need to add this certificate. |
std::string cert_type; |
certificate.GetString(certificate::kType, &cert_type); |
- if (cert_type == certificate::kServer || cert_type == certificate::kAuthority) |
+ if (cert_type == certificate::kServer || |
+ cert_type == certificate::kAuthority) { |
return ParseServerOrCaCertificate(cert_type, guid, certificate); |
- |
- if (cert_type == certificate::kClient) |
+ } else if (cert_type == certificate::kClient) { |
return ParseClientCertificate(guid, certificate); |
+ } |
- ONC_LOG_ERROR("Certificate of unknown type: " + cert_type); |
+ NOTREACHED(); |
return false; |
} |
@@ -164,22 +159,14 @@ bool CertificateImporter::ParseServerOrCaCertificate( |
const std::string& cert_type, |
const std::string& guid, |
const base::DictionaryValue& certificate) { |
- // Device policy can't import certificates. |
- if (onc_source_ == ONC_SOURCE_DEVICE_POLICY) { |
- // This isn't a parsing error. |
- ONC_LOG_WARNING("Refusing to import certificate from device policy."); |
- return true; |
- } |
- |
bool web_trust = false; |
const base::ListValue* trust_list = NULL; |
if (certificate.GetList(certificate::kTrust, &trust_list)) { |
for (size_t i = 0; i < trust_list->GetSize(); ++i) { |
std::string trust_type; |
- if (!trust_list->GetString(i, &trust_type)) { |
- ONC_LOG_ERROR("Certificate trust is invalid"); |
- return false; |
- } |
+ if (!trust_list->GetString(i, &trust_type)) |
+ NOTREACHED(); |
+ |
if (trust_type == certificate::kWeb) { |
// "Web" implies that the certificate is to be trusted for SSL |
// identification. |
@@ -191,10 +178,7 @@ bool CertificateImporter::ParseServerOrCaCertificate( |
} |
} |
- // Web trust is only granted to certificates imported for a managed user |
- // on a managed device. |
- if (onc_source_ == ONC_SOURCE_USER_POLICY && |
- web_trust && !allow_web_trust_from_policy_) { |
+ if (web_trust && !allow_web_trust_) { |
LOG(WARNING) << "Web trust not granted for certificate: " << guid; |
web_trust = false; |
} |
@@ -295,10 +279,11 @@ bool CertificateImporter::ParseServerOrCaCertificate( |
net::NSSCertDatabase::TrustBits trust = web_trust ? |
net::NSSCertDatabase::TRUSTED_SSL : |
net::NSSCertDatabase::TRUST_DEFAULT; |
- if (cert_type == certificate::kServer) |
+ if (cert_type == certificate::kServer) { |
success = cert_database->ImportServerCert(cert_list, trust, &failures); |
- else // Authority cert |
+ } else { // Authority cert |
success = cert_database->ImportCACerts(cert_list, trust, &failures); |
+ } |
if (!failures.empty()) { |
ONC_LOG_ERROR("Error (" + net::ErrorToString(failures[0].net_error) + |