OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chromeos/network/network_cert_migrator.h" | 5 #include "chromeos/network/network_cert_migrator.h" |
6 | 6 |
7 #include <cert.h> | 7 #include <cert.h> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/location.h" | 11 #include "base/location.h" |
12 #include "base/metrics/histogram_macros.h" | 12 #include "base/metrics/histogram_macros.h" |
13 #include "chromeos/dbus/dbus_thread_manager.h" | 13 #include "chromeos/dbus/dbus_thread_manager.h" |
14 #include "chromeos/dbus/shill_service_client.h" | 14 #include "chromeos/dbus/shill_service_client.h" |
15 #include "chromeos/network/client_cert_util.h" | 15 #include "chromeos/network/client_cert_util.h" |
16 #include "chromeos/network/network_handler_callbacks.h" | 16 #include "chromeos/network/network_handler_callbacks.h" |
17 #include "chromeos/network/network_state.h" | 17 #include "chromeos/network/network_state.h" |
18 #include "chromeos/network/network_state_handler.h" | 18 #include "chromeos/network/network_state_handler.h" |
19 #include "dbus/object_path.h" | 19 #include "dbus/object_path.h" |
| 20 #include "net/cert/x509_certificate.h" |
20 #include "third_party/cros_system_api/dbus/service_constants.h" | 21 #include "third_party/cros_system_api/dbus/service_constants.h" |
21 | 22 |
22 namespace chromeos { | 23 namespace chromeos { |
23 | 24 |
24 // Migrates each network of |networks| with an invalid or missing slot ID in | 25 // Migrates each network of |networks| with an invalid or missing slot ID in |
25 // their client certificate configuration. | 26 // their client certificate configuration. |
26 // | 27 // |
27 // If a network with a client certificate configuration (i.e. a PKCS11 ID) is | 28 // If a network with a client certificate configuration (i.e. a PKCS11 ID) is |
28 // found, the configured client certificate is looked up. | 29 // found, the configured client certificate is looked up. |
29 // If the certificate is found, the currently configured slot ID (if any) is | 30 // If the certificate is found, the currently configured slot ID (if any) is |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 void NetworkCertMigrator::Init(NetworkStateHandler* network_state_handler) { | 173 void NetworkCertMigrator::Init(NetworkStateHandler* network_state_handler) { |
173 DCHECK(network_state_handler); | 174 DCHECK(network_state_handler); |
174 network_state_handler_ = network_state_handler; | 175 network_state_handler_ = network_state_handler; |
175 network_state_handler_->AddObserver(this, FROM_HERE); | 176 network_state_handler_->AddObserver(this, FROM_HERE); |
176 | 177 |
177 DCHECK(CertLoader::IsInitialized()); | 178 DCHECK(CertLoader::IsInitialized()); |
178 CertLoader::Get()->AddObserver(this); | 179 CertLoader::Get()->AddObserver(this); |
179 } | 180 } |
180 | 181 |
181 void NetworkCertMigrator::NetworkListChanged() { | 182 void NetworkCertMigrator::NetworkListChanged() { |
182 if (!CertLoader::Get()->certificates_loaded()) { | 183 if (!CertLoader::Get()->initial_load_finished()) { |
183 VLOG(2) << "Certs not loaded yet."; | 184 VLOG(2) << "Certs not loaded yet."; |
184 return; | 185 return; |
185 } | 186 } |
186 // Run the migration process to fix missing or incorrect slot ids of client | 187 // Run the migration process to fix missing or incorrect slot ids of client |
187 // certificates. | 188 // certificates. |
188 VLOG(2) << "Start certificate migration of network configurations."; | 189 VLOG(2) << "Start certificate migration of network configurations."; |
189 scoped_refptr<MigrationTask> helper(new MigrationTask( | 190 scoped_refptr<MigrationTask> helper(new MigrationTask( |
190 CertLoader::Get()->all_certs(), weak_ptr_factory_.GetWeakPtr())); | 191 CertLoader::Get()->all_certs(), weak_ptr_factory_.GetWeakPtr())); |
191 NetworkStateHandler::NetworkStateList networks; | 192 NetworkStateHandler::NetworkStateList networks; |
192 network_state_handler_->GetNetworkListByType( | 193 network_state_handler_->GetNetworkListByType( |
193 NetworkTypePattern::Default(), | 194 NetworkTypePattern::Default(), |
194 true, // only configured networks | 195 true, // only configured networks |
195 false, // visible and not visible networks | 196 false, // visible and not visible networks |
196 0, // no count limit | 197 0, // no count limit |
197 &networks); | 198 &networks); |
198 helper->Run(networks); | 199 helper->Run(networks); |
199 } | 200 } |
200 | 201 |
201 void NetworkCertMigrator::OnCertificatesLoaded( | 202 void NetworkCertMigrator::OnCertificatesLoaded( |
202 const net::CertificateList& cert_list, | 203 const net::CertificateList& cert_list, |
203 bool initial_load) { | 204 bool initial_load) { |
204 if (initial_load) | 205 if (initial_load) |
205 NetworkListChanged(); | 206 NetworkListChanged(); |
206 } | 207 } |
207 | 208 |
208 } // namespace chromeos | 209 } // namespace chromeos |
OLD | NEW |