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

Commit 3d3ca84f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert submission"

parents 20fcf047 5579604a
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;
            }