From 04bb4b82c60b152d24ff98a3451771c2fedaecfc Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Tue, 11 Jun 2019 11:28:27 +0800 Subject: [PATCH] [Wi-Fi] Support transition mode in AccessPoint#matches When enrolling Wi-Fi network with Settings Wi-Fi QR code scanner, it will compare Wi-Fi network information between QR code and all reachable Wi-Fi networks before connecting. This change supports to enroll Wi-Fi networks from a Wi-Fi AP of transition mode. Bug: 134706055 Test: Scan a QR code of open network, verify connection Scan a QR code of OWE network, verify connection Scan a QR code of WPA3 network, verify connection Scan a QR code of WPA3 network, verify transition mode connection Change-Id: Ifc470cbcde7f33ffd76c9f6a8606cabda78a88cd --- .../android/settingslib/wifi/AccessPoint.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index ab174f47ab208..f16fb1c91b7ca 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -712,11 +712,25 @@ public class AccessPoint implements Comparable { public boolean matches(WifiConfiguration config) { if (config.isPasspoint()) { return (isPasspoint() && config.FQDN.equals(mConfig.FQDN)); - } else { - // Normal non-Passpoint network - return ssid.equals(removeDoubleQuotes(config.SSID)) - && security == getSecurity(config) - && (mConfig == null || mConfig.shared == config.shared); + } + + if (!ssid.equals(removeDoubleQuotes(config.SSID)) + || (mConfig != null && mConfig.shared != config.shared)) { + return false; + } + + final int configSecurity = getSecurity(config); + final WifiManager wifiManager = getWifiManager(); + switch (security) { + case SECURITY_PSK_SAE_TRANSITION: + return configSecurity == SECURITY_PSK + || (wifiManager.isWpa3SaeSupported() && configSecurity == SECURITY_SAE); + case SECURITY_OWE_TRANSITION: + return configSecurity == SECURITY_NONE + || (wifiManager.isEnhancedOpenSupported() + && configSecurity == SECURITY_OWE); + default: + return security == configSecurity; } }