Index: chromeos/network/onc/onc_validator.cc |
diff --git a/chromeos/network/onc/onc_validator.cc b/chromeos/network/onc/onc_validator.cc |
index d1d4c5203b443df0db3583f56922a365da9c7dc2..f5e974104c7191f9191e231229232319cb926a77 100644 |
--- a/chromeos/network/onc/onc_validator.cc |
+++ b/chromeos/network/onc/onc_validator.cc |
@@ -126,6 +126,8 @@ scoped_ptr<base::DictionaryValue> Validator::MapObject( |
valid = ValidateIPsec(onc_object, repaired.get()); |
else if (&signature == &kOpenVPNSignature) |
valid = ValidateOpenVPN(onc_object, repaired.get()); |
+ else if (&signature == &kVerifyX509Signature) |
+ valid = ValidateVerifyX509(onc_object, repaired.get()); |
else if (&signature == &kCertificatePatternSignature) |
valid = ValidateCertificatePattern(onc_object, repaired.get()); |
else if (&signature == &kProxySettingsSignature) |
@@ -666,6 +668,21 @@ bool Validator::ValidateOpenVPN( |
return !error_on_missing_field_ || allRequiredExist; |
} |
+bool Validator::ValidateVerifyX509(const base::DictionaryValue& onc_object, |
+ base::DictionaryValue* result) { |
+ using namespace ::onc::verify_x509; |
+ |
+ static const char* kValidTypeValues[] = |
+ {types::kName, types::kNamePrefix, types::kSubject, NULL}; |
+ |
+ if (FieldExistsAndHasNoValidValue(*result, kType, kValidTypeValues)) |
+ return false; |
+ |
+ bool allRequiredExist = RequireField(*result, kName); |
+ |
+ return !error_on_missing_field_ || allRequiredExist; |
+} |
+ |
bool Validator::ValidateCertificatePattern( |
const base::DictionaryValue& onc_object, |
base::DictionaryValue* result) { |