tests: sigma_dut controlled STA and beacon protection
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
431e5d5819
commit
14ee49c24b
2 changed files with 85 additions and 49 deletions
|
@ -927,58 +927,11 @@ def mac80211_read_key(keydir):
|
|||
pass
|
||||
return vals
|
||||
|
||||
def test_ap_pmf_beacon_protection_bip(dev, apdev):
|
||||
"""WPA2-PSK Beacon protection (BIP)"""
|
||||
"""WPA2-PSK AP with PMF required and Beacon protection enabled (BIP)"""
|
||||
run_ap_pmf_beacon_protection(dev, apdev, "AES-128-CMAC")
|
||||
|
||||
def test_ap_pmf_beacon_protection_bip_cmac_256(dev, apdev):
|
||||
"""WPA2-PSK Beacon protection (BIP-CMAC-256)"""
|
||||
run_ap_pmf_beacon_protection(dev, apdev, "BIP-CMAC-256")
|
||||
|
||||
def test_ap_pmf_beacon_protection_bip_gmac_128(dev, apdev):
|
||||
"""WPA2-PSK Beacon protection (BIP-GMAC-128)"""
|
||||
run_ap_pmf_beacon_protection(dev, apdev, "BIP-GMAC-128")
|
||||
|
||||
def test_ap_pmf_beacon_protection_bip_gmac_256(dev, apdev):
|
||||
"""WPA2-PSK Beacon protection (BIP-GMAC-256)"""
|
||||
run_ap_pmf_beacon_protection(dev, apdev, "BIP-GMAC-256")
|
||||
|
||||
def run_ap_pmf_beacon_protection(dev, apdev, cipher):
|
||||
ssid = "test-beacon-prot"
|
||||
params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
|
||||
params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
|
||||
params["ieee80211w"] = "2"
|
||||
params["beacon_prot"] = "1"
|
||||
params["group_mgmt_cipher"] = cipher
|
||||
try:
|
||||
hapd = hostapd.add_ap(apdev[0], params)
|
||||
except Exception as e:
|
||||
if "Failed to enable hostapd interface" in str(e):
|
||||
raise HwsimSkip("Beacon protection not supported")
|
||||
raise
|
||||
|
||||
bssid = hapd.own_addr()
|
||||
|
||||
Wlantest.setup(hapd)
|
||||
wt = Wlantest()
|
||||
wt.flush()
|
||||
wt.add_passphrase("12345678")
|
||||
|
||||
# STA with Beacon protection enabled
|
||||
dev[0].connect(ssid, psk="12345678", ieee80211w="2", beacon_prot="1",
|
||||
key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
|
||||
|
||||
# STA with Beacon protection disabled
|
||||
dev[1].connect(ssid, psk="12345678", ieee80211w="2",
|
||||
key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
def check_mac80211_bigtk(dev, hapd):
|
||||
sta_key = None
|
||||
ap_key = None
|
||||
|
||||
phy = dev[0].get_driver_status_field("phyname")
|
||||
phy = dev.get_driver_status_field("phyname")
|
||||
keys = "/sys/kernel/debug/ieee80211/%s/keys" % phy
|
||||
try:
|
||||
for key in os.listdir(keys):
|
||||
|
@ -1034,6 +987,55 @@ def run_ap_pmf_beacon_protection(dev, apdev, cipher):
|
|||
if tx_spec < 3:
|
||||
raise Exception("AP did not update BIGTK BIPN sufficiently")
|
||||
|
||||
def test_ap_pmf_beacon_protection_bip(dev, apdev):
|
||||
"""WPA2-PSK Beacon protection (BIP)"""
|
||||
"""WPA2-PSK AP with PMF required and Beacon protection enabled (BIP)"""
|
||||
run_ap_pmf_beacon_protection(dev, apdev, "AES-128-CMAC")
|
||||
|
||||
def test_ap_pmf_beacon_protection_bip_cmac_256(dev, apdev):
|
||||
"""WPA2-PSK Beacon protection (BIP-CMAC-256)"""
|
||||
run_ap_pmf_beacon_protection(dev, apdev, "BIP-CMAC-256")
|
||||
|
||||
def test_ap_pmf_beacon_protection_bip_gmac_128(dev, apdev):
|
||||
"""WPA2-PSK Beacon protection (BIP-GMAC-128)"""
|
||||
run_ap_pmf_beacon_protection(dev, apdev, "BIP-GMAC-128")
|
||||
|
||||
def test_ap_pmf_beacon_protection_bip_gmac_256(dev, apdev):
|
||||
"""WPA2-PSK Beacon protection (BIP-GMAC-256)"""
|
||||
run_ap_pmf_beacon_protection(dev, apdev, "BIP-GMAC-256")
|
||||
|
||||
def run_ap_pmf_beacon_protection(dev, apdev, cipher):
|
||||
ssid = "test-beacon-prot"
|
||||
params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
|
||||
params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
|
||||
params["ieee80211w"] = "2"
|
||||
params["beacon_prot"] = "1"
|
||||
params["group_mgmt_cipher"] = cipher
|
||||
try:
|
||||
hapd = hostapd.add_ap(apdev[0], params)
|
||||
except Exception as e:
|
||||
if "Failed to enable hostapd interface" in str(e):
|
||||
raise HwsimSkip("Beacon protection not supported")
|
||||
raise
|
||||
|
||||
bssid = hapd.own_addr()
|
||||
|
||||
Wlantest.setup(hapd)
|
||||
wt = Wlantest()
|
||||
wt.flush()
|
||||
wt.add_passphrase("12345678")
|
||||
|
||||
# STA with Beacon protection enabled
|
||||
dev[0].connect(ssid, psk="12345678", ieee80211w="2", beacon_prot="1",
|
||||
key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
|
||||
|
||||
# STA with Beacon protection disabled
|
||||
dev[1].connect(ssid, psk="12345678", ieee80211w="2",
|
||||
key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
|
||||
|
||||
time.sleep(1)
|
||||
check_mac80211_bigtk(dev[0], hapd)
|
||||
|
||||
valid_bip = wt.get_bss_counter('valid_bip_mmie', bssid)
|
||||
invalid_bip = wt.get_bss_counter('invalid_bip_mmie', bssid)
|
||||
missing_bip = wt.get_bss_counter('missing_bip_mmie', bssid)
|
||||
|
|
|
@ -26,6 +26,7 @@ from test_dpp import check_dpp_capab, update_hapd_config, wait_auth_success
|
|||
from test_suite_b import check_suite_b_192_capa, suite_b_as_params, suite_b_192_rsa_ap_params
|
||||
from test_ap_eap import check_eap_capa, int_eap_server_params, check_domain_match, check_domain_suffix_match
|
||||
from test_ap_hs20 import hs20_ap_params
|
||||
from test_ap_pmf import check_mac80211_bigtk
|
||||
|
||||
def check_sigma_dut():
|
||||
if not os.path.exists("./sigma_dut"):
|
||||
|
@ -4048,3 +4049,36 @@ def run_sigma_dut_ap_channel(dev, apdev, params, channel, mode, scan_freq,
|
|||
stop_sigma_dut(sigma)
|
||||
subprocess.call(['iw', 'reg', 'set', '00'])
|
||||
dev[0].flush_scan_cache()
|
||||
|
||||
def test_sigma_dut_beacon_prot(dev, apdev):
|
||||
"""sigma_dut controlled STA and beacon protection"""
|
||||
ssid = "test-pmf-required"
|
||||
params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
|
||||
params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
|
||||
params["ieee80211w"] = "2"
|
||||
params["beacon_prot"] = "1"
|
||||
try:
|
||||
hapd = hostapd.add_ap(apdev[0], params)
|
||||
except Exception as e:
|
||||
if "Failed to enable hostapd interface" in str(e):
|
||||
raise HwsimSkip("Beacon protection not supported")
|
||||
raise
|
||||
|
||||
ifname = dev[0].ifname
|
||||
sigma = start_sigma_dut(ifname)
|
||||
|
||||
try:
|
||||
sigma_dut_cmd_check("sta_reset_default,interface,%s,prog,PMF" % ifname)
|
||||
sigma_dut_cmd_check("sta_set_ip_config,interface,%s,dhcp,0,ip,127.0.0.11,mask,255.255.255.0" % ifname)
|
||||
sigma_dut_cmd_check("sta_set_security,interface,%s,ssid,%s,type,PSK,passphrase,%s,encpType,aes-ccmp,keymgmttype,wpa2,PMF,Required,BeaconProtection,1" % (ifname, "test-pmf-required", "12345678"))
|
||||
sigma_dut_cmd_check("sta_associate,interface,%s,ssid,%s,channel,1" % (ifname, "test-pmf-required"),
|
||||
timeout=10)
|
||||
sigma_dut_wait_connected(ifname)
|
||||
|
||||
time.sleep(1)
|
||||
check_mac80211_bigtk(dev[0], hapd)
|
||||
|
||||
sigma_dut_cmd_check("sta_reset_default,interface," + ifname)
|
||||
finally:
|
||||
stop_sigma_dut(sigma)
|
||||
dev[0].set("ignore_old_scan_res", "0")
|
||||
|
|
Loading…
Reference in a new issue