tests: WPA2-PSK and supplicant receiving unexpected EAPOL-Key frames
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
0ea870324e
commit
1759a8e3f3
1 changed files with 34 additions and 0 deletions
|
@ -685,6 +685,8 @@ def setup_psk_ext(dev, apdev, wpa_ptk_rekey=None):
|
||||||
def ext_4way_hs(hapd, dev):
|
def ext_4way_hs(hapd, dev):
|
||||||
bssid = hapd.own_addr()
|
bssid = hapd.own_addr()
|
||||||
addr = dev.own_addr()
|
addr = dev.own_addr()
|
||||||
|
first = None
|
||||||
|
last = None
|
||||||
while True:
|
while True:
|
||||||
ev = hapd.wait_event(["EAPOL-TX", "AP-STA-CONNECTED"], timeout=15)
|
ev = hapd.wait_event(["EAPOL-TX", "AP-STA-CONNECTED"], timeout=15)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
|
@ -692,6 +694,9 @@ def ext_4way_hs(hapd, dev):
|
||||||
if "AP-STA-CONNECTED" in ev:
|
if "AP-STA-CONNECTED" in ev:
|
||||||
dev.wait_connected(timeout=15)
|
dev.wait_connected(timeout=15)
|
||||||
break
|
break
|
||||||
|
if not first:
|
||||||
|
first = ev.split(' ')[2]
|
||||||
|
last = ev.split(' ')[2]
|
||||||
res = dev.request("EAPOL_RX " + bssid + " " + ev.split(' ')[2])
|
res = dev.request("EAPOL_RX " + bssid + " " + ev.split(' ')[2])
|
||||||
if "OK" not in res:
|
if "OK" not in res:
|
||||||
raise Exception("EAPOL_RX to wpa_supplicant failed")
|
raise Exception("EAPOL_RX to wpa_supplicant failed")
|
||||||
|
@ -703,12 +708,41 @@ def ext_4way_hs(hapd, dev):
|
||||||
res = hapd.request("EAPOL_RX " + addr + " " + ev.split(' ')[2])
|
res = hapd.request("EAPOL_RX " + addr + " " + ev.split(' ')[2])
|
||||||
if "OK" not in res:
|
if "OK" not in res:
|
||||||
raise Exception("EAPOL_RX to hostapd failed")
|
raise Exception("EAPOL_RX to hostapd failed")
|
||||||
|
return first, last
|
||||||
|
|
||||||
def test_ap_wpa2_psk_ext(dev, apdev):
|
def test_ap_wpa2_psk_ext(dev, apdev):
|
||||||
"""WPA2-PSK AP using external EAPOL I/O"""
|
"""WPA2-PSK AP using external EAPOL I/O"""
|
||||||
hapd = setup_psk_ext(dev[0], apdev[0])
|
hapd = setup_psk_ext(dev[0], apdev[0])
|
||||||
ext_4way_hs(hapd, dev[0])
|
ext_4way_hs(hapd, dev[0])
|
||||||
|
|
||||||
|
def test_ap_wpa2_psk_unexpected(dev, apdev):
|
||||||
|
"""WPA2-PSK and supplicant receiving unexpected EAPOL-Key frames"""
|
||||||
|
hapd = setup_psk_ext(dev[0], apdev[0])
|
||||||
|
first, last = ext_4way_hs(hapd, dev[0])
|
||||||
|
|
||||||
|
# Not associated - Delay processing of received EAPOL frame (state=COMPLETED
|
||||||
|
# bssid=02:00:00:00:03:00)
|
||||||
|
other = "02:11:22:33:44:55"
|
||||||
|
res = dev[0].request("EAPOL_RX " + other + " " + first)
|
||||||
|
if "OK" not in res:
|
||||||
|
raise Exception("EAPOL_RX to wpa_supplicant failed")
|
||||||
|
|
||||||
|
# WPA: EAPOL-Key Replay Counter did not increase - dropping packet
|
||||||
|
bssid = hapd.own_addr()
|
||||||
|
res = dev[0].request("EAPOL_RX " + bssid + " " + last)
|
||||||
|
if "OK" not in res:
|
||||||
|
raise Exception("EAPOL_RX to wpa_supplicant failed")
|
||||||
|
|
||||||
|
# WPA: Invalid EAPOL-Key MIC - dropping packet
|
||||||
|
msg = last[0:18] + '01' + last[20:]
|
||||||
|
res = dev[0].request("EAPOL_RX " + bssid + " " + msg)
|
||||||
|
if "OK" not in res:
|
||||||
|
raise Exception("EAPOL_RX to wpa_supplicant failed")
|
||||||
|
|
||||||
|
ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=12)
|
||||||
|
if ev is not None:
|
||||||
|
raise Exception("Unexpected disconnection")
|
||||||
|
|
||||||
def test_ap_wpa2_psk_ext_retry_msg_3(dev, apdev):
|
def test_ap_wpa2_psk_ext_retry_msg_3(dev, apdev):
|
||||||
"""WPA2-PSK AP using external EAPOL I/O and retry for EAPOL-Key msg 3/4"""
|
"""WPA2-PSK AP using external EAPOL I/O and retry for EAPOL-Key msg 3/4"""
|
||||||
hapd = setup_psk_ext(dev[0], apdev[0])
|
hapd = setup_psk_ext(dev[0], apdev[0])
|
||||||
|
|
Loading…
Reference in a new issue