summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Qiu <zqiu@google.com>2017-07-27 14:41:36 -0700
committerPeter Qiu <zqiu@google.com>2017-08-10 21:14:07 +0000
commite97e21f1f14e4ef16dd5d675b17615aef3a80301 (patch)
treec0d81456794fed76a698ddc9d6ed7f5909a779f9
parent5a19b6b8f6b4a123371c6a2023a96e9d4f8d6aac (diff)
downloadwifi-oreo-dr1-dev.tar.gz
Re-add network to supplicant when EAP identities changesoreo-dr1-dev
Update WifiConfigurationUtil#isSameNetwork to check changes in both EAP identity and anonymous identity. So that the network parameters in wpa_supplicant will get reloaded when the EAP identities changed. Bug: 63979263 Test: frameworks/opt/net/wifi/tests/wifitests/runtests.sh Test: Verify connection to a EAP-SIM network will fail after SIM card is replaced Change-Id: I592018de52c2515dbd64aea0138b5bc88b70fec7 (cherry picked from commit 8e08c5d97b1608e1b173867998dd82e6f44d1d13)
-rw-r--r--service/java/com/android/server/wifi/WifiConfigurationUtil.java7
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java25
2 files changed, 32 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigurationUtil.java b/service/java/com/android/server/wifi/WifiConfigurationUtil.java
index f706c4e1f..fef78aade 100644
--- a/service/java/com/android/server/wifi/WifiConfigurationUtil.java
+++ b/service/java/com/android/server/wifi/WifiConfigurationUtil.java
@@ -23,6 +23,7 @@ import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.WifiScanner;
import android.os.UserHandle;
+import android.text.TextUtils;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
@@ -192,6 +193,12 @@ public class WifiConfigurationUtil {
!= newEnterpriseConfig.getPhase2Method()) {
return true;
}
+ if (!TextUtils.equals(existingEnterpriseConfig.getIdentity(),
+ newEnterpriseConfig.getIdentity())
+ || !TextUtils.equals(existingEnterpriseConfig.getAnonymousIdentity(),
+ newEnterpriseConfig.getAnonymousIdentity())) {
+ return true;
+ }
X509Certificate[] existingCaCerts = existingEnterpriseConfig.getCaCertificates();
X509Certificate[] newCaCerts = newEnterpriseConfig.getCaCertificates();
if (!Arrays.equals(existingCaCerts, newCaCerts)) {
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
index 376d686a4..2925273de 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
@@ -495,6 +495,31 @@ public class WifiConfigurationUtilTest {
assertFalse(WifiConfigurationUtil.isSameNetwork(network, network1));
}
+ /**
+ * Verify that WifiConfigurationUtil.isSameNetwork returns false when two WifiConfiguration
+ * objects have the different EAP identity.
+ */
+ @Test
+ public void testIsSameNetworkReturnsFalseOnDifferentEapIdentity() {
+ WifiConfiguration network1 = WifiConfigurationTestUtil.createEapNetwork(TEST_SSID);
+ WifiConfiguration network2 = WifiConfigurationTestUtil.createEapNetwork(TEST_SSID);
+ network1.enterpriseConfig.setIdentity("Identity1");
+ network2.enterpriseConfig.setIdentity("Identity2");
+ assertFalse(WifiConfigurationUtil.isSameNetwork(network1, network2));
+ }
+
+ /**
+ * Verify that WifiConfigurationUtil.isSameNetwork returns false when two WifiConfiguration
+ * objects have the different EAP anonymous identity.
+ */
+ @Test
+ public void testIsSameNetworkReturnsFalseOnDifferentEapAnonymousIdentity() {
+ WifiConfiguration network1 = WifiConfigurationTestUtil.createEapNetwork(TEST_SSID);
+ WifiConfiguration network2 = WifiConfigurationTestUtil.createEapNetwork(TEST_SSID);
+ network1.enterpriseConfig.setAnonymousIdentity("Identity1");
+ network2.enterpriseConfig.setAnonymousIdentity("Identity2");
+ assertFalse(WifiConfigurationUtil.isSameNetwork(network1, network2));
+ }
/**
* Verify the instance of {@link android.net.wifi.WifiScanner.PnoSettings.PnoNetwork} created