[PATCH 08/29] 11bi: Enhanced Privacy Protection (EPP) related definitions
Sai Pratyusha Magam
smagam at qti.qualcomm.com
Thu Dec 11 05:14:22 PST 2025
As a preparation to support EPPKE authentication,
add additional definitions required to support the flow.
The definitions pertain to the following features
introduced in draft IEEE P802.11bi/D2.0:
-(Re)Association Request/Response frame Encryption
-IEEE802.1x (EAP) Utilizing Authentication farmes
-PMKSA Caching privacy
Signed-off-by: Ainy Kumari <ainy.kumari at oss.qualcomm.com>
Signed-off-by: Rohan Dutta <drohan at qti.qualcomm.com>
Signed-off-by: Sai Pratyusha Magam <smagam at qti.qualcomm.com>
---
src/common/defs.h | 7 +++++++
src/common/ieee802_11_defs.h | 5 +++++
src/common/wpa_common.c | 6 ++++++
src/common/wpa_common.h | 1 +
src/drivers/driver_nl80211.c | 2 ++
5 files changed, 21 insertions(+)
diff --git a/src/common/defs.h b/src/common/defs.h
index 0a79ba2a6..eb410386a 100644
--- a/src/common/defs.h
+++ b/src/common/defs.h
@@ -52,6 +52,7 @@
#define WPA_KEY_MGMT_SAE_EXT_KEY BIT(26)
#define WPA_KEY_MGMT_FT_SAE_EXT_KEY BIT(27)
#define WPA_KEY_MGMT_IEEE8021X_SHA384 BIT(28)
+#define WPA_KEY_MGMT_EPPKE BIT(29)
#define WPA_KEY_MGMT_FT (WPA_KEY_MGMT_FT_PSK | \
@@ -210,12 +211,18 @@ static inline int wpa_key_mgmt_cross_akm(int akm)
#define WPA_AUTH_ALG_SAE BIT(4)
#define WPA_AUTH_ALG_FILS BIT(5)
#define WPA_AUTH_ALG_FILS_SK_PFS BIT(6)
+#define WPA_AUTH_ALG_EPPKE BIT(10)
static inline int wpa_auth_alg_fils(int alg)
{
return !!(alg & (WPA_AUTH_ALG_FILS | WPA_AUTH_ALG_FILS_SK_PFS));
}
+static inline int wpa_auth_alg_eppke(int alg)
+{
+ return !!(alg & WPA_AUTH_ALG_EPPKE);
+}
+
enum wpa_alg {
WPA_ALG_NONE,
WPA_ALG_WEP,
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
index 09666304a..1dd8e7992 100644
--- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h
@@ -98,6 +98,8 @@
#define WLAN_AUTH_FILS_SK_PFS 5
#define WLAN_AUTH_FILS_PK 6
#define WLAN_AUTH_PASN 7
+#define WLAN_AUTH_1X_UTILIZING_AUTHENTICATION_FRAMES 8
+#define WLAN_AUTH_EPPKE 9
#define WLAN_AUTH_LEAP 128
#define WLAN_AUTH_CHALLENGE_LEN 128
@@ -625,6 +627,9 @@
#define WLAN_RSNX_CAPAB_URNM_MFPR 15
#define WLAN_RSNX_CAPAB_KEK_IN_PASN 18
#define WLAN_RSNX_CAPAB_SSID_PROTECTION 21
+#define WLAN_RSNX_CAPAB_ASSOC_FRAME_ENCRYPTION 27
+#define WLAN_RSNX_CAPAB_1X_UTILIZING_AUTHENTICATION_FRAMES 28
+#define WLAN_RSNX_CAPAB_PMKSA_CACHING_PRIVACY 29
#define WLAN_RSNX_CAPAB_SAE_PW_ID_CHANGE 34
/* Multiple BSSID element subelements */
diff --git a/src/common/wpa_common.c b/src/common/wpa_common.c
index 5f43d2d60..0443cdcfe 100644
--- a/src/common/wpa_common.c
+++ b/src/common/wpa_common.c
@@ -262,6 +262,8 @@ int rsn_key_mgmt_to_wpa_akm(u32 akm_suite)
case RSN_AUTH_KEY_MGMT_PASN:
return WPA_KEY_MGMT_PASN;
#endif /* CONFIG_PASN */
+ case RSN_AUTH_KEY_MGMT_EPPKE:
+ return WPA_KEY_MGMT_EPPKE;
default:
return 0;
}
@@ -2928,6 +2930,8 @@ const char * wpa_key_mgmt_txt(int key_mgmt, int proto)
return "PASN";
case WPA_KEY_MGMT_IEEE8021X_SHA384:
return "WPA2-EAP-SHA384";
+ case WPA_KEY_MGMT_EPPKE:
+ return "EPPKE";
default:
return "UNKNOWN";
}
@@ -2982,6 +2986,8 @@ u32 wpa_akm_to_suite(int akm)
if (akm & WPA_KEY_MGMT_PASN)
return RSN_AUTH_KEY_MGMT_PASN;
#endif /* CONFIG_PASN */
+ if (akm & WPA_KEY_MGMT_EPPKE)
+ return RSN_AUTH_KEY_MGMT_EPPKE;
return 0;
}
diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
index 95d97b6ac..7455c106f 100644
--- a/src/common/wpa_common.h
+++ b/src/common/wpa_common.h
@@ -92,6 +92,7 @@ WPA_CIPHER_BIP_CMAC_256)
#define RSN_AUTH_KEY_MGMT_802_1X_SHA384 RSN_SELECTOR(0x00, 0x0f, 0xac, 23)
#define RSN_AUTH_KEY_MGMT_SAE_EXT_KEY RSN_SELECTOR(0x00, 0x0f, 0xac, 24)
#define RSN_AUTH_KEY_MGMT_FT_SAE_EXT_KEY RSN_SELECTOR(0x00, 0x0f, 0xac, 25)
+#define RSN_AUTH_KEY_MGMT_EPPKE RSN_SELECTOR(0x00, 0x0f, 0xac, 29)
#define RSN_AUTH_KEY_MGMT_CCKM RSN_SELECTOR(0x00, 0x40, 0x96, 0x00)
#define RSN_AUTH_KEY_MGMT_DPP RSN_SELECTOR(0x50, 0x6f, 0x9a, 0x02)
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index bf9aeb22b..09df1d0e4 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -4276,6 +4276,8 @@ static enum nl80211_auth_type get_nl_auth_type(int wpa_auth_alg)
return NL80211_AUTHTYPE_FILS_SK;
if (wpa_auth_alg & WPA_AUTH_ALG_FILS_SK_PFS)
return NL80211_AUTHTYPE_FILS_SK_PFS;
+ if (wpa_auth_alg & WPA_AUTH_ALG_EPPKE)
+ return NL80211_AUTHTYPE_EPPKE;
return NL80211_AUTHTYPE_MAX + 1;
}
--
2.34.1
More information about the Hostap
mailing list