Index: chrome/browser/chromeos/policy/network_configuration_updater_impl_cros.cc |
diff --git a/chrome/browser/chromeos/policy/network_configuration_updater_impl_cros.cc b/chrome/browser/chromeos/policy/network_configuration_updater_impl_cros.cc |
index 86122c65ce307268481a234b49a0562e0e772d1d..784ae9f172e924ab472d07537d251d0a25f3baec 100644 |
--- a/chrome/browser/chromeos/policy/network_configuration_updater_impl_cros.cc |
+++ b/chrome/browser/chromeos/policy/network_configuration_updater_impl_cros.cc |
@@ -109,11 +109,30 @@ void NetworkConfigurationUpdaterImplCros::ApplyNetworkConfiguration( |
ParseAndValidateOncForImport( |
onc_blob, onc_source, "", &network_configs, &certificates); |
- network_library_->LoadOncNetworks(network_configs, onc_source); |
- |
+ chromeos::CertificateHandler::CertsByGUID imported_server_and_ca_certs; |
scoped_ptr<net::CertificateList> web_trust_certs(new net::CertificateList); |
certificate_handler_->ImportCertificates( |
- certificates, onc_source, web_trust_certs.get()); |
+ certificates, onc_source, web_trust_certs.get(), |
+ &imported_server_and_ca_certs); |
+ |
+ if (!chromeos::onc::ResolveServerCertRefsInNetworks( |
+ imported_server_and_ca_certs, &network_configs)) { |
+ LOG(ERROR) << "Some certificate references in the ONC policy for source " |
+ << chromeos::onc::GetSourceAsString(onc_source) |
+ << " could not be resolved."; |
+ } |
+ |
+ net::CertificateList imported_server_and_ca_certs_list; |
+ for (chromeos::CertificateHandler::CertsByGUID::iterator it = |
+ imported_server_and_ca_certs.begin(); |
+ it != imported_server_and_ca_certs.end(); ++it) { |
+ imported_server_and_ca_certs_list.push_back(it->second); |
+ } |
+ network_library_->LoadOncNetworks( |
+ network_configs, |
+ onc_source, |
+ base::Bind(&chromeos::onc::GetPEMEncodedCertFromFingerprint, |
+ imported_server_and_ca_certs_list)); |
if (onc_source == chromeos::onc::ONC_SOURCE_USER_POLICY) |
SetTrustAnchors(web_trust_certs.Pass()); |