tests: Additional coverage for OWE PMKSA caching
Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
8aa91282a1
commit
29ff74aef0
1 changed files with 18 additions and 5 deletions
|
@ -67,13 +67,19 @@ def test_owe_groups(dev, apdev):
|
||||||
|
|
||||||
def test_owe_pmksa_caching(dev, apdev):
|
def test_owe_pmksa_caching(dev, apdev):
|
||||||
"""Opportunistic Wireless Encryption and PMKSA caching"""
|
"""Opportunistic Wireless Encryption and PMKSA caching"""
|
||||||
run_owe_pmksa_caching(dev, apdev)
|
try:
|
||||||
|
run_owe_pmksa_caching(dev, apdev)
|
||||||
|
finally:
|
||||||
|
dev[0].set("reassoc_same_bss_optim", "0")
|
||||||
|
|
||||||
def test_owe_pmksa_caching_connect_cmd(dev, apdev):
|
def test_owe_pmksa_caching_connect_cmd(dev, apdev):
|
||||||
"""Opportunistic Wireless Encryption and PMKSA caching using cfg80211 connect command"""
|
"""Opportunistic Wireless Encryption and PMKSA caching using cfg80211 connect command"""
|
||||||
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
|
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
|
||||||
wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
|
wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
|
||||||
run_owe_pmksa_caching([wpas], apdev)
|
try:
|
||||||
|
run_owe_pmksa_caching([wpas], apdev)
|
||||||
|
finally:
|
||||||
|
wpas.set("reassoc_same_bss_optim", "0")
|
||||||
|
|
||||||
def run_owe_pmksa_caching(dev, apdev):
|
def run_owe_pmksa_caching(dev, apdev):
|
||||||
if "OWE" not in dev[0].get_capability("key_mgmt"):
|
if "OWE" not in dev[0].get_capability("key_mgmt"):
|
||||||
|
@ -85,8 +91,10 @@ def run_owe_pmksa_caching(dev, apdev):
|
||||||
hapd = hostapd.add_ap(apdev[0], params)
|
hapd = hostapd.add_ap(apdev[0], params)
|
||||||
bssid = hapd.own_addr()
|
bssid = hapd.own_addr()
|
||||||
|
|
||||||
|
dev[0].set("reassoc_same_bss_optim", "1")
|
||||||
dev[0].scan_for_bss(bssid, freq="2412")
|
dev[0].scan_for_bss(bssid, freq="2412")
|
||||||
id = dev[0].connect("owe", key_mgmt="OWE")
|
id = dev[0].connect("owe", key_mgmt="OWE")
|
||||||
|
hapd.wait_sta()
|
||||||
hwsim_utils.test_connectivity(dev[0], hapd)
|
hwsim_utils.test_connectivity(dev[0], hapd)
|
||||||
pmksa = dev[0].get_pmksa(bssid)
|
pmksa = dev[0].get_pmksa(bssid)
|
||||||
dev[0].request("DISCONNECT")
|
dev[0].request("DISCONNECT")
|
||||||
|
@ -95,6 +103,7 @@ def run_owe_pmksa_caching(dev, apdev):
|
||||||
|
|
||||||
dev[0].select_network(id, 2412)
|
dev[0].select_network(id, 2412)
|
||||||
dev[0].wait_connected()
|
dev[0].wait_connected()
|
||||||
|
hapd.wait_sta()
|
||||||
hwsim_utils.test_connectivity(dev[0], hapd)
|
hwsim_utils.test_connectivity(dev[0], hapd)
|
||||||
pmksa2 = dev[0].get_pmksa(bssid)
|
pmksa2 = dev[0].get_pmksa(bssid)
|
||||||
dev[0].request("DISCONNECT")
|
dev[0].request("DISCONNECT")
|
||||||
|
@ -106,11 +115,9 @@ def run_owe_pmksa_caching(dev, apdev):
|
||||||
|
|
||||||
dev[0].select_network(id, 2412)
|
dev[0].select_network(id, 2412)
|
||||||
dev[0].wait_connected()
|
dev[0].wait_connected()
|
||||||
|
hapd.wait_sta()
|
||||||
hwsim_utils.test_connectivity(dev[0], hapd)
|
hwsim_utils.test_connectivity(dev[0], hapd)
|
||||||
pmksa3 = dev[0].get_pmksa(bssid)
|
pmksa3 = dev[0].get_pmksa(bssid)
|
||||||
dev[0].request("DISCONNECT")
|
|
||||||
dev[0].wait_disconnected()
|
|
||||||
dev[0].dump_monitor()
|
|
||||||
|
|
||||||
if pmksa is None or pmksa2 is None or pmksa3 is None:
|
if pmksa is None or pmksa2 is None or pmksa3 is None:
|
||||||
raise Exception("PMKSA entry missing")
|
raise Exception("PMKSA entry missing")
|
||||||
|
@ -119,6 +126,12 @@ def run_owe_pmksa_caching(dev, apdev):
|
||||||
if pmksa['pmkid'] == pmksa3['pmkid']:
|
if pmksa['pmkid'] == pmksa3['pmkid']:
|
||||||
raise Exception("PMKID did not change after PMKSA cache flush")
|
raise Exception("PMKID did not change after PMKSA cache flush")
|
||||||
|
|
||||||
|
dev[0].request("REASSOCIATE")
|
||||||
|
dev[0].wait_connected()
|
||||||
|
pmksa4 = dev[0].get_pmksa(bssid)
|
||||||
|
if pmksa3['pmkid'] != pmksa4['pmkid']:
|
||||||
|
raise Exception("Unexpected PMKID change when using PMKSA caching [2]")
|
||||||
|
|
||||||
def test_owe_and_psk(dev, apdev):
|
def test_owe_and_psk(dev, apdev):
|
||||||
"""Opportunistic Wireless Encryption and WPA2-PSK enabled"""
|
"""Opportunistic Wireless Encryption and WPA2-PSK enabled"""
|
||||||
if "OWE" not in dev[0].get_capability("key_mgmt"):
|
if "OWE" not in dev[0].get_capability("key_mgmt"):
|
||||||
|
|
Loading…
Reference in a new issue