| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/onc/onc_utils.h" | 5 #include "chromeos/network/onc/onc_utils.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/base64.h" | 10 #include "base/base64.h" |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 if (!field_signature) | 231 if (!field_signature) |
| 232 continue; | 232 continue; |
| 233 | 233 |
| 234 ExpandStringsInOncObject(*field_signature->value_signature, | 234 ExpandStringsInOncObject(*field_signature->value_signature, |
| 235 substitution, inner_object); | 235 substitution, inner_object); |
| 236 } | 236 } |
| 237 } | 237 } |
| 238 | 238 |
| 239 void ExpandStringsInNetworks(const StringSubstitution& substitution, | 239 void ExpandStringsInNetworks(const StringSubstitution& substitution, |
| 240 base::ListValue* network_configs) { | 240 base::ListValue* network_configs) { |
| 241 for (base::Value* entry : *network_configs) { | 241 for (const auto& entry : *network_configs) { |
| 242 base::DictionaryValue* network = nullptr; | 242 base::DictionaryValue* network = nullptr; |
| 243 entry->GetAsDictionary(&network); | 243 entry->GetAsDictionary(&network); |
| 244 DCHECK(network); | 244 DCHECK(network); |
| 245 ExpandStringsInOncObject( | 245 ExpandStringsInOncObject( |
| 246 kNetworkConfigurationSignature, substitution, network); | 246 kNetworkConfigurationSignature, substitution, network); |
| 247 } | 247 } |
| 248 } | 248 } |
| 249 | 249 |
| 250 void FillInHexSSIDFieldsInOncObject(const OncValueSignature& signature, | 250 void FillInHexSSIDFieldsInOncObject(const OncValueSignature& signature, |
| 251 base::DictionaryValue* onc_object) { | 251 base::DictionaryValue* onc_object) { |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 LOG(ERROR) << "Unable to base64 decode X509 data: " << pem_encoded; | 355 LOG(ERROR) << "Unable to base64 decode X509 data: " << pem_encoded; |
| 356 return std::string(); | 356 return std::string(); |
| 357 } | 357 } |
| 358 } | 358 } |
| 359 return decoded; | 359 return decoded; |
| 360 } | 360 } |
| 361 | 361 |
| 362 CertPEMsByGUIDMap GetServerAndCACertsByGUID( | 362 CertPEMsByGUIDMap GetServerAndCACertsByGUID( |
| 363 const base::ListValue& certificates) { | 363 const base::ListValue& certificates) { |
| 364 CertPEMsByGUIDMap certs_by_guid; | 364 CertPEMsByGUIDMap certs_by_guid; |
| 365 for (const base::Value* entry : certificates) { | 365 for (const auto& entry : certificates) { |
| 366 const base::DictionaryValue* cert = nullptr; | 366 const base::DictionaryValue* cert = nullptr; |
| 367 entry->GetAsDictionary(&cert); | 367 bool entry_is_dictionary = entry->GetAsDictionary(&cert); |
| 368 DCHECK(entry_is_dictionary); |
| 368 | 369 |
| 369 std::string guid; | 370 std::string guid; |
| 370 cert->GetStringWithoutPathExpansion(certificate::kGUID, &guid); | 371 cert->GetStringWithoutPathExpansion(certificate::kGUID, &guid); |
| 371 std::string cert_type; | 372 std::string cert_type; |
| 372 cert->GetStringWithoutPathExpansion(certificate::kType, &cert_type); | 373 cert->GetStringWithoutPathExpansion(certificate::kType, &cert_type); |
| 373 if (cert_type != certificate::kServer && | 374 if (cert_type != certificate::kServer && |
| 374 cert_type != certificate::kAuthority) { | 375 cert_type != certificate::kAuthority) { |
| 375 continue; | 376 continue; |
| 376 } | 377 } |
| 377 std::string x509_data; | 378 std::string x509_data; |
| 378 cert->GetStringWithoutPathExpansion(certificate::kX509, &x509_data); | 379 cert->GetStringWithoutPathExpansion(certificate::kX509, &x509_data); |
| 379 | 380 |
| 380 std::string der = DecodePEM(x509_data); | 381 std::string der = DecodePEM(x509_data); |
| 381 std::string pem; | 382 std::string pem; |
| 382 if (der.empty() || !net::X509Certificate::GetPEMEncodedFromDER(der, &pem)) { | 383 if (der.empty() || !net::X509Certificate::GetPEMEncodedFromDER(der, &pem)) { |
| 383 LOG(ERROR) << "Certificate with GUID " << guid | 384 LOG(ERROR) << "Certificate with GUID " << guid |
| 384 << " is not in PEM encoding."; | 385 << " is not in PEM encoding."; |
| 385 continue; | 386 continue; |
| 386 } | 387 } |
| 387 certs_by_guid[guid] = pem; | 388 certs_by_guid[guid] = pem; |
| 388 } | 389 } |
| 389 | 390 |
| 390 return certs_by_guid; | 391 return certs_by_guid; |
| 391 } | 392 } |
| 392 | 393 |
| 393 void FillInHexSSIDFieldsInNetworks(base::ListValue* network_configs) { | 394 void FillInHexSSIDFieldsInNetworks(base::ListValue* network_configs) { |
| 394 for (base::Value* entry : *network_configs) { | 395 for (const auto& entry : *network_configs) { |
| 395 base::DictionaryValue* network = nullptr; | 396 base::DictionaryValue* network = nullptr; |
| 396 entry->GetAsDictionary(&network); | 397 entry->GetAsDictionary(&network); |
| 397 DCHECK(network); | 398 DCHECK(network); |
| 398 FillInHexSSIDFieldsInOncObject(kNetworkConfigurationSignature, network); | 399 FillInHexSSIDFieldsInOncObject(kNetworkConfigurationSignature, network); |
| 399 } | 400 } |
| 400 } | 401 } |
| 401 | 402 |
| 402 } // namespace | 403 } // namespace |
| 403 | 404 |
| 404 bool ParseAndValidateOncForImport(const std::string& onc_blob, | 405 bool ParseAndValidateOncForImport(const std::string& onc_blob, |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 const std::string& key_guid_ref_list, | 551 const std::string& key_guid_ref_list, |
| 551 const std::string& key_pem_list, | 552 const std::string& key_pem_list, |
| 552 base::DictionaryValue* onc_object) { | 553 base::DictionaryValue* onc_object) { |
| 553 const base::ListValue* guid_ref_list = nullptr; | 554 const base::ListValue* guid_ref_list = nullptr; |
| 554 if (!onc_object->GetListWithoutPathExpansion(key_guid_ref_list, | 555 if (!onc_object->GetListWithoutPathExpansion(key_guid_ref_list, |
| 555 &guid_ref_list)) { | 556 &guid_ref_list)) { |
| 556 return true; | 557 return true; |
| 557 } | 558 } |
| 558 | 559 |
| 559 std::unique_ptr<base::ListValue> pem_list(new base::ListValue); | 560 std::unique_ptr<base::ListValue> pem_list(new base::ListValue); |
| 560 for (const base::Value* entry : *guid_ref_list) { | 561 for (const auto& entry : *guid_ref_list) { |
| 561 std::string guid_ref; | 562 std::string guid_ref; |
| 562 entry->GetAsString(&guid_ref); | 563 bool entry_is_string = entry->GetAsString(&guid_ref); |
| 564 DCHECK(entry_is_string); |
| 563 | 565 |
| 564 std::string pem_encoded; | 566 std::string pem_encoded; |
| 565 if (!GUIDRefToPEMEncoding(certs_by_guid, guid_ref, &pem_encoded)) | 567 if (!GUIDRefToPEMEncoding(certs_by_guid, guid_ref, &pem_encoded)) |
| 566 return false; | 568 return false; |
| 567 | 569 |
| 568 pem_list->AppendString(pem_encoded); | 570 pem_list->AppendString(pem_encoded); |
| 569 } | 571 } |
| 570 | 572 |
| 571 onc_object->RemoveWithoutPathExpansion(key_guid_ref_list, nullptr); | 573 onc_object->RemoveWithoutPathExpansion(key_guid_ref_list, nullptr); |
| 572 onc_object->SetWithoutPathExpansion(key_pem_list, pem_list.release()); | 574 onc_object->SetWithoutPathExpansion(key_pem_list, pem_list.release()); |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 985 default: { | 987 default: { |
| 986 LOG(ERROR) << "Unexpected proxy mode in Shill config: " << mode; | 988 LOG(ERROR) << "Unexpected proxy mode in Shill config: " << mode; |
| 987 return nullptr; | 989 return nullptr; |
| 988 } | 990 } |
| 989 } | 991 } |
| 990 return proxy_settings; | 992 return proxy_settings; |
| 991 } | 993 } |
| 992 | 994 |
| 993 } // namespace onc | 995 } // namespace onc |
| 994 } // namespace chromeos | 996 } // namespace chromeos |
| OLD | NEW |