diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 52ee8dfdd..dfb433773 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -1869,6 +1869,8 @@ struct wpa_driver_capa { #define WPA_DRIVER_CAPA_KEY_MGMT_FT_802_1X_SHA384 0x00200000 #define WPA_DRIVER_CAPA_KEY_MGMT_CCKM 0x00400000 #define WPA_DRIVER_CAPA_KEY_MGMT_OSEN 0x00800000 +#define WPA_DRIVER_CAPA_KEY_MGMT_SAE_EXT_KEY 0x01000000 +#define WPA_DRIVER_CAPA_KEY_MGMT_FT_SAE_EXT_KEY 0x02000000 /** Bitfield of supported key management suites */ unsigned int key_mgmt; unsigned int key_mgmt_iftype[WPA_IF_MAX]; diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c index a0803bad0..739be32a9 100644 --- a/src/drivers/driver_nl80211_capa.c +++ b/src/drivers/driver_nl80211_capa.c @@ -295,6 +295,9 @@ static unsigned int get_akm_suites_info(struct nlattr *tb) case RSN_AUTH_KEY_MGMT_FT_SAE: key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_FT_SAE; break; + case RSN_AUTH_KEY_MGMT_FT_SAE_EXT_KEY: + key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_FT_SAE_EXT_KEY; + break; case RSN_AUTH_KEY_MGMT_FT_802_1X_SHA384: key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_FT_802_1X_SHA384; break; @@ -331,6 +334,9 @@ static unsigned int get_akm_suites_info(struct nlattr *tb) case RSN_AUTH_KEY_MGMT_SAE: key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_SAE; break; + case RSN_AUTH_KEY_MGMT_SAE_EXT_KEY: + key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_SAE_EXT_KEY; + break; } } diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 2efb60c6b..d8fdf37e0 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -4333,6 +4333,12 @@ static int ctrl_iface_get_capability_key_mgmt(int res, bool strict, return pos - buf; pos += ret; } + if (key_mgmt & WPA_DRIVER_CAPA_KEY_MGMT_FT_SAE_EXT_KEY) { + ret = os_snprintf(pos, end - pos, " FT-SAE-EXT-KEY"); + if (os_snprintf_error(end - pos, ret)) + return pos - buf; + pos += ret; + } #endif /* CONFIG_SAE */ #ifdef CONFIG_SHA384 if (key_mgmt & WPA_DRIVER_CAPA_KEY_MGMT_FT_802_1X_SHA384) { @@ -4350,6 +4356,12 @@ static int ctrl_iface_get_capability_key_mgmt(int res, bool strict, return pos - buf; pos += ret; } + if (key_mgmt & WPA_DRIVER_CAPA_KEY_MGMT_SAE_EXT_KEY) { + ret = os_snprintf(pos, end - pos, " SAE-EXT-KEY"); + if (os_snprintf_error(end - pos, ret)) + return pos - buf; + pos += ret; + } #endif /* CONFIG_SAE */ #ifdef CONFIG_SHA256 if (key_mgmt & WPA_DRIVER_CAPA_KEY_MGMT_802_1X_SHA256) {