shill: Add support for connecting to WPA+802.1x networks

This includes supporting EAP-TTLS and EAP-PEAP networks.

Also, also add a "connectability" check for 802.1x networks which
checks if there are sufficient and necessary EAP parameters to attempt
a connection.

BUG=chromium-os:20901, chromium-os:23466
TEST=2 new unit tests + 3 new autotests pass (019CheckWPA_1x_AES,
     072CheckWPA_1x_PEAP and 073CheckWPA_1x_TTLS)

Change-Id: I46c1886d8fd901c1f95387c984975f2aac89b28e
Reviewed-on: https://gerrit.chromium.org/gerrit/13063
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Commit-Ready: Gaurav Shah <gauravsh@chromium.org>
Tested-by: Gaurav Shah <gauravsh@chromium.org>
diff --git a/wpa_supplicant.h b/wpa_supplicant.h
index ff07ddf..cb75422 100644
--- a/wpa_supplicant.h
+++ b/wpa_supplicant.h
@@ -14,6 +14,7 @@
 extern const char kBSSPropertySSID[];
 extern const char kBSSPropertyMode[];
 extern const char kBSSPropertySignal[];
+extern const char kCaPath[];
 extern const char kCurrentBSSNull[];
 extern const char kDBusAddr[];
 extern const char kDBusPath[];
@@ -39,6 +40,21 @@
 extern const char kNetworkModeAdHoc[];
 extern const char kNetworkModeAccessPoint[];
 extern const char kNetworkPropertyBgscan[];
+extern const char kNetworkPropertyCaPath[];
+extern const char kNetworkPropertyEapKeyManagement[];
+extern const char kNetworkPropertyEapIdentity[];
+extern const char kNetworkPropertyEapEap[];
+extern const char kNetworkPropertyEapInnerEap[];
+extern const char kNetworkPropertyEapAnonymousIdentity[];
+extern const char kNetworkPropertyEapClientCert[];
+extern const char kNetworkPropertyEapPrivateKey[];
+extern const char kNetworkPropertyEapPrivateKeyPassword[];
+extern const char kNetworkPropertyEapCaCert[];
+extern const char kNetworkPropertyEapCaPassword[];
+extern const char kNetworkPropertyEapCertId[];
+extern const char kNetworkPropertyEapKeyId[];
+extern const char kNetworkPropertyEapCaCertId[];
+extern const char kNetworkPropertyEapPin[];
 extern const char kNetworkPropertyMode[];
 extern const char kNetworkPropertySSID[];
 extern const char kNetworkPropertyScanSSID[];
@@ -46,7 +62,6 @@
 // object type to the property names below. (crosbug.com/23656)
 extern const char kPropertyAuthAlg[];
 extern const char kPropertyBSSID[];
-extern const char kPropertyKeyManagement[];
 extern const char kPropertyMode[];
 extern const char kPropertyPreSharedKey[];
 extern const char kPropertyPrivacy[];