os_free(bss->rsn_preauth_interfaces);
bss->rsn_preauth_interfaces = os_strdup(pos);
#endif /* CONFIG_RSN_PREAUTH */
+ } else if (os_strcmp(buf, "rsn_override_omit_rsnxe") == 0) {
+ bss->rsn_override_omit_rsnxe = atoi(pos);
} else if (os_strcmp(buf, "peerkey") == 0) {
wpa_printf(MSG_INFO,
"Line %d: Obsolete peerkey parameter ignored", line);
#rsn_override_pairwise_2
#rsn_override_mfp_2
#
+# The RSNXE is normally included if any of the extended RSN capabilities is
+# enabled/supported. When using RSN overriding, a separate RSNXOE is included
+# and it may be more interoperable to omit the RSNXE completely. This
+# configuration parameter can be used to do that.
+# 0 = Include the RSNXE if any extended RSN capability is enabled/supported
+# (default).
+# 1 = Do not include the RSNXE.
+#rsn_override_omit_rsnxe=0
+#
# Example configuration for WPA2-Personal/PMF-optional in RSNE and
# WPA3-Personal/PMF-required/MLO in override elements
#wpa_key_mgmt=WPA-PSK
if (res < 0)
return res;
pos += res;
- res = wpa_write_rsnxe(&wpa_auth->conf, pos,
- buf + sizeof(buf) - pos);
+ if (wpa_auth->conf.rsn_override_omit_rsnxe)
+ res = 0;
+ else
+ res = wpa_write_rsnxe(&wpa_auth->conf, pos,
+ buf + sizeof(buf) - pos);
if (res < 0)
return res;
pos += res;
wpas.set("rsn_overriding", "1")
wpas.connect(ssid, psk="12345678", key_mgmt="WPA-PSK-SHA256",
ieee80211w="2", scan_freq="2412")
+
+def test_rsn_override_omit_rsnxe(dev, apdev):
+ """RSN overriding with RSNXE explicitly omitted"""
+ check_sae_capab(dev[0])
+
+ ssid = "test-rsn-override"
+ params = hostapd.wpa2_params(ssid=ssid,
+ passphrase="12345678",
+ ieee80211w='1')
+ params['rsn_override_key_mgmt'] = 'SAE SAE-EXT-KEY'
+ params['rsn_override_pairwise'] = 'CCMP GCMP-256'
+ params['rsn_override_mfp'] = '2'
+ params['beacon_prot'] = '1'
+ params['sae_groups'] = '19 20'
+ params['sae_require_mfp'] = '1'
+ params['sae_pwe'] = '2'
+ params['ssid_protection'] = '1'
+ params['rsn_override_omit_rsnxe'] = '1'
+ hapd = hostapd.add_ap(apdev[0], params)
+ bssid = hapd.own_addr()
+
+ try:
+ dev[0].set("rsn_overriding", "1")
+ dev[0].scan_for_bss(bssid, freq=2412)
+ dev[0].set("sae_pwe", "2")
+ dev[0].set("sae_groups", "")
+ dev[0].connect(ssid, sae_password="12345678", key_mgmt="SAE",
+ ieee80211w="2", ssid_protection="1",
+ scan_freq="2412")
+ finally:
+ dev[0].set("sae_pwe", "0")
+ dev[0].set("rsn_overriding", "0")