From 98aa52dbec933b780186ffc65f3c20b825170577 Mon Sep 17 00:00:00 2001 From: Hai Shalom Date: Mon, 13 May 2019 15:31:58 -0700 Subject: [PATCH] [OWE] Support OWE in transition mode Support OWE in transition mode for devices with OWE support and devices without OWE support. Scan results will return a new type of network for OWE in transition networks on devices that support OWE, and Open for devices that don't support OWE. Handle the case where Open network is manually added to a device that supports OWE. Bug: 132139642 Test: Device with OWE: Connect to Open, OWE-Transition, OWE networks Test: Device without OWE: Connect to Open, OWE-Transition Test: Manually create Open network, connect to OWE-Transition Change-Id: I1a584ccbfec8507803c527ea13933cff6f699ccb --- .../settings/wifi/WifiConfigController.java | 19 +++++++++++++++---- .../android/settings/wifi/WifiSettings.java | 7 +++++-- src/com/android/settings/wifi/WifiUtils.java | 3 ++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index ba26f02f49d..0be7c2b0d34 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -582,9 +582,11 @@ public class WifiConfigController implements TextWatcher, } /** - * Special handling for WPA2/WPA3 in Transition mode: The key SECURITY_PSK_SAE_TRANSITION is - * a pseudo key which results by the scan results, but never appears in the saved networks. - * A saved network is either WPA3 for supporting devices or WPA2 for non-supporting devices. + * Special handling for WPA2/WPA3 and OWE in Transition mode: The key + * SECURITY_PSK_SAE_TRANSITION and SECURITY_OWE_TRANSITION are pseudo keys which result by the + * scan results, but never appears in the saved networks. + * A saved network is either WPA3 for supporting devices or WPA2 for non-supporting devices, + * or, OWE for supporting devices or Open for non-supporting devices. * * @param accessPointSecurity Access point current security type * @return Converted security type (if required) @@ -597,6 +599,14 @@ public class WifiConfigController implements TextWatcher, return AccessPoint.SECURITY_PSK; } } + if (accessPointSecurity == AccessPoint.SECURITY_OWE_TRANSITION) { + if (mWifiManager.isEnhancedOpenSupported()) { + return AccessPoint.SECURITY_OWE; + } else { + return AccessPoint.SECURITY_NONE; + } + } + return accessPointSecurity; } @@ -948,7 +958,8 @@ public class WifiConfigController implements TextWatcher, private void showSecurityFields() { if (mAccessPointSecurity == AccessPoint.SECURITY_NONE || - mAccessPointSecurity == AccessPoint.SECURITY_OWE) { + mAccessPointSecurity == AccessPoint.SECURITY_OWE || + mAccessPointSecurity == AccessPoint.SECURITY_OWE_TRANSITION) { mView.findViewById(R.id.security_fields).setVisibility(View.GONE); return; } diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 4d3f230db1e..8c4bfa28ad8 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -494,7 +494,9 @@ public class WifiSettings extends RestrictedSettingsFragment if (isSavedNetwork) { connect(mSelectedAccessPoint.getConfig(), isSavedNetwork); } else if ((mSelectedAccessPoint.getSecurity() == AccessPoint.SECURITY_NONE) || - (mSelectedAccessPoint.getSecurity() == AccessPoint.SECURITY_OWE)) { + (mSelectedAccessPoint.getSecurity() == AccessPoint.SECURITY_OWE) || + (mSelectedAccessPoint.getSecurity() + == AccessPoint.SECURITY_OWE_TRANSITION)) { /** Bypass dialog for unsecured networks */ mSelectedAccessPoint.generateOpenNetworkConfig(); connect(mSelectedAccessPoint.getConfig(), isSavedNetwork); @@ -748,7 +750,8 @@ public class WifiSettings extends RestrictedSettingsFragment preference.setOrder(index); if (mOpenSsid != null && mOpenSsid.equals(accessPoint.getSsidStr()) && (accessPoint.getSecurity() != AccessPoint.SECURITY_NONE && - accessPoint.getSecurity() != AccessPoint.SECURITY_OWE)) { + accessPoint.getSecurity() != AccessPoint.SECURITY_OWE && + accessPoint.getSecurity() != AccessPoint.SECURITY_OWE_TRANSITION)) { if (!accessPoint.isSaved() || isDisabledByWrongPassword(accessPoint)) { onPreferenceTreeClick(preference); mOpenSsid = null; diff --git a/src/com/android/settings/wifi/WifiUtils.java b/src/com/android/settings/wifi/WifiUtils.java index 9b3c1b368c9..c4df5676246 100644 --- a/src/com/android/settings/wifi/WifiUtils.java +++ b/src/com/android/settings/wifi/WifiUtils.java @@ -268,7 +268,8 @@ public class WifiUtils { if (accessPoint.isOsuProvider()) { return CONNECT_TYPE_OSU_PROVISION; } else if ((accessPoint.getSecurity() == AccessPoint.SECURITY_NONE) || - (accessPoint.getSecurity() == AccessPoint.SECURITY_OWE)) { + (accessPoint.getSecurity() == AccessPoint.SECURITY_OWE) || + (accessPoint.getSecurity() == AccessPoint.SECURITY_OWE_TRANSITION)) { return CONNECT_TYPE_OPEN_NETWORK; } else if (accessPoint.isSaved() && config != null && config.getNetworkSelectionStatus() != null