From a218fc4c71eeda7a5409de938766ddf009138650 Mon Sep 17 00:00:00 2001 From: Vamsi Krishna Date: Fri, 23 Feb 2018 16:59:40 +0530 Subject: [PATCH] Wifi: Add support for connecting to FILS APs Add required fields to configure STA to connect to BSSes which have FILS_SHA256 and/or FILS_SHA384 key managements enabled. Bug: 143259898 Test: atest. Test: Basic wifi sanity. Change-Id: I59f0b8000d39298d8a853bdd08c66d7e46bfa70f --- wifi/java/android/net/wifi/ScanResult.java | 10 ++++++++++ .../android/net/wifi/WifiConfiguration.java | 17 +++++++++++++++-- .../android/net/wifi/WifiEnterpriseConfig.java | 5 ++++- wifi/java/android/net/wifi/WifiManager.java | 6 ++++++ 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/wifi/java/android/net/wifi/ScanResult.java b/wifi/java/android/net/wifi/ScanResult.java index 3fda6cda92f54..51927af178889 100644 --- a/wifi/java/android/net/wifi/ScanResult.java +++ b/wifi/java/android/net/wifi/ScanResult.java @@ -209,6 +209,16 @@ public class ScanResult implements Parcelable { @SystemApi public static final int KEY_MGMT_WAPI_CERT = 14; + /** + * @hide + * Security key management scheme: FILS_SHA256. + */ + public static final int KEY_MGMT_FILS_SHA256 = 15; + /** + * @hide + * Security key management scheme: FILS_SHA384. + */ + public static final int KEY_MGMT_FILS_SHA384 = 16; /** * @hide * No cipher suite. diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 114e0fa212963..80fefe6df72d8 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -123,7 +123,9 @@ public class WifiConfiguration implements Parcelable { WPA_PSK_SHA256, WPA_EAP_SHA256, WAPI_PSK, - WAPI_CERT}) + WAPI_CERT, + FILS_SHA256, + FILS_SHA384}) public @interface KeyMgmtScheme {} /** WPA is not used; plaintext or static WEP could be used. */ @@ -204,12 +206,23 @@ public class WifiConfiguration implements Parcelable { @SystemApi public static final int WAPI_CERT = 14; + /** + * IEEE 802.11ai FILS SK with SHA256 + * @hide + */ + public static final int FILS_SHA256 = 15; + /** + * IEEE 802.11ai FILS SK with SHA384: + * @hide + */ + public static final int FILS_SHA384 = 16; + public static final String varName = "key_mgmt"; public static final String[] strings = { "NONE", "WPA_PSK", "WPA_EAP", "IEEE8021X", "WPA2_PSK", "OSEN", "FT_PSK", "FT_EAP", "SAE", "OWE", "SUITE_B_192", "WPA_PSK_SHA256", "WPA_EAP_SHA256", - "WAPI_PSK", "WAPI_CERT" }; + "WAPI_PSK", "WAPI_CERT", "FILS_SHA256", "FILS_SHA384" }; } /** diff --git a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java index 5edcc2df3804f..558d5fa60e99f 100644 --- a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java +++ b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java @@ -91,6 +91,8 @@ public class WifiEnterpriseConfig implements Parcelable { public static final String DOM_SUFFIX_MATCH_KEY = "domain_suffix_match"; /** @hide */ public static final String OPP_KEY_CACHING = "proactive_key_caching"; + /** @hide */ + public static final String EAP_ERP = "eap_erp"; /** * String representing the keystore OpenSSL ENGINE's ID. @@ -228,7 +230,8 @@ public class WifiEnterpriseConfig implements Parcelable { /** * Fields that have unquoted values in {@link #mFields}. */ - private static final List UNQUOTED_KEYS = Arrays.asList(ENGINE_KEY, OPP_KEY_CACHING); + private static final List UNQUOTED_KEYS = Arrays.asList(ENGINE_KEY, OPP_KEY_CACHING, + EAP_ERP); @UnsupportedAppUsage private HashMap mFields = new HashMap(); diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index f6e3ff0ff02ce..d9c7b461af6df 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -2341,6 +2341,12 @@ public class WifiManager { /** @hide */ public static final long WIFI_FEATURE_WAPI = 0x2000000000L; // WAPI + /** @hide */ + public static final long WIFI_FEATURE_FILS_SHA256 = 0x4000000000L; // FILS-SHA256 + + /** @hide */ + public static final long WIFI_FEATURE_FILS_SHA384 = 0x8000000000L; // FILS-SHA384 + private long getSupportedFeatures() { try { return mService.getSupportedFeatures();