Loading api/system-current.txt +2 −1 Original line number Diff line number Diff line Loading @@ -4851,7 +4851,8 @@ package android.net.wifi { ctor public WifiScanner.ScanSettings(); field public int band; field public android.net.wifi.WifiScanner.ChannelSpec[] channels; field @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean ignoreLocationSettings; field public boolean hideFromAppOps; field public boolean ignoreLocationSettings; field public int maxPeriodInMs; field public int maxScansToCache; field public int numBssidsPerScan; Loading wifi/java/android/net/wifi/WifiConfiguration.java +87 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.net.wifi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.SystemApi; import android.annotation.UnsupportedAppUsage; Loading @@ -41,6 +42,8 @@ import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Arrays; import java.util.BitSet; import java.util.HashMap; Loading Loading @@ -339,6 +342,90 @@ public class WifiConfiguration implements Parcelable { public static final String[] strings = { "current", "disabled", "enabled" }; } /** * Security types we support. */ /** @hide */ public static final int SECURITY_TYPE_OPEN = 0; /** @hide */ public static final int SECURITY_TYPE_WEP = 1; /** @hide */ public static final int SECURITY_TYPE_PSK = 2; /** @hide */ public static final int SECURITY_TYPE_EAP = 3; /** @hide */ public static final int SECURITY_TYPE_SAE = 4; /** @hide */ public static final int SECURITY_TYPE_EAP_SUITE_B = 5; /** @hide */ public static final int SECURITY_TYPE_OWE = 6; /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(prefix = { "SECURITY_TYPE_" }, value = { SECURITY_TYPE_OPEN, SECURITY_TYPE_WEP, SECURITY_TYPE_PSK, SECURITY_TYPE_EAP, SECURITY_TYPE_SAE, SECURITY_TYPE_EAP_SUITE_B, SECURITY_TYPE_OWE }) public @interface SecurityType {} /** * @hide * Set security params (sets the various bitsets exposed in WifiConfiguration). * * @param securityType One of the security types from {@link SecurityType}. */ 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: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); break; case SECURITY_TYPE_WEP: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); break; case SECURITY_TYPE_PSK: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); break; case SECURITY_TYPE_EAP: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); break; case SECURITY_TYPE_SAE: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SAE); requirePMF = true; break; case SECURITY_TYPE_EAP_SUITE_B: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192); allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256); allowedGroupManagementCiphers.set(WifiConfiguration.GroupMgmtCipher.BIP_GMAC_256); allowedSuiteBCiphers.set(WifiConfiguration.SuiteBCipher.ECDHE_ECDSA); allowedSuiteBCiphers.set(WifiConfiguration.SuiteBCipher.ECDHE_RSA); requirePMF = true; break; case SECURITY_TYPE_OWE: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OWE); requirePMF = true; break; default: throw new IllegalArgumentException("unknown security type " + securityType); } } /** @hide */ public static final int UNKNOWN_UID = -1; Loading wifi/java/android/net/wifi/WifiNetworkSpecifier.java +6 −39 Original line number Diff line number Diff line Loading @@ -269,58 +269,26 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc } /** * Set defaults for the various low level credential type fields in the newly created * WifiConfiguration object. * * See {@link com.android.server.wifi.WifiConfigManager#setDefaultsInWifiConfiguration( * WifiConfiguration)}. * * @param configuration provided WifiConfiguration object. */ private static void setDefaultsInWifiConfiguration( @NonNull WifiConfiguration configuration) { configuration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); configuration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); configuration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); } private void setSecurityParamsInWifiConfiguration( @NonNull WifiConfiguration configuration) { if (!TextUtils.isEmpty(mWpa2PskPassphrase)) { // WPA-PSK network. configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK); // WifiConfiguration.preSharedKey needs quotes around ASCII password. configuration.preSharedKey = "\"" + mWpa2PskPassphrase + "\""; } else if (!TextUtils.isEmpty(mWpa3SaePassphrase)) { // WPA3-SAE network. configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SAE); // PMF mandatory for SAE. configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE); // WifiConfiguration.preSharedKey needs quotes around ASCII password. configuration.preSharedKey = "\"" + mWpa3SaePassphrase + "\""; } else if (mWpa2EnterpriseConfig != null) { // WPA-EAP network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP); configuration.enterpriseConfig = mWpa2EnterpriseConfig; } else if (mWpa3EnterpriseConfig != null) { // WPA3-SuiteB network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256); // TODO (b/113878056): Verify these params once we verify SuiteB configuration. configuration.allowedGroupManagementCiphers.set( WifiConfiguration.GroupMgmtCipher.BIP_GMAC_256); configuration.allowedSuiteBCiphers.set( WifiConfiguration.SuiteBCipher.ECDHE_ECDSA); configuration.allowedSuiteBCiphers.set( WifiConfiguration.SuiteBCipher.ECDHE_RSA); configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B); configuration.enterpriseConfig = mWpa3EnterpriseConfig; } else if (mIsEnhancedOpen) { // OWE network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OWE); // PMF mandatory. configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE); } else { // Open network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN); } } Loading @@ -330,7 +298,6 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc */ private WifiConfiguration buildWifiConfiguration() { final WifiConfiguration wifiConfiguration = new WifiConfiguration(); setDefaultsInWifiConfiguration(wifiConfiguration); // WifiConfiguration.SSID needs quotes around unicode SSID. if (mSsidPatternMatcher.getType() == PatternMatcher.PATTERN_LITERAL) { wifiConfiguration.SSID = "\"" + mSsidPatternMatcher.getPath() + "\""; Loading wifi/java/android/net/wifi/WifiNetworkSuggestion.java +6 −39 Original line number Diff line number Diff line Loading @@ -303,58 +303,26 @@ public final class WifiNetworkSuggestion implements Parcelable { return this; } /** * Set defaults for the various low level credential type fields in the newly created * WifiConfiguration object. * * See {@link com.android.server.wifi.WifiConfigManager#setDefaultsInWifiConfiguration( * WifiConfiguration)}. * * @param configuration provided WifiConfiguration object. */ private static void setDefaultsInWifiConfiguration( @NonNull WifiConfiguration configuration) { configuration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); configuration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); configuration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); } private void setSecurityParamsInWifiConfiguration( @NonNull WifiConfiguration configuration) { if (!TextUtils.isEmpty(mWpa2PskPassphrase)) { // WPA-PSK network. configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK); // WifiConfiguration.preSharedKey needs quotes around ASCII password. configuration.preSharedKey = "\"" + mWpa2PskPassphrase + "\""; } else if (!TextUtils.isEmpty(mWpa3SaePassphrase)) { // WPA3-SAE network. configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SAE); // PMF mandatory for SAE. configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE); // WifiConfiguration.preSharedKey needs quotes around ASCII password. configuration.preSharedKey = "\"" + mWpa3SaePassphrase + "\""; } else if (mWpa2EnterpriseConfig != null) { // WPA-EAP network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP); configuration.enterpriseConfig = mWpa2EnterpriseConfig; } else if (mWpa3EnterpriseConfig != null) { // WPA3-SuiteB network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256); // TODO (b/113878056): Verify these params once we verify SuiteB configuration. configuration.allowedGroupManagementCiphers.set( WifiConfiguration.GroupMgmtCipher.BIP_GMAC_256); configuration.allowedSuiteBCiphers.set( WifiConfiguration.SuiteBCipher.ECDHE_ECDSA); configuration.allowedSuiteBCiphers.set( WifiConfiguration.SuiteBCipher.ECDHE_RSA); configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B); configuration.enterpriseConfig = mWpa3EnterpriseConfig; } else if (mIsEnhancedOpen) { // OWE network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OWE); // PMF mandatory. configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE); } else { // Open network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN); } } Loading @@ -364,7 +332,6 @@ public final class WifiNetworkSuggestion implements Parcelable { */ private WifiConfiguration buildWifiConfiguration() { final WifiConfiguration wifiConfiguration = new WifiConfiguration(); setDefaultsInWifiConfiguration(wifiConfiguration); // WifiConfiguration.SSID needs quotes around unicode SSID. wifiConfiguration.SSID = "\"" + mSsid + "\""; if (mBssid != null) { Loading wifi/java/android/net/wifi/WifiScanner.java +12 −1 Original line number Diff line number Diff line Loading @@ -259,8 +259,17 @@ public class WifiScanner { * {@hide} */ @SystemApi @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean ignoreLocationSettings; /** * This scan request will be hidden from app-ops noting for location information. This * should only be used by FLP/NLP module on the device which is using the scan results to * compute results for behalf on their clients. FLP/NLP module using this flag should ensure * that they note in app-ops the eventual delivery of location information computed using * these results to their client . * {@hide} */ @SystemApi public boolean hideFromAppOps; /** Implement the Parcelable interface {@hide} */ public int describeContents() { Loading @@ -279,6 +288,7 @@ public class WifiScanner { dest.writeInt(isPnoScan ? 1 : 0); dest.writeInt(type); dest.writeInt(ignoreLocationSettings ? 1 : 0); dest.writeInt(hideFromAppOps ? 1 : 0); if (channels != null) { dest.writeInt(channels.length); for (int i = 0; i < channels.length; i++) { Loading Loading @@ -314,6 +324,7 @@ public class WifiScanner { settings.isPnoScan = in.readInt() == 1; settings.type = in.readInt(); settings.ignoreLocationSettings = in.readInt() == 1; settings.hideFromAppOps = in.readInt() == 1; int num_channels = in.readInt(); settings.channels = new ChannelSpec[num_channels]; for (int i = 0; i < num_channels; i++) { Loading Loading
api/system-current.txt +2 −1 Original line number Diff line number Diff line Loading @@ -4851,7 +4851,8 @@ package android.net.wifi { ctor public WifiScanner.ScanSettings(); field public int band; field public android.net.wifi.WifiScanner.ChannelSpec[] channels; field @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean ignoreLocationSettings; field public boolean hideFromAppOps; field public boolean ignoreLocationSettings; field public int maxPeriodInMs; field public int maxScansToCache; field public int numBssidsPerScan; Loading
wifi/java/android/net/wifi/WifiConfiguration.java +87 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.net.wifi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.SystemApi; import android.annotation.UnsupportedAppUsage; Loading @@ -41,6 +42,8 @@ import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Arrays; import java.util.BitSet; import java.util.HashMap; Loading Loading @@ -339,6 +342,90 @@ public class WifiConfiguration implements Parcelable { public static final String[] strings = { "current", "disabled", "enabled" }; } /** * Security types we support. */ /** @hide */ public static final int SECURITY_TYPE_OPEN = 0; /** @hide */ public static final int SECURITY_TYPE_WEP = 1; /** @hide */ public static final int SECURITY_TYPE_PSK = 2; /** @hide */ public static final int SECURITY_TYPE_EAP = 3; /** @hide */ public static final int SECURITY_TYPE_SAE = 4; /** @hide */ public static final int SECURITY_TYPE_EAP_SUITE_B = 5; /** @hide */ public static final int SECURITY_TYPE_OWE = 6; /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(prefix = { "SECURITY_TYPE_" }, value = { SECURITY_TYPE_OPEN, SECURITY_TYPE_WEP, SECURITY_TYPE_PSK, SECURITY_TYPE_EAP, SECURITY_TYPE_SAE, SECURITY_TYPE_EAP_SUITE_B, SECURITY_TYPE_OWE }) public @interface SecurityType {} /** * @hide * Set security params (sets the various bitsets exposed in WifiConfiguration). * * @param securityType One of the security types from {@link SecurityType}. */ 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: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); break; case SECURITY_TYPE_WEP: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); break; case SECURITY_TYPE_PSK: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); break; case SECURITY_TYPE_EAP: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); break; case SECURITY_TYPE_SAE: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SAE); requirePMF = true; break; case SECURITY_TYPE_EAP_SUITE_B: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192); allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256); allowedGroupManagementCiphers.set(WifiConfiguration.GroupMgmtCipher.BIP_GMAC_256); allowedSuiteBCiphers.set(WifiConfiguration.SuiteBCipher.ECDHE_ECDSA); allowedSuiteBCiphers.set(WifiConfiguration.SuiteBCipher.ECDHE_RSA); requirePMF = true; break; case SECURITY_TYPE_OWE: allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OWE); requirePMF = true; break; default: throw new IllegalArgumentException("unknown security type " + securityType); } } /** @hide */ public static final int UNKNOWN_UID = -1; Loading
wifi/java/android/net/wifi/WifiNetworkSpecifier.java +6 −39 Original line number Diff line number Diff line Loading @@ -269,58 +269,26 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc } /** * Set defaults for the various low level credential type fields in the newly created * WifiConfiguration object. * * See {@link com.android.server.wifi.WifiConfigManager#setDefaultsInWifiConfiguration( * WifiConfiguration)}. * * @param configuration provided WifiConfiguration object. */ private static void setDefaultsInWifiConfiguration( @NonNull WifiConfiguration configuration) { configuration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); configuration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); configuration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); } private void setSecurityParamsInWifiConfiguration( @NonNull WifiConfiguration configuration) { if (!TextUtils.isEmpty(mWpa2PskPassphrase)) { // WPA-PSK network. configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK); // WifiConfiguration.preSharedKey needs quotes around ASCII password. configuration.preSharedKey = "\"" + mWpa2PskPassphrase + "\""; } else if (!TextUtils.isEmpty(mWpa3SaePassphrase)) { // WPA3-SAE network. configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SAE); // PMF mandatory for SAE. configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE); // WifiConfiguration.preSharedKey needs quotes around ASCII password. configuration.preSharedKey = "\"" + mWpa3SaePassphrase + "\""; } else if (mWpa2EnterpriseConfig != null) { // WPA-EAP network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP); configuration.enterpriseConfig = mWpa2EnterpriseConfig; } else if (mWpa3EnterpriseConfig != null) { // WPA3-SuiteB network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256); // TODO (b/113878056): Verify these params once we verify SuiteB configuration. configuration.allowedGroupManagementCiphers.set( WifiConfiguration.GroupMgmtCipher.BIP_GMAC_256); configuration.allowedSuiteBCiphers.set( WifiConfiguration.SuiteBCipher.ECDHE_ECDSA); configuration.allowedSuiteBCiphers.set( WifiConfiguration.SuiteBCipher.ECDHE_RSA); configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B); configuration.enterpriseConfig = mWpa3EnterpriseConfig; } else if (mIsEnhancedOpen) { // OWE network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OWE); // PMF mandatory. configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE); } else { // Open network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN); } } Loading @@ -330,7 +298,6 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc */ private WifiConfiguration buildWifiConfiguration() { final WifiConfiguration wifiConfiguration = new WifiConfiguration(); setDefaultsInWifiConfiguration(wifiConfiguration); // WifiConfiguration.SSID needs quotes around unicode SSID. if (mSsidPatternMatcher.getType() == PatternMatcher.PATTERN_LITERAL) { wifiConfiguration.SSID = "\"" + mSsidPatternMatcher.getPath() + "\""; Loading
wifi/java/android/net/wifi/WifiNetworkSuggestion.java +6 −39 Original line number Diff line number Diff line Loading @@ -303,58 +303,26 @@ public final class WifiNetworkSuggestion implements Parcelable { return this; } /** * Set defaults for the various low level credential type fields in the newly created * WifiConfiguration object. * * See {@link com.android.server.wifi.WifiConfigManager#setDefaultsInWifiConfiguration( * WifiConfiguration)}. * * @param configuration provided WifiConfiguration object. */ private static void setDefaultsInWifiConfiguration( @NonNull WifiConfiguration configuration) { configuration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); configuration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); configuration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); } private void setSecurityParamsInWifiConfiguration( @NonNull WifiConfiguration configuration) { if (!TextUtils.isEmpty(mWpa2PskPassphrase)) { // WPA-PSK network. configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK); // WifiConfiguration.preSharedKey needs quotes around ASCII password. configuration.preSharedKey = "\"" + mWpa2PskPassphrase + "\""; } else if (!TextUtils.isEmpty(mWpa3SaePassphrase)) { // WPA3-SAE network. configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SAE); // PMF mandatory for SAE. configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE); // WifiConfiguration.preSharedKey needs quotes around ASCII password. configuration.preSharedKey = "\"" + mWpa3SaePassphrase + "\""; } else if (mWpa2EnterpriseConfig != null) { // WPA-EAP network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP); configuration.enterpriseConfig = mWpa2EnterpriseConfig; } else if (mWpa3EnterpriseConfig != null) { // WPA3-SuiteB network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192); configuration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256); // TODO (b/113878056): Verify these params once we verify SuiteB configuration. configuration.allowedGroupManagementCiphers.set( WifiConfiguration.GroupMgmtCipher.BIP_GMAC_256); configuration.allowedSuiteBCiphers.set( WifiConfiguration.SuiteBCipher.ECDHE_ECDSA); configuration.allowedSuiteBCiphers.set( WifiConfiguration.SuiteBCipher.ECDHE_RSA); configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B); configuration.enterpriseConfig = mWpa3EnterpriseConfig; } else if (mIsEnhancedOpen) { // OWE network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OWE); // PMF mandatory. configuration.requirePMF = true; configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE); } else { // Open network configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); configuration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN); } } Loading @@ -364,7 +332,6 @@ public final class WifiNetworkSuggestion implements Parcelable { */ private WifiConfiguration buildWifiConfiguration() { final WifiConfiguration wifiConfiguration = new WifiConfiguration(); setDefaultsInWifiConfiguration(wifiConfiguration); // WifiConfiguration.SSID needs quotes around unicode SSID. wifiConfiguration.SSID = "\"" + mSsid + "\""; if (mBssid != null) { Loading
wifi/java/android/net/wifi/WifiScanner.java +12 −1 Original line number Diff line number Diff line Loading @@ -259,8 +259,17 @@ public class WifiScanner { * {@hide} */ @SystemApi @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean ignoreLocationSettings; /** * This scan request will be hidden from app-ops noting for location information. This * should only be used by FLP/NLP module on the device which is using the scan results to * compute results for behalf on their clients. FLP/NLP module using this flag should ensure * that they note in app-ops the eventual delivery of location information computed using * these results to their client . * {@hide} */ @SystemApi public boolean hideFromAppOps; /** Implement the Parcelable interface {@hide} */ public int describeContents() { Loading @@ -279,6 +288,7 @@ public class WifiScanner { dest.writeInt(isPnoScan ? 1 : 0); dest.writeInt(type); dest.writeInt(ignoreLocationSettings ? 1 : 0); dest.writeInt(hideFromAppOps ? 1 : 0); if (channels != null) { dest.writeInt(channels.length); for (int i = 0; i < channels.length; i++) { Loading Loading @@ -314,6 +324,7 @@ public class WifiScanner { settings.isPnoScan = in.readInt() == 1; settings.type = in.readInt(); settings.ignoreLocationSettings = in.readInt() == 1; settings.hideFromAppOps = in.readInt() == 1; int num_channels = in.readInt(); settings.channels = new ChannelSpec[num_channels]; for (int i = 0; i < num_channels; i++) { Loading