From 117cacc93f477feb6bbd56651bc6de5aece29ba9 Mon Sep 17 00:00:00 2001 From: Hai Shalom Date: Thu, 27 Feb 2020 17:42:23 -0800 Subject: [PATCH] Fix KeyMgmt.OSEN and Eap.UNAUTH_TLS handling Fix KeyMgmt.OSEN case in WifiConfiguration#getSsidAndSecurityTypeString and return the correct key when key management type os OSEN. Fix WifiEnterpriseconfig#saveToSupplicant when checking the prerequisite conditions to save the network, Eap.UNAUTH_TLS does not have a phase2 method. Bug: 150418439 Test: atest WifiConfigurationTest WifiEnterpriseConfigTest Change-Id: Iafb181c89530f67982541b07d0ac7a4e1eb3378a --- .../android/net/wifi/WifiConfiguration.java | 2 ++ .../net/wifi/WifiEnterpriseConfig.java | 2 +- .../net/wifi/WifiEnterpriseConfigTest.java | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index c48e89526ae08..a2da895092f5a 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -2550,6 +2550,8 @@ public class WifiConfiguration implements Parcelable { key = SSID + KeyMgmt.strings[KeyMgmt.WAPI_PSK]; } else if (allowedKeyManagement.get(KeyMgmt.WAPI_CERT)) { key = SSID + KeyMgmt.strings[KeyMgmt.WAPI_CERT]; + } else if (allowedKeyManagement.get(KeyMgmt.OSEN)) { + key = SSID + KeyMgmt.strings[KeyMgmt.OSEN]; } else { key = SSID + KeyMgmt.strings[KeyMgmt.NONE]; } diff --git a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java index fb6e9ed532a7e..2e4e7f541ac25 100644 --- a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java +++ b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java @@ -482,7 +482,7 @@ public class WifiEnterpriseConfig implements Parcelable { return false; } - if (mEapMethod != Eap.TLS && mPhase2Method != Phase2.NONE) { + if (mEapMethod != Eap.TLS && mEapMethod != Eap.UNAUTH_TLS && mPhase2Method != Phase2.NONE) { boolean is_autheap = mEapMethod == Eap.TTLS && mPhase2Method == Phase2.GTC; String prefix = is_autheap ? Phase2.AUTHEAP_PREFIX : Phase2.AUTH_PREFIX; String value = convertToQuotedString(prefix + Phase2.strings[mPhase2Method]); diff --git a/wifi/tests/src/android/net/wifi/WifiEnterpriseConfigTest.java b/wifi/tests/src/android/net/wifi/WifiEnterpriseConfigTest.java index d8db4ceb6e9c3..320c187bbc2d6 100644 --- a/wifi/tests/src/android/net/wifi/WifiEnterpriseConfigTest.java +++ b/wifi/tests/src/android/net/wifi/WifiEnterpriseConfigTest.java @@ -521,4 +521,23 @@ public class WifiEnterpriseConfigTest { // expected exception. } } + + /** Verifies that the EAP inner method is reset when we switch to Unauth-TLS */ + @Test + public void eapPhase2MethodForUnauthTls() { + // Initially select an EAP method that supports an phase2. + mEnterpriseConfig.setEapMethod(Eap.PEAP); + mEnterpriseConfig.setPhase2Method(Phase2.MSCHAPV2); + assertEquals("PEAP", getSupplicantEapMethod()); + assertEquals("\"auth=MSCHAPV2\"", getSupplicantPhase2Method()); + + // Change the EAP method to another type which supports a phase2. + mEnterpriseConfig.setEapMethod(Eap.TTLS); + assertEquals("TTLS", getSupplicantEapMethod()); + assertEquals("\"auth=MSCHAPV2\"", getSupplicantPhase2Method()); + + // Change the EAP method to Unauth-TLS which does not support a phase2. + mEnterpriseConfig.setEapMethod(Eap.UNAUTH_TLS); + assertEquals(null, getSupplicantPhase2Method()); + } }