tests: RRB wildcard R0KH/R1KH pull with multiple BSSs

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2019-12-29 19:37:04 +02:00
parent a422d9b4c2
commit 0d0baf9f17

View file

@ -1348,6 +1348,84 @@ def test_ap_ft_eap_pull_wildcard(dev, apdev):
run_roams(dev[0], apdev, hapd, hapd1, ssid, passphrase, eap=True) run_roams(dev[0], apdev, hapd, hapd1, ssid, passphrase, eap=True)
def test_ap_ft_eap_pull_wildcard_multi_bss(dev, apdev, params):
"""WPA2-EAP-FT AP (pull PMK) - wildcard R0KH/R1KH with multiple BSSs"""
bssconf = os.path.join(params['logdir'],
'ap_ft_eap_pull_wildcard_multi_bss.bss.conf')
ssid = "test-ft"
passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase, discovery=True)
params['wpa_key_mgmt'] = "WPA-EAP FT-EAP"
params["ieee8021x"] = "1"
params["pmk_r1_push"] = "0"
params["r0kh"] = "ff:ff:ff:ff:ff:ff * 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
params["r1kh"] = "00:00:00:00:00:00 00:00:00:00:00:00 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
params["eap_server"] = "0"
params = dict(list(radius.items()) + list(params.items()))
hapd = hostapd.add_ap(apdev[0], params)
ifname2 = apdev[0]['ifname'] + "-2"
bssid2 = "02:00:00:00:03:01"
params['nas_identifier'] = "nas1b.w1.fi"
params['r1_key_holder'] = "000102030415"
with open(bssconf, 'w') as f:
f.write("driver=nl80211\n")
f.write("hw_mode=g\n")
f.write("channel=1\n")
f.write("ieee80211n=1\n")
f.write("interface=%s\n" % ifname2)
f.write("bssid=%s\n" % bssid2)
f.write("ctrl_interface=/var/run/hostapd\n")
for name, val in params.items():
f.write("%s=%s\n" % (name, val))
hapd2 = hostapd.add_bss(apdev[0], ifname2, bssconf)
params = ft_params2(ssid=ssid, passphrase=passphrase, discovery=True)
params['wpa_key_mgmt'] = "WPA-EAP FT-EAP"
params["ieee8021x"] = "1"
params["pmk_r1_push"] = "0"
params["r0kh"] = "ff:ff:ff:ff:ff:ff * 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
params["r1kh"] = "00:00:00:00:00:00 00:00:00:00:00:00 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
params["eap_server"] = "0"
params = dict(list(radius.items()) + list(params.items()))
hapd1 = hostapd.add_ap(apdev[1], params)
# The first iteration of the roaming test will use wildcard R0KH discovery
# and RRB sequence number synchronization while the second iteration shows
# the clean RRB exchange where those extra steps are not needed.
for i in range(2):
hapd.note("Test iteration %d" % i)
dev[0].note("Test iteration %d" % i)
id = dev[0].connect(ssid, key_mgmt="FT-EAP", eap="GPSK",
identity="gpsk user",
password="abcdefghijklmnop0123456789abcdef",
bssid=bssid2,
scan_freq="2412")
res = dev[0].get_status_field("bssid")
if res != bssid2:
raise Exception("Unexpected BSSID after initial connection: " + res)
dev[0].scan_for_bss(apdev[1]['bssid'], freq="2412")
dev[0].set_network(id, "bssid", "00:00:00:00:00:00")
dev[0].roam(apdev[1]['bssid'])
res = dev[0].get_status_field("bssid")
if res != apdev[1]['bssid']:
raise Exception("Unexpected BSSID after first roam: " + res)
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
dev[0].roam(apdev[0]['bssid'])
res = dev[0].get_status_field("bssid")
if res != apdev[0]['bssid']:
raise Exception("Unexpected BSSID after second roam: " + res)
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
dev[0].dump_monitor()
hapd.dump_monitor()
hapd2.dump_monitor()
@remote_compatible @remote_compatible
def test_ap_ft_mismatching_rrb_key_push(dev, apdev): def test_ap_ft_mismatching_rrb_key_push(dev, apdev):
"""WPA2-PSK-FT AP over DS with mismatching RRB key (push)""" """WPA2-PSK-FT AP over DS with mismatching RRB key (push)"""