]>
git.ipfire.org Git - thirdparty/hostap.git/blob - tests/hwsim/test_ap_ft.py
3 # Fast BSS Transition tests
4 # Copyright (c) 2013, Jouni Malinen <j@w1.fi>
6 # This software may be distributed under the terms of the BSD license.
7 # See README for more details.
12 logger
= logging
.getLogger(__name__
)
16 from wlantest
import Wlantest
19 params
= { "wpa": "2",
20 "wpa_key_mgmt": "FT-PSK",
21 "rsn_pairwise": "CCMP" }
25 params
= { "wpa": "3",
26 "wpa_key_mgmt": "WPA-PSK FT-PSK",
27 "wpa_pairwise": "TKIP",
28 "rsn_pairwise": "CCMP" }
31 def ft_params(rsn
=True, ssid
=None, passphrase
=None):
33 params
= ft_base_rsn()
35 params
= ft_base_mixed()
39 params
["wpa_passphrase"] = passphrase
41 params
["mobility_domain"] = "a1b2"
42 params
["r0_key_lifetime"] = "10000"
43 params
["pmk_r1_push"] = "1"
44 params
["reassociation_deadline"] = "1000"
47 def ft_params1(rsn
=True, ssid
=None, passphrase
=None):
48 params
= ft_params(rsn
, ssid
, passphrase
)
49 params
['nas_identifier'] = "nas1.w1.fi"
50 params
['r1_key_holder'] = "000102030405"
51 params
['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 100102030405060708090a0b0c0d0e0f",
52 "02:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f" ]
53 params
['r1kh'] = "02:00:00:00:04:00 00:01:02:03:04:06 200102030405060708090a0b0c0d0e0f"
56 def ft_params2(rsn
=True, ssid
=None, passphrase
=None):
57 params
= ft_params(rsn
, ssid
, passphrase
)
58 params
['nas_identifier'] = "nas2.w1.fi"
59 params
['r1_key_holder'] = "000102030406"
60 params
['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f",
61 "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0e0f" ]
62 params
['r1kh'] = "02:00:00:00:03:00 00:01:02:03:04:05 300102030405060708090a0b0c0d0e0f"
65 def run_roams(dev
, apdev
, ssid
, passphrase
):
66 logger
.info("Connect to first AP")
67 dev
.connect(ssid
, psk
=passphrase
, key_mgmt
="FT-PSK", proto
="WPA2",
69 if dev
.get_status_field('bssid') == apdev
[0]['bssid']:
75 hwsim_utils
.test_connectivity(dev
.ifname
, ap1
['ifname'])
77 logger
.info("Roam to the second AP")
78 dev
.roam(ap2
['bssid'])
79 if dev
.get_status_field('bssid') != ap2
['bssid']:
80 raise Exception("Did not connect to correct AP")
81 hwsim_utils
.test_connectivity(dev
.ifname
, ap2
['ifname'])
83 logger
.info("Roam back to the first AP")
84 dev
.roam(ap1
['bssid'])
85 if dev
.get_status_field('bssid') != ap1
['bssid']:
86 raise Exception("Did not connect to correct AP")
87 hwsim_utils
.test_connectivity(dev
.ifname
, ap1
['ifname'])
89 def test_ap_ft(dev
, apdev
):
94 params
= ft_params1(ssid
=ssid
, passphrase
=passphrase
)
95 hostapd
.add_ap(apdev
[0]['ifname'], params
)
96 params
= ft_params2(ssid
=ssid
, passphrase
=passphrase
)
97 hostapd
.add_ap(apdev
[1]['ifname'], params
)
99 run_roams(dev
[0], apdev
, ssid
, passphrase
)
101 def test_ap_ft_mixed(dev
, apdev
):
102 """WPA2-PSK-FT mixed-mode AP"""
103 ssid
= "test-ft-mixed"
104 passphrase
="12345678"
106 params
= ft_params1(rsn
=False, ssid
=ssid
, passphrase
=passphrase
)
107 hostapd
.add_ap(apdev
[0]['ifname'], params
)
108 params
= ft_params2(rsn
=False, ssid
=ssid
, passphrase
=passphrase
)
109 hostapd
.add_ap(apdev
[1]['ifname'], params
)
111 run_roams(dev
[0], apdev
, ssid
, passphrase
)
113 def test_ap_ft_pmf(dev
, apdev
):
114 """WPA2-PSK-FT AP with PMF"""
116 passphrase
="12345678"
118 params
= ft_params1(ssid
=ssid
, passphrase
=passphrase
)
119 params
["ieee80211w"] = "2";
120 hostapd
.add_ap(apdev
[0]['ifname'], params
)
121 params
= ft_params2(ssid
=ssid
, passphrase
=passphrase
)
122 params
["ieee80211w"] = "2";
123 hostapd
.add_ap(apdev
[1]['ifname'], params
)
125 run_roams(dev
[0], apdev
, ssid
, passphrase
)