Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5579604a authored by Hai Shalom's avatar Hai Shalom
Browse files

Revert submission

Reason for revert: Incomplete fix that causes additional issues which were not anticipated earlier.

Change-Id: Iff36d5a10e6c8ee8978a5842af8f19efc10c0a91
parent 6720b428
Loading
Loading
Loading
Loading
+46 −13
Original line number Diff line number Diff line
@@ -748,7 +748,20 @@ public class AccessPoint implements Comparable<AccessPoint> {
                || (mConfig != null && mConfig.shared != config.shared)) {
            return false;
        }
        return security == getSecurity(config);

        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;
        }
    }

    public WifiConfiguration getConfig() {
@@ -1321,10 +1334,34 @@ public class AccessPoint implements Comparable<AccessPoint> {
        mAccessPointListener = listener;
    }

    private static final String sPskSuffix = "," + String.valueOf(SECURITY_PSK);
    private static final String sSaeSuffix = "," + String.valueOf(SECURITY_SAE);
    private static final String sPskSaeSuffix = "," + String.valueOf(SECURITY_PSK_SAE_TRANSITION);
    private static final String sOweSuffix = "," + String.valueOf(SECURITY_OWE);
    private static final String sOpenSuffix = "," + String.valueOf(SECURITY_NONE);
    private static final String sOweTransSuffix = "," + String.valueOf(SECURITY_OWE_TRANSITION);

    private boolean isKeyEqual(String compareTo) {
        if (mKey == null) {
            return false;
        }

        if (compareTo.endsWith(sPskSuffix) || compareTo.endsWith(sSaeSuffix)) {
            if (mKey.endsWith(sPskSaeSuffix)) {
                // Special handling for PSK-SAE transition mode. If the AP has advertised both,
                // we compare the key with both PSK and SAE for a match.
                return TextUtils.equals(mKey.substring(0, mKey.lastIndexOf(',')),
                        compareTo.substring(0, compareTo.lastIndexOf(',')));
            }
        }
        if (compareTo.endsWith(sOpenSuffix) || compareTo.endsWith(sOweSuffix)) {
            if (mKey.endsWith(sOweTransSuffix)) {
                // Special handling for OWE/Open networks. If AP advertises OWE in transition mode
                // and we have an Open network saved, allow this connection to be established.
                return TextUtils.equals(mKey.substring(0, mKey.lastIndexOf(',')),
                        compareTo.substring(0, compareTo.lastIndexOf(',')));
            }
        }
        return mKey.equals(compareTo);
    }

@@ -1661,6 +1698,8 @@ public class AccessPoint implements Comparable<AccessPoint> {
    private static int getSecurity(ScanResult result) {
        if (result.capabilities.contains("WEP")) {
            return SECURITY_WEP;
        } else if (result.capabilities.contains("PSK+SAE")) {
            return SECURITY_PSK_SAE_TRANSITION;
        } else if (result.capabilities.contains("SAE")) {
            return SECURITY_SAE;
        } else if (result.capabilities.contains("PSK")) {
@@ -1669,6 +1708,8 @@ public class AccessPoint implements Comparable<AccessPoint> {
            return SECURITY_EAP_SUITE_B;
        } else if (result.capabilities.contains("EAP")) {
            return SECURITY_EAP;
        } else if (result.capabilities.contains("OWE_TRANSITION")) {
            return SECURITY_OWE_TRANSITION;
        } else if (result.capabilities.contains("OWE")) {
            return SECURITY_OWE;
        }
@@ -1715,6 +1756,10 @@ public class AccessPoint implements Comparable<AccessPoint> {
            return "SUITE_B";
        } else if (security == SECURITY_OWE) {
            return "OWE";
        } else if (security == SECURITY_PSK_SAE_TRANSITION) {
            return "PSK+SAE";
        } else if (security == SECURITY_OWE_TRANSITION) {
            return "OWE_TRANSITION";
        }
        return "NONE";
    }
@@ -1892,16 +1937,4 @@ public class AccessPoint implements Comparable<AccessPoint> {
            }
        }
    }

    /**
     * Lets the caller know if the network was cloned from another network
     *
     * @return true if the network is cloned
     */
    public boolean isCloned() {
        if (mConfig == null) {
            return false;
        }
        return mConfig.clonedNetworkConfigKey != null;
    }
}
+5 −14
Original line number Diff line number Diff line
@@ -384,7 +384,12 @@ public class WifiConfiguration implements Parcelable {
    public void setSecurityParams(@SecurityType int securityType) {
        // Clear all the bitsets.
        allowedKeyManagement.clear();
        allowedProtocols.clear();
        allowedAuthAlgorithms.clear();
        allowedPairwiseCiphers.clear();
        allowedGroupCiphers.clear();
        allowedGroupManagementCiphers.clear();
        allowedSuiteBCiphers.clear();

        switch (securityType) {
            case SECURITY_TYPE_OPEN:
@@ -407,9 +412,6 @@ public class WifiConfiguration implements Parcelable {
                requirePMF = true;
                break;
            case SECURITY_TYPE_EAP_SUITE_B:
                allowedGroupCiphers.clear();
                allowedGroupManagementCiphers.clear();
                allowedSuiteBCiphers.clear();
                allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192);
                allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256);
                allowedGroupManagementCiphers.set(WifiConfiguration.GroupMgmtCipher.BIP_GMAC_256);
@@ -944,12 +946,6 @@ public class WifiConfiguration implements Parcelable {
     */
    public int meteredOverride = METERED_OVERRIDE_NONE;

    /**
     * This Wifi configuration is a clone of another network with lower security
     * @hide
     */
    public String clonedNetworkConfigKey;

    /**
     * Blend together all the various opinions to decide if the given network
     * should be considered metered or not.
@@ -1808,7 +1804,6 @@ public class WifiConfiguration implements Parcelable {
        shared = true;
        dtimInterval = 0;
        mRandomizedMacAddress = MacAddress.fromString(WifiInfo.DEFAULT_MAC_ADDRESS);
        clonedNetworkConfigKey = null;
    }

    /**
@@ -2376,7 +2371,6 @@ public class WifiConfiguration implements Parcelable {

    /** copy constructor {@hide} */
    @UnsupportedAppUsage

    public WifiConfiguration(WifiConfiguration source) {
        if (source != null) {
            networkId = source.networkId;
@@ -2460,7 +2454,6 @@ public class WifiConfiguration implements Parcelable {
            requirePMF = source.requirePMF;
            updateIdentifier = source.updateIdentifier;
            carrierId = source.carrierId;
            clonedNetworkConfigKey = source.clonedNetworkConfigKey;
        }
    }

@@ -2536,7 +2529,6 @@ public class WifiConfiguration implements Parcelable {
        dest.writeInt(osu ? 1 : 0);
        dest.writeLong(randomizedMacExpirationTimeMs);
        dest.writeInt(carrierId);
        dest.writeString(clonedNetworkConfigKey);
    }

    /** Implement the Parcelable interface {@hide} */
@@ -2614,7 +2606,6 @@ public class WifiConfiguration implements Parcelable {
                config.osu = in.readInt() != 0;
                config.randomizedMacExpirationTimeMs = in.readLong();
                config.carrierId = in.readInt();
                config.clonedNetworkConfigKey = in.readString();
                return config;
            }