shill: wifi: Enable use of hardware-backed certificate credentials

Enable use of hardware-backed certificates and keys by enabling
the pkcs11 module for wpa_supplicant.  Bonus change: Enable use
of system CAs by default, although it is expected that Chrome
sets this explicitly in all interesting cases.

BUG=chromium-os:29462
TEST=New unit tests.  Manual: Connect to EAP-TLS network using hardware
backed certs.

Change-Id: I9909f25be1007a56f2b9830a03f26cb6b7931968
Reviewed-on: https://gerrit.chromium.org/gerrit/20332
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/wpa_supplicant.cc b/wpa_supplicant.cc
index 1265497..4db44ce 100644
--- a/wpa_supplicant.cc
+++ b/wpa_supplicant.cc
@@ -21,8 +21,12 @@
 const char kDBusAddr[]              = "fi.w1.wpa_supplicant1";
 const char kDBusPath[]              = "/fi/w1/wpa_supplicant1";
 const char kDriverNL80211[]         = "nl80211";
+const char kEnginePKCS11[]          = "pkcs11";
 const char kErrorInterfaceExists[]  = "fi.w1.wpa_supplicant1.InterfaceExists";
+const char kInterfacePropertyConfigFile[] = "ConfigFile";
 const char kInterfacePropertyCurrentBSS[] = "CurrentBSS";
+const char kInterfacePropertyDriver[] = "Driver";
+const char kInterfacePropertyName[] = "Ifname";
 const char kInterfacePropertyState[] = "State";
 const char kInterfaceState4WayHandshake[]  = "4way_handshake";
 const char kInterfaceStateAssociated[]     = "associated";
@@ -57,6 +61,8 @@
 const char kNetworkPropertyEapKeyId[] = "key_id";
 const char kNetworkPropertyEapCaCertId[] = "ca_cert_id";
 const char kNetworkPropertyEapPin[] = "pin";
+const char kNetworkPropertyEngine[] = "engine";
+const char kNetworkPropertyEngineId[] = "engine_id";
 const char kNetworkPropertyMode[]   = "mode";
 const char kNetworkPropertyScanSSID[] = "scan_ssid";
 const char kNetworkPropertySSID[]   = "ssid";
@@ -76,6 +82,7 @@
 const char kSecurityModeRSN[]       = "RSN";
 const char kSecurityModeWPA[]       = "WPA";
 
+const uint32_t kDefaultEngine = 1;
 const uint32_t kNetworkModeInfrastructureInt = 0;
 const uint32_t kNetworkModeAdHocInt          = 1;
 const uint32_t kNetworkModeAccessPointInt    = 2;