]> git.ipfire.org Git - thirdparty/hostap.git/blame - tests/hwsim/test_wpas_ap.py
tests: Remove unnecessary interpreter line from most python files
[thirdparty/hostap.git] / tests / hwsim / test_wpas_ap.py
CommitLineData
e1a5e09a
JM
1# wpa_supplicant AP mode tests
2# Copyright (c) 2014, Qualcomm Atheros, Inc.
3#
4# This software may be distributed under the terms of the BSD license.
5# See README for more details.
6
7import time
8import logging
9logger = logging.getLogger()
10
11import hwsim_utils
12
13def test_wpas_ap_open(dev):
14 """wpa_supplicant AP mode - open network"""
15 id = dev[0].add_network()
16 dev[0].set_network(id, "mode", "2")
17 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
18 dev[0].set_network(id, "key_mgmt", "NONE")
19 dev[0].set_network(id, "frequency", "2412")
20 dev[0].set_network(id, "scan_freq", "2412")
21 dev[0].select_network(id)
22
23 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
24 dev[2].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
25 hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
26 hwsim_utils.test_connectivity(dev[1].ifname, dev[2].ifname)
27
28 addr1 = dev[1].p2p_interface_addr()
29 addr2 = dev[2].p2p_interface_addr()
30 addrs = [ addr1, addr2 ]
31 sta = dev[0].get_sta(None)
32 if sta['addr'] not in addrs:
33 raise Exception("Unexpected STA address")
34 sta1 = dev[0].get_sta(sta['addr'])
35 if sta1['addr'] not in addrs:
36 raise Exception("Unexpected STA address")
37 sta2 = dev[0].get_sta(sta['addr'], next=True)
38 if sta2['addr'] not in addrs:
39 raise Exception("Unexpected STA2 address")
40 sta3 = dev[0].get_sta(sta2['addr'], next=True)
41 if len(sta3) != 0:
42 raise Exception("Unexpected STA iteration result (did not stop)")
43
44 status = dev[0].get_status()
45 if status['mode'] != "AP":
46 raise Exception("Unexpected status mode")
47
48 dev[1].dump_monitor()
49 dev[2].dump_monitor()
50 dev[0].request("DEAUTHENTICATE " + addr1)
51 dev[0].request("DISASSOCIATE " + addr2)
52 ev = dev[1].wait_event(["CTRL-EVENT-DISCONNECTED"])
53 if ev is None:
54 raise Exception("Disconnection timed out")
55 ev = dev[2].wait_event(["CTRL-EVENT-DISCONNECTED"])
56 if ev is None:
57 raise Exception("Disconnection timed out")
58 ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"])
59 if ev is None:
60 raise Exception("Reconnection timed out")
61 ev = dev[2].wait_event(["CTRL-EVENT-CONNECTED"])
62 if ev is None:
63 raise Exception("Reconnection timed out")
64
65def test_wpas_ap_wep(dev):
66 """wpa_supplicant AP mode - WEP"""
67 id = dev[0].add_network()
68 dev[0].set_network(id, "mode", "2")
69 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wep")
70 dev[0].set_network(id, "key_mgmt", "NONE")
71 dev[0].set_network(id, "frequency", "2412")
72 dev[0].set_network(id, "scan_freq", "2412")
73 dev[0].set_network_quoted(id, "wep_key0", "hello")
74 dev[0].select_network(id)
75
76 dev[1].connect("wpas-ap-wep", key_mgmt="NONE", wep_key0='"hello"',
77 scan_freq="2412")
78 hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
79
80def test_wpas_ap_no_ssid(dev):
81 """wpa_supplicant AP mode - invalid network configuration"""
82 id = dev[0].add_network()
83 dev[0].set_network(id, "mode", "2")
84 dev[0].set_network(id, "key_mgmt", "NONE")
85 dev[0].set_network(id, "frequency", "2412")
86 dev[0].set_network(id, "scan_freq", "2412")
87 dev[0].select_network(id)
88 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1)
89 if ev is not None:
90 raise Exception("Unexpected AP start")
91
92def test_wpas_ap_default_frequency(dev):
93 """wpa_supplicant AP mode - default frequency"""
94 id = dev[0].add_network()
95 dev[0].set_network(id, "mode", "2")
96 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
97 dev[0].set_network(id, "key_mgmt", "NONE")
98 dev[0].set_network(id, "scan_freq", "2412")
99 dev[0].select_network(id)
100 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"])
101 if ev is None:
102 raise Exception("AP failed to start")
103 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2462")
104
105def test_wpas_ap_invalid_frequency(dev):
106 """wpa_supplicant AP mode - invalid frequency configuration"""
107 id = dev[0].add_network()
108 dev[0].set_network(id, "mode", "2")
109 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
110 dev[0].set_network(id, "key_mgmt", "NONE")
111 dev[0].set_network(id, "frequency", "2413")
112 dev[0].set_network(id, "scan_freq", "2412")
113 dev[0].select_network(id)
114 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1)
115 if ev is not None:
116 raise Exception("Unexpected AP start")
117
118def test_wpas_ap_wps(dev):
119 """wpa_supplicant AP mode - WPS operations"""
120 id = dev[0].add_network()
121 dev[0].set_network(id, "mode", "2")
122 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
123 dev[0].set_network_quoted(id, "psk", "1234567890")
124 dev[0].set_network(id, "frequency", "2412")
125 dev[0].set_network(id, "scan_freq", "2412")
126 dev[0].select_network(id)
127 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"])
128 if ev is None:
129 raise Exception("AP start timeout")
130 bssid = dev[0].p2p_interface_addr()
131
132 logger.info("Test PBC mode start/stop")
133 if "FAIL" not in dev[0].request("WPS_CANCEL"):
134 raise Exception("Unexpected WPS_CANCEL success")
135 dev[0].request("WPS_PBC")
136 ev = dev[0].wait_event(["WPS-PBC-ACTIVE"])
137 if ev is None:
138 raise Exception("PBC mode start timeout")
139 if "OK" not in dev[0].request("WPS_CANCEL"):
140 raise Exception("Unexpected WPS_CANCEL failure")
141 ev = dev[0].wait_event(["WPS-TIMEOUT"])
142 if ev is None:
143 raise Exception("PBC mode disabling timeout")
144
145 logger.info("Test PBC protocol run")
146 dev[0].request("WPS_PBC")
147 ev = dev[0].wait_event(["WPS-PBC-ACTIVE"])
148 if ev is None:
149 raise Exception("PBC mode start timeout")
150 dev[1].request("WPS_PBC")
151 ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
152 if ev is None:
153 raise Exception("WPS PBC operation timed out")
154 hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
155
156 logger.info("Test AP PIN to learn configuration")
157 pin = dev[0].request("WPS_AP_PIN random")
158 if "FAIL" in pin:
159 raise Exception("Could not generate random AP PIN")
160 if pin not in dev[0].request("WPS_AP_PIN get"):
161 raise Exception("Could not fetch current AP PIN")
162 dev[2].wps_reg(bssid, pin)
163 hwsim_utils.test_connectivity(dev[1].ifname, dev[2].ifname)
164
165 dev[1].request("REMOVE_NETWORK all")
166 dev[2].request("REMOVE_NETWORK all")
167
168 logger.info("Test AP PIN operations")
169 dev[0].request("WPS_AP_PIN disable")
170 dev[0].request("WPS_AP_PIN set " + pin + " 1")
171 time.sleep(1.1)
172 if "FAIL" not in dev[0].request("WPS_AP_PIN get"):
173 raise Exception("AP PIN unexpectedly still enabled")
174
175 pin = dev[1].wps_read_pin()
176 dev[0].request("WPS_PIN any " + pin)
177 dev[1].request("WPS_PIN any " + pin)
178 ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
179 if ev is None:
180 raise Exception("Association with the AP timed out")
181 dev[1].request("REMOVE_NETWORK all")
182 dev[1].dump_monitor()
183
184 dev[0].request("WPS_AP_PIN set 12345670")
185 dev[0].dump_monitor()
186
187 runs = ("88887777", "12340000", "00000000", "12345670")
188 for pin in runs:
189 logger.info("Try AP PIN " + pin)
190 dev[2].dump_monitor()
191 dev[2].request("WPS_REG " + bssid + " " + pin)
192 ev = dev[2].wait_event(["WPS-SUCCESS", "WPS-FAIL msg"], timeout=15)
193 if ev is None:
194 raise Exception("WPS operation timed out")
195 if "WPS-SUCCESS" in ev:
196 raise Exception("WPS operation succeeded unexpectedly")
197 ev = dev[2].wait_event(["CTRL-EVENT-DISCONNECTED"])
198 if ev is None:
199 raise Exception("Timeout while waiting for disconnection")
200 dev[2].request("WPS_CANCEL")
201 dev[2].request("REMOVE_NETWORK all")
202 ev = dev[0].wait_event(["WPS-AP-SETUP-LOCKED"])
203 if ev is None:
204 raise Exception("WPS AP PIN not locked")