Search Linux Wireless

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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
<vinayak.yadawad@xxxxxxxxxxxx> 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 <vinayak.yadawad@xxxxxxxxxxxx>
> ---
> 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
>

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux