shill: Clear PMKSA cached credentials on unload
When an 802.1x WiFi service Unload()s, ask wpa_supplicant to clear
all cached credentials. This is a workaround for dropping PMKSA
cache entries in wpa_supplicant when the user logs ouut. Newer
versions of wpa_supplicant will support dropping cache entries
automatically when netblocks are changed. This will allow more
granular key clearing.
BUG=chromium-os:23367
TEST=New unit test
Change-Id: I94d69b6943d69c7f5f31ed7846d908b38ce8e6c8
Reviewed-on: https://gerrit.chromium.org/gerrit/15163
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/wifi.h b/wifi.h
index a113d84..cdfb30c 100644
--- a/wifi.h
+++ b/wifi.h
@@ -59,6 +59,7 @@
std::map<std::string, ::DBus::Variant> service_params);
virtual void DisconnectFrom(WiFiService *service);
virtual bool IsIdle() const;
+ virtual void ClearCachedCredentials();
// Called by Manager.
virtual WiFiServiceRefPtr GetService(const KeyValueStore &args, Error *error);
@@ -115,6 +116,7 @@
void BSSAddedTask(const ::DBus::Path &BSS,
const std::map<std::string, ::DBus::Variant> &properties);
void BSSRemovedTask(const ::DBus::Path &BSS);
+ void ClearCachedCredentialsTask();
void PropertiesChangedTask(
const std::map<std::string, ::DBus::Variant> &properties);
void ScanDoneTask();
@@ -160,6 +162,8 @@
WiFiServiceRefPtr pending_service_;
std::string supplicant_state_;
std::string supplicant_bss_;
+ // Signifies that ClearCachedCredentialsTask() is pending.
+ bool clear_cached_credentials_pending_;
// Properties
std::string bgscan_method_;