wifi: create an option for the WPA3 Enterprise security type
Bug: 170311014 Test: atest FrameworksWifiApiTests Change-Id: I3f25cc44902af570786e2a1b3208e05da1bfc7c8
This commit is contained in:
@@ -31405,6 +31405,7 @@ package android.net.wifi {
|
||||
field @Deprecated public String FQDN;
|
||||
field @Deprecated public static final int SECURITY_TYPE_EAP = 3; // 0x3
|
||||
field @Deprecated public static final int SECURITY_TYPE_EAP_SUITE_B = 5; // 0x5
|
||||
field @Deprecated public static final int SECURITY_TYPE_EAP_WPA3_ENTERPRISE = 9; // 0x9
|
||||
field @Deprecated public static final int SECURITY_TYPE_OPEN = 0; // 0x0
|
||||
field @Deprecated public static final int SECURITY_TYPE_OWE = 6; // 0x6
|
||||
field @Deprecated public static final int SECURITY_TYPE_PSK = 2; // 0x2
|
||||
|
||||
@@ -105,6 +105,7 @@ package android.net.wifi {
|
||||
field @Deprecated public String FQDN;
|
||||
field @Deprecated public static final int SECURITY_TYPE_EAP = 3; // 0x3
|
||||
field @Deprecated public static final int SECURITY_TYPE_EAP_SUITE_B = 5; // 0x5
|
||||
field @Deprecated public static final int SECURITY_TYPE_EAP_WPA3_ENTERPRISE = 9; // 0x9
|
||||
field @Deprecated public static final int SECURITY_TYPE_OPEN = 0; // 0x0
|
||||
field @Deprecated public static final int SECURITY_TYPE_OWE = 6; // 0x6
|
||||
field @Deprecated public static final int SECURITY_TYPE_PSK = 2; // 0x2
|
||||
|
||||
@@ -447,6 +447,8 @@ public class WifiConfiguration implements Parcelable {
|
||||
public static final int SECURITY_TYPE_WAPI_PSK = 7;
|
||||
/** Security type for a WAPI Certificate network. */
|
||||
public static final int SECURITY_TYPE_WAPI_CERT = 8;
|
||||
/** Security type for a WPA3-Enterprise network. */
|
||||
public static final int SECURITY_TYPE_EAP_WPA3_ENTERPRISE = 9;
|
||||
|
||||
/**
|
||||
* Security types we support.
|
||||
@@ -462,7 +464,8 @@ public class WifiConfiguration implements Parcelable {
|
||||
SECURITY_TYPE_EAP_SUITE_B,
|
||||
SECURITY_TYPE_OWE,
|
||||
SECURITY_TYPE_WAPI_PSK,
|
||||
SECURITY_TYPE_WAPI_CERT
|
||||
SECURITY_TYPE_WAPI_CERT,
|
||||
SECURITY_TYPE_EAP_WPA3_ENTERPRISE,
|
||||
})
|
||||
public @interface SecurityType {}
|
||||
|
||||
@@ -478,8 +481,9 @@ public class WifiConfiguration implements Parcelable {
|
||||
* {@link #SECURITY_TYPE_SAE},
|
||||
* {@link #SECURITY_TYPE_EAP_SUITE_B},
|
||||
* {@link #SECURITY_TYPE_OWE},
|
||||
* {@link #SECURITY_TYPE_WAPI_PSK}, or
|
||||
* {@link #SECURITY_TYPE_WAPI_CERT}
|
||||
* {@link #SECURITY_TYPE_WAPI_PSK},
|
||||
* {@link #SECURITY_TYPE_WAPI_CERT},
|
||||
* {@link #SECURITY_TYPE_EAP_WPA3_ENTERPRISE}
|
||||
*/
|
||||
public void setSecurityParams(@SecurityType int securityType) {
|
||||
// Clear all the bitsets.
|
||||
@@ -555,6 +559,16 @@ public class WifiConfiguration implements Parcelable {
|
||||
allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.SMS4);
|
||||
allowedGroupCiphers.set(WifiConfiguration.GroupCipher.SMS4);
|
||||
break;
|
||||
case SECURITY_TYPE_EAP_WPA3_ENTERPRISE:
|
||||
allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
|
||||
allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X);
|
||||
allowedProtocols.set(WifiConfiguration.Protocol.RSN);
|
||||
allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
|
||||
allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.GCMP_256);
|
||||
allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
|
||||
allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256);
|
||||
requirePmf = true;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("unknown security type " + securityType);
|
||||
}
|
||||
|
||||
@@ -373,14 +373,8 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
|
||||
configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B);
|
||||
} else {
|
||||
// WPA3-Enterprise
|
||||
configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
|
||||
configuration.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
|
||||
configuration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
|
||||
configuration.allowedPairwiseCiphers.set(
|
||||
WifiConfiguration.PairwiseCipher.GCMP_256);
|
||||
configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
|
||||
configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256);
|
||||
configuration.requirePmf = true;
|
||||
configuration.setSecurityParams(
|
||||
WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
|
||||
}
|
||||
configuration.enterpriseConfig = mWpa3EnterpriseConfig;
|
||||
} else if (mIsEnhancedOpen) { // OWE network
|
||||
|
||||
@@ -802,14 +802,8 @@ public final class WifiNetworkSuggestion implements Parcelable {
|
||||
configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B);
|
||||
} else {
|
||||
// WPA3-Enterprise
|
||||
configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
|
||||
configuration.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
|
||||
configuration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
|
||||
configuration.allowedPairwiseCiphers.set(
|
||||
WifiConfiguration.PairwiseCipher.GCMP_256);
|
||||
configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
|
||||
configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256);
|
||||
configuration.requirePmf = true;
|
||||
configuration.setSecurityParams(
|
||||
WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
|
||||
}
|
||||
configuration.enterpriseConfig = mWpa3EnterpriseConfig;
|
||||
} else if (mIsEnhancedOpen) { // OWE network
|
||||
|
||||
@@ -18,6 +18,7 @@ package android.net.wifi;
|
||||
|
||||
import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_EAP;
|
||||
import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B;
|
||||
import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE;
|
||||
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;
|
||||
@@ -580,6 +581,26 @@ public class WifiConfigurationTest {
|
||||
assertTrue(config.requirePmf);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that {@link WifiConfiguration#setSecurityParams(int)} sets up the
|
||||
* {@link WifiConfiguration} object correctly for WPA3 Enterprise security type.
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test
|
||||
public void testSetSecurityParamsForWpa3Enterprise() throws Exception {
|
||||
WifiConfiguration config = new WifiConfiguration();
|
||||
|
||||
config.setSecurityParams(SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
|
||||
|
||||
assertTrue(config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_EAP));
|
||||
assertTrue(config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.IEEE8021X));
|
||||
assertTrue(config.allowedPairwiseCiphers.get(WifiConfiguration.PairwiseCipher.CCMP));
|
||||
assertTrue(config.allowedPairwiseCiphers.get(WifiConfiguration.PairwiseCipher.GCMP_256));
|
||||
assertTrue(config.allowedGroupCiphers.get(WifiConfiguration.GroupCipher.CCMP));
|
||||
assertTrue(config.allowedGroupCiphers.get(WifiConfiguration.GroupCipher.GCMP_256));
|
||||
assertTrue(config.requirePmf);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the NetworkSelectionStatus Builder returns the same values that was set, and that
|
||||
* calling build multiple times returns different instances.
|
||||
@@ -641,6 +662,9 @@ public class WifiConfigurationTest {
|
||||
configuration.setSecurityParams(SECURITY_TYPE_EAP);
|
||||
assertFalse(configuration.needsPreSharedKey());
|
||||
|
||||
configuration.setSecurityParams(SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
|
||||
assertFalse(configuration.needsPreSharedKey());
|
||||
|
||||
configuration.setSecurityParams(SECURITY_TYPE_EAP_SUITE_B);
|
||||
assertFalse(configuration.needsPreSharedKey());
|
||||
}
|
||||
@@ -667,6 +691,9 @@ public class WifiConfigurationTest {
|
||||
configuration.setSecurityParams(SECURITY_TYPE_EAP);
|
||||
assertEquals(KeyMgmt.WPA_EAP, configuration.getAuthType());
|
||||
|
||||
configuration.setSecurityParams(SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
|
||||
assertEquals(KeyMgmt.WPA_EAP, configuration.getAuthType());
|
||||
|
||||
configuration.setSecurityParams(SECURITY_TYPE_EAP_SUITE_B);
|
||||
assertEquals(KeyMgmt.SUITE_B_192, configuration.getAuthType());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user