diff options
author | Arc Wang <arcwang@google.com> | 2020-02-21 14:40:42 +0800 |
---|---|---|
committer | Arc Wang <arcwang@google.com> | 2020-02-24 15:23:56 +0800 |
commit | 9730b5aa86283ece8be3d78b718eea29952704a5 (patch) | |
tree | ae18062455160342f741da0df0fa45433298e76a /src/com/android/settings/wifi/WifiConfigController.java | |
parent | 34fdec266890d5c48b2fedb783a8de152e2eefdb (diff) |
[Wi-Fi] Ignore incorrect user certificates
These incorrect user certificates displayed when users
editing a Wi-Fi network of WPA3-Enterprise in 192bit.
Bug: 149763958
Test: make RunSettingsRoboTests ROBOTEST_FILTER=WifiConfigControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=WifiConfigControllerTest2
Change-Id: Iab35ac975933abc54fda83b99a2109d53d6722d4
Diffstat (limited to 'src/com/android/settings/wifi/WifiConfigController.java')
-rw-r--r-- | src/com/android/settings/wifi/WifiConfigController.java | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index d9b9e3c340..5264e103c8 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -82,6 +82,7 @@ import java.net.InetAddress; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; +import java.util.stream.Collectors; /** * The class for allowing UIs like {@link WifiDialog} and {@link WifiConfigUiBase} to @@ -133,6 +134,14 @@ public class WifiConfigController implements TextWatcher, public static final int WIFI_TTLS_PHASE2_MSCHAPV2 = 2; public static final int WIFI_TTLS_PHASE2_GTC = 3; + private static final String UNDESIRED_CERTIFICATE_MACRANDSECRET = "MacRandSecret"; + private static final String UNDESIRED_CERTIFICATE_MACRANDSAPSECRET = "MacRandSapSecret"; + @VisibleForTesting + static final String[] UNDESIRED_CERTIFICATES = { + UNDESIRED_CERTIFICATE_MACRANDSECRET, + UNDESIRED_CERTIFICATE_MACRANDSAPSECRET + }; + /* Phase2 methods supported by PEAP are limited */ private ArrayAdapter<CharSequence> mPhase2PeapAdapter; /* Phase2 methods supported by TTLS are limited */ @@ -1425,7 +1434,8 @@ public class WifiConfigController implements TextWatcher, return KeyStore.getInstance(); } - private void loadCertificates( + @VisibleForTesting + void loadCertificates( Spinner spinner, String prefix, String noCertificateString, @@ -1441,12 +1451,25 @@ public class WifiConfigController implements TextWatcher, if (showUsePreinstalledCertOption) { certs.add(mUseSystemCertsString); } + + String[] certificateNames = null; try { - certs.addAll( - Arrays.asList(getKeyStore().list(prefix, android.os.Process.WIFI_UID))); + certificateNames = getKeyStore().list(prefix, android.os.Process.WIFI_UID); } catch (Exception e) { Log.e(TAG, "can't get the certificate list from KeyStore"); } + if (certificateNames != null && certificateNames.length != 0) { + certs.addAll(Arrays.stream(certificateNames) + .filter(certificateName -> { + for (String undesired : UNDESIRED_CERTIFICATES) { + if (certificateName.startsWith(undesired)) { + return false; + } + } + return true; + }).collect(Collectors.toList())); + } + if (mAccessPointSecurity != AccessPoint.SECURITY_EAP_SUITE_B) { certs.add(noCertificateString); } |