2023-11-17 08:37:44

by Jithu Jance

[permalink] [raw]
Subject: Re: [PATCH v3 1/1] wifi: nl80211: Extend del pmksa support for SAE and OWE security

Hi Johannes,

Could you please let us know whether this patch is fine. If fine, we
shall go ahead and submit the patch for wpa_supplicant as well. This
patch is useful for allowing the user space to flush PMKs generated at
firmware for the SAE/OWE offloads when a user changes
credential/removes the connection profile.

Thanks,

Jithu Jance



Jithu Jance


On Thu, Nov 9, 2023 at 6:00 PM Vinayak Yadawad
<[email protected]> wrote:
>
> Current handling of del pmksa with SSID is limited to FILS
> security. In the current change the del pmksa support is extended
> to SAE/OWE security offloads as well. For OWE/SAE offloads, the
> PMK is generated and cached at driver/FW, so user app needs the
> capability to request cache deletion based on SSID for drivers
> supporting SAE/OWE offload.
>
> Signed-off-by: Vinayak Yadawad <[email protected]>
> ---
> v1->v2: Addressed review comments for indentation
> v2->v3: Addressed review comments for version update in header
> ---
> net/wireless/nl80211.c | 27 ++++++++++++++++++++-------
> 1 file changed, 20 insertions(+), 7 deletions(-)
>
> diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
> index 569234bc2be6..8dc1c800f171 100644
> --- a/net/wireless/nl80211.c
> +++ b/net/wireless/nl80211.c
> @@ -12183,24 +12183,37 @@ static int nl80211_setdel_pmksa(struct sk_buff *skb, struct genl_info *info)
>
> memset(&pmksa, 0, sizeof(struct cfg80211_pmksa));
>
> - if (!info->attrs[NL80211_ATTR_PMKID])
> + if ((info->genlhdr->cmd == NL80211_CMD_SET_PMKSA) &&
> + (!info->attrs[NL80211_ATTR_PMKID]))
> return -EINVAL;
>
> - pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]);
> + if (info->attrs[NL80211_ATTR_PMKID])
> + pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]);
>
> if (info->attrs[NL80211_ATTR_MAC]) {
> pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
> - } else if (info->attrs[NL80211_ATTR_SSID] &&
> - info->attrs[NL80211_ATTR_FILS_CACHE_ID] &&
> - (info->genlhdr->cmd == NL80211_CMD_DEL_PMKSA ||
> + } else if (info->attrs[NL80211_ATTR_SSID]) {
> + /* SSID based pmksa flush suppported only for FILS,
> + * OWE/SAE OFFLOAD cases
> + */
> + if (info->attrs[NL80211_ATTR_FILS_CACHE_ID] &&
> + (info->genlhdr->cmd == NL80211_CMD_DEL_PMKSA ||
> info->attrs[NL80211_ATTR_PMK])) {
> + pmksa.cache_id =
> + nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]);
> + } else if ((info->genlhdr->cmd == NL80211_CMD_DEL_PMKSA) &&
> + (!wiphy_ext_feature_isset(
> + &rdev->wiphy, NL80211_EXT_FEATURE_SAE_OFFLOAD) &&
> + (!wiphy_ext_feature_isset(
> + &rdev->wiphy,NL80211_EXT_FEATURE_OWE_OFFLOAD)))){
> + return -EINVAL;
> + }
> pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]);
> pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]);
> - pmksa.cache_id =
> - nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]);
> } else {
> return -EINVAL;
> }
> +
> if (info->attrs[NL80211_ATTR_PMK]) {
> pmksa.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]);
> pmksa.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]);
> --
> 2.32.0
>


Attachments:
smime.p7s (4.11 kB)
S/MIME Cryptographic Signature