From 8d0bb8682d18edeb765d633112af3901b211bfd6 Mon Sep 17 00:00:00 2001
From: Jimmy Chen <jimmycmchen@google.com>
Date: Fri, 11 Dec 2020 15:59:43 +0800
Subject: [PATCH] wifi: add getSecurityType and
 createSecurityParamsBySecurityType methods

For backup/restore, it needs to know security type and create a security
params from the security type.

Bug: 162685856
Test: atest FrameworksWifiApiTes
Change-Id: I2a52a288157d7875074f8e20218d564c363b568f
---
 .../java/android/net/wifi/SecurityParams.java |  88 ++++++--
 .../android/net/wifi/WifiConfiguration.java   |  50 +----
 .../android/net/wifi/SecurityParamsTest.java  | 194 +++++++++++-------
 .../net/wifi/WifiConfigurationTest.java       |  42 ++--
 4 files changed, 224 insertions(+), 150 deletions(-)

diff --git a/wifi/java/android/net/wifi/SecurityParams.java b/wifi/java/android/net/wifi/SecurityParams.java
index 0ab6f572fba3..8ee2ea046cfb 100644
--- a/wifi/java/android/net/wifi/SecurityParams.java
+++ b/wifi/java/android/net/wifi/SecurityParams.java
@@ -191,6 +191,15 @@ public class SecurityParams {
                 mIsSaeH2eOnlyMode, mIsSaePkOnlyMode, mIsAddedByAutoUpgrade);
     }
 
+    /**
+     * Get the security type of this params.
+     *
+     * @return The security type defined in {@link WifiConfiguration}.
+     */
+    public @SecurityType int getSecurityType() {
+        return mSecurityType;
+    }
+
     /**
      * Check the security type of this params.
      *
@@ -562,10 +571,65 @@ public class SecurityParams {
         return params;
     }
 
+    /**
+     * Create a params according to the security type.
+     *
+     * @param securityType One of the following security types:
+     * {@link WifiConfiguration#SECURITY_TYPE_OPEN},
+     * {@link WifiConfiguration#SECURITY_TYPE_WEP},
+     * {@link WifiConfiguration#SECURITY_TYPE_PSK},
+     * {@link WifiConfiguration#SECURITY_TYPE_EAP},
+     * {@link WifiConfiguration#SECURITY_TYPE_SAE},
+     * {@link WifiConfiguration#SECURITY_TYPE_OWE},
+     * {@link WifiConfiguration#SECURITY_TYPE_WAPI_PSK},
+     * {@link WifiConfiguration#SECURITY_TYPE_WAPI_CERT},
+     * {@link WifiConfiguration#SECURITY_TYPE_EAP_WPA3_ENTERPRISE},
+     * {@link WifiConfiguration#SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT},
+     *
+     * @return the corresponding security params if the security type is valid;
+     *         otherwise, throw IllegalArgumentException.
+     */
+    public static @NonNull SecurityParams createSecurityParamsBySecurityType(
+            @WifiConfiguration.SecurityType int securityType) {
+        switch (securityType) {
+            case WifiConfiguration.SECURITY_TYPE_OPEN:
+                return createOpenParams();
+            case WifiConfiguration.SECURITY_TYPE_WEP:
+                return createWepParams();
+            case WifiConfiguration.SECURITY_TYPE_PSK:
+                return createWpaWpa2PersonalParams();
+            case WifiConfiguration.SECURITY_TYPE_EAP:
+                return createWpaWpa2EnterpriseParams();
+            case WifiConfiguration.SECURITY_TYPE_SAE:
+                return createWpa3PersonalParams();
+            // The value of {@link WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B} is the same as
+            // {@link #WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT}, remove it
+            // to avoid duplicate case label errors.
+            case WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT:
+                return createWpa3Enterprise192BitParams();
+            case WifiConfiguration.SECURITY_TYPE_OWE:
+                return createEnhancedOpenParams();
+            case WifiConfiguration.SECURITY_TYPE_WAPI_PSK:
+                return createWapiPskParams();
+            case WifiConfiguration.SECURITY_TYPE_WAPI_CERT:
+                return createWapiCertParams();
+            case WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE:
+                return createWpa3EnterpriseParams();
+            case WifiConfiguration.SECURITY_TYPE_OSEN:
+                return createOsenParams();
+            case WifiConfiguration.SECURITY_TYPE_PASSPOINT_R1_R2:
+                return SecurityParams.createPasspointParams(PASSPOINT_R2);
+            case WifiConfiguration.SECURITY_TYPE_PASSPOINT_R3:
+                return SecurityParams.createPasspointParams(PASSPOINT_R3);
+            default:
+                throw new IllegalArgumentException("unknown security type " + securityType);
+        }
+    }
+
     /**
      * Create EAP security params.
      */
-    public static @NonNull SecurityParams createWpaWpa2EnterpriseParams() {
+    private static @NonNull SecurityParams createWpaWpa2EnterpriseParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_EAP;
 
@@ -586,7 +650,7 @@ public class SecurityParams {
     /**
      * Create Passpoint security params.
      */
-    public static @NonNull SecurityParams createPasspointParams(@PasspointRelease int release) {
+    private static @NonNull SecurityParams createPasspointParams(@PasspointRelease int release) {
         SecurityParams params = new SecurityParams();
         switch (release) {
             case PASSPOINT_R1:
@@ -616,7 +680,7 @@ public class SecurityParams {
     /**
      * Create Enhanced Open params.
      */
-    public static @NonNull SecurityParams createEnhancedOpenParams() {
+    private static @NonNull SecurityParams createEnhancedOpenParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_OWE;
 
@@ -639,7 +703,7 @@ public class SecurityParams {
     /**
      * Create Open params.
      */
-    public static @NonNull SecurityParams createOpenParams() {
+    private static @NonNull SecurityParams createOpenParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_OPEN;
 
@@ -653,7 +717,7 @@ public class SecurityParams {
     /**
      * Create OSEN params.
      */
-    public static @NonNull SecurityParams createOsenParams() {
+    private static @NonNull SecurityParams createOsenParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_OSEN;
 
@@ -672,7 +736,7 @@ public class SecurityParams {
     /**
      * Create WAPI-CERT params.
      */
-    public static @NonNull SecurityParams createWapiCertParams() {
+    private static @NonNull SecurityParams createWapiCertParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_WAPI_CERT;
 
@@ -689,7 +753,7 @@ public class SecurityParams {
     /**
      * Create WAPI-PSK params.
      */
-    public static @NonNull SecurityParams createWapiPskParams() {
+    private static @NonNull SecurityParams createWapiPskParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_WAPI_PSK;
 
@@ -706,7 +770,7 @@ public class SecurityParams {
     /**
      * Create WEP params.
      */
-    public static @NonNull SecurityParams createWepParams() {
+    private static @NonNull SecurityParams createWepParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_WEP;
 
@@ -730,7 +794,7 @@ public class SecurityParams {
     /**
      * Create WPA3 Enterprise 192-bit params.
      */
-    public static @NonNull SecurityParams createWpa3Enterprise192BitParams() {
+    private static @NonNull SecurityParams createWpa3Enterprise192BitParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT;
 
@@ -758,7 +822,7 @@ public class SecurityParams {
     /**
      * Create WPA3 Enterprise params.
      */
-    public static @NonNull SecurityParams createWpa3EnterpriseParams() {
+    private static @NonNull SecurityParams createWpa3EnterpriseParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE;
 
@@ -780,7 +844,7 @@ public class SecurityParams {
     /**
      * Create WPA3 Personal params.
      */
-    public static @NonNull SecurityParams createWpa3PersonalParams() {
+    private static @NonNull SecurityParams createWpa3PersonalParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_SAE;
 
@@ -803,7 +867,7 @@ public class SecurityParams {
     /**
      * Create WPA/WPA2 Personal params.
      */
-    public static @NonNull SecurityParams createWpaWpa2PersonalParams() {
+    private static @NonNull SecurityParams createWpaWpa2PersonalParams() {
         SecurityParams params = new SecurityParams();
         params.mSecurityType = WifiConfiguration.SECURITY_TYPE_PSK;
 
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index ba4a54f9a489..d0e1204e7fbd 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -605,55 +605,7 @@ public class WifiConfiguration implements Parcelable {
         if (mSecurityParamsList.stream().anyMatch(params -> params.isSecurityType(securityType))) {
             throw new IllegalArgumentException("duplicate security type " + securityType);
         }
-        SecurityParams params = null;
-        switch (securityType) {
-            case SECURITY_TYPE_OPEN:
-                params = SecurityParams.createOpenParams();
-                break;
-            case SECURITY_TYPE_WEP:
-                params = SecurityParams.createWepParams();
-                break;
-            case SECURITY_TYPE_PSK:
-                params = SecurityParams.createWpaWpa2PersonalParams();
-                break;
-            case SECURITY_TYPE_EAP:
-                params = SecurityParams.createWpaWpa2EnterpriseParams();
-                break;
-            case SECURITY_TYPE_SAE:
-                params = SecurityParams.createWpa3PersonalParams();
-                break;
-            // The value of {@link SECURITY_TYPE_EAP_SUITE_B} is the same as
-            // {@link #SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT}, remove it to avoid
-            // duplicate case label errors.
-            case SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT:
-                params = SecurityParams.createWpa3Enterprise192BitParams();
-                break;
-            case SECURITY_TYPE_OWE:
-                params = SecurityParams.createEnhancedOpenParams();
-                break;
-            case SECURITY_TYPE_WAPI_PSK:
-                params = SecurityParams.createWapiPskParams();
-                break;
-            case SECURITY_TYPE_WAPI_CERT:
-                params = SecurityParams.createWapiCertParams();
-                break;
-            case SECURITY_TYPE_EAP_WPA3_ENTERPRISE:
-                params = SecurityParams.createWpa3EnterpriseParams();
-                break;
-            case SECURITY_TYPE_OSEN:
-                params = SecurityParams.createOsenParams();
-                break;
-            case SECURITY_TYPE_PASSPOINT_R1_R2:
-                params = SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R2);
-                break;
-            case SECURITY_TYPE_PASSPOINT_R3:
-                params = SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R3);
-                break;
-            default:
-                throw new IllegalArgumentException("unknown security type " + securityType);
-        }
-
-        addSecurityParams(params);
+        addSecurityParams(SecurityParams.createSecurityParamsBySecurityType(securityType));
     }
 
     /** @hide */
diff --git a/wifi/tests/src/android/net/wifi/SecurityParamsTest.java b/wifi/tests/src/android/net/wifi/SecurityParamsTest.java
index 2f6b7245795f..c586ded29cd9 100644
--- a/wifi/tests/src/android/net/wifi/SecurityParamsTest.java
+++ b/wifi/tests/src/android/net/wifi/SecurityParamsTest.java
@@ -50,6 +50,7 @@ public class SecurityParamsTest {
             int[] expectedAllowedGroupCiphers,
             boolean expectedRequirePmf) {
         assertTrue(params.isSecurityType(expectedSecurityType));
+        assertEquals(expectedSecurityType, params.getSecurityType());
         for (int b: expectedAllowedKeyManagement) {
             assertTrue(params.getAllowedKeyManagement().get(b));
         }
@@ -68,44 +69,50 @@ public class SecurityParamsTest {
         assertEquals(expectedRequirePmf, params.isRequirePmf());
     }
 
-    /** Verify EAP params creator. */
+    /** Verify the security params created by security type. */
     @Test
-    public void testEapCreator() throws Exception {
-        SecurityParams p = SecurityParams.createWpaWpa2EnterpriseParams();
-        int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_EAP;
-        int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.WPA_EAP, KeyMgmt.IEEE8021X};
-        int[] expectedAllowedProtocols = new int[] {};
-        int[] expectedAllowedAuthAlgorithms = new int[] {};
-        int[] expectedAllowedPairwiseCiphers = new int[] {};
-        int[] expectedAllowedGroupCiphers = new int[] {};
-        boolean expectedRequirePmf = false;
-        verifySecurityParams(p, expectedSecurityType,
-                expectedAllowedKeyManagement, expectedAllowedProtocols,
-                expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
-                expectedAllowedGroupCiphers, expectedRequirePmf);
+    public void testSecurityTypeCreator() throws Exception {
+        int[] securityTypes = new int[] {
+                WifiConfiguration.SECURITY_TYPE_WAPI_CERT,
+                WifiConfiguration.SECURITY_TYPE_WAPI_PSK,
+                WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT,
+                WifiConfiguration.SECURITY_TYPE_OWE,
+                WifiConfiguration.SECURITY_TYPE_SAE,
+                WifiConfiguration.SECURITY_TYPE_OSEN,
+                WifiConfiguration.SECURITY_TYPE_EAP,
+                WifiConfiguration.SECURITY_TYPE_PSK,
+                WifiConfiguration.SECURITY_TYPE_OPEN,
+                WifiConfiguration.SECURITY_TYPE_PASSPOINT_R1_R2,
+                WifiConfiguration.SECURITY_TYPE_PASSPOINT_R3,
+        };
+
+        for (int type: securityTypes) {
+            assertEquals(type,
+                    SecurityParams.createSecurityParamsBySecurityType(type).getSecurityType());
+        }
     }
 
-    /** Verify Passpoint R1 params creator. */
+    /** Verify EAP params creator. */
     @Test
-    public void testEapPasspointR1Creator() throws Exception {
-        SecurityParams p = SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R1);
-        int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_PASSPOINT_R1_R2;
+    public void testEapCreator() throws Exception {
+        int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_EAP;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.WPA_EAP, KeyMgmt.IEEE8021X};
         int[] expectedAllowedProtocols = new int[] {};
         int[] expectedAllowedAuthAlgorithms = new int[] {};
         int[] expectedAllowedPairwiseCiphers = new int[] {};
         int[] expectedAllowedGroupCiphers = new int[] {};
         boolean expectedRequirePmf = false;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
                 expectedAllowedGroupCiphers, expectedRequirePmf);
     }
 
-    /** Verify Passpoint R2 params creator. */
+    /** Verify Passpoint R1/R2 params creator. */
     @Test
-    public void testEapPasspointR2Creator() throws Exception {
-        SecurityParams p = SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R2);
+    public void testEapPasspointR1R2Creator() throws Exception {
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_PASSPOINT_R1_R2;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.WPA_EAP, KeyMgmt.IEEE8021X};
         int[] expectedAllowedProtocols = new int[] {};
@@ -113,6 +120,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedPairwiseCiphers = new int[] {};
         int[] expectedAllowedGroupCiphers = new int[] {};
         boolean expectedRequirePmf = false;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -122,7 +131,6 @@ public class SecurityParamsTest {
     /** Verify Passpoint R3 params creator. */
     @Test
     public void testEapPasspointR3Creator() throws Exception {
-        SecurityParams p = SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R3);
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_PASSPOINT_R3;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.WPA_EAP, KeyMgmt.IEEE8021X};
         int[] expectedAllowedProtocols = new int[] {};
@@ -130,6 +138,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedPairwiseCiphers = new int[] {};
         int[] expectedAllowedGroupCiphers = new int[] {};
         boolean expectedRequirePmf = true;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -139,7 +149,6 @@ public class SecurityParamsTest {
     /** Verify Enhanced Open params creator. */
     @Test
     public void testEnhancedOpenCreator() throws Exception {
-        SecurityParams p = SecurityParams.createEnhancedOpenParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_OWE;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.OWE};
         int[] expectedAllowedProtocols = new int[] {Protocol.RSN};
@@ -149,6 +158,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedGroupCiphers = new int[] {
                 GroupCipher.CCMP, GroupCipher.GCMP_128, GroupCipher.GCMP_256};
         boolean expectedRequirePmf = true;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -158,7 +169,6 @@ public class SecurityParamsTest {
     /** Verify Open params creator. */
     @Test
     public void testOpenCreator() throws Exception {
-        SecurityParams p = SecurityParams.createOpenParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_OPEN;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.NONE};
         int[] expectedAllowedProtocols = new int[] {};
@@ -166,6 +176,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedPairwiseCiphers = new int[] {};
         int[] expectedAllowedGroupCiphers = new int[] {};
         boolean expectedRequirePmf = false;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -175,7 +187,6 @@ public class SecurityParamsTest {
     /** Verify OSEN params creator. */
     @Test
     public void testOsenCreator() throws Exception {
-        SecurityParams p = SecurityParams.createOsenParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_OSEN;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.OSEN};
         int[] expectedAllowedProtocols = new int[] {Protocol.OSEN};
@@ -183,6 +194,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedPairwiseCiphers = new int[] {};
         int[] expectedAllowedGroupCiphers = new int[] {};
         boolean expectedRequirePmf = false;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -192,7 +205,6 @@ public class SecurityParamsTest {
     /** Verify WAPI CERT params creator. */
     @Test
     public void testWapiCertCreator() throws Exception {
-        SecurityParams p = SecurityParams.createWapiCertParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_WAPI_CERT;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.WAPI_CERT};
         int[] expectedAllowedProtocols = new int[] {Protocol.WAPI};
@@ -200,6 +212,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedPairwiseCiphers = new int[] {PairwiseCipher.SMS4};
         int[] expectedAllowedGroupCiphers = new int[] {GroupCipher.SMS4};
         boolean expectedRequirePmf = false;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -209,7 +223,6 @@ public class SecurityParamsTest {
     /** Verify WAPI PSK params creator. */
     @Test
     public void testWapiPskCreator() throws Exception {
-        SecurityParams p = SecurityParams.createWapiPskParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_WAPI_PSK;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.WAPI_PSK};
         int[] expectedAllowedProtocols = new int[] {Protocol.WAPI};
@@ -217,6 +230,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedPairwiseCiphers = new int[] {PairwiseCipher.SMS4};
         int[] expectedAllowedGroupCiphers = new int[] {GroupCipher.SMS4};
         boolean expectedRequirePmf = false;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -226,7 +241,6 @@ public class SecurityParamsTest {
     /** Verify WEP params creator. */
     @Test
     public void testWepCreator() throws Exception {
-        SecurityParams p = SecurityParams.createWepParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_WEP;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.NONE};
         int[] expectedAllowedProtocols = new int[] {};
@@ -234,6 +248,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedPairwiseCiphers = new int[] {};
         int[] expectedAllowedGroupCiphers = new int[] {};
         boolean expectedRequirePmf = false;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -243,7 +259,6 @@ public class SecurityParamsTest {
     /** Verify WPA3 Enterprise 192-bit params creator. */
     @Test
     public void testWpa3Enterprise192BitCreator() throws Exception {
-        SecurityParams p = SecurityParams.createWpa3Enterprise192BitParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT;
         int[] expectedAllowedKeyManagement = new int[] {
                 KeyMgmt.WPA_EAP, KeyMgmt.IEEE8021X, KeyMgmt.SUITE_B_192};
@@ -253,6 +268,8 @@ public class SecurityParamsTest {
                 PairwiseCipher.GCMP_128, PairwiseCipher.GCMP_256};
         int[] expectedAllowedGroupCiphers = new int[] {GroupCipher.GCMP_128, GroupCipher.GCMP_256};
         boolean expectedRequirePmf = true;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -264,7 +281,6 @@ public class SecurityParamsTest {
     /** Verify WPA3 Enterprise params creator. */
     @Test
     public void testWpa3EnterpriseCreator() throws Exception {
-        SecurityParams p = SecurityParams.createWpa3EnterpriseParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.WPA_EAP, KeyMgmt.IEEE8021X};
         int[] expectedAllowedProtocols = new int[] {Protocol.RSN};
@@ -273,6 +289,8 @@ public class SecurityParamsTest {
                 PairwiseCipher.CCMP, PairwiseCipher.GCMP_256};
         int[] expectedAllowedGroupCiphers = new int[] {GroupCipher.CCMP, GroupCipher.GCMP_256};
         boolean expectedRequirePmf = true;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -282,7 +300,6 @@ public class SecurityParamsTest {
     /** Verify WPA3 Personal params creator. */
     @Test
     public void testWpa3PersonalCreator() throws Exception {
-        SecurityParams p = SecurityParams.createWpa3PersonalParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_SAE;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.SAE};
         int[] expectedAllowedProtocols = new int[] {Protocol.RSN};
@@ -292,6 +309,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedGroupCiphers = new int[] {
                 GroupCipher.CCMP, GroupCipher.GCMP_128, GroupCipher.GCMP_256};
         boolean expectedRequirePmf = true;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -301,7 +320,6 @@ public class SecurityParamsTest {
     /** Verify WPA2 Personal EAP params creator. */
     @Test
     public void testWpaWpa2PersonalCreator() throws Exception {
-        SecurityParams p = SecurityParams.createWpaWpa2PersonalParams();
         int expectedSecurityType = WifiConfiguration.SECURITY_TYPE_PSK;
         int[] expectedAllowedKeyManagement = new int[] {KeyMgmt.WPA_PSK};
         int[] expectedAllowedProtocols = new int[] {};
@@ -309,6 +327,8 @@ public class SecurityParamsTest {
         int[] expectedAllowedPairwiseCiphers = new int[] {};
         int[] expectedAllowedGroupCiphers = new int[] {};
         boolean expectedRequirePmf = false;
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                                expectedSecurityType);
         verifySecurityParams(p, expectedSecurityType,
                 expectedAllowedKeyManagement, expectedAllowedProtocols,
                 expectedAllowedAuthAlgorithms, expectedAllowedPairwiseCiphers,
@@ -318,7 +338,8 @@ public class SecurityParamsTest {
     /** Verify setter/getter methods */
     @Test
     public void testCommonSetterGetter() throws Exception {
-        SecurityParams params = SecurityParams.createWpaWpa2PersonalParams();
+        SecurityParams params = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_PSK);
 
         // PSK setting
         BitSet allowedKeyManagement = new BitSet();
@@ -362,7 +383,8 @@ public class SecurityParamsTest {
     /** Verify SAE-specific methods */
     @Test
     public void testSaeMethods() throws Exception {
-        SecurityParams p = SecurityParams.createWpa3PersonalParams();
+        SecurityParams p = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_SAE);
 
         assertFalse(p.isAddedByAutoUpgrade());
         p.setIsAddedByAutoUpgrade(true);
@@ -380,7 +402,8 @@ public class SecurityParamsTest {
     /** Verify copy constructor. */
     @Test
     public void testCopyConstructor() throws Exception {
-        SecurityParams params = SecurityParams.createWpaWpa2PersonalParams();
+        SecurityParams params = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_PSK);
         params.setEnabled(false);
         params.setIsAddedByAutoUpgrade(true);
 
@@ -405,9 +428,12 @@ public class SecurityParamsTest {
     /** Check that two params are equal if and only if their types are the same. */
     @Test
     public void testEquals() {
-        SecurityParams saeParams1 = SecurityParams.createWpa3PersonalParams();
-        SecurityParams saeParams2 = SecurityParams.createWpa3PersonalParams();
-        SecurityParams pskParams = SecurityParams.createWpaWpa2PersonalParams();
+        SecurityParams saeParams1 = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_SAE);
+        SecurityParams saeParams2 = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_SAE);
+        SecurityParams pskParams = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_PSK);
         assertEquals(saeParams1, saeParams2);
         assertNotEquals(saeParams1, pskParams);
     }
@@ -415,9 +441,12 @@ public class SecurityParamsTest {
     /** Check that hash values are the same if and only if their types are the same. */
     @Test
     public void testHashCode() {
-        SecurityParams saeParams1 = SecurityParams.createWpa3PersonalParams();
-        SecurityParams saeParams2 = SecurityParams.createWpa3PersonalParams();
-        SecurityParams pskParams = SecurityParams.createWpaWpa2PersonalParams();
+        SecurityParams saeParams1 = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_SAE);
+        SecurityParams saeParams2 = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_SAE);
+        SecurityParams pskParams = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_PSK);
         assertEquals(saeParams1.hashCode(), saeParams2.hashCode());
         assertNotEquals(saeParams1.hashCode(), pskParams.hashCode());
     }
@@ -426,26 +455,38 @@ public class SecurityParamsTest {
     @Test
     public void testIsOpenNetwork() {
         SecurityParams[] openSecurityParams = new SecurityParams[] {
-                SecurityParams.createEnhancedOpenParams(),
-                SecurityParams.createOpenParams(),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_OWE),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_OPEN),
         };
         for (SecurityParams p: openSecurityParams) {
             assertTrue(p.isOpenSecurityType());
         }
 
         SecurityParams[] nonOpenSecurityParams = new SecurityParams[] {
-                SecurityParams.createWpaWpa2EnterpriseParams(),
-                SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R1),
-                SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R2),
-                SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R3),
-                SecurityParams.createOsenParams(),
-                SecurityParams.createWapiCertParams(),
-                SecurityParams.createWapiPskParams(),
-                SecurityParams.createWepParams(),
-                SecurityParams.createWpa3Enterprise192BitParams(),
-                SecurityParams.createWpa3EnterpriseParams(),
-                SecurityParams.createWpa3PersonalParams(),
-                SecurityParams.createWpaWpa2PersonalParams(),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_EAP),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_PASSPOINT_R1_R2),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_PASSPOINT_R3),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_OSEN),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_WAPI_PSK),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_WAPI_CERT),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_WEP),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_SAE),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_PSK),
         };
         for (SecurityParams p: nonOpenSecurityParams) {
             assertFalse(p.isOpenSecurityType());
@@ -456,26 +497,38 @@ public class SecurityParamsTest {
     @Test
     public void testIsEnterpriseNetwork() {
         SecurityParams[] enterpriseSecurityParams = new SecurityParams[] {
-                SecurityParams.createWpaWpa2EnterpriseParams(),
-                SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R1),
-                SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R2),
-                SecurityParams.createPasspointParams(SecurityParams.PASSPOINT_R3),
-                SecurityParams.createWapiCertParams(),
-                SecurityParams.createWpa3Enterprise192BitParams(),
-                SecurityParams.createWpa3EnterpriseParams(),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_EAP),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_PASSPOINT_R1_R2),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_PASSPOINT_R3),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_WAPI_CERT),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE),
         };
         for (SecurityParams p: enterpriseSecurityParams) {
             assertTrue(p.isEnterpriseSecurityType());
         }
 
         SecurityParams[] nonEnterpriseSecurityParams = new SecurityParams[] {
-                SecurityParams.createEnhancedOpenParams(),
-                SecurityParams.createOpenParams(),
-                SecurityParams.createOsenParams(),
-                SecurityParams.createWapiPskParams(),
-                SecurityParams.createWepParams(),
-                SecurityParams.createWpa3PersonalParams(),
-                SecurityParams.createWpaWpa2PersonalParams(),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_OWE),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_OPEN),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_OSEN),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_WAPI_PSK),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_WEP),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_SAE),
+                SecurityParams.createSecurityParamsBySecurityType(
+                        WifiConfiguration.SECURITY_TYPE_PSK),
         };
         for (SecurityParams p: nonEnterpriseSecurityParams) {
             assertFalse(p.isEnterpriseSecurityType());
@@ -485,7 +538,8 @@ public class SecurityParamsTest {
     /** Check that parcel marshalling/unmarshalling works */
     @Test
     public void testParcelMethods() {
-        SecurityParams params = SecurityParams.createWpa3PersonalParams();
+        SecurityParams params = SecurityParams.createSecurityParamsBySecurityType(
+                WifiConfiguration.SECURITY_TYPE_SAE);
 
         Parcel parcelW = Parcel.obtain();
         params.writeToParcel(parcelW, 0);
diff --git a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
index f351e61b5eb8..ea41434f907f 100644
--- a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
@@ -22,6 +22,8 @@ import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRI
 import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_OPEN;
 import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_OSEN;
 import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_OWE;
+import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_PASSPOINT_R1_R2;
+import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_PASSPOINT_R3;
 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;
@@ -915,7 +917,7 @@ public class WifiConfigurationTest {
         WifiConfiguration config = new WifiConfiguration();
         config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
         config.addSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
-        config.addSecurityParams(SecurityParams.createWapiPskParams());
+        config.addSecurityParams(WifiConfiguration.SECURITY_TYPE_WAPI_PSK);
         List<SecurityParams> paramsList = config.getSecurityParamsList();
         assertEquals(3, paramsList.size());
 
@@ -1004,18 +1006,18 @@ public class WifiConfigurationTest {
     @Test (expected = IllegalArgumentException.class)
     public void testAddDuplicateSecurityParams() {
         WifiConfiguration config = new WifiConfiguration();
-        config.addSecurityParams(SecurityParams.createWpaWpa2PersonalParams());
-        config.addSecurityParams(SecurityParams.createWpaWpa2PersonalParams());
+        config.addSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
+        config.addSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
     }
 
     /** Verify that Suite-B type works as expected. */
     @Test
     public void testAddSuiteBSecurityType() {
         WifiConfiguration config = new WifiConfiguration();
-        config.addSecurityParams(SecurityParams.createWpa3EnterpriseParams());
+        config.addSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
         config.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM);
         config.enterpriseConfig.setPhase2Method(WifiEnterpriseConfig.Phase2.NONE);
-        config.addSecurityParams(SecurityParams.createWpa3Enterprise192BitParams());
+        config.addSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT);
 
         assertFalse(config.isSuiteBCipherEcdheRsaEnabled());
         config.enableSuiteBCiphers(false, true);
@@ -1101,22 +1103,24 @@ public class WifiConfigurationTest {
     /** Verify the set security params by SecurityParams objects. */
     @Test
     public void testSetBySecurityParamsObject() {
-        Pair[] securityParamsSecurityTypePairs = new Pair[] {
-                new Pair<>(SecurityParams.createWapiCertParams(), SECURITY_TYPE_WAPI_CERT),
-                new Pair<>(SecurityParams.createWapiPskParams(), SECURITY_TYPE_WAPI_PSK),
-                new Pair<>(SecurityParams.createWpa3Enterprise192BitParams(),
-                        SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT),
-                new Pair<>(SecurityParams.createEnhancedOpenParams(), SECURITY_TYPE_OWE),
-                new Pair<>(SecurityParams.createWpa3PersonalParams(), SECURITY_TYPE_SAE),
-                new Pair<>(SecurityParams.createOsenParams(), SECURITY_TYPE_OSEN),
-                new Pair<>(SecurityParams.createWpaWpa2EnterpriseParams(), SECURITY_TYPE_EAP),
-                new Pair<>(SecurityParams.createWpaWpa2PersonalParams(), SECURITY_TYPE_PSK),
-                new Pair<>(SecurityParams.createOpenParams(), SECURITY_TYPE_OPEN),
+        int[] securityTypes = new int[] {
+                SECURITY_TYPE_WAPI_CERT,
+                SECURITY_TYPE_WAPI_PSK,
+                SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT,
+                SECURITY_TYPE_OWE,
+                SECURITY_TYPE_SAE,
+                SECURITY_TYPE_OSEN,
+                SECURITY_TYPE_EAP,
+                SECURITY_TYPE_PSK,
+                SECURITY_TYPE_OPEN,
+                SECURITY_TYPE_PASSPOINT_R1_R2,
+                SECURITY_TYPE_PASSPOINT_R3,
         };
-        for (Pair pair: securityParamsSecurityTypePairs) {
+        for (int type: securityTypes) {
             WifiConfiguration config = new WifiConfiguration();
-            config.setSecurityParams((SecurityParams) pair.first);
-            assertNotNull(config.getSecurityParams((int) pair.second));
+            config.setSecurityParams(type);
+            assertTrue(config.isSecurityType(type));
+            assertNotNull(config.getSecurityParams(type));
         }
     }
 }
-- 
GitLab