From 5d3928d622ea48548a99d7d982faae5fd428d7d6 Mon Sep 17 00:00:00 2001 From: Sunil Ravi Date: Fri, 10 Feb 2023 20:59:26 +0000 Subject: [PATCH] wifi: Add BSSID of the AP in PMKSA cache added event Deprecated onPmkCacheAdded() callback function and added a new onPmkSaCacheAdded() callback function to include the connected AP BSSID. This will help framework to include BSSID information as a key to store PMKSA. Bug: 260042356 Test: atest vts Test: Manual - Tested WPA3 STA - AP connection multiple times and confirmed that PMKSA cache is added and supplicant is using the PMKSA cache entries for open authentication. Change-Id: I9fc7da7f4ba60e45ddeee9a41654c74f128fe3d6 --- .../ISupplicantStaIfaceCallback.aidl | 4 ++ .../wifi/supplicant/PmkSaCacheData.aidl | 40 +++++++++++++++++++ .../ISupplicantStaIfaceCallback.aidl | 11 +++++ .../wifi/supplicant/PmkSaCacheData.aidl | 37 +++++++++++++++++ .../supplicant_sta_iface_aidl_test.cpp | 5 +++ 5 files changed, 97 insertions(+) create mode 100644 wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/PmkSaCacheData.aidl create mode 100644 wifi/supplicant/aidl/android/hardware/wifi/supplicant/PmkSaCacheData.aidl diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl index cabe167fa0..1c232237ea 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl @@ -59,6 +59,9 @@ interface ISupplicantStaIfaceCallback { oneway void onNetworkAdded(in int id); oneway void onNetworkNotFound(in byte[] ssid); oneway void onNetworkRemoved(in int id); + /** + * @deprecated use onPmkSaCacheAdded() instead. + */ oneway void onPmkCacheAdded(in long expirationTimeInSec, in byte[] serializedEntry); /** * @deprecated This callback is deprecated from AIDL v2, newer HAL should call onSupplicantStateChanged() @@ -75,6 +78,7 @@ interface ISupplicantStaIfaceCallback { oneway void onBssFrequencyChanged(in int frequencyMhz); oneway void onSupplicantStateChanged(in android.hardware.wifi.supplicant.SupplicantStateChangeData stateChangeData); oneway void onQosPolicyResponseForScs(in android.hardware.wifi.supplicant.QosPolicyScsResponseStatus[] qosPolicyScsResponseStatus); + oneway void onPmkSaCacheAdded(in android.hardware.wifi.supplicant.PmkSaCacheData pmkSaData); @Backing(type="int") @VintfStability enum MloLinkInfoChangeReason { TID_TO_LINK_MAP = 0, diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/PmkSaCacheData.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/PmkSaCacheData.aidl new file mode 100644 index 0000000000..436d0c0931 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/PmkSaCacheData.aidl @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable PmkSaCacheData { + byte[] bssid; + long expirationTimeInSec; + byte[] serializedEntry; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl index 398bb36499..17a220ddf5 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl @@ -30,6 +30,7 @@ import android.hardware.wifi.supplicant.DppProgressCode; import android.hardware.wifi.supplicant.DppStatusErrorCode; import android.hardware.wifi.supplicant.Hs20AnqpData; import android.hardware.wifi.supplicant.OsuMethod; +import android.hardware.wifi.supplicant.PmkSaCacheData; import android.hardware.wifi.supplicant.QosPolicyData; import android.hardware.wifi.supplicant.QosPolicyScsResponseStatus; import android.hardware.wifi.supplicant.StaIfaceCallbackState; @@ -248,6 +249,8 @@ oneway interface ISupplicantStaIfaceCallback { /** * Indicates pairwise master key (PMK) cache added event. * + * @deprecated use onPmkSaCacheAdded() instead. + * * @param expirationTimeInSec expiration time in seconds * @param serializedEntry is serialized PMK cache entry, the content is * opaque for the framework and depends on the native implementation. @@ -392,4 +395,12 @@ oneway interface ISupplicantStaIfaceCallback { * @param qosPolicyScsResponseStatus[] status for each SCS id. */ void onQosPolicyResponseForScs(in QosPolicyScsResponseStatus[] qosPolicyScsResponseStatus); + + /** + * Indicates pairwise master key (PMK) cache added event. + * + * @param pmkSaData PMKSA cache entry added details. + * + */ + void onPmkSaCacheAdded(in PmkSaCacheData pmkSaData); } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PmkSaCacheData.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PmkSaCacheData.aidl new file mode 100644 index 0000000000..bc28ff5335 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PmkSaCacheData.aidl @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.wifi.supplicant; + +/** + * Details of the PMKSA cache entry that was added in supplicant. + */ +@VintfStability +parcelable PmkSaCacheData { + /** + * BSSID of the access point to which the station is associated. + */ + byte[/* 6 */] bssid; + /** + * PMK expiration time in seconds. + */ + long expirationTimeInSec; + /** + * Serialized PMK cache entry. + * The content is opaque for the framework and depends on the native implementation. + */ + byte[] serializedEntry; +} diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp b/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp index d0daf96b87..5d00485d57 100644 --- a/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp +++ b/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp @@ -234,6 +234,11 @@ class SupplicantStaIfaceCallback : public BnSupplicantStaIfaceCallback { override { return ndk::ScopedAStatus::ok(); } + ::ndk::ScopedAStatus onPmkSaCacheAdded( + const ::aidl::android::hardware::wifi::supplicant::PmkSaCacheData& /* pmkSaData */) + override { + return ndk::ScopedAStatus::ok(); + } }; class SupplicantStaIfaceAidlTest : public testing::TestWithParam {