tests: Add coverage for PASN deauthentication
Signed-off-by: Ilan Peer <ilan.peer@intel.com>
This commit is contained in:
parent
eaeec4da2d
commit
9d9b423065
1 changed files with 16 additions and 4 deletions
|
@ -46,9 +46,10 @@ def start_pasn_ap(apdev, params):
|
||||||
raise HwsimSkip("PASN not supported")
|
raise HwsimSkip("PASN not supported")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def check_pasn_ptk(dev, hapd, cipher, fail_ptk=False):
|
def check_pasn_ptk(dev, hapd, cipher, fail_ptk=False, clear_keys=True):
|
||||||
sta_ptksa = dev.get_ptksa(hapd.own_addr(), cipher)
|
sta_ptksa = dev.get_ptksa(hapd.own_addr(), cipher)
|
||||||
ap_ptksa = hapd.get_ptksa(dev.own_addr(), cipher)
|
ap_ptksa = hapd.get_ptksa(dev.own_addr(), cipher)
|
||||||
|
|
||||||
if not (sta_ptksa and ap_ptksa):
|
if not (sta_ptksa and ap_ptksa):
|
||||||
if fail_ptk:
|
if fail_ptk:
|
||||||
return
|
return
|
||||||
|
@ -61,6 +62,17 @@ def check_pasn_ptk(dev, hapd, cipher, fail_ptk=False):
|
||||||
raise Exception("TK/KDK mismatch")
|
raise Exception("TK/KDK mismatch")
|
||||||
elif fail_ptk:
|
elif fail_ptk:
|
||||||
raise Exception("TK/KDK match although key derivation should have failed")
|
raise Exception("TK/KDK match although key derivation should have failed")
|
||||||
|
elif clear_keys:
|
||||||
|
cmd = "PASN_DEAUTH bssid=%s" % hapd.own_addr()
|
||||||
|
dev.request(cmd)
|
||||||
|
|
||||||
|
# Wait a little to let the AP process the deauth
|
||||||
|
time.sleep(0.2)
|
||||||
|
|
||||||
|
sta_ptksa = dev.get_ptksa(hapd.own_addr(), cipher)
|
||||||
|
ap_ptksa = hapd.get_ptksa(dev.own_addr(), cipher)
|
||||||
|
if sta_ptksa or ap_ptksa:
|
||||||
|
raise Exception("TK/KDK not deleted as expected")
|
||||||
|
|
||||||
def check_pasn_akmp_cipher(dev, hapd, akmp="PASN", cipher="CCMP",
|
def check_pasn_akmp_cipher(dev, hapd, akmp="PASN", cipher="CCMP",
|
||||||
group="19", status=0, fail=0, nid="",
|
group="19", status=0, fail=0, nid="",
|
||||||
|
@ -293,7 +305,7 @@ def test_pasn_sae_kdk(dev, apdev):
|
||||||
dev[0].connect("test-sae", psk="12345678", key_mgmt="SAE",
|
dev[0].connect("test-sae", psk="12345678", key_mgmt="SAE",
|
||||||
scan_freq="2412")
|
scan_freq="2412")
|
||||||
|
|
||||||
check_pasn_ptk(dev[0], hapd, "CCMP")
|
check_pasn_ptk(dev[0], hapd, "CCMP", clear_keys=False)
|
||||||
finally:
|
finally:
|
||||||
dev[0].set("force_kdk_derivation", "0")
|
dev[0].set("force_kdk_derivation", "0")
|
||||||
|
|
||||||
|
@ -328,7 +340,7 @@ def check_pasn_fils_kdk(dev, apdev, params, key_mgmt):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
hwsim_utils.test_connectivity(dev[0], hapd)
|
hwsim_utils.test_connectivity(dev[0], hapd)
|
||||||
|
|
||||||
check_pasn_ptk(dev[0], hapd, "CCMP")
|
check_pasn_ptk(dev[0], hapd, "CCMP", clear_keys=False)
|
||||||
|
|
||||||
dev[0].request("DISCONNECT")
|
dev[0].request("DISCONNECT")
|
||||||
dev[0].wait_disconnected()
|
dev[0].wait_disconnected()
|
||||||
|
@ -348,7 +360,7 @@ def check_pasn_fils_kdk(dev, apdev, params, key_mgmt):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
hwsim_utils.test_connectivity(dev[0], hapd)
|
hwsim_utils.test_connectivity(dev[0], hapd)
|
||||||
|
|
||||||
check_pasn_ptk(dev[0], hapd, "CCMP")
|
check_pasn_ptk(dev[0], hapd, "CCMP", clear_keys=False)
|
||||||
finally:
|
finally:
|
||||||
dev[0].set("force_kdk_derivation", "0")
|
dev[0].set("force_kdk_derivation", "0")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue