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 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 else if (&signature == &kIPConfigSignature) | 119 else if (&signature == &kIPConfigSignature) |
120 valid = ValidateIPConfig(onc_object, repaired.get()); | 120 valid = ValidateIPConfig(onc_object, repaired.get()); |
121 else if (&signature == &kWiFiSignature) | 121 else if (&signature == &kWiFiSignature) |
122 valid = ValidateWiFi(onc_object, repaired.get()); | 122 valid = ValidateWiFi(onc_object, repaired.get()); |
123 else if (&signature == &kVPNSignature) | 123 else if (&signature == &kVPNSignature) |
124 valid = ValidateVPN(onc_object, repaired.get()); | 124 valid = ValidateVPN(onc_object, repaired.get()); |
125 else if (&signature == &kIPsecSignature) | 125 else if (&signature == &kIPsecSignature) |
126 valid = ValidateIPsec(onc_object, repaired.get()); | 126 valid = ValidateIPsec(onc_object, repaired.get()); |
127 else if (&signature == &kOpenVPNSignature) | 127 else if (&signature == &kOpenVPNSignature) |
128 valid = ValidateOpenVPN(onc_object, repaired.get()); | 128 valid = ValidateOpenVPN(onc_object, repaired.get()); |
| 129 else if (&signature == &kVerifyX509Signature) |
| 130 valid = ValidateVerifyX509(onc_object, repaired.get()); |
129 else if (&signature == &kCertificatePatternSignature) | 131 else if (&signature == &kCertificatePatternSignature) |
130 valid = ValidateCertificatePattern(onc_object, repaired.get()); | 132 valid = ValidateCertificatePattern(onc_object, repaired.get()); |
131 else if (&signature == &kProxySettingsSignature) | 133 else if (&signature == &kProxySettingsSignature) |
132 valid = ValidateProxySettings(onc_object, repaired.get()); | 134 valid = ValidateProxySettings(onc_object, repaired.get()); |
133 else if (&signature == &kProxyLocationSignature) | 135 else if (&signature == &kProxyLocationSignature) |
134 valid = ValidateProxyLocation(onc_object, repaired.get()); | 136 valid = ValidateProxyLocation(onc_object, repaired.get()); |
135 else if (&signature == &kEAPSignature) | 137 else if (&signature == &kEAPSignature) |
136 valid = ValidateEAP(onc_object, repaired.get()); | 138 valid = ValidateEAP(onc_object, repaired.get()); |
137 else if (&signature == &kCertificateSignature) | 139 else if (&signature == &kCertificateSignature) |
138 valid = ValidateCertificate(onc_object, repaired.get()); | 140 valid = ValidateCertificate(onc_object, repaired.get()); |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
659 return false; | 661 return false; |
660 | 662 |
661 if (cert_type == kPattern) | 663 if (cert_type == kPattern) |
662 allRequiredExist &= RequireField(*result, ::onc::vpn::kClientCertPattern); | 664 allRequiredExist &= RequireField(*result, ::onc::vpn::kClientCertPattern); |
663 else if (cert_type == kRef) | 665 else if (cert_type == kRef) |
664 allRequiredExist &= RequireField(*result, ::onc::vpn::kClientCertRef); | 666 allRequiredExist &= RequireField(*result, ::onc::vpn::kClientCertRef); |
665 | 667 |
666 return !error_on_missing_field_ || allRequiredExist; | 668 return !error_on_missing_field_ || allRequiredExist; |
667 } | 669 } |
668 | 670 |
| 671 bool Validator::ValidateVerifyX509(const base::DictionaryValue& onc_object, |
| 672 base::DictionaryValue* result) { |
| 673 using namespace ::onc::verify_x509; |
| 674 |
| 675 static const char* kValidTypeValues[] = |
| 676 {types::kName, types::kNamePrefix, types::kSubject, NULL}; |
| 677 |
| 678 if (FieldExistsAndHasNoValidValue(*result, kType, kValidTypeValues)) |
| 679 return false; |
| 680 |
| 681 bool allRequiredExist = RequireField(*result, kName); |
| 682 |
| 683 return !error_on_missing_field_ || allRequiredExist; |
| 684 } |
| 685 |
669 bool Validator::ValidateCertificatePattern( | 686 bool Validator::ValidateCertificatePattern( |
670 const base::DictionaryValue& onc_object, | 687 const base::DictionaryValue& onc_object, |
671 base::DictionaryValue* result) { | 688 base::DictionaryValue* result) { |
672 using namespace ::onc::certificate; | 689 using namespace ::onc::certificate; |
673 | 690 |
674 bool allRequiredExist = true; | 691 bool allRequiredExist = true; |
675 if (!result->HasKey(kSubject) && !result->HasKey(kIssuer) && | 692 if (!result->HasKey(kSubject) && !result->HasKey(kIssuer) && |
676 !result->HasKey(kIssuerCARef)) { | 693 !result->HasKey(kIssuerCARef)) { |
677 error_or_warning_found_ = true; | 694 error_or_warning_found_ = true; |
678 allRequiredExist = false; | 695 allRequiredExist = false; |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
790 } | 807 } |
791 | 808 |
792 std::string Validator::MessageHeader() { | 809 std::string Validator::MessageHeader() { |
793 std::string path = path_.empty() ? "toplevel" : JoinString(path_, "."); | 810 std::string path = path_.empty() ? "toplevel" : JoinString(path_, "."); |
794 std::string message = "At " + path + ": "; | 811 std::string message = "At " + path + ": "; |
795 return message; | 812 return message; |
796 } | 813 } |
797 | 814 |
798 } // namespace onc | 815 } // namespace onc |
799 } // namespace chromeos | 816 } // namespace chromeos |
OLD | NEW |