Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Unified Diff: chromeos/network/client_cert_util.cc

Issue 23583018: Check configuration for networks without UIData (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/network/client_cert_util.cc
diff --git a/chromeos/network/client_cert_util.cc b/chromeos/network/client_cert_util.cc
index ad2bc457b3037ecf7178609cd3084bdde9db99b1..c5491f1ee13c5a6294f548f4b96d1bdaeb639b23 100644
--- a/chromeos/network/client_cert_util.cc
+++ b/chromeos/network/client_cert_util.cc
@@ -91,6 +91,13 @@ class IssuerCaFilter {
const std::vector<std::string>& issuer_ca_pems_;
};
+std::string GetStringFromDictionary(const base::DictionaryValue& dict,
+ const std::string& key) {
+ std::string s;
+ dict.GetStringWithoutPathExpansion(key, &s);
+ return s;
+}
+
} // namespace
// Returns true only if any fields set in this pattern match exactly with
@@ -238,6 +245,47 @@ void SetShillProperties(const client_cert::ConfigType cert_config_type,
properties->SetStringWithoutPathExpansion(tpm_pin_property, tpm_pin);
}
+bool IsCertificateConfigured(const client_cert::ConfigType cert_config_type,
+ const base::DictionaryValue& service_properties) {
+ // VPN certificate properties are read from the Provider dictionary.
+ const base::DictionaryValue* provider_properties = NULL;
+ service_properties.GetDictionaryWithoutPathExpansion(
+ flimflam::kProviderProperty, &provider_properties);
+ switch (cert_config_type) {
+ case CONFIG_TYPE_NONE:
+ return true;
+ case CONFIG_TYPE_OPENVPN: {
+ if (!provider_properties)
+ return false;
+ std::string cert_id = GetStringFromDictionary(
+ *provider_properties, flimflam::kOpenVPNClientCertIdProperty);
+ std::string username = GetStringFromDictionary(
+ *provider_properties, flimflam::kOpenVPNUserProperty);
pneubeck (no reviews) 2013/08/31 05:31:30 I'm find it irritating that here Username is check
stevenjb 2013/09/03 22:33:05 TPM Pin is something configured by Chrome, so it d
+ return !cert_id.empty() && !username.empty();
+ }
+ case CONFIG_TYPE_IPSEC: {
+ if (!provider_properties)
+ return false;
+ std::string cert_id = GetStringFromDictionary(
+ *provider_properties, flimflam::kL2tpIpsecClientCertIdProperty);
+ std::string username = GetStringFromDictionary(
pneubeck (no reviews) 2013/08/31 05:31:30 and here, tpm pin + slot instead of username. Is
stevenjb 2013/09/03 22:33:05 This isn't really intended to be the opposite of S
pneubeck (no reviews) 2013/09/04 08:40:00 AFAIU, VPNs can be setup without Username or witho
stevenjb 2013/09/04 17:58:13 Until/unless Shill sets 'Configured' properly, all
+ *provider_properties, flimflam::kL2tpIpsecUserProperty);
+ return !cert_id.empty() && !username.empty();
+ }
+ case CONFIG_TYPE_EAP: {
+ std::string cert_id = GetStringFromDictionary(
+ service_properties, flimflam::kEapCertIdProperty);
+ std::string key_id = GetStringFromDictionary(
+ service_properties, flimflam::kEapKeyIdProperty);
+ std::string identity = GetStringFromDictionary(
+ service_properties, flimflam::kEapIdentityProperty);
+ return !cert_id.empty() && !key_id.empty() && !identity.empty();
+ }
+ }
+ NOTREACHED();
+ return false;
+}
+
} // namespace client_cert
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698