shill: Service: Report and filter EAP remote certificate subjects

Create a read-only "EAP.RemoteCertification" parameter in WiFi
services that returns the subject name of each entity in the
ceritificate chain in the server side of TLS authentication.

Create a read/write "EAP.SubjectMatch" parameter in WiFi services
that populates the "subject_match" parameter in wpa_supplicant for
802.1x interactions.  This allows callers to specify that we only
connect to specific endpoints who have a subject name that contains
this substring.

BUG=chromium-os:31247
TEST=New unit tests + observe EAP-TLS autotest
Change-Id: Ia37b7726e08eb121fb1ab7ec4c2de7eb958fc9cf
Reviewed-on: https://gerrit.chromium.org/gerrit/23746
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/supplicant_interface_proxy.cc b/supplicant_interface_proxy.cc
index 0ab4819..5244192 100644
--- a/supplicant_interface_proxy.cc
+++ b/supplicant_interface_proxy.cc
@@ -157,6 +157,12 @@
   wifi_->BSSAdded(BSS, properties);
 }
 
+void SupplicantInterfaceProxy::Proxy::Certification(
+    const std::map<string, ::DBus::Variant> &properties) {
+  SLOG(DBus, 2) << __func__;
+  wifi_->Certification(properties);
+}
+
 void SupplicantInterfaceProxy::Proxy::BSSRemoved(const ::DBus::Path &BSS) {
   SLOG(DBus, 2) << __func__;
   wifi_->BSSRemoved(BSS);