| 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_validator.h" | 5 #include "chromeos/network/onc/onc_validator.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 &signature == &kStaticIPConfigSignature) { | 115 &signature == &kStaticIPConfigSignature) { |
| 116 valid = ValidateIPConfig(repaired.get()); | 116 valid = ValidateIPConfig(repaired.get()); |
| 117 } else if (&signature == &kWiFiSignature) { | 117 } else if (&signature == &kWiFiSignature) { |
| 118 valid = ValidateWiFi(repaired.get()); | 118 valid = ValidateWiFi(repaired.get()); |
| 119 } else if (&signature == &kVPNSignature) { | 119 } else if (&signature == &kVPNSignature) { |
| 120 valid = ValidateVPN(repaired.get()); | 120 valid = ValidateVPN(repaired.get()); |
| 121 } else if (&signature == &kIPsecSignature) { | 121 } else if (&signature == &kIPsecSignature) { |
| 122 valid = ValidateIPsec(repaired.get()); | 122 valid = ValidateIPsec(repaired.get()); |
| 123 } else if (&signature == &kOpenVPNSignature) { | 123 } else if (&signature == &kOpenVPNSignature) { |
| 124 valid = ValidateOpenVPN(repaired.get()); | 124 valid = ValidateOpenVPN(repaired.get()); |
| 125 } else if (&signature == &kThirdPartyVPNSignature) { |
| 126 valid = ValidateThirdPartyVPN(repaired.get()); |
| 125 } else if (&signature == &kVerifyX509Signature) { | 127 } else if (&signature == &kVerifyX509Signature) { |
| 126 valid = ValidateVerifyX509(repaired.get()); | 128 valid = ValidateVerifyX509(repaired.get()); |
| 127 } else if (&signature == &kCertificatePatternSignature) { | 129 } else if (&signature == &kCertificatePatternSignature) { |
| 128 valid = ValidateCertificatePattern(repaired.get()); | 130 valid = ValidateCertificatePattern(repaired.get()); |
| 129 } else if (&signature == &kProxySettingsSignature) { | 131 } else if (&signature == &kProxySettingsSignature) { |
| 130 valid = ValidateProxySettings(repaired.get()); | 132 valid = ValidateProxySettings(repaired.get()); |
| 131 } else if (&signature == &kProxyLocationSignature) { | 133 } else if (&signature == &kProxyLocationSignature) { |
| 132 valid = ValidateProxyLocation(repaired.get()); | 134 valid = ValidateProxyLocation(repaired.get()); |
| 133 } else if (&signature == &kEAPSignature) { | 135 } else if (&signature == &kEAPSignature) { |
| 134 valid = ValidateEAP(repaired.get()); | 136 valid = ValidateEAP(repaired.get()); |
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 all_required_exist &= RequireField(*result, kEAP); | 678 all_required_exist &= RequireField(*result, kEAP); |
| 677 else if (security == kWEP_PSK || security == kWPA_PSK) | 679 else if (security == kWEP_PSK || security == kWPA_PSK) |
| 678 all_required_exist &= RequireField(*result, kPassphrase); | 680 all_required_exist &= RequireField(*result, kPassphrase); |
| 679 | 681 |
| 680 return !error_on_missing_field_ || all_required_exist; | 682 return !error_on_missing_field_ || all_required_exist; |
| 681 } | 683 } |
| 682 | 684 |
| 683 bool Validator::ValidateVPN(base::DictionaryValue* result) { | 685 bool Validator::ValidateVPN(base::DictionaryValue* result) { |
| 684 using namespace ::onc::vpn; | 686 using namespace ::onc::vpn; |
| 685 | 687 |
| 686 const char* const kValidTypes[] = {kIPsec, kTypeL2TP_IPsec, kOpenVPN}; | 688 const char* const kValidTypes[] = { |
| 689 kIPsec, kTypeL2TP_IPsec, kOpenVPN, kThirdPartyVpn}; |
| 687 const std::vector<const char*> valid_types(toVector(kValidTypes)); | 690 const std::vector<const char*> valid_types(toVector(kValidTypes)); |
| 688 if (FieldExistsAndHasNoValidValue(*result, ::onc::vpn::kType, valid_types)) | 691 if (FieldExistsAndHasNoValidValue(*result, ::onc::vpn::kType, valid_types)) |
| 689 return false; | 692 return false; |
| 690 | 693 |
| 691 bool all_required_exist = RequireField(*result, ::onc::vpn::kType); | 694 bool all_required_exist = RequireField(*result, ::onc::vpn::kType); |
| 692 std::string type; | 695 std::string type; |
| 693 result->GetStringWithoutPathExpansion(::onc::vpn::kType, &type); | 696 result->GetStringWithoutPathExpansion(::onc::vpn::kType, &type); |
| 694 if (type == kOpenVPN) { | 697 if (type == kOpenVPN) { |
| 695 all_required_exist &= RequireField(*result, kOpenVPN); | 698 all_required_exist &= RequireField(*result, kOpenVPN); |
| 696 } else if (type == kIPsec) { | 699 } else if (type == kIPsec) { |
| 697 all_required_exist &= RequireField(*result, kIPsec); | 700 all_required_exist &= RequireField(*result, kIPsec); |
| 698 } else if (type == kTypeL2TP_IPsec) { | 701 } else if (type == kTypeL2TP_IPsec) { |
| 699 all_required_exist &= | 702 all_required_exist &= |
| 700 RequireField(*result, kIPsec) && RequireField(*result, kL2TP); | 703 RequireField(*result, kIPsec) && RequireField(*result, kL2TP); |
| 704 } else if (type == kThirdPartyVpn) { |
| 705 all_required_exist &= RequireField(*result, kThirdPartyVpn); |
| 701 } | 706 } |
| 702 | 707 |
| 703 return !error_on_missing_field_ || all_required_exist; | 708 return !error_on_missing_field_ || all_required_exist; |
| 704 } | 709 } |
| 705 | 710 |
| 706 bool Validator::ValidateIPsec(base::DictionaryValue* result) { | 711 bool Validator::ValidateIPsec(base::DictionaryValue* result) { |
| 707 using namespace ::onc::ipsec; | 712 using namespace ::onc::ipsec; |
| 708 | 713 |
| 709 const char* const kValidAuthentications[] = {kPSK, kCert}; | 714 const char* const kValidAuthentications[] = {kPSK, kCert}; |
| 710 const std::vector<const char*> valid_authentications( | 715 const std::vector<const char*> valid_authentications( |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 795 | 800 |
| 796 if (!ValidateClientCertFields(true /* allow ClientCertType None */, result)) | 801 if (!ValidateClientCertFields(true /* allow ClientCertType None */, result)) |
| 797 return false; | 802 return false; |
| 798 | 803 |
| 799 bool all_required_exist = | 804 bool all_required_exist = |
| 800 RequireField(*result, ::onc::client_cert::kClientCertType); | 805 RequireField(*result, ::onc::client_cert::kClientCertType); |
| 801 | 806 |
| 802 return !error_on_missing_field_ || all_required_exist; | 807 return !error_on_missing_field_ || all_required_exist; |
| 803 } | 808 } |
| 804 | 809 |
| 810 bool Validator::ValidateThirdPartyVPN(base::DictionaryValue* result) { |
| 811 const bool all_required_exist = |
| 812 RequireField(*result, ::onc::third_party_vpn::kExtensionID); |
| 813 |
| 814 return !error_on_missing_field_ || all_required_exist; |
| 815 } |
| 816 |
| 805 bool Validator::ValidateVerifyX509(base::DictionaryValue* result) { | 817 bool Validator::ValidateVerifyX509(base::DictionaryValue* result) { |
| 806 using namespace ::onc::verify_x509; | 818 using namespace ::onc::verify_x509; |
| 807 | 819 |
| 808 const char* const kValidTypes[] = {types::kName, types::kNamePrefix, | 820 const char* const kValidTypes[] = {types::kName, types::kNamePrefix, |
| 809 types::kSubject}; | 821 types::kSubject}; |
| 810 const std::vector<const char*> valid_types(toVector(kValidTypes)); | 822 const std::vector<const char*> valid_types(toVector(kValidTypes)); |
| 811 | 823 |
| 812 if (FieldExistsAndHasNoValidValue(*result, kType, valid_types)) | 824 if (FieldExistsAndHasNoValidValue(*result, kType, valid_types)) |
| 813 return false; | 825 return false; |
| 814 | 826 |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 939 } | 951 } |
| 940 | 952 |
| 941 std::string Validator::MessageHeader() { | 953 std::string Validator::MessageHeader() { |
| 942 std::string path = path_.empty() ? "toplevel" : JoinString(path_, "."); | 954 std::string path = path_.empty() ? "toplevel" : JoinString(path_, "."); |
| 943 std::string message = "At " + path + ": "; | 955 std::string message = "At " + path + ": "; |
| 944 return message; | 956 return message; |
| 945 } | 957 } |
| 946 | 958 |
| 947 } // namespace onc | 959 } // namespace onc |
| 948 } // namespace chromeos | 960 } // namespace chromeos |
| OLD | NEW |