Merge "Fix WifiConfiguration#getAuthType"

This commit is contained in:
TreeHugger Robot
2020-09-04 01:56:43 +00:00
committed by Android (Google) Code Review
2 changed files with 61 additions and 1 deletions

View File

@@ -2509,7 +2509,18 @@ public class WifiConfiguration implements Parcelable {
@KeyMgmt.KeyMgmtScheme
public int getAuthType() {
if (allowedKeyManagement.cardinality() > 1) {
throw new IllegalStateException("More than one auth type set");
if (allowedKeyManagement.get(KeyMgmt.WPA_EAP)) {
if (allowedKeyManagement.cardinality() == 2
&& allowedKeyManagement.get(KeyMgmt.IEEE8021X)) {
return KeyMgmt.WPA_EAP;
}
if (allowedKeyManagement.cardinality() == 3
&& allowedKeyManagement.get(KeyMgmt.IEEE8021X)
&& allowedKeyManagement.get(KeyMgmt.SUITE_B_192)) {
return KeyMgmt.SUITE_B_192;
}
}
throw new IllegalStateException("Invalid auth type set: " + allowedKeyManagement);
}
if (allowedKeyManagement.get(KeyMgmt.WPA_PSK)) {
return KeyMgmt.WPA_PSK;

View File

@@ -22,6 +22,7 @@ import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_OPEN;
import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_OWE;
import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_PSK;
import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_SAE;
import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_WAPI_CERT;
import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_WAPI_PSK;
import static org.junit.Assert.assertArrayEquals;
@@ -537,4 +538,52 @@ public class WifiConfigurationTest {
configuration.setSecurityParams(SECURITY_TYPE_EAP_SUITE_B);
assertFalse(configuration.needsPreSharedKey());
}
@Test
public void testGetAuthType() throws Exception {
WifiConfiguration configuration = new WifiConfiguration();
configuration.setSecurityParams(SECURITY_TYPE_PSK);
assertEquals(KeyMgmt.WPA_PSK, configuration.getAuthType());
configuration.setSecurityParams(SECURITY_TYPE_SAE);
assertEquals(KeyMgmt.SAE, configuration.getAuthType());
configuration.setSecurityParams(SECURITY_TYPE_WAPI_PSK);
assertEquals(KeyMgmt.WAPI_PSK, configuration.getAuthType());
configuration.setSecurityParams(SECURITY_TYPE_OPEN);
assertEquals(KeyMgmt.NONE, configuration.getAuthType());
configuration.setSecurityParams(SECURITY_TYPE_OWE);
assertEquals(KeyMgmt.OWE, configuration.getAuthType());
configuration.setSecurityParams(SECURITY_TYPE_EAP);
assertEquals(KeyMgmt.WPA_EAP, configuration.getAuthType());
configuration.setSecurityParams(SECURITY_TYPE_EAP_SUITE_B);
assertEquals(KeyMgmt.SUITE_B_192, configuration.getAuthType());
configuration.setSecurityParams(SECURITY_TYPE_WAPI_CERT);
assertEquals(KeyMgmt.WAPI_CERT, configuration.getAuthType());
}
@Test (expected = IllegalStateException.class)
public void testGetAuthTypeFailure1() throws Exception {
WifiConfiguration configuration = new WifiConfiguration();
configuration.setSecurityParams(SECURITY_TYPE_PSK);
configuration.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
configuration.getAuthType();
}
@Test (expected = IllegalStateException.class)
public void testGetAuthTypeFailure2() throws Exception {
WifiConfiguration configuration = new WifiConfiguration();
configuration.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
configuration.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
configuration.allowedKeyManagement.set(KeyMgmt.SAE);
configuration.getAuthType();
}
}