summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorHai Shalom <haishalom@google.com>2020-01-09 00:40:08 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-01-09 00:40:08 +0000
commitc0d7e7318edaf31fd921472b0c0802457eb0c754 (patch)
treec0aabb290a56924515c82dd84bd568761d8a16e7 /service
parent5f3537a700d1183ede89e215b0f1ac1b80f4ff3e (diff)
parent25f89010a9807302ecfcbbcf50e067a31ea976bc (diff)
Merge "[SAE] Add support to add SAE Authentication algorithm"
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/SupplicantStaNetworkHal.java55
-rw-r--r--service/java/com/android/server/wifi/WifiConfigManager.java2
2 files changed, 37 insertions, 20 deletions
diff --git a/service/java/com/android/server/wifi/SupplicantStaNetworkHal.java b/service/java/com/android/server/wifi/SupplicantStaNetworkHal.java
index 6f17af432..604641533 100644
--- a/service/java/com/android/server/wifi/SupplicantStaNetworkHal.java
+++ b/service/java/com/android/server/wifi/SupplicantStaNetworkHal.java
@@ -400,7 +400,6 @@ public class SupplicantStaNetworkHal {
}
/** Auth Algorithm */
if (config.allowedAuthAlgorithms.cardinality() != 0
- && isAuthAlgNeeded(config)
&& !setAuthAlg(wifiConfigurationToSupplicantAuthAlgMask(
config.allowedAuthAlgorithms))) {
Log.e(TAG, "failed to set AuthAlgorithm");
@@ -467,22 +466,6 @@ public class SupplicantStaNetworkHal {
}
/**
- * Check if Auth Alg is needed to be sent by wificonfiguration object
- * Supplicant internally sets auth_alg and is not needed by framework
- * to set the same
- */
- private boolean isAuthAlgNeeded(WifiConfiguration config) {
- BitSet keyMgmtMask = config.allowedKeyManagement;
- if (keyMgmtMask.get(WifiConfiguration.KeyMgmt.SAE)) {
- if (mVerboseLoggingEnabled) {
- Log.d(TAG, "No need to set Auth Algorithm for SAE");
- }
- return false;
- }
- return true;
- }
-
- /**
* Read network variables from wpa_supplicant into the provided WifiEnterpriseConfig object.
*
* @param ssid SSID of the network. (Used for logging purposes only)
@@ -865,6 +848,10 @@ public class SupplicantStaNetworkHal {
case WifiConfiguration.AuthAlgorithm.LEAP:
mask |= ISupplicantStaNetwork.AuthAlgMask.LEAP;
break;
+ case WifiConfiguration.AuthAlgorithm.SAE:
+ mask |= android.hardware.wifi.supplicant.V1_3.ISupplicantStaNetwork.AuthAlgMask
+ .SAE;
+ break;
default:
throw new IllegalArgumentException(
"Invalid authAlgMask bit in wificonfig: " + bit);
@@ -1106,6 +1093,9 @@ public class SupplicantStaNetworkHal {
mask = supplicantMaskValueToWifiConfigurationBitSet(
mask, ISupplicantStaNetwork.AuthAlgMask.LEAP, bitset,
WifiConfiguration.AuthAlgorithm.LEAP);
+ mask = supplicantMaskValueToWifiConfigurationBitSet(mask,
+ android.hardware.wifi.supplicant.V1_3.ISupplicantStaNetwork.AuthAlgMask
+ .SAE, bitset, WifiConfiguration.AuthAlgorithm.SAE);
if (mask != 0) {
throw new IllegalArgumentException(
"invalid auth alg mask from supplicant: " + mask);
@@ -1400,7 +1390,13 @@ public class SupplicantStaNetworkHal {
final String methodStr = "setAuthAlg";
if (!checkISupplicantStaNetworkAndLogFailure(methodStr)) return false;
try {
- SupplicantStatus status = mISupplicantStaNetwork.setAuthAlg(authAlgMask);
+ SupplicantStatus status;
+ if (null != getV1_3StaNetwork()) {
+ /* Support for SAE Authentication algorithm requires HAL v1.3 or higher */
+ status = getV1_3StaNetwork().setAuthAlg_1_3(authAlgMask);
+ } else {
+ status = mISupplicantStaNetwork.setAuthAlg(authAlgMask);
+ }
return checkStatusAndLogFailure(status, methodStr);
} catch (RemoteException e) {
handleRemoteException(e, methodStr);
@@ -2162,6 +2158,9 @@ public class SupplicantStaNetworkHal {
synchronized (mLock) {
final String methodStr = "getAuthAlg";
if (!checkISupplicantStaNetworkAndLogFailure(methodStr)) return false;
+ if (getV1_3StaNetwork() != null) {
+ return getAuthAlg_1_3();
+ }
try {
MutableBoolean statusOk = new MutableBoolean(false);
mISupplicantStaNetwork.getAuthAlg((SupplicantStatus status,
@@ -2181,6 +2180,26 @@ public class SupplicantStaNetworkHal {
}
}
+ private boolean getAuthAlg_1_3() {
+ final String methodStr = "getAuthAlg_1_3";
+ try {
+ MutableBoolean statusOk = new MutableBoolean(false);
+ getV1_3StaNetwork().getAuthAlg_1_3((SupplicantStatus status,
+ int authAlgMaskValue) -> {
+ statusOk.value = status.code == SupplicantStatusCode.SUCCESS;
+ if (statusOk.value) {
+ this.mAuthAlgMask = authAlgMaskValue;
+ } else {
+ checkStatusAndLogFailure(status, methodStr);
+ }
+ });
+ return statusOk.value;
+ } catch (RemoteException e) {
+ handleRemoteException(e, methodStr);
+ return false;
+ }
+ }
+
/** See ISupplicantStaNetwork.hal for documentation */
private boolean getGroupCipher() {
synchronized (mLock) {
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index 794f66567..541448efe 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -1129,8 +1129,6 @@ public class WifiConfigManager {
* @param configuration provided WifiConfiguration object.
*/
private void setDefaultsInWifiConfiguration(WifiConfiguration configuration) {
- configuration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
-
configuration.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
configuration.allowedProtocols.set(WifiConfiguration.Protocol.WPA);