sta.request("DISCONNECT")
if check_disconnect:
hap = ap.get_instance()
- ev = hap.wait_event([ "AP-STA-DISCONNECTED" ], timeout=10)
+ ev = hap.wait_event(["AP-STA-DISCONNECTED"], timeout=10)
if ev is None:
raise Exception("No disconnection event received from %s" % ap.get_ssid())
return None
return res.splitlines()
- def configure_session(self, sid, new_iface, old_iface = None):
+ def configure_session(self, sid, new_iface, old_iface=None):
"""Calls session_set for a number of parameters some of which are stored
in "self" while others are passed to this function explicitly. If
old_iface is None, current iface is used; if old_iface is an empty
return s
def send_test_session_setup_request(self, fsts_id,
- additional_parameter = None):
+ additional_parameter=None):
request = "FST-MANAGER TEST_REQUEST SEND_SETUP_REQUEST " + fsts_id
if additional_parameter is not None:
request += " " + additional_parameter
return s
def send_test_session_setup_response(self, fsts_id,
- response, additional_parameter = None):
+ response, additional_parameter=None):
request = "FST-MANAGER TEST_REQUEST SEND_SETUP_RESPONSE " + fsts_id + " " + response
if additional_parameter is not None:
request += " " + additional_parameter
s = self.grequest("FST-MANAGER SESSION_INITIATE"+ strsid)
if not s.startswith('OK'):
raise Exception("Cannot initiate fst session: %s" % s)
- ev = self.peer_obj.wait_gevent([ "FST-EVENT-SESSION" ], timeout=5)
+ ev = self.peer_obj.wait_gevent(["FST-EVENT-SESSION"], timeout=5)
if ev is None:
raise Exception("No FST-EVENT-SESSION received")
# We got FST event
raise Exception("Cannot transfer fst session: %s" % s)
result = ''
while result == '':
- ev = self.peer_obj.wait_gevent([ "FST-EVENT-SESSION" ], timeout=5)
+ ev = self.peer_obj.wait_gevent(["FST-EVENT-SESSION"], timeout=5)
if ev is None:
raise Exception("Missing session transfer event")
# We got FST event. We expect TRANSITION_CONFIRMED state and then
return result
def wait_for_tear_down(self):
- ev = self.wait_gevent([ "FST-EVENT-SESSION" ], timeout=5)
+ ev = self.wait_gevent(["FST-EVENT-SESSION"], timeout=5)
if ev is None:
raise Exception("No FST-EVENT-SESSION received")
# We got FST event
#
# FstAP class
#
-class FstAP (FstDevice):
+class FstAP(FstDevice):
def __init__(self, iface, ssid, mode, chan, fst_group, fst_pri,
fst_llt=None, rsn=False):
"""If fst_group is empty, then FST parameters will not be set
params['wpa_key_mgmt'] = 'WPA-PSK'
params['rsn_pairwise'] = 'CCMP'
params['wpa_passphrase'] = '12345678'
- self.hapd=hostapd.add_ap(self.iface, params)
+ self.hapd = hostapd.add_ap(self.iface, params)
if not self.hapd.ping():
raise Exception("Could not ping FST hostapd")
self.reg_ctrl.start()
# Maybe station is not connected?
addr = None
else:
- addr=sta['addr']
+ addr = sta['addr']
return addr
def grequest(self, req):
#
# FstSTA class
#
-class FstSTA (FstDevice):
+class FstSTA(FstDevice):
def __init__(self, iface, fst_group, fst_pri, fst_llt=None, rsn=False):
"""If fst_group is empty, then FST parameters will not be set
If fst_llt is empty, the parameter will not be set and the default value
h.connect(ssid, **kwargs)
self.connected = ap
if check_connection:
- ev = ap.wait_event([ "AP-STA-CONNECTED" ], timeout=10)
+ ev = ap.wait_event(["AP-STA-CONNECTED"], timeout=10)
if ev is None:
self.connected = None
raise Exception("No connection event received from %s" % ssid)
h.request("DISCONNECT")
if check_disconnect:
hap = self.connected.get_instance()
- ev = hap.wait_event([ "AP-STA-DISCONNECTED" ], timeout=10)
+ ev = hap.wait_event(["AP-STA-DISCONNECTED"], timeout=10)
if ev is None:
raise Exception("No disconnection event received from %s" % self.connected.get_ssid())
h.dump_monitor()
h.request("DISCONNECT")
if check_disconnect:
hap = self.connected
- ev = hap.wait_event([ "AP-STA-DISCONNECTED" ], timeout=10)
+ ev = hap.wait_event(["AP-STA-DISCONNECTED"], timeout=10)
if ev is None:
raise Exception("No disconnection event received from AP")
h.dump_monitor()
logger = logging.getLogger()
-fst_test_def_group='fstg0'
-fst_test_def_freq_g='2412' # Channel 1
-fst_test_def_freq_a='5180' # Channel 36
-fst_test_def_chan_g='1'
-fst_test_def_chan_a='36'
-fst_test_def_prio_low='100'
-fst_test_def_prio_high='110'
-fst_test_def_llt='100'
-fst_test_def_reg_domain='00'
+fst_test_def_group = 'fstg0'
+fst_test_def_freq_g = '2412' # Channel 1
+fst_test_def_freq_a = '5180' # Channel 36
+fst_test_def_chan_g = '1'
+fst_test_def_chan_a = '36'
+fst_test_def_prio_low = '100'
+fst_test_def_prio_high = '110'
+fst_test_def_llt = '100'
+fst_test_def_reg_domain = '00'
class HapdRegCtrl:
def __init__(self):
logger.debug("fst hostapd: regulatory domain ready")
def fst_clear_regdom():
- cmd = subprocess.Popen([ "iw", "reg", "get" ], stdout=subprocess.PIPE)
+ cmd = subprocess.Popen(["iw", "reg", "get"], stdout=subprocess.PIPE)
res = cmd.stdout.read().decode()
cmd.stdout.close()
if "country 00:" not in res:
hapd_global = '/var/run/hostapd-global'
def mac2tuple(mac):
- return struct.unpack('6B', binascii.unhexlify(mac.replace(':','')))
+ return struct.unpack('6B', binascii.unhexlify(mac.replace(':', '')))
class HostapdGlobal:
def __init__(self, apdev=None, global_ctrl_override=None):
lines = res.splitlines()
vals = dict()
for l in lines:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
return vals
lines = res.splitlines()
vals = dict()
for l in lines:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
return vals
lines = res.splitlines()
vals = dict()
for l in lines:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
return vals
vals['addr'] = l
first = False
else:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
return vals
if addr not in l:
continue
vals = dict()
- [index,aa,pmkid,expiration,opportunistic] = l.split(' ')
+ [index, aa, pmkid, expiration, opportunistic] = l.split(' ')
vals['index'] = index
vals['pmkid'] = pmkid
vals['expiration'] = expiration
if not hapd.ping():
raise Exception("Could not ping hostapd")
hapd.set_defaults()
- fields = [ "ssid", "wpa_passphrase", "nas_identifier", "wpa_key_mgmt",
- "wpa",
- "wpa_pairwise", "rsn_pairwise", "auth_server_addr",
- "acct_server_addr", "osu_server_uri" ]
+ fields = ["ssid", "wpa_passphrase", "nas_identifier", "wpa_key_mgmt",
+ "wpa",
+ "wpa_pairwise", "rsn_pairwise", "auth_server_addr",
+ "acct_server_addr", "osu_server_uri"]
for field in fields:
if field in params:
hapd.set(field, params[field])
- for f,v in list(params.items()):
+ for f, v in list(params.items()):
if f in fields:
continue
if isinstance(v, list):
hapd_global.terminate()
def wpa2_params(ssid=None, passphrase=None):
- params = { "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "CCMP" }
+ params = {"wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "CCMP"}
if ssid:
params["ssid"] = ssid
if passphrase:
return params
def wpa_params(ssid=None, passphrase=None):
- params = { "wpa": "1",
- "wpa_key_mgmt": "WPA-PSK",
- "wpa_pairwise": "TKIP" }
+ params = {"wpa": "1",
+ "wpa_key_mgmt": "WPA-PSK",
+ "wpa_pairwise": "TKIP"}
if ssid:
params["ssid"] = ssid
if passphrase:
return params
def wpa_mixed_params(ssid=None, passphrase=None):
- params = { "wpa": "3",
- "wpa_key_mgmt": "WPA-PSK",
- "wpa_pairwise": "TKIP",
- "rsn_pairwise": "CCMP" }
+ params = {"wpa": "3",
+ "wpa_key_mgmt": "WPA-PSK",
+ "wpa_pairwise": "TKIP",
+ "rsn_pairwise": "CCMP"}
if ssid:
params["ssid"] = ssid
if passphrase:
return params
def radius_params():
- params = { "auth_server_addr": "127.0.0.1",
- "auth_server_port": "1812",
- "auth_server_shared_secret": "radius",
- "nas_identifier": "nas.w1.fi" }
+ params = {"auth_server_addr": "127.0.0.1",
+ "auth_server_port": "1812",
+ "auth_server_shared_secret": "radius",
+ "nas_identifier": "nas.w1.fi"}
return params
def wpa_eap_params(ssid=None):
return params
def b_only_params(channel="1", ssid=None, country=None):
- params = { "hw_mode" : "b",
- "channel" : channel }
+ params = {"hw_mode": "b",
+ "channel": channel}
if ssid:
params["ssid"] = ssid
if country:
return params
def g_only_params(channel="1", ssid=None, country=None):
- params = { "hw_mode" : "g",
- "channel" : channel }
+ params = {"hw_mode": "g",
+ "channel": channel}
if ssid:
params["ssid"] = ssid
if country:
return params
def a_only_params(channel="36", ssid=None, country=None):
- params = { "hw_mode" : "a",
- "channel" : channel }
+ params = {"hw_mode": "a",
+ "channel": channel}
if ssid:
params["ssid"] = ssid
if country:
return params
def ht20_params(channel="1", ssid=None, country=None):
- params = { "ieee80211n" : "1",
- "channel" : channel,
- "hw_mode" : "g" }
+ params = {"ieee80211n": "1",
+ "channel": channel,
+ "hw_mode": "g"}
if int(channel) > 14:
params["hw_mode"] = "a"
if ssid:
import netlink, os
# constants
-HWSIM_CMD_CREATE_RADIO = 4
-HWSIM_CMD_DESTROY_RADIO = 5
+HWSIM_CMD_CREATE_RADIO = 4
+HWSIM_CMD_DESTROY_RADIO = 5
-HWSIM_ATTR_CHANNELS = 9
-HWSIM_ATTR_RADIO_ID = 10
-HWSIM_ATTR_SUPPORT_P2P_DEVICE = 14
-HWSIM_ATTR_USE_CHANCTX = 15
+HWSIM_ATTR_CHANNELS = 9
+HWSIM_ATTR_RADIO_ID = 10
+HWSIM_ATTR_SUPPORT_P2P_DEVICE = 14
+HWSIM_ATTR_USE_CHANCTX = 15
# the controller class
class HWSimController(object):
attrs.append(netlink.FlagAttr(HWSIM_ATTR_SUPPORT_P2P_DEVICE))
msg = netlink.GenlMessage(self._fid, HWSIM_CMD_CREATE_RADIO,
- flags = netlink.NLM_F_REQUEST |
- netlink.NLM_F_ACK,
- attrs = attrs)
+ flags=netlink.NLM_F_REQUEST |
+ netlink.NLM_F_ACK,
+ attrs=attrs)
return msg.send_and_recv(self._conn).ret
def destroy_radio(self, radio_id):
attrs = [netlink.U32Attr(HWSIM_ATTR_RADIO_ID, radio_id)]
msg = netlink.GenlMessage(self._fid, HWSIM_CMD_DESTROY_RADIO,
- flags = netlink.NLM_F_REQUEST |
- netlink.NLM_F_ACK,
- attrs = attrs)
+ flags=netlink.NLM_F_REQUEST |
+ netlink.NLM_F_ACK,
+ attrs=attrs)
msg.send_and_recv(self._conn)
class HWSimRadio(object):
"""
tx_power = (val + 50) * 100
ifname = dev.get_driver_status_field("ifname")
- (res, data) = dev.cmd_execute([ 'iw', ifname, 'set', 'txpower',
- 'fixed', str(tx_power)] )
+ (res, data) = dev.cmd_execute(['iw', ifname, 'set', 'txpower',
+ 'fixed', str(tx_power)])
if res != 0:
raise Exception("Failed to set RSSI to %d" % val)
def _dump(self):
hdr = struct.pack("HH", len(self._data) + 4, self._type)
length = len(self._data)
- pad = ((length + 4 - 1) & ~3 ) - length
+ pad = ((length + 4 - 1) & ~3) - length
return hdr + self._data + b'\x00' * pad
def __repr__(self):
hdr = struct.pack("HH", length+4, self.type)
return hdr + contents
-NETLINK_ROUTE = 0
-NETLINK_UNUSED = 1
-NETLINK_USERSOCK = 2
-NETLINK_FIREWALL = 3
-NETLINK_INET_DIAG = 4
-NETLINK_NFLOG = 5
-NETLINK_XFRM = 6
-NETLINK_SELINUX = 7
-NETLINK_ISCSI = 8
-NETLINK_AUDIT = 9
-NETLINK_FIB_LOOKUP = 10
-NETLINK_CONNECTOR = 11
-NETLINK_NETFILTER = 12
-NETLINK_IP6_FW = 13
-NETLINK_DNRTMSG = 14
-NETLINK_KOBJECT_UEVENT = 15
-NETLINK_GENERIC = 16
+NETLINK_ROUTE = 0
+NETLINK_UNUSED = 1
+NETLINK_USERSOCK = 2
+NETLINK_FIREWALL = 3
+NETLINK_INET_DIAG = 4
+NETLINK_NFLOG = 5
+NETLINK_XFRM = 6
+NETLINK_SELINUX = 7
+NETLINK_ISCSI = 8
+NETLINK_AUDIT = 9
+NETLINK_FIB_LOOKUP = 10
+NETLINK_CONNECTOR = 11
+NETLINK_NETFILTER = 12
+NETLINK_IP6_FW = 13
+NETLINK_DNRTMSG = 14
+NETLINK_KOBJECT_UEVENT = 15
+NETLINK_GENERIC = 16
class Message(object):
def __init__(self, msg_type, flags=0, seq=-1, payload=None):
while len(data):
attr_len, attr_type = struct.unpack("HH", data[:4])
attrs[attr_type] = Attr(attr_type, data[4:attr_len])
- attr_len = ((attr_len + 4 - 1) & ~3 )
+ attr_len = ((attr_len + 4 - 1) & ~3)
data = data[attr_len:]
return attrs
-CTRL_CMD_UNSPEC = 0
-CTRL_CMD_NEWFAMILY = 1
-CTRL_CMD_DELFAMILY = 2
-CTRL_CMD_GETFAMILY = 3
-CTRL_CMD_NEWOPS = 4
-CTRL_CMD_DELOPS = 5
-CTRL_CMD_GETOPS = 6
+CTRL_CMD_UNSPEC = 0
+CTRL_CMD_NEWFAMILY = 1
+CTRL_CMD_DELFAMILY = 2
+CTRL_CMD_GETFAMILY = 3
+CTRL_CMD_NEWOPS = 4
+CTRL_CMD_DELOPS = 5
+CTRL_CMD_GETOPS = 6
-CTRL_ATTR_UNSPEC = 0
-CTRL_ATTR_FAMILY_ID = 1
-CTRL_ATTR_FAMILY_NAME = 2
-CTRL_ATTR_VERSION = 3
-CTRL_ATTR_HDRSIZE = 4
-CTRL_ATTR_MAXATTR = 5
-CTRL_ATTR_OPS = 6
+CTRL_ATTR_UNSPEC = 0
+CTRL_ATTR_FAMILY_ID = 1
+CTRL_ATTR_FAMILY_NAME = 2
+CTRL_ATTR_VERSION = 3
+CTRL_ATTR_HDRSIZE = 4
+CTRL_ATTR_MAXATTR = 5
+CTRL_ATTR_OPS = 6
class GenlHdr(object):
- def __init__(self, cmd, version = 0):
+ def __init__(self, cmd, version=0):
self.cmd = cmd
self.version = version
def _dump(self):
def _genl_hdr_parse(data):
return GenlHdr(*struct.unpack("BBxx", data))
-GENL_ID_CTRL = NLMSG_MIN_TYPE
+GENL_ID_CTRL = NLMSG_MIN_TYPE
class GenlMessage(Message):
def __init__(self, family, cmd, attrs=[], flags=0):
return build_nl80211_attr(id, b'')
def build_nl80211_attr_mac(id, val):
- addr = struct.unpack('6B', binascii.unhexlify(val.replace(':','')))
+ addr = struct.unpack('6B', binascii.unhexlify(val.replace(':', '')))
aval = struct.pack('<6B', *addr)
return build_nl80211_attr(id, aval)
def parse_nl80211_attrs(msg):
attrs = {}
while len(msg) >= 4:
- alen,attr = struct.unpack("@HH", msg[0:4])
+ alen, attr = struct.unpack("@HH", msg[0:4])
if alen < 4:
raise Exception("Too short nl80211 attribute")
alen -= 4
def RequestPacket(self):
attr = b''
- for code,datalst in sorted(self.items()):
+ for code, datalst in sorted(self.items()):
for data in datalst:
attr += self._PktEncodeAttribute(code, data)
if self.host is None:
cmd = command
else:
- cmd = ["ssh", self.user + "@" + self.host, ' '.join(command)]
+ cmd = ["ssh", self.user + "@" + self.host, ' '.join(command)]
_cmd = self.name + " execute_run: " + ' '.join(cmd)
logger.debug(_cmd)
- t = threading.Thread(target = execute_thread, args=(cmd, res))
+ t = threading.Thread(target=execute_thread, args=(cmd, res))
t.start()
return t
print("sql: %r" % (params, ))
if result == "FAIL":
- for log in [ "log", "log0", "log1", "log2", "log3", "log5",
- "hostapd", "dmesg", "hwsim0", "hwsim0.pcapng" ]:
+ for log in ["log", "log0", "log1", "log2", "log3", "log5",
+ "hostapd", "dmesg", "hwsim0", "hwsim0.pcapng"]:
add_log_file(conn, test, run, log,
logdir + "/" + test + "." + log)
logger.debug("Import test cases from " + t)
mod = __import__(m.group(1))
test_modules.append(mod.__name__.replace('test_', '', 1))
- for key,val in mod.__dict__.items():
+ for key, val in mod.__dict__.items():
if key.startswith("test_"):
tests.append(val)
test_names = list(set([t.__name__.replace('test_', '', 1) for t in tests]))
dev0 = WpaSupplicant('wlan0', '/tmp/wpas-wlan0')
dev1 = WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
dev2 = WpaSupplicant('wlan2', '/tmp/wpas-wlan2')
- dev = [ dev0, dev1, dev2 ]
- apdev = [ ]
+ dev = [dev0, dev1, dev2]
+ apdev = []
apdev.append({"ifname": 'wlan3', "bssid": "02:00:00:00:03:00"})
apdev.append({"ifname": 'wlan4', "bssid": "02:00:00:00:04:00"})
logger.info("Parallel execution - %d/%d" % (split_server, split_total))
split_server -= 1
tests_to_run.sort(key=lambda t: t.__name__)
- tests_to_run = [x for i,x in enumerate(tests_to_run) if i % split_total == split_server]
+ tests_to_run = [x for i, x in enumerate(tests_to_run) if i % split_total == split_server]
if args.shuffle_tests:
from random import shuffle
def force_prev_ap_on_24g(ap):
# For now, make sure the last operating channel was on 2.4 GHz band to get
# sufficient survey data from mac80211_hwsim.
- hostapd.add_ap(ap, { "ssid": "open" })
+ hostapd.add_ap(ap, {"ssid": "open"})
time.sleep(0.1)
hostapd.remove_bss(ap)
def force_prev_ap_on_5g(ap):
# For now, make sure the last operating channel was on 5 GHz band to get
# sufficient survey data from mac80211_hwsim.
- hostapd.add_ap(ap, { "ssid": "open", "hw_mode": "a",
- "channel": "36", "country_code": "US" })
+ hostapd.add_ap(ap, {"ssid": "open", "hw_mode": "a",
+ "channel": "36", "country_code": "US"})
time.sleep(0.1)
hostapd.remove_bss(ap)
raise Exception("Unexpected interface state")
freq = int(hapd.get_status_field("freq"))
- if freq not in [ 5260, 5280, 5300, 5320 ]:
+ if freq not in [5260, 5280, 5300, 5320]:
raise Exception("Unexpected frequency: %d" % freq)
dev[0].connect("test-acs", psk="12345678", scan_freq=str(freq))
raise Exception("Unexpected interface state")
freq = int(hapd.get_status_field("freq"))
- if freq not in [ 5180, 5500 ]:
+ if freq not in [5180, 5500]:
raise Exception("Unexpected frequency: %d" % freq)
dev[0].connect("test-acs", psk="12345678", scan_freq=str(freq))
raise HwsimSkip("Cipher %s not supported" % cipher)
if group_cipher and group_cipher not in dev.get_capability("group"):
raise HwsimSkip("Cipher %s not supported" % group_cipher)
- params = { "ssid": "test-wpa2-psk",
- "wpa_passphrase": "12345678",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": cipher }
+ params = {"ssid": "test-wpa2-psk",
+ "wpa_passphrase": "12345678",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": cipher}
if group_cipher:
params["group_cipher"] = group_cipher
else:
def check_group_mgmt_cipher(dev, ap, cipher, sta_req_cipher=None):
if cipher not in dev.get_capability("group_mgmt"):
raise HwsimSkip("Cipher %s not supported" % cipher)
- params = { "ssid": "test-wpa2-psk-pmf",
- "wpa_passphrase": "12345678",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "WPA-PSK-SHA256",
- "rsn_pairwise": "CCMP",
- "group_mgmt_cipher": cipher }
+ params = {"ssid": "test-wpa2-psk-pmf",
+ "wpa_passphrase": "12345678",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "WPA-PSK-SHA256",
+ "rsn_pairwise": "CCMP",
+ "group_mgmt_cipher": cipher}
hapd = hostapd.add_ap(ap, params)
Wlantest.setup(hapd)
group_mgmt = "BIP"
else:
group_mgmt = cipher
- res = wt.info_bss('group_mgmt', ap['bssid']).strip()
+ res = wt.info_bss('group_mgmt', ap['bssid']).strip()
if res != group_mgmt:
raise Exception("Unexpected group mgmt cipher: " + res)
"""WPA-PSK/TKIP countermeasures (detected by AP)"""
skip_with_fips(dev[0])
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (dev[0].get_driver_status_field("phyname"), dev[0].ifname)
- if dev[0].cmd_execute([ "ls", testfile ])[0] != 0:
+ if dev[0].cmd_execute(["ls", testfile])[0] != 0:
raise HwsimSkip("tkip_mic_test not supported in mac80211")
- params = { "ssid": "tkip-countermeasures",
- "wpa_passphrase": "12345678",
- "wpa": "1",
- "wpa_key_mgmt": "WPA-PSK",
- "wpa_pairwise": "TKIP" }
+ params = {"ssid": "tkip-countermeasures",
+ "wpa_passphrase": "12345678",
+ "wpa": "1",
+ "wpa_key_mgmt": "WPA-PSK",
+ "wpa_pairwise": "TKIP"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("tkip-countermeasures", psk="12345678",
pairwise="TKIP", group="TKIP", scan_freq="2412")
dev[0].dump_monitor()
- dev[0].cmd_execute([ "echo", "-n", apdev[0]['bssid'], ">", testfile ],
+ dev[0].cmd_execute(["echo", "-n", apdev[0]['bssid'], ">", testfile],
shell=True)
ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=1)
if ev is not None:
raise Exception("Unexpected disconnection on first Michael MIC failure")
- dev[0].cmd_execute([ "echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile ],
+ dev[0].cmd_execute(["echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile],
shell=True)
ev = dev[0].wait_disconnected(timeout=10,
error="No disconnection after two Michael MIC failures")
"""WPA+WPA2-PSK/TKIP countermeasures (detected by mixed mode AP)"""
skip_with_fips(dev[0])
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (dev[0].get_driver_status_field("phyname"), dev[0].ifname)
- if dev[0].cmd_execute([ "ls", testfile ])[0] != 0:
+ if dev[0].cmd_execute(["ls", testfile])[0] != 0:
raise HwsimSkip("tkip_mic_test not supported in mac80211")
- params = { "ssid": "tkip-countermeasures",
- "wpa_passphrase": "12345678",
- "wpa": "3",
- "wpa_key_mgmt": "WPA-PSK",
- "wpa_pairwise": "TKIP",
- "rsn_pairwise": "CCMP" }
+ params = {"ssid": "tkip-countermeasures",
+ "wpa_passphrase": "12345678",
+ "wpa": "3",
+ "wpa_key_mgmt": "WPA-PSK",
+ "wpa_pairwise": "TKIP",
+ "rsn_pairwise": "CCMP"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("tkip-countermeasures", psk="12345678",
pairwise="CCMP", scan_freq="2412")
dev[0].dump_monitor()
- dev[0].cmd_execute([ "echo", "-n", apdev[0]['bssid'], ">", testfile ],
+ dev[0].cmd_execute(["echo", "-n", apdev[0]['bssid'], ">", testfile],
shell=True)
ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=1)
if ev is not None:
raise Exception("Unexpected disconnection on first Michael MIC failure")
- dev[0].cmd_execute([ "echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile ],
+ dev[0].cmd_execute(["echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile],
shell=True)
ev = dev[0].wait_disconnected(timeout=10,
def test_ap_cipher_tkip_countermeasures_sta(dev, apdev):
"""WPA-PSK/TKIP countermeasures (detected by STA)"""
skip_with_fips(dev[0])
- params = { "ssid": "tkip-countermeasures",
- "wpa_passphrase": "12345678",
- "wpa": "1",
- "wpa_key_mgmt": "WPA-PSK",
- "wpa_pairwise": "TKIP" }
+ params = {"ssid": "tkip-countermeasures",
+ "wpa_passphrase": "12345678",
+ "wpa": "1",
+ "wpa_key_mgmt": "WPA-PSK",
+ "wpa_pairwise": "TKIP"}
hapd = hostapd.add_ap(apdev[0], params)
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (hapd.get_driver_status_field("phyname"), apdev[0]['ifname'])
- if hapd.cmd_execute([ "ls", testfile ])[0] != 0:
+ if hapd.cmd_execute(["ls", testfile])[0] != 0:
raise HwsimSkip("tkip_mic_test not supported in mac80211")
dev[0].connect("tkip-countermeasures", psk="12345678",
pairwise="TKIP", group="TKIP", scan_freq="2412")
dev[0].dump_monitor()
- hapd.cmd_execute([ "echo", "-n", dev[0].own_addr(), ">", testfile ],
+ hapd.cmd_execute(["echo", "-n", dev[0].own_addr(), ">", testfile],
shell=True)
ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=1)
if ev is not None:
raise Exception("Unexpected disconnection on first Michael MIC failure")
- hapd.cmd_execute([ "echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile ],
+ hapd.cmd_execute(["echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile],
shell=True)
ev = dev[0].wait_disconnected(timeout=10,
error="No disconnection after two Michael MIC failures")
if not params['long']:
raise HwsimSkip("Skip test case with long duration due to --long not specified")
skip_with_fips(dev[0])
- params = { "ssid": "tkip-countermeasures",
- "wpa_passphrase": "12345678",
- "wpa": "1",
- "wpa_key_mgmt": "WPA-PSK",
- "wpa_pairwise": "TKIP" }
+ params = {"ssid": "tkip-countermeasures",
+ "wpa_passphrase": "12345678",
+ "wpa": "1",
+ "wpa_key_mgmt": "WPA-PSK",
+ "wpa_pairwise": "TKIP"}
hapd = hostapd.add_ap(apdev[0], params)
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (hapd.get_driver_status_field("phyname"), apdev[0]['ifname'])
- if hapd.cmd_execute([ "ls", testfile ])[0] != 0:
+ if hapd.cmd_execute(["ls", testfile])[0] != 0:
raise HwsimSkip("tkip_mic_test not supported in mac80211")
dev[0].connect("tkip-countermeasures", psk="12345678",
pairwise="TKIP", group="TKIP", scan_freq="2412")
dev[1].dump_monitor()
- hapd.cmd_execute([ "echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile ],
+ hapd.cmd_execute(["echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile],
shell=True)
ev = dev[0].wait_disconnected(timeout=10,
error="No disconnection after two Michael MIC failure")
"""WPA2-PSK/GCMP/CCMP ciphers"""
config = os.path.join(params['logdir'], 'ap_cipher_gcmp_ccmp.conf')
- for cipher in [ "CCMP", "GCMP", "CCMP-256", "GCMP-256" ]:
+ for cipher in ["CCMP", "GCMP", "CCMP-256", "GCMP-256"]:
if cipher not in dev[0].get_capability("pairwise"):
raise HwsimSkip("Cipher %s not supported" % cipher)
if cipher not in dev[0].get_capability("group"):
raise HwsimSkip("Group cipher %s not supported" % cipher)
- params = { "ssid": "test-wpa2-psk",
- "wpa_passphrase": "12345678",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "CCMP GCMP CCMP-256 GCMP-256" }
+ params = {"ssid": "test-wpa2-psk",
+ "wpa_passphrase": "12345678",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "CCMP GCMP CCMP-256 GCMP-256"}
hapd = hostapd.add_ap(apdev[0], params)
- for cipher in [ "CCMP", "GCMP", "CCMP-256", "GCMP-256" ]:
+ for cipher in ["CCMP", "GCMP", "CCMP-256", "GCMP-256"]:
dev[0].connect("test-wpa2-psk", psk="12345678",
pairwise=cipher, group="CCMP", scan_freq="2412")
if dev[0].get_status_field("group_cipher") != "CCMP":
skip_with_fips(dev[0])
ssid = "test-wpa-wpa2-psk"
passphrase = "12345678"
- params = { "ssid": ssid,
- "wpa_passphrase": passphrase,
- "wpa": "3",
- "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "CCMP",
- "wpa_pairwise": "TKIP" }
+ params = {"ssid": ssid,
+ "wpa_passphrase": passphrase,
+ "wpa": "3",
+ "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "CCMP",
+ "wpa_pairwise": "TKIP"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, psk=passphrase, proto="WPA2",
pairwise="CCMP", group="TKIP", scan_freq="2412")
def test_ap_cipher_bip_req_mismatch(dev, apdev):
"""WPA2-PSK with BIP cipher mismatch"""
group_mgmt = dev[0].get_capability("group_mgmt")
- for cipher in [ "AES-128-CMAC", "BIP-GMAC-256" ]:
+ for cipher in ["AES-128-CMAC", "BIP-GMAC-256"]:
if cipher not in group_mgmt:
raise HwsimSkip("Cipher %s not supported" % cipher)
- params = { "ssid": "test-wpa2-psk-pmf",
- "wpa_passphrase": "12345678",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "WPA-PSK-SHA256",
- "rsn_pairwise": "CCMP",
- "group_mgmt_cipher": "AES-128-CMAC" }
+ params = {"ssid": "test-wpa2-psk-pmf",
+ "wpa_passphrase": "12345678",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "WPA-PSK-SHA256",
+ "rsn_pairwise": "CCMP",
+ "group_mgmt_cipher": "AES-128-CMAC"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(hapd.own_addr(), 2412)
run_ap_cipher_replay_protection_ap(dev, apdev, "GCMP")
def run_ap_cipher_replay_protection_ap(dev, apdev, cipher):
- params = { "ssid": "test-wpa2-psk",
- "wpa_passphrase": "12345678",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": cipher }
+ params = {"ssid": "test-wpa2-psk",
+ "wpa_passphrase": "12345678",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": cipher}
hapd = hostapd.add_ap(apdev[0], params)
phy = hapd.get_driver_status_field("phyname")
run_ap_cipher_replay_protection_sta(dev, apdev, "GCMP", gtk=True)
def run_ap_cipher_replay_protection_sta(dev, apdev, cipher, gtk=False):
- params = { "ssid": "test-wpa2-psk",
- "wpa_passphrase": "12345678",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": cipher }
+ params = {"ssid": "test-wpa2-psk",
+ "wpa_passphrase": "12345678",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": cipher}
hapd = hostapd.add_ap(apdev[0], params)
Wlantest.setup(hapd)
"""Various hostapd configuration errors"""
# IEEE 802.11d without country code
- params = { "ssid": "foo", "ieee80211d": "1" }
+ params = {"ssid": "foo", "ieee80211d": "1"}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
if "FAIL" not in hapd.request("ENABLE"):
raise Exception("Unexpected ENABLE success (ieee80211d without country_code)")
hostapd.remove_bss(apdev[0])
# IEEE 802.11h without IEEE 802.11d
- params = { "ssid": "foo", "ieee80211h": "1" }
+ params = {"ssid": "foo", "ieee80211h": "1"}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
if "FAIL" not in hapd.request("ENABLE"):
raise Exception("Unexpected ENABLE success (ieee80211h without ieee80211d")
hostapd.remove_bss(apdev[0])
# Power Constraint without IEEE 802.11d
- params = { "ssid": "foo", "local_pwr_constraint": "1" }
+ params = {"ssid": "foo", "local_pwr_constraint": "1"}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
if "FAIL" not in hapd.request("ENABLE"):
raise Exception("Unexpected ENABLE success (local_pwr_constraint without ieee80211d)")
hostapd.remove_bss(apdev[0])
# Spectrum management without Power Constraint
- params = { "ssid": "foo", "spectrum_mgmt_required": "1" }
+ params = {"ssid": "foo", "spectrum_mgmt_required": "1"}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
if "FAIL" not in hapd.request("ENABLE"):
raise Exception("Unexpected ENABLE success (spectrum_mgmt_required without local_pwr_constraint)")
hostapd.remove_bss(apdev[0])
# IEEE 802.1X without authentication server
- params = { "ssid": "foo", "ieee8021x": "1" }
+ params = {"ssid": "foo", "ieee8021x": "1"}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
if "FAIL" not in hapd.request("ENABLE"):
raise Exception("Unexpected ENABLE success (ieee8021x)")
hostapd.remove_bss(apdev[0])
# FT without NAS-Identifier
- params = { "wpa": "2",
- "wpa_key_mgmt": "FT-PSK",
- "rsn_pairwise": "CCMP",
- "wpa_passphrase": "12345678" }
+ params = {"wpa": "2",
+ "wpa_key_mgmt": "FT-PSK",
+ "rsn_pairwise": "CCMP",
+ "wpa_passphrase": "12345678"}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
if "FAIL" not in hapd.request("ENABLE"):
raise Exception("Unexpected ENABLE success (FT without nas_identifier)")
def test_ap_config_reload(dev, apdev, params):
"""hostapd configuration reload"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "foo" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "foo"})
hapd.set("ssid", "foobar")
with open(os.path.join(params['logdir'], 'hostapd-test.pid'), "r") as f:
pid = int(f.read())
if not os.path.exists(prg):
prg = '../../hostapd/hostapd'
write_hostapd_config(conffile, apdev[0]['ifname'], "test-1", ht=ht)
- cmd = [ prg, '-B', '-dddt', '-P', pidfile, '-f', logfile, conffile ]
+ cmd = [prg, '-B', '-dddt', '-P', pidfile, '-f', logfile, conffile]
res = subprocess.check_call(cmd)
if res != 0:
raise Exception("Could not start hostapd: %s" % str(res))
if not os.path.exists(prg):
prg = '../../hostapd/hostapd'
write_hostapd_config(conffile, apdev[0]['ifname'], "test", bss2=True)
- cmd = [ prg, '-B', '-dddt', '-P', pidfile, '-f', logfile, conffile ]
+ cmd = [prg, '-B', '-dddt', '-P', pidfile, '-f', logfile, conffile]
res = subprocess.check_call(cmd)
if res != 0:
raise Exception("Could not start hostapd: %s" % str(res))
def test_ap_config_sigusr1(dev, apdev, params):
"""hostapd SIGUSR1"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "foobar" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "foobar"})
with open(os.path.join(params['logdir'], 'hostapd-test.pid'), "r") as f:
pid = int(f.read())
os.kill(pid, signal.SIGUSR1)
def test_ap_config_invalid_value(dev, apdev, params):
"""Ignoring invalid hostapd configuration parameter updates"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test" }, no_enable=True)
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test"}, no_enable=True)
not_exist = "/tmp/hostapd-test/does-not-exist"
- tests = [ ("driver", "foobar"),
- ("ssid2", "Q"),
- ("macaddr_acl", "255"),
- ("accept_mac_file", not_exist),
- ("deny_mac_file", not_exist),
- ("eapol_version", "255"),
- ("eap_user_file", not_exist),
- ("wep_key_len_broadcast", "-1"),
- ("wep_key_len_unicast", "-1"),
- ("wep_rekey_period", "-1"),
- ("eap_rekey_period", "-1"),
- ("radius_client_addr", "foo"),
- ("acs_chan_bias", "-1:0.8"),
- ("acs_chan_bias", "1"),
- ("acs_chan_bias", "1:p"),
- ("acs_chan_bias", "1:-0.8"),
- ("acs_chan_bias", "1:0.8p"),
- ("dtim_period", "0"),
- ("bss_load_update_period", "-1"),
- ("send_probe_response", "255"),
- ("beacon_rate", "ht:-1"),
- ("beacon_rate", "ht:32"),
- ("beacon_rate", "vht:-1"),
- ("beacon_rate", "vht:10"),
- ("beacon_rate", "9"),
- ("beacon_rate", "10001"),
- ("vlan_file", not_exist),
- ("bss", ""),
- ("bssid", "foo"),
- ("extra_cred", not_exist),
- ("anqp_elem", "265"),
- ("anqp_elem", "265"),
- ("anqp_elem", "265:1"),
- ("anqp_elem", "265:1q"),
- ("fst_priority", ""),
- ("fils_cache_id", "q"),
- ("unknown-item", "foo") ]
+ tests = [("driver", "foobar"),
+ ("ssid2", "Q"),
+ ("macaddr_acl", "255"),
+ ("accept_mac_file", not_exist),
+ ("deny_mac_file", not_exist),
+ ("eapol_version", "255"),
+ ("eap_user_file", not_exist),
+ ("wep_key_len_broadcast", "-1"),
+ ("wep_key_len_unicast", "-1"),
+ ("wep_rekey_period", "-1"),
+ ("eap_rekey_period", "-1"),
+ ("radius_client_addr", "foo"),
+ ("acs_chan_bias", "-1:0.8"),
+ ("acs_chan_bias", "1"),
+ ("acs_chan_bias", "1:p"),
+ ("acs_chan_bias", "1:-0.8"),
+ ("acs_chan_bias", "1:0.8p"),
+ ("dtim_period", "0"),
+ ("bss_load_update_period", "-1"),
+ ("send_probe_response", "255"),
+ ("beacon_rate", "ht:-1"),
+ ("beacon_rate", "ht:32"),
+ ("beacon_rate", "vht:-1"),
+ ("beacon_rate", "vht:10"),
+ ("beacon_rate", "9"),
+ ("beacon_rate", "10001"),
+ ("vlan_file", not_exist),
+ ("bss", ""),
+ ("bssid", "foo"),
+ ("extra_cred", not_exist),
+ ("anqp_elem", "265"),
+ ("anqp_elem", "265"),
+ ("anqp_elem", "265:1"),
+ ("anqp_elem", "265:1q"),
+ ("fst_priority", ""),
+ ("fils_cache_id", "q"),
+ ("unknown-item", "foo")]
for field, val in tests:
if "FAIL" not in hapd.request("SET %s %s" % (field, val)):
raise Exception("Invalid %s accepted" % field)
def test_ap_config_eap_user_file_parsing(dev, apdev, params):
"""hostapd eap_user_file parsing"""
tmp = os.path.join(params['logdir'], 'ap_vlan_file_parsing.tmp')
- hapd = hostapd.add_ap(apdev[0], { "ssid": "foobar" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "foobar"})
for i in range(2):
if "OK" not in hapd.request("SET eap_user_file auth_serv/eap_user.conf"):
raise Exception("eap_user_file rejected")
- tests = [ "#\n\n*\tTLS\nradius_accept_attr=:",
- "foo\n",
- "\"foo\n",
- "\"foo\"\n",
- "\"foo\" FOOBAR\n",
- "\"foo\" " + 10*"TLS," + "TLS \"\n",
- "\"foo\" TLS \nfoo\n",
- "\"foo\" PEAP hash:foo\n",
- "\"foo\" PEAP hash:8846f7eaee8fb117ad06bdd830b7586q\n",
- "\"foo\" PEAP 01020\n",
- "\"foo\" PEAP 010q\n",
- "\"foo\" TLS\nradius_accept_attr=123:x:012\n",
- "\"foo\" TLS\nradius_accept_attr=123:x:012q\n",
- "\"foo\" TLS\nradius_accept_attr=123:Q:01\n",
- "\"foo\" TLS\nradius_accept_attr=123\nfoo\n" ]
+ tests = ["#\n\n*\tTLS\nradius_accept_attr=:",
+ "foo\n",
+ "\"foo\n",
+ "\"foo\"\n",
+ "\"foo\" FOOBAR\n",
+ "\"foo\" " + 10*"TLS," + "TLS \"\n",
+ "\"foo\" TLS \nfoo\n",
+ "\"foo\" PEAP hash:foo\n",
+ "\"foo\" PEAP hash:8846f7eaee8fb117ad06bdd830b7586q\n",
+ "\"foo\" PEAP 01020\n",
+ "\"foo\" PEAP 010q\n",
+ "\"foo\" TLS\nradius_accept_attr=123:x:012\n",
+ "\"foo\" TLS\nradius_accept_attr=123:x:012q\n",
+ "\"foo\" TLS\nradius_accept_attr=123:Q:01\n",
+ "\"foo\" TLS\nradius_accept_attr=123\nfoo\n"]
for t in tests:
with open(tmp, "w") as f:
f.write(t)
if "FAIL" not in hapd.request("SET eap_user_file " + tmp):
raise Exception("Invalid eap_user_file accepted")
- tests = [ ("\"foo\" TLS\n", 2, "hostapd_config_read_eap_user"),
- ("\"foo\" PEAP \"foo\"\n", 3, "hostapd_config_read_eap_user"),
- ("\"foo\" PEAP hash:8846f7eaee8fb117ad06bdd830b75861\n", 3,
- "hostapd_config_read_eap_user"),
- ("\"foo\" PEAP 0102\n", 3, "hostapd_config_read_eap_user"),
- ("\"foo\" TLS\nradius_accept_attr=123\n", 1,
- "=hostapd_parse_radius_attr"),
- ("\"foo\" TLS\nradius_accept_attr=123\n", 1,
- "wpabuf_alloc;hostapd_parse_radius_attr"),
- ("\"foo\" TLS\nradius_accept_attr=123:s:foo\n", 2,
- "hostapd_parse_radius_attr"),
- ("\"foo\" TLS\nradius_accept_attr=123:x:0102\n", 2,
- "hostapd_parse_radius_attr"),
- ("\"foo\" TLS\nradius_accept_attr=123:d:1\n", 2,
- "hostapd_parse_radius_attr"),
- ("* TLS\n", 1, "hostapd_config_read_eap_user") ]
+ tests = [("\"foo\" TLS\n", 2, "hostapd_config_read_eap_user"),
+ ("\"foo\" PEAP \"foo\"\n", 3, "hostapd_config_read_eap_user"),
+ ("\"foo\" PEAP hash:8846f7eaee8fb117ad06bdd830b75861\n", 3,
+ "hostapd_config_read_eap_user"),
+ ("\"foo\" PEAP 0102\n", 3, "hostapd_config_read_eap_user"),
+ ("\"foo\" TLS\nradius_accept_attr=123\n", 1,
+ "=hostapd_parse_radius_attr"),
+ ("\"foo\" TLS\nradius_accept_attr=123\n", 1,
+ "wpabuf_alloc;hostapd_parse_radius_attr"),
+ ("\"foo\" TLS\nradius_accept_attr=123:s:foo\n", 2,
+ "hostapd_parse_radius_attr"),
+ ("\"foo\" TLS\nradius_accept_attr=123:x:0102\n", 2,
+ "hostapd_parse_radius_attr"),
+ ("\"foo\" TLS\nradius_accept_attr=123:d:1\n", 2,
+ "hostapd_parse_radius_attr"),
+ ("* TLS\n", 1, "hostapd_config_read_eap_user")]
for t, count, func in tests:
with alloc_fail(hapd, count, func):
with open(tmp, "w") as f:
def test_ap_config_set_oom(dev, apdev):
"""hostapd configuration parsing OOM"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "foobar" })
-
- tests = [ (1, "hostapd_parse_das_client",
- "SET radius_das_client 192.168.1.123 pw"),
- (1, "hostapd_config_read_wep", "SET wep_key0 \"hello\""),
- (1, "hostapd_config_read_wep", "SET wep_key0 0102030405"),
- (1, "hostapd_parse_chanlist", "SET chanlist 1 6 11-13"),
- (1, "hostapd_config_bss", "SET bss foo"),
- (2, "hostapd_config_bss", "SET bss foo"),
- (3, "hostapd_config_bss", "SET bss foo"),
- (1, "add_r0kh",
- "SET r0kh 02:01:02:03:04:05 r0kh-1.example.com 000102030405060708090a0b0c0d0e0f"),
- (1, "add_r1kh",
- "SET r1kh 02:01:02:03:04:05 02:11:22:33:44:55 000102030405060708090a0b0c0d0e0f"),
- (1, "parse_roaming_consortium", "SET roaming_consortium 021122"),
- (1, "parse_lang_string", "SET venue_name eng:Example venue"),
- (1, "parse_3gpp_cell_net",
- "SET anqp_3gpp_cell_net 244,91;310,026;234,56"),
- (1, "parse_nai_realm", "SET nai_realm 0,example.com;example.net"),
- (2, "parse_nai_realm", "SET nai_realm 0,example.com;example.net"),
- (1, "parse_anqp_elem", "SET anqp_elem 265:0000"),
- (2, "parse_anqp_elem", "SET anqp_elem 266:000000"),
- (1, "hs20_parse_conn_capab", "SET hs20_conn_capab 1:0:2"),
- (1, "hs20_parse_wan_metrics",
- "SET hs20_wan_metrics 01:8000:1000:80:240:3000"),
- (1, "hs20_parse_icon",
- "SET hs20_icon 32:32:eng:image/png:icon32:/tmp/icon32.png"),
- (1, "hs20_parse_osu_server_uri",
- "SET osu_server_uri https://example.com/osu/"),
- (1, "hostapd_config_parse_acs_chan_bias",
- "SET acs_chan_bias 1:0.8 6:0.8 11:0.8"),
- (2, "hostapd_config_parse_acs_chan_bias",
- "SET acs_chan_bias 1:0.8 6:0.8 11:0.8"),
- (1, "parse_wpabuf_hex", "SET vendor_elements 01020304"),
- (1, "parse_fils_realm", "SET fils_realm example.com"),
- (1, "hostapd_config_fill",
- "SET pac_opaque_encr_key 000102030405060708090a0b0c0d0e0f"),
- (1, "hostapd_config_fill", "SET eap_message hello"),
- (1, "hostapd_config_fill",
- "SET wpa_psk 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"),
- (1, "hostapd_config_fill", "SET time_zone EST5"),
- (1, "hostapd_config_fill",
- "SET network_auth_type 02http://www.example.com/redirect/"),
- (1, "hostapd_config_fill", "SET domain_name example.com"),
- (1, "hostapd_config_fill", "SET hs20_operating_class 5173"),
- (1, "hostapd_config_fill", "SET own_ie_override 11223344"),
- (1, "hostapd_parse_intlist", "SET sae_groups 19 25"),
- (1, "hostapd_parse_intlist", "SET basic_rates 10 20 55 110"),
- (1, "hostapd_parse_intlist", "SET supported_rates 10 20 55 110") ]
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "foobar"})
+
+ tests = [(1, "hostapd_parse_das_client",
+ "SET radius_das_client 192.168.1.123 pw"),
+ (1, "hostapd_config_read_wep", "SET wep_key0 \"hello\""),
+ (1, "hostapd_config_read_wep", "SET wep_key0 0102030405"),
+ (1, "hostapd_parse_chanlist", "SET chanlist 1 6 11-13"),
+ (1, "hostapd_config_bss", "SET bss foo"),
+ (2, "hostapd_config_bss", "SET bss foo"),
+ (3, "hostapd_config_bss", "SET bss foo"),
+ (1, "add_r0kh",
+ "SET r0kh 02:01:02:03:04:05 r0kh-1.example.com 000102030405060708090a0b0c0d0e0f"),
+ (1, "add_r1kh",
+ "SET r1kh 02:01:02:03:04:05 02:11:22:33:44:55 000102030405060708090a0b0c0d0e0f"),
+ (1, "parse_roaming_consortium", "SET roaming_consortium 021122"),
+ (1, "parse_lang_string", "SET venue_name eng:Example venue"),
+ (1, "parse_3gpp_cell_net",
+ "SET anqp_3gpp_cell_net 244,91;310,026;234,56"),
+ (1, "parse_nai_realm", "SET nai_realm 0,example.com;example.net"),
+ (2, "parse_nai_realm", "SET nai_realm 0,example.com;example.net"),
+ (1, "parse_anqp_elem", "SET anqp_elem 265:0000"),
+ (2, "parse_anqp_elem", "SET anqp_elem 266:000000"),
+ (1, "hs20_parse_conn_capab", "SET hs20_conn_capab 1:0:2"),
+ (1, "hs20_parse_wan_metrics",
+ "SET hs20_wan_metrics 01:8000:1000:80:240:3000"),
+ (1, "hs20_parse_icon",
+ "SET hs20_icon 32:32:eng:image/png:icon32:/tmp/icon32.png"),
+ (1, "hs20_parse_osu_server_uri",
+ "SET osu_server_uri https://example.com/osu/"),
+ (1, "hostapd_config_parse_acs_chan_bias",
+ "SET acs_chan_bias 1:0.8 6:0.8 11:0.8"),
+ (2, "hostapd_config_parse_acs_chan_bias",
+ "SET acs_chan_bias 1:0.8 6:0.8 11:0.8"),
+ (1, "parse_wpabuf_hex", "SET vendor_elements 01020304"),
+ (1, "parse_fils_realm", "SET fils_realm example.com"),
+ (1, "hostapd_config_fill",
+ "SET pac_opaque_encr_key 000102030405060708090a0b0c0d0e0f"),
+ (1, "hostapd_config_fill", "SET eap_message hello"),
+ (1, "hostapd_config_fill",
+ "SET wpa_psk 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"),
+ (1, "hostapd_config_fill", "SET time_zone EST5"),
+ (1, "hostapd_config_fill",
+ "SET network_auth_type 02http://www.example.com/redirect/"),
+ (1, "hostapd_config_fill", "SET domain_name example.com"),
+ (1, "hostapd_config_fill", "SET hs20_operating_class 5173"),
+ (1, "hostapd_config_fill", "SET own_ie_override 11223344"),
+ (1, "hostapd_parse_intlist", "SET sae_groups 19 25"),
+ (1, "hostapd_parse_intlist", "SET basic_rates 10 20 55 110"),
+ (1, "hostapd_parse_intlist", "SET supported_rates 10 20 55 110")]
for count, func, cmd in tests:
with alloc_fail(hapd, count, func):
if "FAIL" not in hapd.request(cmd):
hapd.set("lci", "")
hapd.set("civic", "")
- tests = [ (1, "hs20_parse_icon",
- "SET hs20_icon 32:32:eng:image/png:icon32:/tmp/icon32.png"),
- (1, "parse_roaming_consortium", "SET roaming_consortium 021122"),
- (2, "parse_nai_realm", "SET nai_realm 0,example.com;example.net"),
- (1, "parse_lang_string", "SET venue_name eng:Example venue"),
- (1, "hs20_parse_osu_server_uri",
- "SET osu_server_uri https://example.com/osu/"),
- (1, "hs20_parse_osu_nai", "SET osu_nai anonymous@example.com"),
- (1, "hostapd_parse_intlist", "SET osu_method_list 1 0"),
- (1, "hs20_parse_osu_icon", "SET osu_icon icon32"),
- (2, "hs20_parse_osu_icon", "SET osu_icon icon32"),
- (2, "hs20_parse_osu_icon", "SET osu_icon icon32"),
- (1, "hs20_parse_conn_capab", "SET hs20_conn_capab 1:0:2") ]
+ tests = [(1, "hs20_parse_icon",
+ "SET hs20_icon 32:32:eng:image/png:icon32:/tmp/icon32.png"),
+ (1, "parse_roaming_consortium", "SET roaming_consortium 021122"),
+ (2, "parse_nai_realm", "SET nai_realm 0,example.com;example.net"),
+ (1, "parse_lang_string", "SET venue_name eng:Example venue"),
+ (1, "hs20_parse_osu_server_uri",
+ "SET osu_server_uri https://example.com/osu/"),
+ (1, "hs20_parse_osu_nai", "SET osu_nai anonymous@example.com"),
+ (1, "hostapd_parse_intlist", "SET osu_method_list 1 0"),
+ (1, "hs20_parse_osu_icon", "SET osu_icon icon32"),
+ (2, "hs20_parse_osu_icon", "SET osu_icon icon32"),
+ (2, "hs20_parse_osu_icon", "SET osu_icon icon32"),
+ (1, "hs20_parse_conn_capab", "SET hs20_conn_capab 1:0:2")]
for count, func, cmd in tests:
with alloc_fail(hapd, count, func):
if "FAIL" not in hapd.request(cmd):
raise Exception("Command accepted during OOM (2): " + cmd)
- tests = [ (1, "parse_fils_realm", "SET fils_realm example.com") ]
+ tests = [(1, "parse_fils_realm", "SET fils_realm example.com")]
for count, func, cmd in tests:
with fail_test(hapd, count, func):
if "FAIL" not in hapd.request(cmd):
def test_ap_config_set_errors(dev, apdev):
"""hostapd configuration parsing errors"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "foobar" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "foobar"})
hapd.set("wep_key0", '"hello"')
hapd.set("wep_key1", '"hello"')
hapd.set("wep_key0", '')
hapd.set("auth_server_addr", "127.0.0.1")
hapd.set("acct_server_addr", "127.0.0.1")
- tests = [ "SET eap_reauth_period -1",
- "SET fst_llt ",
- "SET auth_server_addr_replace foo",
- "SET acct_server_addr_replace foo" ]
+ tests = ["SET eap_reauth_period -1",
+ "SET fst_llt ",
+ "SET auth_server_addr_replace foo",
+ "SET acct_server_addr_replace foo"]
for t in tests:
if "FAIL" not in hapd.request(t):
raise Exception("Invalid command accepted: " + t)
from utils import HwsimSkip
def connect(dev, apdev, **kwargs):
- params = { "ssid": "ap-csa",
- "channel": "1" }
+ params = {"ssid": "ap-csa",
+ "channel": "1"}
params.update(kwargs)
ap = hostapd.add_ap(apdev[0], params)
dev.connect("ap-csa", key_mgmt="NONE", scan_freq="2412")
csa_supported(dev[0])
ap = connect(dev[0], apdev)
- vals = [ 2461, 4900, 4901, 5181, 5746, 5699, 5895, 5899 ]
+ vals = [2461, 4900, 4901, 5181, 5746, 5699, 5895, 5899]
for val in vals:
if "FAIL" not in ap.request("CHAN_SWITCH 1 %d" % val):
raise Exception("Invalid channel accepted: %d" % val)
first = True
for i in range(num_bss):
if not check[i]:
- timeout=0.2 if first else 0.01
+ timeout = 0.2 if first else 0.01
first = False
ev = dev[i].wait_event(["CTRL-EVENT-CONNECTED"], timeout=timeout)
if ev:
ifname3 = apdev[0]['ifname'] + '-3'
logger.info("Set up three BSSes one by one")
hostapd.add_bss(apdev[0], ifname1, 'bss-1.conf')
- multi_check(dev, [ True, False, False ])
+ multi_check(dev, [True, False, False])
hostapd.add_bss(apdev[0], ifname2, 'bss-2.conf')
- multi_check(dev, [ True, True, False ])
+ multi_check(dev, [True, True, False])
hostapd.add_bss(apdev[0], ifname3, 'bss-3.conf')
- multi_check(dev, [ True, True, True ])
+ multi_check(dev, [True, True, True])
logger.info("Remove the last BSS and re-add it")
hostapd.remove_bss(apdev[0], ifname3)
- multi_check(dev, [ True, True, False ])
+ multi_check(dev, [True, True, False])
hostapd.add_bss(apdev[0], ifname3, 'bss-3.conf')
- multi_check(dev, [ True, True, True ])
+ multi_check(dev, [True, True, True])
logger.info("Remove the middle BSS and re-add it")
hostapd.remove_bss(apdev[0], ifname2)
- multi_check(dev, [ True, False, True ])
+ multi_check(dev, [True, False, True])
hostapd.add_bss(apdev[0], ifname2, 'bss-2.conf')
- multi_check(dev, [ True, True, True ])
+ multi_check(dev, [True, True, True])
logger.info("Remove the first BSS and re-add it and other BSSs")
hostapd.remove_bss(apdev[0], ifname1)
- multi_check(dev, [ False, False, False ])
+ multi_check(dev, [False, False, False])
hostapd.add_bss(apdev[0], ifname1, 'bss-1.conf')
hostapd.add_bss(apdev[0], ifname2, 'bss-2.conf')
hostapd.add_bss(apdev[0], ifname3, 'bss-3.conf')
- multi_check(dev, [ True, True, True ])
+ multi_check(dev, [True, True, True])
logger.info("Remove two BSSes and re-add them")
hostapd.remove_bss(apdev[0], ifname2)
- multi_check(dev, [ True, False, True ])
+ multi_check(dev, [True, False, True])
hostapd.remove_bss(apdev[0], ifname3)
- multi_check(dev, [ True, False, False ])
+ multi_check(dev, [True, False, False])
hostapd.add_bss(apdev[0], ifname2, 'bss-2.conf')
- multi_check(dev, [ True, True, False ])
+ multi_check(dev, [True, True, False])
hostapd.add_bss(apdev[0], ifname3, 'bss-3.conf')
- multi_check(dev, [ True, True, True ])
+ multi_check(dev, [True, True, True])
logger.info("Remove three BSSes in and re-add them")
hostapd.remove_bss(apdev[0], ifname3)
- multi_check(dev, [ True, True, False ])
+ multi_check(dev, [True, True, False])
hostapd.remove_bss(apdev[0], ifname2)
- multi_check(dev, [ True, False, False ])
+ multi_check(dev, [True, False, False])
hostapd.remove_bss(apdev[0], ifname1)
- multi_check(dev, [ False, False, False ])
+ multi_check(dev, [False, False, False])
hostapd.add_bss(apdev[0], ifname1, 'bss-1.conf')
- multi_check(dev, [ True, False, False ])
+ multi_check(dev, [True, False, False])
hostapd.add_bss(apdev[0], ifname2, 'bss-2.conf')
- multi_check(dev, [ True, True, False ])
+ multi_check(dev, [True, True, False])
hostapd.add_bss(apdev[0], ifname3, 'bss-3.conf')
- multi_check(dev, [ True, True, True ])
+ multi_check(dev, [True, True, True])
logger.info("Test error handling if a duplicate ifname is tried")
hostapd.add_bss(apdev[0], ifname3, 'bss-3.conf', ignore_error=True)
- multi_check(dev, [ True, True, True ])
+ multi_check(dev, [True, True, True])
def test_ap_bss_add_remove_during_ht_scan(dev, apdev):
"""Dynamic BSS add during HT40 co-ex scan"""
ifname2 = apdev[0]['ifname'] + '-2'
hostapd.add_bss(apdev[0], ifname1, 'bss-ht40-1.conf')
hostapd.add_bss(apdev[0], ifname2, 'bss-ht40-2.conf')
- multi_check(dev, [ True, True ], scan_opt=False)
+ multi_check(dev, [True, True], scan_opt=False)
hostapd.remove_bss(apdev[0], ifname2)
hostapd.remove_bss(apdev[0], ifname1)
hostapd.add_bss(apdev[0], ifname1, 'bss-ht40-1.conf')
hostapd.add_bss(apdev[0], ifname2, 'bss-ht40-2.conf')
hostapd.remove_bss(apdev[0], ifname2)
- multi_check(dev, [ True, False ], scan_opt=False)
+ multi_check(dev, [True, False], scan_opt=False)
hostapd.remove_bss(apdev[0], ifname1)
hostapd.add_bss(apdev[0], ifname1, 'bss-ht40-1.conf')
hostapd.add_bss(apdev[0], ifname2, 'bss-ht40-2.conf')
hostapd.remove_bss(apdev[0], ifname1)
- multi_check(dev, [ False, False ])
+ multi_check(dev, [False, False])
def test_ap_multi_bss_config(dev, apdev):
"""hostapd start with a multi-BSS configuration file"""
logger.info("Set up three BSSes with one configuration file")
hapd = hostapd.add_iface(apdev[0], 'multi-bss.conf')
hapd.enable()
- multi_check(dev, [ True, True, True ])
+ multi_check(dev, [True, True, True])
hostapd.remove_bss(apdev[0], ifname2)
- multi_check(dev, [ True, False, True ])
+ multi_check(dev, [True, False, True])
hostapd.remove_bss(apdev[0], ifname3)
- multi_check(dev, [ True, False, False ])
+ multi_check(dev, [True, False, False])
hostapd.remove_bss(apdev[0], ifname1)
- multi_check(dev, [ False, False, False ])
+ multi_check(dev, [False, False, False])
hapd = hostapd.add_iface(apdev[0], 'multi-bss.conf')
hapd.enable()
hostapd.remove_bss(apdev[0], ifname1)
- multi_check(dev, [ False, False, False ])
+ multi_check(dev, [False, False, False])
def invalid_ap(ap):
logger.info("Trying to start AP " + ap['ifname'] + " with invalid configuration")
def test_ap_bss_add_out_of_memory(dev, apdev):
"""Running out of memory while adding a BSS"""
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "open" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "open"})
ifname1 = apdev[0]['ifname']
ifname2 = apdev[0]['ifname'] + '-2'
subprocess.call(['ip', 'link', 'set', 'dev', br_ifname, 'up'])
subprocess.call(['ip', 'route', 'add', '224.0.0.0/4', 'dev', br_ifname])
- params = { "ssid": "test-1",
- "bridge": br_ifname,
- "iapp_interface": br_ifname }
+ params = {"ssid": "test-1",
+ "bridge": br_ifname,
+ "iapp_interface": br_ifname}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
def test_ap_duplicate_bssid(dev, apdev):
"""Duplicate BSSID"""
- params = { "ssid": "test" }
+ params = {"ssid": "test"}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
hapd.enable()
ifname2 = apdev[0]['ifname'] + '-2'
if not os.path.exists(prg):
prg = '../../hostapd/hostapd'
phy = get_phy(apdev[0])
- cmd = [ prg, '-B', '-dddt', '-P', pidfile, '-f', logfile, '-S', '-T',
- '-b', phy + ':bss-1.conf', '-b', phy + ':bss-2.conf',
- '-b', phy + ':bss-3.conf' ]
+ cmd = [prg, '-B', '-dddt', '-P', pidfile, '-f', logfile, '-S', '-T',
+ '-b', phy + ':bss-1.conf', '-b', phy + ':bss-2.conf',
+ '-b', phy + ':bss-3.conf']
res = subprocess.check_call(cmd)
if res != 0:
raise Exception("Could not start hostapd: %s" % str(res))
- multi_check(dev, [ True, True, True ])
+ multi_check(dev, [True, True, True])
for i in range(0, 3):
dev[i].request("DISCONNECT")
expect_cert_error=expect_cert_error)
if expect_failure:
return id
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
return id
"""EAP-SIM and OOM"""
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hostapd.add_ap(apdev[0], params)
- tests = [ (1, "milenage_f2345"),
- (2, "milenage_f2345"),
- (3, "milenage_f2345"),
- (4, "milenage_f2345"),
- (5, "milenage_f2345"),
- (6, "milenage_f2345"),
- (7, "milenage_f2345"),
- (8, "milenage_f2345"),
- (9, "milenage_f2345"),
- (10, "milenage_f2345"),
- (11, "milenage_f2345"),
- (12, "milenage_f2345") ]
+ tests = [(1, "milenage_f2345"),
+ (2, "milenage_f2345"),
+ (3, "milenage_f2345"),
+ (4, "milenage_f2345"),
+ (5, "milenage_f2345"),
+ (6, "milenage_f2345"),
+ (7, "milenage_f2345"),
+ (8, "milenage_f2345"),
+ (9, "milenage_f2345"),
+ (10, "milenage_f2345"),
+ (11, "milenage_f2345"),
+ (12, "milenage_f2345")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="SIM",
time.sleep(0.1)
dev[0].dump_monitor()
- tests = [ ":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff:0011223344",
- ":UMTS-AUTH:34",
- ":UMTS-AUTH:00112233445566778899aabbccddeeff.00112233445566778899aabbccddeeff:0011223344",
- ":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddee:0011223344",
- ":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff.0011223344",
- ":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff0011223344",
- ":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff:001122334q" ]
+ tests = [":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff:0011223344",
+ ":UMTS-AUTH:34",
+ ":UMTS-AUTH:00112233445566778899aabbccddeeff.00112233445566778899aabbccddeeff:0011223344",
+ ":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddee:0011223344",
+ ":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff.0011223344",
+ ":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff0011223344",
+ ":UMTS-AUTH:00112233445566778899aabbccddeeff:00112233445566778899aabbccddeeff:001122334q"]
for t in tests:
dev[0].select_network(id, freq="2412")
ev = dev[0].wait_event(["CTRL-REQ-SIM"], timeout=15)
ca_cert="auth_serv/ca.pem", phase2="auth=PAP")
hwsim_utils.test_connectivity(dev[0], hapd)
eap_reauth(dev[0], "TTLS")
- check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-1"),
- ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-1") ])
+ check_mib(dev[0], [("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-1"),
+ ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-1")])
def test_ap_wpa2_eap_ttls_pap_subject_match(dev, apdev):
"""WPA2-Enterprise connection using EAP-TTLS/PAP and (alt)subject_match"""
check_check_cert_subject_support(dev[0])
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "C=FI/O=w1.fi/CN=server.w1.fi",
- "C=FI/O=w1.fi",
- "C=FI/CN=server.w1.fi",
- "O=w1.fi/CN=server.w1.fi",
- "C=FI",
- "O=w1.fi",
- "O=w1.*",
- "CN=server.w1.fi",
- "*" ]
+ tests = ["C=FI/O=w1.fi/CN=server.w1.fi",
+ "C=FI/O=w1.fi",
+ "C=FI/CN=server.w1.fi",
+ "O=w1.fi/CN=server.w1.fi",
+ "C=FI",
+ "O=w1.fi",
+ "O=w1.*",
+ "CN=server.w1.fi",
+ "*"]
for test in tests:
eap_connect(dev[0], hapd, "TTLS", "pap user",
anonymous_identity="ttls", password="password",
check_check_cert_subject_support(dev[0])
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "C=US",
- "C",
- "C=FI1*",
- "O=w1.f",
- "O=w1.fi1",
- "O=w1.fi/O=foo",
- "O=foo/O=w1.fi",
- "O=w1.fi/O=w1.fi" ]
+ tests = ["C=US",
+ "C",
+ "C=FI1*",
+ "O=w1.f",
+ "O=w1.fi1",
+ "O=w1.fi/O=foo",
+ "O=foo/O=w1.fi",
+ "O=w1.fi/O=w1.fi"]
for test in tests:
eap_connect(dev[0], hapd, "TTLS", "pap user",
anonymous_identity="ttls", password="password",
"""EAP-TTLS with invalid phase2 parameter values"""
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hostapd.add_ap(apdev[0], params)
- tests = [ "auth=MSCHAPv2", "auth=MSCHAPV2 autheap=MD5",
- "autheap=MD5 auth=MSCHAPV2", "auth=PAP auth=CHAP",
- "autheap=MD5 autheap=FOO autheap=MSCHAPV2" ]
+ tests = ["auth=MSCHAPv2", "auth=MSCHAPV2 autheap=MD5",
+ "autheap=MD5 auth=MSCHAPV2", "auth=PAP auth=CHAP",
+ "autheap=MD5 autheap=FOO autheap=MSCHAPV2"]
for t in tests:
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="TTLS",
identity="DOMAIN\mschapv2 user",
anonymous_identity="ttls",
password_hex="hash:bd5844fad2489992da7fe8c5a01559cf",
ca_cert="auth_serv/ca.pem", phase2="auth=MSCHAPV2")
- for p in [ "80", "41c041e04141e041", 257*"41" ]:
+ for p in ["80", "41c041e04141e041", 257*"41"]:
dev[2].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
eap="TTLS", identity="utf8-user-hash",
anonymous_identity="ttls", password_hex=p,
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "eap_gtc_init",
- "eap_msg_alloc;eap_gtc_process" ]
+ tests = ["eap_gtc_init",
+ "eap_msg_alloc;eap_gtc_process"]
for func in tests:
with alloc_fail(dev[0], 1, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
dev[0].request("REMOVE_NETWORK all")
dev[0].request("ABORT_SCAN")
- tests = [ ("peap-ver0", ""),
- ("peap-ver1", ""),
- ("peap-ver0", "peapver=0"),
- ("peap-ver1", "peapver=1") ]
- for anon,phase1 in tests:
+ tests = [("peap-ver0", ""),
+ ("peap-ver1", ""),
+ ("peap-ver0", "peapver=0"),
+ ("peap-ver1", "peapver=1")]
+ for anon, phase1 in tests:
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="PEAP",
identity="user", anonymous_identity=anon,
password="password", phase1=phase1,
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ ("peap-ver0", "peapver=1"),
- ("peap-ver1", "peapver=0") ]
- for anon,phase1 in tests:
+ tests = [("peap-ver0", "peapver=1"),
+ ("peap-ver1", "peapver=0")]
+ for anon, phase1 in tests:
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="PEAP",
identity="user", anonymous_identity=anon,
password="password", phase1=phase1,
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hostapd.add_ap(apdev[0], params)
- tests = [ "incorrect.example.com",
- "DNS:incorrect.example.com",
- "DNS:w1.fi",
- "DNS:erver.w1.fi" ]
+ tests = ["incorrect.example.com",
+ "DNS:incorrect.example.com",
+ "DNS:w1.fi",
+ "DNS:erver.w1.fi"]
for match in tests:
_test_ap_wpa2_eap_tls_neg_altsubject_match(dev, apdev, match)
"""WPA2-Enterprise connection using various EAP-pwd groups"""
check_eap_capa(dev[0], "PWD")
tls = dev[0].request("GET tls_library")
- params = { "ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
- "rsn_pairwise": "CCMP", "ieee8021x": "1",
- "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf" }
- groups = [ 19, 20, 21, 25, 26 ]
+ params = {"ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
+ "rsn_pairwise": "CCMP", "ieee8021x": "1",
+ "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf"}
+ groups = [19, 20, 21, 25, 26]
if tls.startswith("OpenSSL") and "build=OpenSSL 1.0.2" in tls and "run=OpenSSL 1.0.2" in tls:
logger.info("Add Brainpool EC groups since OpenSSL is new enough")
- groups += [ 27, 28, 29, 30 ]
+ groups += [27, 28, 29, 30]
if tls.startswith("OpenSSL") and "build=OpenSSL 1.1" in tls and "run=OpenSSL 1.1" in tls:
logger.info("Add Brainpool EC groups since OpenSSL is new enough")
- groups += [ 27, 28, 29, 30 ]
+ groups += [27, 28, 29, 30]
for i in groups:
logger.info("Group %d" % i)
params['pwd_group'] = str(i)
dev[0].wait_disconnected()
dev[0].dump_monitor()
except:
- if "BoringSSL" in tls and i in [ 25 ]:
+ if "BoringSSL" in tls and i in [25]:
logger.info("Ignore connection failure with group %d with BoringSSL" % i)
dev[0].request("DISCONNECT")
time.sleep(0.1)
def test_ap_wpa2_eap_pwd_invalid_group(dev, apdev):
"""WPA2-Enterprise connection using invalid EAP-pwd group"""
check_eap_capa(dev[0], "PWD")
- params = { "ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
- "rsn_pairwise": "CCMP", "ieee8021x": "1",
- "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf" }
+ params = {"ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
+ "rsn_pairwise": "CCMP", "ieee8021x": "1",
+ "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf"}
params['pwd_group'] = "0"
hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="PWD",
"""WPA2-Enterprise connection using EAP-pwd with server fragmentation"""
check_eap_capa(dev[0], "PWD")
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
- params = { "ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
- "rsn_pairwise": "CCMP", "ieee8021x": "1",
- "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
- "pwd_group": "19", "fragment_size": "40" }
+ params = {"ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
+ "rsn_pairwise": "CCMP", "ieee8021x": "1",
+ "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
+ "pwd_group": "19", "fragment_size": "40"}
hapd = hostapd.add_ap(apdev[0], params)
eap_connect(dev[0], hapd, "PWD", "pwd user", password="secret password")
eap_reauth(dev[0], "GPSK")
logger.info("Test forced algorithm selection")
- for phase1 in [ "cipher=1", "cipher=2" ]:
+ for phase1 in ["cipher=1", "cipher=2"]:
dev[0].set_network_quoted(id, "phase1", phase1)
ev = dev[0].wait_event(["CTRL-EVENT-EAP-SUCCESS"], timeout=10)
if ev is None:
eap_reauth(dev[0], "EKE")
logger.info("Test forced algorithm selection")
- for phase1 in [ "dhgroup=5 encr=1 prf=2 mac=2",
- "dhgroup=4 encr=1 prf=2 mac=2",
- "dhgroup=3 encr=1 prf=2 mac=2",
- "dhgroup=3 encr=1 prf=1 mac=1" ]:
+ for phase1 in ["dhgroup=5 encr=1 prf=2 mac=2",
+ "dhgroup=4 encr=1 prf=2 mac=2",
+ "dhgroup=3 encr=1 prf=2 mac=2",
+ "dhgroup=3 encr=1 prf=1 mac=1"]:
dev[0].set_network_quoted(id, "phase1", phase1)
ev = dev[0].wait_event(["CTRL-EVENT-EAP-SUCCESS"], timeout=10)
if ev is None:
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
- for count,func in [ (1, "eap_eke_build_commit"),
+ for count, func in [(1, "eap_eke_build_commit"),
(2, "eap_eke_build_commit"),
(3, "eap_eke_build_commit"),
(1, "eap_eke_build_confirm"),
(1, "eap_eke_process_identity"),
(2, "eap_eke_process_identity"),
(3, "eap_eke_process_identity"),
- (4, "eap_eke_process_identity") ]:
+ (4, "eap_eke_process_identity")]:
with alloc_fail(hapd, count, func):
eap_connect(dev[0], hapd, "EKE", "eke user", password="hello",
expect_failure=True)
dev[0].request("REMOVE_NETWORK all")
- for count,func,pw in [ (1, "eap_eke_init", "hello"),
- (1, "eap_eke_get_session_id", "hello"),
- (1, "eap_eke_getKey", "hello"),
- (1, "eap_eke_build_msg", "hello"),
- (1, "eap_eke_build_failure", "wrong"),
- (1, "eap_eke_build_identity", "hello"),
- (2, "eap_eke_build_identity", "hello") ]:
+ for count, func, pw in [(1, "eap_eke_init", "hello"),
+ (1, "eap_eke_get_session_id", "hello"),
+ (1, "eap_eke_getKey", "hello"),
+ (1, "eap_eke_build_msg", "hello"),
+ (1, "eap_eke_build_failure", "wrong"),
+ (1, "eap_eke_build_identity", "hello"),
+ (2, "eap_eke_build_identity", "hello")]:
with alloc_fail(hapd, count, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP WPA-EAP-SHA256",
eap="EKE", identity="eke user", password=pw,
"""WPA2-Enterprise connection using EAP-IKEv2 with server fragmentation"""
check_eap_capa(dev[0], "IKEV2")
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
- params = { "ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
- "rsn_pairwise": "CCMP", "ieee8021x": "1",
- "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
- "fragment_size": "50" }
+ params = {"ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
+ "rsn_pairwise": "CCMP", "ieee8021x": "1",
+ "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
+ "fragment_size": "50"}
hapd = hostapd.add_ap(apdev[0], params)
eap_connect(dev[0], hapd, "IKEV2", "ikev2 user",
password="ike password")
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hostapd.add_ap(apdev[0], params)
- tests = [ (1, "dh_init"),
- (2, "dh_init"),
- (1, "dh_derive_shared") ]
+ tests = [(1, "dh_init"),
+ (2, "dh_init"),
+ (1, "dh_derive_shared")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="IKEV2",
tls = dev[0].request("GET tls_library")
if not tls.startswith("wolfSSL"):
- tests = [ (1, "os_get_random;dh_init") ]
+ tests = [(1, "os_get_random;dh_init")]
else:
- tests = [ (1, "crypto_dh_init;dh_init") ]
+ tests = [(1, "crypto_dh_init;dh_init")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="IKEV2",
eap_connect(dev[0], hapd, "PSK", "psk.user@example.com",
password_hex="0123456789abcdef0123456789abcdef", sha256=True)
eap_reauth(dev[0], "PSK", sha256=True)
- check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-5"),
- ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-5") ])
+ check_mib(dev[0], [("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-5"),
+ ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-5")])
bss = dev[0].get_bss(apdev[0]['bssid'])
if 'flags' not in bss:
skip_with_fips(dev[0])
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hostapd.add_ap(apdev[0], params)
- tests = [ (1, "=aes_128_eax_encrypt"),
- (1, "=aes_128_eax_decrypt") ]
+ tests = [(1, "=aes_128_eax_encrypt"),
+ (1, "=aes_128_eax_decrypt")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="PSK",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "aes_ctr_encrypt;aes_128_eax_encrypt"),
- (1, "omac1_aes_128;aes_128_eax_encrypt"),
- (2, "omac1_aes_128;aes_128_eax_encrypt"),
- (3, "omac1_aes_128;aes_128_eax_encrypt"),
- (1, "omac1_aes_vector"),
- (1, "omac1_aes_128;aes_128_eax_decrypt"),
- (2, "omac1_aes_128;aes_128_eax_decrypt"),
- (3, "omac1_aes_128;aes_128_eax_decrypt"),
- (1, "aes_ctr_encrypt;aes_128_eax_decrypt") ]
+ tests = [(1, "aes_ctr_encrypt;aes_128_eax_encrypt"),
+ (1, "omac1_aes_128;aes_128_eax_encrypt"),
+ (2, "omac1_aes_128;aes_128_eax_encrypt"),
+ (3, "omac1_aes_128;aes_128_eax_encrypt"),
+ (1, "omac1_aes_vector"),
+ (1, "omac1_aes_128;aes_128_eax_decrypt"),
+ (2, "omac1_aes_128;aes_128_eax_decrypt"),
+ (3, "omac1_aes_128;aes_128_eax_decrypt"),
+ (1, "aes_ctr_encrypt;aes_128_eax_decrypt")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="PSK",
eap_check_auth(dev[0], "PEAP", True, rsn=False)
hwsim_utils.test_connectivity(dev[0], hapd)
eap_reauth(dev[0], "PEAP", rsn=False)
- check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-50-f2-1"),
- ("dot11RSNAAuthenticationSuiteSelected", "00-50-f2-1") ])
+ check_mib(dev[0], [("dot11RSNAAuthenticationSuiteRequested", "00-50-f2-1"),
+ ("dot11RSNAAuthenticationSuiteSelected", "00-50-f2-1")])
status = dev[0].get_status(extra="VERBOSE")
if 'portControl' not in status:
raise Exception("portControl missing from STATUS-VERBOSE")
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ ("Connection with dynamic TTLS/MSCHAPv2 password entry",
- "TTLS", "ttls", "DOMAIN\mschapv2 user", "auth=MSCHAPV2",
- None, "password"),
- ("Connection with dynamic TTLS/MSCHAPv2 identity and password entry",
- "TTLS", "ttls", None, "auth=MSCHAPV2",
- "DOMAIN\mschapv2 user", "password"),
- ("Connection with dynamic TTLS/EAP-MSCHAPv2 password entry",
- "TTLS", "ttls", "user", "autheap=MSCHAPV2", None, "password"),
- ("Connection with dynamic TTLS/EAP-MD5 password entry",
- "TTLS", "ttls", "user", "autheap=MD5", None, "password"),
- ("Connection with dynamic PEAP/EAP-MSCHAPv2 password entry",
- "PEAP", None, "user", "auth=MSCHAPV2", None, "password"),
- ("Connection with dynamic PEAP/EAP-GTC password entry",
- "PEAP", None, "user", "auth=GTC", None, "password") ]
- for [desc,eap,anon,identity,phase2,req_id,req_pw] in tests:
+ tests = [("Connection with dynamic TTLS/MSCHAPv2 password entry",
+ "TTLS", "ttls", "DOMAIN\mschapv2 user", "auth=MSCHAPV2",
+ None, "password"),
+ ("Connection with dynamic TTLS/MSCHAPv2 identity and password entry",
+ "TTLS", "ttls", None, "auth=MSCHAPV2",
+ "DOMAIN\mschapv2 user", "password"),
+ ("Connection with dynamic TTLS/EAP-MSCHAPv2 password entry",
+ "TTLS", "ttls", "user", "autheap=MSCHAPV2", None, "password"),
+ ("Connection with dynamic TTLS/EAP-MD5 password entry",
+ "TTLS", "ttls", "user", "autheap=MD5", None, "password"),
+ ("Connection with dynamic PEAP/EAP-MSCHAPv2 password entry",
+ "PEAP", None, "user", "auth=MSCHAPV2", None, "password"),
+ ("Connection with dynamic PEAP/EAP-GTC password entry",
+ "PEAP", None, "user", "auth=GTC", None, "password")]
+ for [desc, eap, anon, identity, phase2, req_id, req_pw] in tests:
logger.info(desc)
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap=eap,
anonymous_identity=anon, identity=identity,
raise Exception("Request for identity timed out")
id = ev.split(':')[0].split('-')[-1]
dev[0].request("CTRL-RSP-IDENTITY-" + id + ":" + req_id)
- ev = dev[0].wait_event(["CTRL-REQ-PASSWORD","CTRL-REQ-OTP"])
+ ev = dev[0].wait_event(["CTRL-REQ-PASSWORD", "CTRL-REQ-OTP"])
if ev is None:
raise Exception("Request for password timed out")
id = ev.split(':')[0].split('-')[-1]
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hostapd.add_ap(apdev[0], params)
- tests = [ "eap_vendor_test_init",
- "eap_msg_alloc;eap_vendor_test_process",
- "eap_vendor_test_getKey" ]
+ tests = ["eap_vendor_test_init",
+ "eap_msg_alloc;eap_vendor_test_process",
+ "eap_vendor_test_getKey"]
for func in tests:
with alloc_fail(dev[0], 1, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ (1, "=eap_fast_save_pac_bin"),
- (1, "eap_fast_write_pac"),
- (2, "eap_fast_write_pac"), ]
+ tests = [(1, "=eap_fast_save_pac_bin"),
+ (1, "eap_fast_write_pac"),
+ (2, "eap_fast_write_pac"),]
for count, func in tests:
if "OK" not in dev[0].request("SET blob fast_pac_bin_errors "):
raise Exception("Could not set blob")
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ "00", "000000000000", "6ae4920c0001",
- "6ae4920c000000",
- "6ae4920c0000" + "0000" + 32*"00" + "ffff" + "0000",
- "6ae4920c0000" + "0000" + 32*"00" + "0001" + "0000",
- "6ae4920c0000" + "0000" + 32*"00" + "0000" + "0001",
- "6ae4920c0000" + "0000" + 32*"00" + "0000" + "0008" + "00040000" + "0007000100"]
+ tests = ["00", "000000000000", "6ae4920c0001",
+ "6ae4920c000000",
+ "6ae4920c0000" + "0000" + 32*"00" + "ffff" + "0000",
+ "6ae4920c0000" + "0000" + 32*"00" + "0001" + "0000",
+ "6ae4920c0000" + "0000" + 32*"00" + "0000" + "0001",
+ "6ae4920c0000" + "0000" + 32*"00" + "0000" + "0008" + "00040000" + "0007000100"]
for t in tests:
if "OK" not in dev[0].request("SET blob fast_pac_bin_errors " + t):
raise Exception("Could not set blob")
dev[0].wait_disconnected()
pac = "6ae4920c0000" + "0000" + 32*"00" + "0000" + "0000"
- tests = [ (1, "eap_fast_load_pac_bin"),
- (2, "eap_fast_load_pac_bin"),
- (3, "eap_fast_load_pac_bin") ]
+ tests = [(1, "eap_fast_load_pac_bin"),
+ (2, "eap_fast_load_pac_bin"),
+ (3, "eap_fast_load_pac_bin")]
for count, func in tests:
if "OK" not in dev[0].request("SET blob fast_pac_bin_errors " + pac):
raise Exception("Could not set blob")
dev[0].wait_disconnected()
pac = "6ae4920c0000" + "0000" + 32*"00" + "0000" + "0009" + "00040000" + "0007000100"
- tests = [ (1, "eap_fast_pac_get_a_id"),
- (2, "eap_fast_pac_get_a_id") ]
+ tests = [(1, "eap_fast_pac_get_a_id"),
+ (2, "eap_fast_pac_get_a_id")]
for count, func in tests:
if "OK" not in dev[0].request("SET blob fast_pac_bin_errors " + pac):
raise Exception("Could not set blob")
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hostapd.add_ap(apdev[0], params)
- tests = [ (1, "eap_fast_parse_hex;eap_fast_parse_pac_key"),
- (1, "eap_fast_parse_hex;eap_fast_parse_pac_opaque"),
- (1, "eap_fast_parse_hex;eap_fast_parse_a_id"),
- (1, "eap_fast_parse_start"),
- (1, "eap_fast_save_pac") ]
+ tests = [(1, "eap_fast_parse_hex;eap_fast_parse_pac_key"),
+ (1, "eap_fast_parse_hex;eap_fast_parse_pac_opaque"),
+ (1, "eap_fast_parse_hex;eap_fast_parse_a_id"),
+ (1, "eap_fast_parse_start"),
+ (1, "eap_fast_save_pac")]
for count, func in tests:
dev[0].request("FLUSH")
if "OK" not in dev[0].request("SET blob fast_pac_text_errors "):
if res != "DHE-RSA-AES256-SHA":
raise Exception("Unexpected cipher suite for provisioning: " + res)
- tests = [ "DHE-RSA-AES128-SHA",
- "RC4-SHA",
- "AES128-SHA",
- "AES256-SHA",
- "DHE-RSA-AES256-SHA" ]
+ tests = ["DHE-RSA-AES128-SHA",
+ "RC4-SHA",
+ "AES128-SHA",
+ "AES256-SHA",
+ "DHE-RSA-AES256-SHA"]
for cipher in tests:
dev[0].dump_monitor()
logger.info("Testing " + cipher)
private_key_passwd="whatever", ocsp=2)
def int_eap_server_params():
- params = { "ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
- "rsn_pairwise": "CCMP", "ieee8021x": "1",
- "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key",
- "dh_file": "auth_serv/dh.conf" }
+ params = {"ssid": "test-wpa2-eap", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
+ "rsn_pairwise": "CCMP", "ieee8021x": "1",
+ "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key",
+ "dh_file": "auth_serv/dh.conf"}
return params
def test_ap_wpa2_eap_tls_ocsp_key_id(dev, apdev, params):
fd2, fn2 = tempfile.mkstemp()
os.close(fd2)
- arg = [ "openssl", "ocsp", "-reqout", fn2, "-issuer", ca, "-sha256",
- "-cert", cert, "-no_nonce", "-text" ]
+ arg = ["openssl", "ocsp", "-reqout", fn2, "-issuer", ca, "-sha256",
+ "-cert", cert, "-no_nonce", "-text"]
logger.info(' '.join(arg))
cmd = subprocess.Popen(arg, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
fd, fn = tempfile.mkstemp()
os.close(fd)
- arg = [ "openssl", "ocsp", "-index", "auth_serv/rootCA/index.txt",
- "-rsigner", ca, "-rkey", "auth_serv/ca-key.pem",
- "-CA", ca, "-issuer", ca, "-verify_other", ca, "-trust_other",
- "-ndays", "7", "-reqin", fn2, "-resp_no_certs", "-respout", fn,
- "-text" ]
+ arg = ["openssl", "ocsp", "-index", "auth_serv/rootCA/index.txt",
+ "-rsigner", ca, "-rkey", "auth_serv/ca-key.pem",
+ "-CA", ca, "-issuer", ca, "-verify_other", ca, "-trust_other",
+ "-ndays", "7", "-reqin", fn2, "-resp_no_certs", "-respout", fn,
+ "-text"]
cmd = subprocess.Popen(arg, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
res = cmd.stdout.read().decode() + "\n" + cmd.stderr.read().decode()
fd2, fn2 = tempfile.mkstemp()
os.close(fd2)
- arg = [ "openssl", "ocsp", "-reqout", fn2, "-issuer", ca, md,
- "-cert", cert, "-no_nonce", "-text" ]
+ arg = ["openssl", "ocsp", "-reqout", fn2, "-issuer", ca, md,
+ "-cert", cert, "-no_nonce", "-text"]
cmd = subprocess.Popen(arg, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
res = cmd.stdout.read().decode() + "\n" + cmd.stderr.read().decode()
fd, fn = tempfile.mkstemp()
os.close(fd)
- arg = [ "openssl", "ocsp", "-index", prefix + "index.txt",
- "-rsigner", ca, "-rkey", prefix + "private/cakey.pem",
- "-CA", ca, "-issuer", ca, "-verify_other", ca, "-trust_other",
- "-ndays", "7", "-reqin", fn2, "-resp_no_certs", "-respout", fn,
- "-text" ]
+ arg = ["openssl", "ocsp", "-index", prefix + "index.txt",
+ "-rsigner", ca, "-rkey", prefix + "private/cakey.pem",
+ "-CA", ca, "-issuer", ca, "-verify_other", ca, "-trust_other",
+ "-ndays", "7", "-reqin", fn2, "-resp_no_certs", "-respout", fn,
+ "-text"]
cmd = subprocess.Popen(arg, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
res = cmd.stdout.read().decode() + "\n" + cmd.stderr.read().decode()
identity="1232010000000000",
password="90dca4eda45b53cf0f12d7c9c3bc6a89:cb9cccc4b9258e6dca4760379fb82581",
wait_connect=False, scan_freq="2412")
- ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
- "CTRL-EVENT-DISCONNECTED" ],
+ ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
+ "CTRL-EVENT-DISCONNECTED"],
timeout=15)
if ev is None:
raise Exception("No connection result")
def test_ap_wpa2_eap_in_bridge(dev, apdev):
"""WPA2-EAP and wpas interface in a bridge"""
- br_ifname='sta-br0'
- ifname='wlan5'
+ br_ifname = 'sta-br0'
+ ifname = 'wlan5'
try:
_test_ap_wpa2_eap_in_bridge(dev, apdev)
finally:
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hapd = hostapd.add_ap(apdev[0], params)
- br_ifname='sta-br0'
- ifname='wlan5'
+ br_ifname = 'sta-br0'
+ ifname = 'wlan5'
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
subprocess.call(['brctl', 'addbr', br_ifname])
subprocess.call(['brctl', 'setfd', br_ifname, '0'])
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hostapd.add_ap(apdev[0], params)
- tests = [ (1, "tls_connection_set_subject_match"),
- (2, "tls_connection_set_subject_match"),
- (3, "tls_connection_set_subject_match"),
- (4, "tls_connection_set_subject_match") ]
+ tests = [(1, "tls_connection_set_subject_match"),
+ (2, "tls_connection_set_subject_match"),
+ (3, "tls_connection_set_subject_match"),
+ (4, "tls_connection_set_subject_match")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="TLS",
password="abcdefghijklmnop0123456789abcdef",
scan_freq="2412")
- tests = [ ('No RSN Capabilities field',
- '30120100000fac040100000fac040100000fac01'),
- ('No AKM Suite fields',
- '300c0100000fac040100000fac04'),
- ('No Pairwise Cipher Suite fields',
- '30060100000fac04'),
- ('No Group Data Cipher Suite field',
- '30020100') ]
- for txt,ie in tests:
+ tests = [('No RSN Capabilities field',
+ '30120100000fac040100000fac040100000fac01'),
+ ('No AKM Suite fields',
+ '300c0100000fac040100000fac04'),
+ ('No Pairwise Cipher Suite fields',
+ '30060100000fac04'),
+ ('No Group Data Cipher Suite field',
+ '30020100')]
+ for txt, ie in tests:
dev[0].request("DISCONNECT")
dev[0].wait_disconnected()
logger.info(txt)
def test_eap_tls_session_resumption_radius(dev, apdev):
"""EAP-TLS session resumption (RADIUS)"""
- params = { "ssid": "as", "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18128',
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key",
- "tls_session_lifetime": "60" }
+ params = {"ssid": "as", "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18128',
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key",
+ "tls_session_lifetime": "60"}
authsrv = hostapd.add_ap(apdev[1], params)
check_tls_session_resumption_capa(dev[0], authsrv)
def test_eap_tls_no_session_resumption_radius(dev, apdev):
"""EAP-TLS session resumption disabled (RADIUS)"""
- params = { "ssid": "as", "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18128',
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key",
- "tls_session_lifetime": "0" }
+ params = {"ssid": "as", "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18128',
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key",
+ "tls_session_lifetime": "0"}
hostapd.add_ap(apdev[1], params)
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "hash_nt_password_hash;mschapv2_derive_response"),
- (1, "nt_password_hash;mschapv2_derive_response"),
- (1, "nt_password_hash;=mschapv2_derive_response"),
- (1, "generate_nt_response;mschapv2_derive_response"),
- (1, "generate_authenticator_response;mschapv2_derive_response"),
- (1, "nt_password_hash;=mschapv2_derive_response"),
- (1, "get_master_key;mschapv2_derive_response"),
- (1, "os_get_random;eap_mschapv2_challenge_reply") ]
+ tests = [(1, "hash_nt_password_hash;mschapv2_derive_response"),
+ (1, "nt_password_hash;mschapv2_derive_response"),
+ (1, "nt_password_hash;=mschapv2_derive_response"),
+ (1, "generate_nt_response;mschapv2_derive_response"),
+ (1, "generate_authenticator_response;mschapv2_derive_response"),
+ (1, "nt_password_hash;=mschapv2_derive_response"),
+ (1, "get_master_key;mschapv2_derive_response"),
+ (1, "os_get_random;eap_mschapv2_challenge_reply")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("test-wpa-eap", key_mgmt="WPA-EAP", eap="MSCHAPV2",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "hash_nt_password_hash;mschapv2_derive_response"),
- (1, "hash_nt_password_hash;=mschapv2_derive_response"),
- (1, "generate_nt_response_pwhash;mschapv2_derive_response"),
- (1, "generate_authenticator_response_pwhash;mschapv2_derive_response") ]
+ tests = [(1, "hash_nt_password_hash;mschapv2_derive_response"),
+ (1, "hash_nt_password_hash;=mschapv2_derive_response"),
+ (1, "generate_nt_response_pwhash;mschapv2_derive_response"),
+ (1, "generate_authenticator_response_pwhash;mschapv2_derive_response")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("test-wpa-eap", key_mgmt="WPA-EAP", eap="MSCHAPV2",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "eap_mschapv2_init"),
- (1, "eap_msg_alloc;eap_mschapv2_challenge_reply"),
- (1, "eap_msg_alloc;eap_mschapv2_success"),
- (1, "eap_mschapv2_getKey") ]
+ tests = [(1, "eap_mschapv2_init"),
+ (1, "eap_msg_alloc;eap_mschapv2_challenge_reply"),
+ (1, "eap_msg_alloc;eap_mschapv2_success"),
+ (1, "eap_mschapv2_getKey")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("test-wpa-eap", key_mgmt="WPA-EAP", eap="MSCHAPV2",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "eap_msg_alloc;eap_mschapv2_failure") ]
+ tests = [(1, "eap_msg_alloc;eap_mschapv2_failure")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("test-wpa-eap", key_mgmt="WPA-EAP", eap="MSCHAPV2",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (2, "eap_mschapv2_init"),
- (3, "eap_mschapv2_init") ]
+ tests = [(2, "eap_mschapv2_init"),
+ (3, "eap_mschapv2_init")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("test-wpa-eap", key_mgmt="WPA-EAP", eap="FAST",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "os_get_random;eap_gpsk_send_gpsk_2", None),
- (1, "eap_gpsk_derive_session_id;eap_gpsk_send_gpsk_2",
- "cipher=1"),
- (1, "eap_gpsk_derive_session_id;eap_gpsk_send_gpsk_2",
- "cipher=2"),
- (1, "eap_gpsk_derive_keys_helper", None),
- (2, "eap_gpsk_derive_keys_helper", None),
- (1, "eap_gpsk_compute_mic_aes;eap_gpsk_compute_mic;eap_gpsk_send_gpsk_2",
- "cipher=1"),
- (1, "hmac_sha256;eap_gpsk_compute_mic;eap_gpsk_send_gpsk_2",
- "cipher=2"),
- (1, "eap_gpsk_compute_mic;eap_gpsk_validate_gpsk_3_mic", None),
- (1, "eap_gpsk_compute_mic;eap_gpsk_send_gpsk_4", None),
- (1, "eap_gpsk_derive_mid_helper", None) ]
+ tests = [(1, "os_get_random;eap_gpsk_send_gpsk_2", None),
+ (1, "eap_gpsk_derive_session_id;eap_gpsk_send_gpsk_2",
+ "cipher=1"),
+ (1, "eap_gpsk_derive_session_id;eap_gpsk_send_gpsk_2",
+ "cipher=2"),
+ (1, "eap_gpsk_derive_keys_helper", None),
+ (2, "eap_gpsk_derive_keys_helper", None),
+ (1, "eap_gpsk_compute_mic_aes;eap_gpsk_compute_mic;eap_gpsk_send_gpsk_2",
+ "cipher=1"),
+ (1, "hmac_sha256;eap_gpsk_compute_mic;eap_gpsk_send_gpsk_2",
+ "cipher=2"),
+ (1, "eap_gpsk_compute_mic;eap_gpsk_validate_gpsk_3_mic", None),
+ (1, "eap_gpsk_compute_mic;eap_gpsk_send_gpsk_4", None),
+ (1, "eap_gpsk_derive_mid_helper", None)]
for count, func, phase1 in tests:
with fail_test(dev[0], count, func):
dev[0].connect("test-wpa-eap", key_mgmt="WPA-EAP", eap="GPSK",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "eap_gpsk_init"),
- (2, "eap_gpsk_init"),
- (3, "eap_gpsk_init"),
- (1, "eap_gpsk_process_id_server"),
- (1, "eap_msg_alloc;eap_gpsk_send_gpsk_2"),
- (1, "eap_gpsk_derive_session_id;eap_gpsk_send_gpsk_2"),
- (1, "eap_gpsk_derive_mid_helper;eap_gpsk_derive_session_id;eap_gpsk_send_gpsk_2"),
- (1, "eap_gpsk_derive_keys"),
- (1, "eap_gpsk_derive_keys_helper"),
- (1, "eap_msg_alloc;eap_gpsk_send_gpsk_4"),
- (1, "eap_gpsk_getKey"),
- (1, "eap_gpsk_get_emsk"),
- (1, "eap_gpsk_get_session_id") ]
+ tests = [(1, "eap_gpsk_init"),
+ (2, "eap_gpsk_init"),
+ (3, "eap_gpsk_init"),
+ (1, "eap_gpsk_process_id_server"),
+ (1, "eap_msg_alloc;eap_gpsk_send_gpsk_2"),
+ (1, "eap_gpsk_derive_session_id;eap_gpsk_send_gpsk_2"),
+ (1, "eap_gpsk_derive_mid_helper;eap_gpsk_derive_session_id;eap_gpsk_send_gpsk_2"),
+ (1, "eap_gpsk_derive_keys"),
+ (1, "eap_gpsk_derive_keys_helper"),
+ (1, "eap_msg_alloc;eap_gpsk_send_gpsk_4"),
+ (1, "eap_gpsk_getKey"),
+ (1, "eap_gpsk_get_emsk"),
+ (1, "eap_gpsk_get_session_id")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].request("ERP_FLUSH")
hostapd.add_ap(apdev[1], params)
# Success cases with optional RSN IE fields removed one by one
- tests = [ ("Normal wpa_supplicant assoc req RSN IE",
- "30140100000fac040100000fac040100000fac010000"),
- ("Extra PMKIDCount field in RSN IE",
- "30160100000fac040100000fac040100000fac0100000000"),
- ("Extra Group Management Cipher Suite in RSN IE",
- "301a0100000fac040100000fac040100000fac0100000000000fac06"),
- ("Extra undefined extension field in RSN IE",
- "301c0100000fac040100000fac040100000fac0100000000000fac061122"),
- ("RSN IE without RSN Capabilities",
- "30120100000fac040100000fac040100000fac01"),
- ("RSN IE without AKM", "300c0100000fac040100000fac04"),
- ("RSN IE without pairwise", "30060100000fac04"),
- ("RSN IE without group", "30020100") ]
+ tests = [("Normal wpa_supplicant assoc req RSN IE",
+ "30140100000fac040100000fac040100000fac010000"),
+ ("Extra PMKIDCount field in RSN IE",
+ "30160100000fac040100000fac040100000fac0100000000"),
+ ("Extra Group Management Cipher Suite in RSN IE",
+ "301a0100000fac040100000fac040100000fac0100000000000fac06"),
+ ("Extra undefined extension field in RSN IE",
+ "301c0100000fac040100000fac040100000fac0100000000000fac061122"),
+ ("RSN IE without RSN Capabilities",
+ "30120100000fac040100000fac040100000fac01"),
+ ("RSN IE without AKM", "300c0100000fac040100000fac04"),
+ ("RSN IE without pairwise", "30060100000fac04"),
+ ("RSN IE without group", "30020100")]
for title, ie in tests:
logger.info(title)
set_test_assoc_ie(dev[0], ie)
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ ("Normal wpa_supplicant assoc req RSN IE",
- "30140100000fac040100000fac040100000fac01cc00"),
- ("Group management cipher included in assoc req RSN IE",
- "301a0100000fac040100000fac040100000fac01cc000000000fac06") ]
+ tests = [("Normal wpa_supplicant assoc req RSN IE",
+ "30140100000fac040100000fac040100000fac01cc00"),
+ ("Group management cipher included in assoc req RSN IE",
+ "301a0100000fac040100000fac040100000fac01cc000000000fac06")]
for title, ie in tests:
logger.info(title)
set_test_assoc_ie(dev[0], ie)
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ ("Invalid group cipher", "30060100000fac02", 41),
- ("Invalid pairwise cipher", "300c0100000fac040100000fac02", 42) ]
+ tests = [("Invalid group cipher", "30060100000fac02", 41),
+ ("Invalid pairwise cipher", "300c0100000fac040100000fac02", 42)]
for title, ie, status in tests:
logger.info(title)
set_test_assoc_ie(dev[0], ie)
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ ("Management frame protection not enabled",
- "30140100000fac040100000fac040100000fac010000", 31),
- ("Unsupported management group cipher",
- "301a0100000fac040100000fac040100000fac01cc000000000fac0b", 46) ]
+ tests = [("Management frame protection not enabled",
+ "30140100000fac040100000fac040100000fac010000", 31),
+ ("Unsupported management group cipher",
+ "301a0100000fac040100000fac040100000fac01cc000000000fac0b", 46)]
for title, ie, status in tests:
logger.info(title)
set_test_assoc_ie(dev[0], ie)
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ "eap_peer_tls_derive_key;eap_tls_success",
- "eap_peer_tls_derive_session_id;eap_tls_success",
- "eap_tls_getKey",
- "eap_tls_get_emsk",
- "eap_tls_get_session_id" ]
+ tests = ["eap_peer_tls_derive_key;eap_tls_success",
+ "eap_peer_tls_derive_session_id;eap_tls_success",
+ "eap_tls_getKey",
+ "eap_tls_get_emsk",
+ "eap_tls_get_session_id"]
for func in tests:
with alloc_fail(dev[0], 1, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="TLS",
'alt-wpa_supplicant/wpa_supplicant/wpa_supplicant')
if not os.path.exists(prg):
prg = '../../wpa_supplicant/wpa_supplicant'
- arg = [ prg, '-BddtK', '-P', pidfile, '-f', logfile,
- '-Dnl80211', '-c', conffile, '-i', iface ]
+ arg = [prg, '-BddtK', '-P', pidfile, '-f', logfile,
+ '-Dnl80211', '-c', conffile, '-i', iface]
logger.info("Start wpa_supplicant: " + str(arg))
subprocess.call(arg, env={'OPENSSL_CONF': openssl_cnf})
wpas = WpaSupplicant(ifname=iface)
from test_rrm import check_beacon_req
def ft_base_rsn():
- params = { "wpa": "2",
- "wpa_key_mgmt": "FT-PSK",
- "rsn_pairwise": "CCMP" }
+ params = {"wpa": "2",
+ "wpa_key_mgmt": "FT-PSK",
+ "rsn_pairwise": "CCMP"}
return params
def ft_base_mixed():
- params = { "wpa": "3",
- "wpa_key_mgmt": "WPA-PSK FT-PSK",
- "wpa_pairwise": "TKIP",
- "rsn_pairwise": "CCMP" }
+ params = {"wpa": "3",
+ "wpa_key_mgmt": "WPA-PSK FT-PSK",
+ "wpa_pairwise": "TKIP",
+ "rsn_pairwise": "CCMP"}
return params
def ft_params(rsn=True, ssid=None, passphrase=None):
params['r0kh'] = "ff:ff:ff:ff:ff:ff * 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f"
params['r1kh'] = "00:00:00:00:00:00 00:00:00:00:00:00 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f"
else:
- params['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
- "02:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f300102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["02:00:00:00:03:00 nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
+ "02:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f300102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "02:00:00:00:04:00 00:01:02:03:04:06 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f"
return params
def ft_params1_old_key(rsn=True, ssid=None, passphrase=None):
params = ft_params1a(rsn, ssid, passphrase)
- params['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 100102030405060708090a0b0c0d0e0f",
- "02:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["02:00:00:00:03:00 nas1.w1.fi 100102030405060708090a0b0c0d0e0f",
+ "02:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "02:00:00:00:04:00 00:01:02:03:04:06 200102030405060708090a0b0c0d0e0f"
return params
params['r0kh'] = "ff:ff:ff:ff:ff:ff * 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f"
params['r1kh'] = "00:00:00:00:00:00 00:00:00:00:00:00 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f"
else:
- params['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f",
- "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f",
+ "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "02:00:00:00:03:00 00:01:02:03:04:05 300102030405060708090a0b0c0d0e0f300102030405060708090a0b0c0d0e0f"
return params
def ft_params2_old_key(rsn=True, ssid=None, passphrase=None):
params = ft_params2a(rsn, ssid, passphrase)
- params['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f",
- "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f",
+ "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "02:00:00:00:03:00 00:01:02:03:04:05 300102030405060708090a0b0c0d0e0f"
return params
params = ft_params(rsn, ssid, passphrase)
params['nas_identifier'] = "nas1.w1.fi"
params['r1_key_holder'] = "000102030405"
- params['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
- "12:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f300102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["02:00:00:00:03:00 nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
+ "12:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f300102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "12:00:00:00:04:00 10:01:02:03:04:06 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f"
return params
params = ft_params(rsn, ssid, passphrase)
params['nas_identifier'] = "nas2.w1.fi"
params['r1_key_holder'] = "000102030406"
- params['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0ef1200102030405060708090a0b0c0d0ef1",
- "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0ef2000102030405060708090a0b0c0d0ef2" ]
+ params['r0kh'] = ["02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0ef1200102030405060708090a0b0c0d0ef1",
+ "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0ef2000102030405060708090a0b0c0d0ef2"]
params['r1kh'] = "02:00:00:00:03:00 00:01:02:03:04:05 300102030405060708090a0b0c0d0ef3300102030405060708090a0b0c0d0ef3"
return params
params = ft_params(rsn, ssid, passphrase)
params['nas_identifier'] = "nas2.w1.fi"
params['r1_key_holder'] = "000102030406"
- params['r0kh'] = [ "12:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f",
- "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["12:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f",
+ "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "12:00:00:00:03:00 10:01:02:03:04:05 300102030405060708090a0b0c0d0e0f300102030405060708090a0b0c0d0e0f"
return params
copts["ieee80211w"] = "1"
copts["scan_freq"] = "2412"
copts["pairwise"] = pairwise_cipher
- copts["group"] = group_cipher
+ copts["group"] = group_cipher
copts["wpa_ptk_rekey"] = ptk_rekey
if group_mgmt:
copts["group_mgmt"] = group_mgmt
def test_ap_ft(dev, apdev):
"""WPA2-PSK-FT AP"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_old_key(dev, apdev):
"""WPA2-PSK-FT AP (old key)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1_old_key(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_multi_akm(dev, apdev):
"""WPA2-PSK-FT AP with non-FT AKMs enabled"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["wpa_key_mgmt"] = "FT-PSK WPA-PSK WPA-PSK-SHA256"
def test_ap_ft_local_key_gen(dev, apdev):
"""WPA2-PSK-FT AP with local key generation (without pull/push)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1a(ssid=ssid, passphrase=passphrase)
params['ft_psk_generate_local'] = "1"
def test_ap_ft_vlan(dev, apdev):
"""WPA2-PSK-FT AP with VLAN"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['dynamic_vlan'] = "1"
def test_ap_ft_vlan_disconnected(dev, apdev):
"""WPA2-PSK-FT AP with VLAN and local key generation"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1a(ssid=ssid, passphrase=passphrase)
params['dynamic_vlan'] = "1"
def test_ap_ft_vlan_2(dev, apdev):
"""WPA2-PSK-FT AP with VLAN and dest-AP does not have VLAN info locally"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['dynamic_vlan'] = "1"
def test_ap_ft_many(dev, apdev):
"""WPA2-PSK-FT AP multiple times"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_many_vlan(dev, apdev):
"""WPA2-PSK-FT AP with VLAN multiple times"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['dynamic_vlan'] = "1"
def test_ap_ft_mixed(dev, apdev):
"""WPA2-PSK-FT mixed-mode AP"""
ssid = "test-ft-mixed"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(rsn=False, ssid=ssid, passphrase=passphrase)
hapd = hostapd.add_ap(apdev[0], params)
def test_ap_ft_pmf(dev, apdev):
"""WPA2-PSK-FT AP with PMF"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
raise HwsimSkip("Cipher %s not supported" % cipher)
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_ocv(dev, apdev):
"""WPA2-PSK-FT AP with OCV"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_over_ds(dev, apdev):
"""WPA2-PSK-FT AP over DS"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
hapd1 = hostapd.add_ap(apdev[1], params)
run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True)
- check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-4"),
- ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-4") ])
+ check_mib(dev[0], [("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-4"),
+ ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-4")])
def cleanup_ap_ft_separate_hostapd():
subprocess.call(["brctl", "delif", "br0ft", "veth0"],
stderr=open('/dev/null', 'w'))
subprocess.call(["ip", "link", "del", "veth1"],
stderr=open('/dev/null', 'w'))
- for ifname in [ 'br0ft', 'br1ft', 'br-ft' ]:
+ for ifname in ['br0ft', 'br1ft', 'br-ft']:
subprocess.call(['ip', 'link', 'set', 'dev', ifname, 'down'],
stderr=open('/dev/null', 'w'))
subprocess.call(['brctl', 'delbr', ifname],
def run_ap_ft_separate_hostapd(dev, apdev, params, over_ds):
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
logdir = params['logdir']
pidfile = os.path.join(logdir, 'ap_ft_over_ds_separate_hostapd.pid')
logfile = os.path.join(logdir, 'ap_ft_over_ds_separate_hostapd.hapd')
subprocess.check_call(['brctl', 'setfd', br_ifname, '0'])
subprocess.check_call(['ip', 'link', 'set', 'dev', br_ifname, 'up'])
- subprocess.check_call([ "ip", "link", "add", "veth0", "type", "veth",
- "peer", "name", "veth0br" ])
- subprocess.check_call([ "ip", "link", "add", "veth1", "type", "veth",
- "peer", "name", "veth1br" ])
+ subprocess.check_call(["ip", "link", "add", "veth0", "type", "veth",
+ "peer", "name", "veth0br"])
+ subprocess.check_call(["ip", "link", "add", "veth1", "type", "veth",
+ "peer", "name", "veth1br"])
subprocess.check_call(['ip', 'link', 'set', 'dev', 'veth0br', 'up'])
subprocess.check_call(['ip', 'link', 'set', 'dev', 'veth1br', 'up'])
subprocess.check_call(['brctl', 'addif', br_ifname, 'veth0br'])
prg = os.path.join(logdir, 'alt-hostapd/hostapd/hostapd')
if not os.path.exists(prg):
prg = '../../hostapd/hostapd'
- cmd = [ prg, '-B', '-ddKt',
- '-P', pidfile, '-f', logfile, '-g', global_ctrl ]
+ cmd = [prg, '-B', '-ddKt',
+ '-P', pidfile, '-f', logfile, '-g', global_ctrl]
subprocess.check_call(cmd)
hglobal = hostapd.HostapdGlobal(global_ctrl_override=global_ctrl)
- apdev_ft = { 'ifname': iface }
- apdev2 = [ apdev_ft, apdev[1] ]
+ apdev_ft = {'ifname': iface}
+ apdev2 = [apdev_ft, apdev[1]]
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["r0kh"] = "ff:ff:ff:ff:ff:ff * 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
def test_ap_ft_over_ds_ocv(dev, apdev):
"""WPA2-PSK-FT AP over DS"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_over_ds_disabled(dev, apdev):
"""WPA2-PSK-FT AP over DS disabled"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['ft_over_ds'] = '0'
def test_ap_ft_vlan_over_ds(dev, apdev):
"""WPA2-PSK-FT AP over DS with VLAN"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['dynamic_vlan'] = "1"
run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True,
conndev="brvlan1")
- check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-4"),
- ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-4") ])
+ check_mib(dev[0], [("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-4"),
+ ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-4")])
def test_ap_ft_over_ds_many(dev, apdev):
"""WPA2-PSK-FT AP over DS multiple times"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_vlan_over_ds_many(dev, apdev):
"""WPA2-PSK-FT AP over DS with VLAN multiple times"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['dynamic_vlan'] = "1"
def test_ap_ft_over_ds_unknown_target(dev, apdev):
"""WPA2-PSK-FT AP"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_over_ds_unexpected(dev, apdev):
"""WPA2-PSK-FT AP over DS and unexpected response"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
raise HwsimSkip("Cipher %s not supported" % cipher)
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_over_ds_pull(dev, apdev):
"""WPA2-PSK-FT AP over DS (pull PMK)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["pmk_r1_push"] = "0"
def test_ap_ft_over_ds_pull_old_key(dev, apdev):
"""WPA2-PSK-FT AP over DS (pull PMK; old key)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1_old_key(ssid=ssid, passphrase=passphrase)
params["pmk_r1_push"] = "0"
def test_ap_ft_over_ds_pull_vlan(dev, apdev):
"""WPA2-PSK-FT AP over DS (pull PMK) with VLAN"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["pmk_r1_push"] = "0"
if "SAE" not in dev[0].get_capability("auth_alg"):
raise HwsimSkip("SAE not supported")
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['wpa_key_mgmt'] = "FT-SAE"
if "SAE" not in dev[0].get_capability("auth_alg"):
raise HwsimSkip("SAE not supported")
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['wpa_key_mgmt'] = "FT-SAE"
def generic_ap_ft_eap(dev, apdev, vlan=False, cui=False, over_ds=False,
discovery=False, roams=1):
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
if vlan:
- identity="gpsk-vlan1"
- conndev="brvlan1"
+ identity = "gpsk-vlan1"
+ conndev = "brvlan1"
elif cui:
- identity="gpsk-cui"
- conndev=False
+ identity = "gpsk-cui"
+ conndev = False
else:
- identity="gpsk user"
- conndev=False
+ identity = "gpsk user"
+ conndev = False
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase, discovery=discovery)
conndev=conndev)
if "[WPA2-FT/EAP-CCMP]" not in dev[0].request("SCAN_RESULTS"):
raise Exception("Scan results missing RSN element info")
- check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-3"),
- ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-3") ])
+ check_mib(dev[0], [("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-3"),
+ ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-3")])
# Verify EAPOL reauthentication after FT protocol
if dev[0].get_status_field('bssid') == apdev[0]['bssid']:
def generic_ap_ft_eap_pull(dev, apdev, vlan=False):
"""WPA2-EAP-FT AP (pull PMK)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
if vlan:
- identity="gpsk-vlan1"
- conndev="brvlan1"
+ identity = "gpsk-vlan1"
+ conndev = "brvlan1"
else:
- identity="gpsk user"
- conndev=False
+ identity = "gpsk user"
+ conndev = False
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase)
def test_ap_ft_eap_pull_wildcard(dev, apdev):
"""WPA2-EAP-FT AP (pull PMK) - wildcard R0KH/R1KH"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase, discovery=True)
def test_ap_ft_mismatching_rrb_key_push(dev, apdev):
"""WPA2-PSK-FT AP over DS with mismatching RRB key (push)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_mismatching_rrb_key_pull(dev, apdev):
"""WPA2-PSK-FT AP over DS with mismatching RRB key (pull)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["pmk_r1_push"] = "0"
def test_ap_ft_mismatching_r0kh_id_pull(dev, apdev):
"""WPA2-PSK-FT AP over DS with mismatching R0KH-ID (pull)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["pmk_r1_push"] = "0"
def test_ap_ft_mismatching_rrb_r0kh_push(dev, apdev):
"""WPA2-PSK-FT AP over DS with mismatching R0KH key (push)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_mismatching_rrb_r0kh_pull(dev, apdev):
"""WPA2-PSK-FT AP over DS with mismatching R0KH key (pull)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1_r0kh_mismatch(ssid=ssid, passphrase=passphrase)
params["pmk_r1_push"] = "0"
def test_ap_ft_mismatching_rrb_key_push_eap(dev, apdev):
"""WPA2-EAP-FT AP over DS with mismatching RRB key (push)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase)
def test_ap_ft_mismatching_rrb_key_pull_eap(dev, apdev):
"""WPA2-EAP-FT AP over DS with mismatching RRB key (pull)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase)
def test_ap_ft_mismatching_r0kh_id_pull_eap(dev, apdev):
"""WPA2-EAP-FT AP over DS with mismatching R0KH-ID (pull)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase)
def test_ap_ft_mismatching_rrb_r0kh_push_eap(dev, apdev):
"""WPA2-EAP-FT AP over DS with mismatching R0KH key (push)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase)
def test_ap_ft_mismatching_rrb_r0kh_pull_eap(dev, apdev):
"""WPA2-EAP-FT AP over DS with mismatching R0KH key (pull)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1_r0kh_mismatch(ssid=ssid, passphrase=passphrase)
def test_ap_ft_gtk_rekey(dev, apdev):
"""WPA2-PSK-FT AP and GTK rekey"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['wpa_group_rekey'] = '1'
def test_ft_psk_key_lifetime_in_memory(dev, apdev, params):
"""WPA2-PSK-FT and key lifetime in memory"""
ssid = "test-ft"
- passphrase="04c2726b4b8d5f1b4db9c07aa4d9e9d8f765cb5d25ec817e6cc4fcdd5255db0"
+ passphrase = "04c2726b4b8d5f1b4db9c07aa4d9e9d8f765cb5d25ec817e6cc4fcdd5255db0"
psk = '93c90846ff67af9037ed83fb72b63dbeddaa81d47f926c20909b5886f1d9358d'
pmk = binascii.unhexlify(psk)
p = ft_params1(ssid=ssid, passphrase=passphrase)
def test_ap_ft_invalid_resp(dev, apdev):
"""WPA2-PSK-FT AP and invalid response IEs"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
# RIC missing from protected IE count.
"020002000000" + "3603a1b201" + "375200020203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001" + "3900",
# Protected IE missing.
- "020002000000" + "3603a1b201" + "375200ff0203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001" + "3900" + "0000" ]
+ "020002000000" + "3603a1b201" + "375200ff0203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001" + "3900" + "0000"]
for t in tests:
dev[0].scan_for_bss(apdev[1]['bssid'], freq="2412")
hapd1.set("ext_mgmt_frame_handling", "1")
if "GCMP-256" not in dev[0].get_capability("pairwise"):
raise HwsimSkip("Cipher GCMP-256 not supported")
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['rsn_pairwise'] = "GCMP-256"
def setup_ap_ft_oom(dev, apdev):
skip_with_fips(dev[0])
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_oom4(dev, apdev):
"""WPA2-PSK-FT and OOM (4)"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
dst = setup_ap_ft_oom(dev, apdev)
dev[0].request("REMOVE_NETWORK all")
with alloc_fail(dev[0], 1, "=sme_update_ft_ies"):
def test_ap_ft_ap_oom(dev, apdev):
"""WPA2-PSK-FT and AP OOM"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ap_oom2(dev, apdev):
"""WPA2-PSK-FT and AP OOM 2"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ap_oom3(dev, apdev):
"""WPA2-PSK-FT and AP OOM 3"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ap_oom3b(dev, apdev):
"""WPA2-PSK-FT and AP OOM 3b"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ap_oom4(dev, apdev):
"""WPA2-PSK-FT and AP OOM 4"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ap_oom5(dev, apdev):
"""WPA2-PSK-FT and AP OOM 5"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ap_oom6(dev, apdev):
"""WPA2-PSK-FT and AP OOM 6"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ap_oom7a(dev, apdev):
"""WPA2-PSK-FT and AP OOM 7a"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_ap_oom7b(dev, apdev):
"""WPA2-PSK-FT and AP OOM 7b"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_ap_oom7c(dev, apdev):
"""WPA2-PSK-FT and AP OOM 7c"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_ap_oom7d(dev, apdev):
"""WPA2-PSK-FT and AP OOM 7d"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "2"
def test_ap_ft_ap_oom8(dev, apdev):
"""WPA2-PSK-FT and AP OOM 8"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['ft_psk_generate_local'] = "1"
def test_ap_ft_ap_oom9(dev, apdev):
"""WPA2-PSK-FT and AP OOM 9"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ap_oom10(dev, apdev):
"""WPA2-PSK-FT and AP OOM 10"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ap_oom11(dev, apdev):
"""WPA2-PSK-FT and AP OOM 11"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_over_ds_proto_ap(dev, apdev):
"""WPA2-PSK-FT AP over DS protocol testing for AP processing"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
hapd0.set("ext_mgmt_frame_handling", "1")
hdr = "d0003a01" + _bssid0 + _addr + _bssid0 + "1000"
valid = "0601" + _addr + _bssid1
- tests = [ "0601",
- "0601" + _addr,
- "0601" + _addr + _bssid0,
- "0601" + _addr + "ffffffffffff",
- "0601" + _bssid0 + _bssid0,
- valid,
- valid + "01",
- valid + "3700",
- valid + "3600",
- valid + "3603ffffff",
- valid + "3603a1b2ff",
- valid + "3603a1b2ff" + "3700",
- valid + "3603a1b2ff" + "37520000" + 16*"00" + 32*"00" + 32*"00",
- valid + "3603a1b2ff" + "37520001" + 16*"00" + 32*"00" + 32*"00",
- valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa",
- valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa" + "3000",
- valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa" + "30260100000fac040100000fac040100000facff00000100a225368fe0983b5828a37a0acb37f253",
- valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa" + "30260100000fac040100000fac030100000fac0400000100a225368fe0983b5828a37a0acb37f253",
- valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa" + "30260100000fac040100000fac040100000fac0400000100a225368fe0983b5828a37a0acb37f253",
- valid + "0001" ]
+ tests = ["0601",
+ "0601" + _addr,
+ "0601" + _addr + _bssid0,
+ "0601" + _addr + "ffffffffffff",
+ "0601" + _bssid0 + _bssid0,
+ valid,
+ valid + "01",
+ valid + "3700",
+ valid + "3600",
+ valid + "3603ffffff",
+ valid + "3603a1b2ff",
+ valid + "3603a1b2ff" + "3700",
+ valid + "3603a1b2ff" + "37520000" + 16*"00" + 32*"00" + 32*"00",
+ valid + "3603a1b2ff" + "37520001" + 16*"00" + 32*"00" + 32*"00",
+ valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa",
+ valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa" + "3000",
+ valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa" + "30260100000fac040100000fac040100000facff00000100a225368fe0983b5828a37a0acb37f253",
+ valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa" + "30260100000fac040100000fac030100000fac0400000100a225368fe0983b5828a37a0acb37f253",
+ valid + "3603a1b2ff" + "37550000" + 16*"00" + 32*"00" + 32*"00" + "0301aa" + "30260100000fac040100000fac040100000fac0400000100a225368fe0983b5828a37a0acb37f253",
+ valid + "0001"]
for t in tests:
hapd0.dump_monitor()
if "OK" not in hapd0.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + t):
def test_ap_ft_over_ds_proto(dev, apdev):
"""WPA2-PSK-FT AP over DS protocol testing"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_rrb(dev, apdev):
"""WPA2-PSK-FT RRB protocol testing"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, psk=passphrase, key_mgmt="FT-PSK", proto="WPA2",
scan_freq="2412")
- _dst_ll = binascii.unhexlify(apdev[0]['bssid'].replace(':',''))
- _src_ll = binascii.unhexlify(dev[0].own_addr().replace(':',''))
+ _dst_ll = binascii.unhexlify(apdev[0]['bssid'].replace(':', ''))
+ _src_ll = binascii.unhexlify(dev[0].own_addr().replace(':', ''))
proto = b'\x89\x0d'
ehdr = _dst_ll + _src_ll + proto
"""RSN element protocol testing for FT-PSK + PMF cases on STA side"""
bssid = apdev[0]['bssid']
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["ieee80211w"] = "1"
ieee80211w="1", scan_freq="2412",
pairwise="CCMP", group="CCMP")
- tests = [ ('PMKIDCount field included',
- '30160100000fac040100000fac040100000fac048c000000' + '3603a1b201'),
- ('Extra IE before RSNE',
- 'dd0400000000' + '30140100000fac040100000fac040100000fac048c00' + '3603a1b201'),
- ('PMKIDCount and Group Management Cipher suite fields included',
- '301a0100000fac040100000fac040100000fac048c000000000fac06' + '3603a1b201'),
- ('Extra octet after defined fields (future extensibility)',
- '301b0100000fac040100000fac040100000fac048c000000000fac0600' + '3603a1b201'),
- ('No RSN Capabilities field (PMF disabled in practice)',
- '30120100000fac040100000fac040100000fac04' + '3603a1b201') ]
- for txt,ie in tests:
+ tests = [('PMKIDCount field included',
+ '30160100000fac040100000fac040100000fac048c000000' + '3603a1b201'),
+ ('Extra IE before RSNE',
+ 'dd0400000000' + '30140100000fac040100000fac040100000fac048c00' + '3603a1b201'),
+ ('PMKIDCount and Group Management Cipher suite fields included',
+ '301a0100000fac040100000fac040100000fac048c000000000fac06' + '3603a1b201'),
+ ('Extra octet after defined fields (future extensibility)',
+ '301b0100000fac040100000fac040100000fac048c000000000fac0600' + '3603a1b201'),
+ ('No RSN Capabilities field (PMF disabled in practice)',
+ '30120100000fac040100000fac040100000fac04' + '3603a1b201')]
+ for txt, ie in tests:
dev[0].request("DISCONNECT")
dev[0].wait_disconnected()
logger.info(txt)
def test_ap_ft_ptk_rekey(dev, apdev):
"""WPA2-PSK-FT PTK rekeying triggered by station after roam"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
def test_ap_ft_ptk_rekey_ap(dev, apdev):
"""WPA2-PSK-FT PTK rekeying triggered by AP after roam"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params['wpa_ptk_rekey'] = '2'
def test_ap_ft_internal_rrb_check(dev, apdev):
"""RRB internal delivery only to WPA enabled BSS"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase)
if key_mgmt.split(' ')[0] != "FT-EAP":
raise Exception("Unexpected GET_CONFIG(key_mgmt): " + key_mgmt)
- hapd1 = hostapd.add_ap(apdev[1], { "ssid" : ssid })
+ hapd1 = hostapd.add_ap(apdev[1], {"ssid": ssid})
# Connect to WPA enabled AP
dev[0].connect(ssid, key_mgmt="FT-EAP", proto="WPA2", ieee80211w="1",
def test_ap_ft_extra_ie(dev, apdev):
"""WPA2-PSK-FT AP with WPA2-PSK enabled and unexpected MDE"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["wpa_key_mgmt"] = "WPA-PSK FT-PSK"
def test_ap_ft_ric(dev, apdev):
"""WPA2-PSK-FT AP and RIC"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
if "FAIL" not in dev[0].request("SET ric_ies q"):
raise Exception("Invalid ric_ies value accepted")
- tests = [ "3900",
- "3900ff04eeeeeeee",
- "390400000000",
- "390400000000" + "390400000000",
- "390400000000" + "dd050050f20202",
- "390400000000" + "dd3d0050f2020201" + 55*"00",
- "390400000000" + "dd3d0050f2020201aa300010270000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff0000",
- "390401010000" + "dd3d0050f2020201aa3000dc050000000000000000000000000000000000000000000000000000dc050000000000000000000000000000808d5b0028230000" ]
+ tests = ["3900",
+ "3900ff04eeeeeeee",
+ "390400000000",
+ "390400000000" + "390400000000",
+ "390400000000" + "dd050050f20202",
+ "390400000000" + "dd3d0050f2020201" + 55*"00",
+ "390400000000" + "dd3d0050f2020201aa300010270000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff0000",
+ "390401010000" + "dd3d0050f2020201aa3000dc050000000000000000000000000000000000000000000000000000dc050000000000000000000000000000808d5b0028230000"]
for t in tests:
dev[0].set("ric_ies", t)
run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase,
def test_ap_ft_reassoc_proto(dev, apdev):
"""WPA2-PSK-FT AP Reassociation Request frame parsing"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
rsne = ie_hex(ies, 48)
mde = ie_hex(ies, 54)
fte = ie_hex(ies, 55)
- tests = [ ]
+ tests = []
# RSN: Trying to use FT, but MDIE not included
- tests += [ rsne ]
+ tests += [rsne]
# RSN: Attempted to use unknown MDIE
- tests += [ rsne + "3603000000" ]
+ tests += [rsne + "3603000000"]
# Invalid RSN pairwise cipher
- tests += [ "30260100000fac040100000fac030100000fac040000010029208a42cd25c85aa571567dce10dae3" ]
+ tests += ["30260100000fac040100000fac030100000fac040000010029208a42cd25c85aa571567dce10dae3"]
# FT: No PMKID in RSNIE
- tests += [ "30160100000fac040100000fac040100000fac0400000000" + ie_hex(ies, 54) ]
+ tests += ["30160100000fac040100000fac040100000fac0400000000" + ie_hex(ies, 54)]
# FT: Invalid FTIE
- tests += [ rsne + mde ]
+ tests += [rsne + mde]
# FT: RIC IE(s) in the frame, but not included in protected IE count
# FT: Failed to parse FT IEs
- tests += [ rsne + mde + fte + "3900" ]
+ tests += [rsne + mde + fte + "3900"]
# FT: SNonce mismatch in FTIE
- tests += [ rsne + mde + "37520000" + 16*"00" + 32*"00" + 32*"00" ]
+ tests += [rsne + mde + "37520000" + 16*"00" + 32*"00" + 32*"00"]
# FT: ANonce mismatch in FTIE
- tests += [ rsne + mde + fte[0:40] + 32*"00" + fte[104:] ]
+ tests += [rsne + mde + fte[0:40] + 32*"00" + fte[104:]]
# FT: No R0KH-ID subelem in FTIE
- tests += [ rsne + mde + "3752" + fte[4:168] ]
+ tests += [rsne + mde + "3752" + fte[4:168]]
# FT: R0KH-ID in FTIE did not match with the current R0KH-ID
- tests += [ rsne + mde + "3755" + fte[4:168] + "0301ff" ]
+ tests += [rsne + mde + "3755" + fte[4:168] + "0301ff"]
# FT: No R1KH-ID subelem in FTIE
- tests += [ rsne + mde + "375e" + fte[4:168] + "030a" + binascii.hexlify(b"nas1.w1.fi").decode() ]
+ tests += [rsne + mde + "375e" + fte[4:168] + "030a" + binascii.hexlify(b"nas1.w1.fi").decode()]
# FT: Unknown R1KH-ID used in ReassocReq
- tests += [ rsne + mde + "3766" + fte[4:168] + "030a" + binascii.hexlify(b"nas1.w1.fi").decode() + "0106000000000000" ]
+ tests += [rsne + mde + "3766" + fte[4:168] + "030a" + binascii.hexlify(b"nas1.w1.fi").decode() + "0106000000000000"]
# FT: PMKID in Reassoc Req did not match with the PMKR1Name derived from auth request
- tests += [ rsne[:-32] + 16*"00" + mde + fte ]
+ tests += [rsne[:-32] + 16*"00" + mde + fte]
# Invalid MIC in FTIE
- tests += [ rsne + mde + fte[0:8] + 16*"00" + fte[40:] ]
+ tests += [rsne + mde + fte[0:8] + 16*"00" + fte[40:]]
for t in tests:
hapd2ap.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + ies1 + t)
def test_ap_ft_reassoc_local_fail(dev, apdev):
"""WPA2-PSK-FT AP Reassociation Request frame and local failure"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
"""WPA2-PSK-FT AP and replayed Reassociation Request frame"""
capfile = os.path.join(params['logdir'], "hwsim0.pcapng")
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
hapd0 = hostapd.add_ap(apdev[0], params)
filt = "wlan.fc.type == 2 && " + \
"wlan.da == " + sta + " && " + \
"wlan.sa == " + ap
- fields = [ "wlan.ccmp.extiv" ]
+ fields = ["wlan.ccmp.extiv"]
res = run_tshark(capfile, filt, fields)
vals = res.splitlines()
logger.info("CCMP PN: " + str(vals))
def test_ap_ft_psk_file(dev, apdev):
"""WPA2-PSK-FT AP with PSK from a file"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1a(ssid=ssid, passphrase=passphrase)
params['wpa_psk_file'] = 'hostapd.wpa_psk'
def test_ap_ft_eap_ap_config_change(dev, apdev):
"""WPA2-EAP-FT AP changing from 802.1X-only to FT-only"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
bssid = apdev[0]['bssid']
radius = hostapd.radius_params()
def test_ap_ft_eap_sha384(dev, apdev):
"""WPA2-EAP-FT with SHA384"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase)
def test_ap_ft_eap_sha384_over_ds(dev, apdev):
"""WPA2-EAP-FT with SHA384 over DS"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
radius = hostapd.radius_params()
params = ft_params1(ssid=ssid, passphrase=passphrase)
def test_ap_ft_roam_rrm(dev, apdev):
"""WPA2-PSK-FT AP and radio measurement request"""
ssid = "test-ft"
- passphrase="12345678"
+ passphrase = "12345678"
params = ft_params1(ssid=ssid, passphrase=passphrase)
params["rrm_beacon_report"] = "1"
params['uesa'] = "0"
params['venue_group'] = "7"
params['venue_type'] = "1"
- params['venue_name'] = [ "eng:Example venue", "fin:Esimerkkipaikka" ]
- params['roaming_consortium'] = [ "112233", "1020304050", "010203040506",
- "fedcba" ]
+ params['venue_name'] = ["eng:Example venue", "fin:Esimerkkipaikka"]
+ params['roaming_consortium'] = ["112233", "1020304050", "010203040506",
+ "fedcba"]
params['domain_name'] = "example.com,another.example.com"
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]",
- "0,another.example.com" ]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]",
+ "0,another.example.com"]
params['hs20'] = "1"
params['hs20_wan_metrics'] = "01:8000:1000:80:240:3000"
- params['hs20_conn_capab'] = [ "1:0:2", "6:22:1", "17:5060:0" ]
+ params['hs20_conn_capab'] = ["1:0:2", "6:22:1", "17:5060:0"]
params['hs20_operating_class'] = "5173"
params['anqp_3gpp_cell_net'] = "244,91"
return params
bssid2 = apdev[1]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]" ]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]"]
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com", 'username': "test",
- 'password': "secret",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com", 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com"})
logger.info("Normal network selection with shared ANQP results")
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].scan_for_bss(bssid2, freq="2412")
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com", 'username': "test",
- 'password': "secret",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com", 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com"})
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].scan_for_bss(bssid2, freq="2412")
interworking_select(dev[0], None, "home", freq="2412")
bssid2 = apdev[1]['bssid']
params = hs20_ap_params(ssid="test-hs20-another")
params['hessid'] = bssid
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]" ]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]"]
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com", 'username': "test",
- 'password': "secret",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com", 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com"})
logger.info("Normal network selection with shared ANQP results")
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].scan_for_bss(bssid2, freq="2412")
bssid2 = apdev[1]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]" ]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]"]
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com", 'username': "test",
- 'password': "secret",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com", 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com"})
logger.info("Normal network selection with shared ANQP results")
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].scan_for_bss(bssid2, freq="2412")
bssid2 = apdev[1]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]" ]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]"]
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com", 'username': "test",
- 'password': "secret",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com", 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com"})
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].scan_for_bss(bssid2, freq="2412")
interworking_select(dev[0], None, "home", freq="2412")
check_eap_capa(dev[0], "MSCHAPV2")
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]",
- "0,another.example.org" ]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]",
+ "0,another.example.org"]
hostapd.add_ap(apdev[0], params)
dev[0].scan(freq="2412")
if binascii.hexlify(b"example.org").decode() not in nai2:
raise Exception("Non-home realm not reported in wildcard query ")
- cmds = [ "foo",
- "00:11:22:33:44:55 123",
- "00:11:22:33:44:55 qq" ]
+ cmds = ["foo",
+ "00:11:22:33:44:55 123",
+ "00:11:22:33:44:55 qq"]
for cmd in cmds:
if "FAIL" not in dev[0].request("HS20_GET_NAI_HOME_REALM_LIST " + cmd):
raise Exception("Invalid HS20_GET_NAI_HOME_REALM_LIST accepted: " + cmd)
if "NAI Realm list" not in ev:
raise Exception("Missing NAI Realm list: " + ev)
- dev[0].add_cred_values({ 'realm': "example.com", 'username': "test",
- 'password': "secret",
- 'domain': "example.com" })
+ dev[0].add_cred_values({'realm': "example.com", 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com"})
dev[0].dump_monitor()
if "OK" not in dev[0].request("HS20_GET_NAI_HOME_REALM_LIST " + bssid):
raise Exception("HS20_GET_NAI_HOME_REALM_LIST failed")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com", 'username': "test",
- 'password': "secret",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com", 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "home")
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'realm': "example.com", 'username': "test",
- 'password': "secret",
- 'domain': "no.match.example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com", 'username': "test",
+ 'password': "secret",
+ 'domain': "no.match.example.com"})
interworking_select(dev[0], bssid, "roaming", freq="2412")
dev[0].set_cred_quoted(id, "realm", "no.match.example.com")
bssid2 = apdev[1]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.org,21" ]
+ params['nai_realm'] = ["0,example.org,21"]
params['hessid'] = bssid2
params['domain_name'] = "example.org"
hostapd.add_ap(apdev[1], params)
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'realm': "example.org", 'username': "test",
- 'password': "secret",
- 'domain': "example.org" })
+ id = dev[0].add_cred_values({'realm': "example.org", 'username': "test",
+ 'password': "secret",
+ 'domain': "example.org"})
interworking_select(dev[0], bssid2, "home", freq="2412")
def hs20_simulated_sim(dev, ap, method):
hostapd.add_ap(ap, params)
dev.hs20_enable()
- dev.add_cred_values({ 'imsi': "555444-333222111", 'eap': method,
- 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
+ dev.add_cred_values({'imsi': "555444-333222111", 'eap': method,
+ 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
interworking_select(dev, bssid, "home", freq="2412")
interworking_connect(dev, bssid, method)
check_sp_type(dev, "home")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- dev[0].add_cred_values({ 'imsi': "555444-3332221110", 'eap': "SIM",
- 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
+ dev[0].add_cred_values({'imsi': "555444-3332221110", 'eap': "SIM",
+ 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
# This hits "No valid IMSI available" in build_root_nai()
interworking_select(dev[0], bssid, freq="2412")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- dev[0].add_cred_values({ 'imsi': "555444-333222111", 'eap': "SIM",
- 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
+ dev[0].add_cred_values({'imsi': "555444-333222111", 'eap': "SIM",
+ 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
dev[0].scan_for_bss(bssid, freq=2412)
interworking_select(dev[0], bssid, freq="2412")
dev[0].hs20_enable()
try:
dev[0].request("SET external_sim 1")
- dev[0].add_cred_values({ 'imsi': "23201-0000000000", 'eap': "SIM" })
+ dev[0].add_cred_values({'imsi': "23201-0000000000", 'eap': "SIM"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_ext_sim_connect(dev[0], bssid, "SIM")
check_sp_type(dev[0], "home")
dev[0].hs20_enable()
try:
dev[0].request("SET external_sim 1")
- dev[0].add_cred_values({ 'imsi': "23201-0000000000", 'eap': "SIM" })
+ dev[0].add_cred_values({'imsi': "23201-0000000000", 'eap': "SIM"})
interworking_select(dev[0], bssid, "roaming", freq="2412")
interworking_ext_sim_connect(dev[0], bssid, "SIM")
check_sp_type(dev[0], "roaming")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'update_identifier': "1234" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'update_identifier': "1234"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
check_sp_type(dev[0], "home")
wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
wpas.hs20_enable()
wpas.flush_scan_cache()
- id = wpas.add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'update_identifier': "1234" })
+ id = wpas.add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'update_identifier': "1234"})
interworking_select(wpas, bssid, "home", freq="2412")
interworking_connect(wpas, bssid, "TTLS")
check_sp_type(wpas, "home")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable(auto_interworking=True)
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'update_identifier': "1234" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'update_identifier': "1234"})
dev[0].request("REASSOCIATE")
dev[0].wait_connected(timeout=15)
check_sp_type(dev[0], "home")
@remote_compatible
def test_ap_hs20_auto_interworking_no_match(dev, apdev):
"""Hotspot 2.0 connection with auto_interworking=1 and no matching network"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "mismatch" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "mismatch"})
dev[0].hs20_enable(auto_interworking=True)
id = dev[0].connect("mismatch", psk="12345678", scan_freq="2412",
only_add_network=True)
dev[0].request("ENABLE_NETWORK " + str(id) + " no-connect")
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'update_identifier': "1234" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'update_identifier': "1234"})
dev[0].request("INTERWORKING_SELECT auto freq=2412")
time.sleep(0.1)
dev[0].dump_monitor()
fetch = 0
scan = 0
for j in range(15):
- ev = dev[0].wait_event([ "ANQP fetch completed",
- "CTRL-EVENT-SCAN-RESULTS" ], timeout=0.05)
+ ev = dev[0].wait_event(["ANQP fetch completed",
+ "CTRL-EVENT-SCAN-RESULTS"], timeout=0.05)
if ev is None:
break
if "ANQP fetch completed" in ev:
def test_ap_hs20_auto_interworking_no_cred_match(dev, apdev):
"""Hotspot 2.0 connection with auto_interworking=1 but no cred match"""
bssid = apdev[0]['bssid']
- params = { "ssid": "test" }
+ params = {"ssid": "test"}
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable(auto_interworking=True)
- dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com" })
+ dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com"})
id = dev[0].connect("test", psk="12345678", only_add_network=True)
dev[0].request("ENABLE_NETWORK %s" % id)
def eap_test(dev, ap, eap_params, method, user, release=0):
bssid = ap['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com," + eap_params ]
+ params['nai_realm'] = ["0,example.com," + eap_params]
if release > 0:
params['hs20_release'] = str(release)
hostapd.add_ap(ap, params)
dev.hs20_enable()
- dev.add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': user,
- 'password': "password" })
+ dev.add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': user,
+ 'password': "password"})
interworking_select(dev, bssid, freq="2412")
interworking_connect(dev, bssid, method)
"""Hotspot 2.0 connection with EAP-TLS"""
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,13[5:6]" ]
+ params['nai_realm'] = ["0,example.com,13[5:6]"]
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "certificate-user",
- 'ca_cert': "auth_serv/ca.pem",
- 'client_cert': "auth_serv/user.pem",
- 'private_key': "auth_serv/user.key"})
+ dev[0].add_cred_values({'realm': "example.com",
+ 'username': "certificate-user",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'client_cert': "auth_serv/user.pem",
+ 'private_key': "auth_serv/user.key"})
interworking_select(dev[0], bssid, freq="2412")
interworking_connect(dev[0], bssid, "TLS")
"""Hotspot 2.0 connection with certificate, but unknown EAP method"""
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,99[5:6]" ]
+ params['nai_realm'] = ["0,example.com,99[5:6]"]
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "certificate-user",
- 'ca_cert': "auth_serv/ca.pem",
- 'client_cert': "auth_serv/user.pem",
- 'private_key': "auth_serv/user.key"})
+ dev[0].add_cred_values({'realm': "example.com",
+ 'username': "certificate-user",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'client_cert': "auth_serv/user.pem",
+ 'private_key': "auth_serv/user.key"})
interworking_select(dev[0], None, no_match=True, freq="2412")
@remote_compatible
"""Hotspot 2.0 connection with certificate, but unsupported TTLS"""
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,21[5:6]" ]
+ params['nai_realm'] = ["0,example.com,21[5:6]"]
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "certificate-user",
- 'ca_cert': "auth_serv/ca.pem",
- 'client_cert': "auth_serv/user.pem",
- 'private_key': "auth_serv/user.key"})
+ dev[0].add_cred_values({'realm': "example.com",
+ 'username': "certificate-user",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'client_cert': "auth_serv/user.pem",
+ 'private_key': "auth_serv/user.key"})
interworking_select(dev[0], None, no_match=True, freq="2412")
@remote_compatible
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "certificate-user",
- 'client_cert': "auth_serv/user.pem" })
+ dev[0].add_cred_values({'realm': "example.com",
+ 'username': "certificate-user",
+ 'client_cert': "auth_serv/user.pem"})
interworking_select(dev[0], None, no_match=True, freq="2412")
def test_ap_hs20_nai_realms(dev, apdev):
bssid = apdev[0]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid
- params['nai_realm'] = [ "0,no.match.here;example.com;no.match.here.either,21[2:1][5:7]" ]
+ params['nai_realm'] = ["0,no.match.here;example.com;no.match.here.either,21[2:1][5:7]"]
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "pap user",
- 'password': "password",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "pap user",
+ 'password': "password",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
check_sp_type(dev[0], "home")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- for consortium in [ "112233", "1020304050", "010203040506", "fedcba" ]:
- id = dev[0].add_cred_values({ 'username': "user",
- 'password': "password",
- 'domain': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'roaming_consortium': consortium,
- 'eap': "PEAP" })
+ for consortium in ["112233", "1020304050", "010203040506", "fedcba"]:
+ id = dev[0].add_cred_values({'username': "user",
+ 'password': "password",
+ 'domain': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'roaming_consortium': consortium,
+ 'eap': "PEAP"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "PEAP")
check_sp_type(dev[0], "home")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- tests = [ ("112233", "112233"),
- ("ffffff,1020304050,eeeeee", "1020304050") ]
- for consortium,selected in tests:
- id = dev[0].add_cred_values({ 'username': "user",
- 'password': "password",
- 'domain': "my.home.example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'roaming_consortiums': consortium,
- 'eap': "PEAP" })
+ tests = [("112233", "112233"),
+ ("ffffff,1020304050,eeeeee", "1020304050")]
+ for consortium, selected in tests:
+ id = dev[0].add_cred_values({'username': "user",
+ 'password': "password",
+ 'domain': "my.home.example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'roaming_consortiums': consortium,
+ 'eap': "PEAP"})
interworking_select(dev[0], bssid, "roaming", freq="2412")
interworking_connect(dev[0], bssid, "PEAP")
check_sp_type(dev[0], "roaming")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'username': "user",
- 'password': "password",
- 'domain': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'roaming_consortium': "fedcba",
- 'eap': "PEAP" })
+ id = dev[0].add_cred_values({'username': "user",
+ 'password': "password",
+ 'domain': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'roaming_consortium': "fedcba",
+ 'eap': "PEAP"})
interworking_select(dev[0], bssid, "home", freq="2412", no_match=True)
def test_ap_hs20_roaming_consortium_element(dev, apdev):
dev[0].hs20_enable()
dev[0].scan_for_bss(bssid, freq="2412")
- id = dev[0].add_cred_values({ 'username': "user",
- 'password': "password",
- 'domain': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'roaming_consortium': "112233",
- 'eap': "PEAP" })
+ id = dev[0].add_cred_values({'username': "user",
+ 'password': "password",
+ 'domain': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'roaming_consortium': "112233",
+ 'eap': "PEAP"})
interworking_select(dev[0], bssid, freq="2412", no_match=True)
hapd.set('vendor_elements', '6f020001')
dev[0].hs20_enable()
- vals = { 'username': "user",
- 'password': "password",
- 'domain': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'roaming_consortium': "fedcba",
- 'eap': "TTLS" }
+ vals = {'username': "user",
+ 'password': "password",
+ 'domain': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'roaming_consortium': "fedcba",
+ 'eap': "TTLS"}
vals2 = vals.copy()
vals2['required_roaming_consortium'] = "223344"
id = dev[0].add_cred_values(vals2)
dev[0].hs20_enable()
- vals = { 'imsi': "555444-333222111",
- 'eap': "SIM",
- 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123" }
+ vals = {'imsi': "555444-333222111",
+ 'eap': "SIM",
+ 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"}
vals2 = vals.copy()
vals2['required_roaming_consortium'] = "223344"
id = dev[0].add_cred_values(vals2)
dev[0].hs20_enable()
- vals = { 'username': "user",
- 'password': "password",
- 'domain': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'roaming_consortium': "fedcba",
- 'eap': "TTLS",
- 'min_dl_bandwidth_home': "65500" }
+ vals = {'username': "user",
+ 'password': "password",
+ 'domain': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'roaming_consortium': "fedcba",
+ 'eap': "TTLS",
+ 'min_dl_bandwidth_home': "65500"}
id = dev[0].add_cred_values(vals)
dev[0].request("INTERWORKING_SELECT freq=2412")
ev = dev[0].wait_event(["INTERWORKING-AP"], timeout=15)
dev[0].remove_cred(id)
dev[0].wait_disconnected()
- vals = { 'imsi': "555444-333222111", 'eap': "SIM",
- 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123",
- 'min_dl_bandwidth_roaming': "65500" }
+ vals = {'imsi': "555444-333222111", 'eap': "SIM",
+ 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123",
+ 'min_dl_bandwidth_roaming': "65500"}
id = dev[0].add_cred_values(vals)
dev[0].request("INTERWORKING_SELECT freq=2412")
ev = dev[0].wait_event(["INTERWORKING-AP"], timeout=15)
check_eap_capa(dev[0], "MSCHAPV2")
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]",
- "0,roaming.example.com,21[2:4][5:7]",
- "0,another.example.com" ]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]",
+ "0,roaming.example.com,21[2:4][5:7]",
+ "0,another.example.com"]
params['domain_name'] = "another.example.com"
params['hessid'] = bssid
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "roaming.example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "roaming.example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "roaming", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
check_sp_type(dev[0], "roaming")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password"})
interworking_select(dev[0], bssid, "unknown", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
check_sp_type(dev[0], "unknown")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "unknown", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
check_sp_type(dev[0], "unknown")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
bssid2 = apdev[1]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid2
- params['nai_realm'] = [ "0,no-match.example.org,13[5:6],21[2:4][5:7]" ]
+ params['nai_realm'] = ["0,no-match.example.org,13[5:6],21[2:4][5:7]"]
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
dev[0].dump_monitor()
bssid2 = apdev[1]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid2
- params['nai_realm'] = [ "0,no-match.example.org,13[5:6],21[2:4][5:7]" ]
+ params['nai_realm'] = ["0,no-match.example.org,13[5:6],21[2:4][5:7]"]
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
dev[0].request("SET pmf 2")
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
bssid2 = apdev[1]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid2
- params['nai_realm'] = [ "0,no-match.example.org,13[5:6],21[2:4][5:7]" ]
+ params['nai_realm'] = ["0,no-match.example.org,13[5:6],21[2:4][5:7]"]
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
dev[0].request("SET pmf 2")
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
dev[0].dump_monitor()
hapd.set("gas_frag_limit", "50")
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- values = { 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" }
+ values = {'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"}
id = dev[0].add_cred_values(values)
dev[0].scan_for_bss(bssid, freq="2412")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- values = { 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" }
+ values = {'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"}
id = dev[0].add_cred_values(values)
dev[0].scan_for_bss(bssid, freq="2412")
return events
def default_cred(domain=None, user="hs20-test"):
- cred = { 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': user,
- 'password': "password" }
+ cred = {'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': user,
+ 'password': "password"}
if domain:
cred['domain'] = domain
return cred
params = hs20_ap_params()
params['ssid'] = "test-hs20-other"
- params['roaming_consortium'] = [ "223344" ]
+ params['roaming_consortium'] = ["223344"]
hostapd.add_ap(apdev[1], params)
values = default_cred()
dev[0].set_cred(id, "required_roaming_consortium", "112233")
dev[0].set_cred(id, "required_roaming_consortium", "112233445566778899aabbccddeeff")
- for val in [ "", "1", "11", "1122", "1122334", "112233445566778899aabbccddeeff00" ]:
+ for val in ["", "1", "11", "1122", "1122334",
+ "112233445566778899aabbccddeeff00"]:
if "FAIL" not in dev[0].request('SET_CRED {} required_roaming_consortium {}'.format(id, val)):
raise Exception("Invalid roaming consortium value accepted: " + val)
params = hs20_ap_params()
params['ssid'] = "test-hs20-other"
- params['roaming_consortium'] = [ "223345" ]
+ params['roaming_consortium'] = ["223345"]
hostapd.add_ap(apdev[1], params)
values = default_cred()
"""Hotspot 2.0 exclusion based on SSID"""
check_eap_capa(dev[0], "MSCHAPV2")
params = hs20_ap_params()
- params['roaming_consortium'] = [ "223344" ]
+ params['roaming_consortium'] = ["223344"]
params['anqp_3gpp_cell_net'] = "555,444"
hostapd.add_ap(apdev[0], params)
params = hs20_ap_params()
params['ssid'] = "test-hs20-other"
- params['roaming_consortium'] = [ "223344" ]
+ params['roaming_consortium'] = ["223344"]
params['anqp_3gpp_cell_net'] = "555,444"
hostapd.add_ap(apdev[1], params)
if len(ev) != 1:
raise Exception("Excluded network not reported")
- values = { 'imsi': "555444-333222111", 'eap': "SIM",
- 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123",
- 'excluded_ssid': "test-hs20" }
+ values = {'imsi': "555444-333222111", 'eap': "SIM",
+ 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123",
+ 'excluded_ssid': "test-hs20"}
events = policy_test(dev[0], apdev[1], values)
ev = [e for e in events if "INTERWORKING-BLACKLISTED " + apdev[0]['bssid'] in e]
if len(ev) != 1:
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"})
logger.info("Connect to the only network option")
interworking_select(dev[0], bssid, "roaming", freq="2412")
dev[0].dump_monitor()
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'domain_suffix_match': "server.w1.fi" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'domain_suffix_match': "server.w1.fi"})
interworking_select(dev[0], bssid, "home", freq="2412")
dev[0].dump_monitor()
interworking_connect(dev[0], bssid, "TTLS")
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'domain_suffix_match': "w1.fi" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'domain_suffix_match': "w1.fi"})
interworking_select(dev[0], bssid, "home", freq="2412")
dev[0].dump_monitor()
interworking_connect(dev[0], bssid, "TTLS")
dev[0].hs20_enable()
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].request("SET external_sim 1")
- id1 = dev[0].add_cred_values({ 'imsi': "23201-0000000000", 'eap': "SIM",
- 'provisioning_sp': "example.com",
- 'sp_priority' :"1" })
- id2 = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com",
- 'provisioning_sp': "example.com",
- 'sp_priority': "2" })
+ id1 = dev[0].add_cred_values({'imsi': "23201-0000000000", 'eap': "SIM",
+ 'provisioning_sp': "example.com",
+ 'sp_priority' :"1"})
+ id2 = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com",
+ 'provisioning_sp': "example.com",
+ 'sp_priority': "2"})
dev[0].dump_monitor()
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].request("INTERWORKING_SELECT auto freq=2412")
dev[0].hs20_enable()
dev[0].request("SET external_sim 1")
- id1 = dev[0].add_cred_values({ 'imsi': "23201-0000000000", 'eap': "SIM",
- 'provisioning_sp': "example.com",
- 'sp_priority': "1" })
- id2 = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com",
- 'provisioning_sp': "example.com",
- 'sp_priority': "2" })
+ id1 = dev[0].add_cred_values({'imsi': "23201-0000000000", 'eap': "SIM",
+ 'provisioning_sp': "example.com",
+ 'sp_priority': "1"})
+ id2 = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com",
+ 'provisioning_sp': "example.com",
+ 'sp_priority': "2"})
dev[0].dump_monitor()
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].scan_for_bss(bssid2, freq="2412")
dev[0].hs20_enable()
dev[0].scan_for_bss(bssid, freq="2412")
- id1 = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "domain1.example.com",
- 'provisioning_sp': "example.com",
- 'sp_priority': "1" })
- id2 = dev[0].add_cred_values({ 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "domain2.example.com",
- 'provisioning_sp': "example.com",
- 'sp_priority': "1" })
+ id1 = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "domain1.example.com",
+ 'provisioning_sp': "example.com",
+ 'sp_priority': "1"})
+ id2 = dev[0].add_cred_values({'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "domain2.example.com",
+ 'provisioning_sp': "example.com",
+ 'sp_priority': "1"})
dev[0].dump_monitor()
dev[0].scan_for_bss(bssid, freq="2412")
check_auto_select(dev[0], bssid)
bssid2 = apdev[1]['bssid']
params = hs20_ap_params(ssid="test-hs20b")
- params['hs20_conn_capab'] = [ "1:0:2", "6:22:1", "17:5060:0", "50:0:1" ]
+ params['hs20_conn_capab'] = ["1:0:2", "6:22:1", "17:5060:0", "50:0:1"]
hostapd.add_ap(apdev[1], params)
dev[0].remove_cred(id)
bssid = apdev[0]['bssid']
params = hs20_ap_params()
params['domain_name'] = "roaming.example.org"
- params['hs20_conn_capab'] = [ "1:0:2", "6:22:1", "17:5060:0", "50:0:1" ]
+ params['hs20_conn_capab'] = ["1:0:2", "6:22:1", "17:5060:0", "50:0:1"]
hostapd.add_ap(apdev[0], params)
bssid2 = apdev[1]['bssid']
check_eap_capa(dev[0], "MSCHAPV2")
bssid = apdev[0]['bssid']
- hapd = hostapd.add_ap(apdev[0], { "ssid": 'secret',
- "ignore_broadcast_ssid": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'secret',
+ "ignore_broadcast_ssid": "1"})
dev[0].scan_for_bss(bssid, freq=2412)
hapd.disable()
hapd_global = hostapd.HostapdGlobal(apdev[0])
def _test_ap_hs20_deauth_req_from_radius(dev, apdev):
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,21[2:4]" ]
+ params['nai_realm'] = ["0,example.com,21[2:4]"]
params['hs20_deauth_req_timeout'] = "2"
hostapd.add_ap(apdev[0], params)
dev[0].request("SET pmf 2")
dev[0].hs20_enable()
- dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-deauth-test",
- 'password': "password" })
+ dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-deauth-test",
+ 'password': "password"})
interworking_select(dev[0], bssid, freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
ev = dev[0].wait_event(["HS20-DEAUTH-IMMINENT-NOTICE"], timeout=5)
def _test_ap_hs20_remediation_required(dev, apdev):
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,21[2:4]" ]
+ params['nai_realm'] = ["0,example.com,21[2:4]"]
hostapd.add_ap(apdev[0], params)
dev[0].request("SET pmf 1")
dev[0].hs20_enable()
- dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-subrem-test",
- 'password': "password" })
+ dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-subrem-test",
+ 'password': "password"})
interworking_select(dev[0], bssid, freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
ev = dev[0].wait_event(["HS20-SUBSCRIPTION-REMEDIATION"], timeout=5)
bssid = apdev[0]['bssid']
addr = dev[0].own_addr()
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,21[2:4]" ]
+ params['nai_realm'] = ["0,example.com,21[2:4]"]
hapd = hostapd.add_ap(apdev[0], params)
dev[0].request("SET pmf 1")
def _test_ap_hs20_session_info(dev, apdev):
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,21[2:4]" ]
+ params['nai_realm'] = ["0,example.com,21[2:4]"]
hostapd.add_ap(apdev[0], params)
dev[0].request("SET pmf 1")
dev[0].hs20_enable()
- dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-session-info-test",
- 'password': "password" })
+ dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-session-info-test",
+ 'password': "password"})
interworking_select(dev[0], bssid, freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
ev = dev[0].wait_event(["ESS-DISASSOC-IMMINENT"], timeout=10)
def test_ap_hs20_osen(dev, apdev):
"""Hotspot 2.0 OSEN connection"""
- params = { 'ssid': "osen",
- 'osen': "1",
- 'auth_server_addr': "127.0.0.1",
- 'auth_server_port': "1812",
- 'auth_server_shared_secret': "radius" }
+ params = {'ssid': "osen",
+ 'osen': "1",
+ 'auth_server_addr': "127.0.0.1",
+ 'auth_server_port': "1812",
+ 'auth_server_shared_secret': "radius"}
hostapd.add_ap(apdev[0], params)
dev[1].connect("osen", key_mgmt="NONE", scan_freq="2412",
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- values = { 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" }
+ values = {'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"}
dev[0].add_cred_values(values)
id = dev[0].add_network()
dev[0].scan_for_bss(bssid2, freq="2412")
dev[0].request("INTERWORKING_SELECT auto freq=2412")
ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
- "INTERWORKING-ALREADY-CONNECTED" ], timeout=15)
+ "INTERWORKING-ALREADY-CONNECTED"], timeout=15)
if ev is None:
raise Exception("Connection timed out")
if "INTERWORKING-ALREADY-CONNECTED" in ev:
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
- values = { 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com",
- 'priority': "1" }
+ values = {'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com",
+ 'priority': "1"}
dev[0].add_cred_values(values)
id = dev[0].add_network()
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].request("INTERWORKING_SELECT auto freq=2412")
ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
- "INTERWORKING-ALREADY-CONNECTED" ], timeout=15)
+ "INTERWORKING-ALREADY-CONNECTED"], timeout=15)
if ev is None:
raise Exception("Connection timed out")
if "INTERWORKING-ALREADY-CONNECTED" in ev:
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
- values = { 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'priority': "1" }
+ values = {'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'priority': "1"}
dev[0].add_cred_values(values)
- values = { 'realm': "example.org",
- 'username': "hs20-test",
- 'password': "password" }
+ values = {'realm': "example.org",
+ 'username': "hs20-test",
+ 'password': "password"}
id = dev[0].add_cred_values(values)
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].set_cred(id, "priority", "2")
dev[0].request("INTERWORKING_SELECT auto freq=2412")
ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
- "INTERWORKING-ALREADY-CONNECTED" ], timeout=15)
+ "INTERWORKING-ALREADY-CONNECTED"], timeout=15)
if ev is None:
raise Exception("Connection timed out")
if "INTERWORKING-ALREADY-CONNECTED" in ev:
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
- values = { 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'priority': "1" }
+ values = {'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'priority': "1"}
dev[0].add_cred_values(values)
- values = { 'imsi': "555444-333222111",
- 'eap': "SIM",
- 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123" }
+ values = {'imsi': "555444-333222111",
+ 'eap': "SIM",
+ 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"}
id = dev[0].add_cred_values(values)
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].set_cred(id, "priority", "2")
dev[0].request("INTERWORKING_SELECT auto freq=2412")
ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
- "INTERWORKING-ALREADY-CONNECTED" ], timeout=15)
+ "INTERWORKING-ALREADY-CONNECTED"], timeout=15)
if ev is None:
raise Exception("Connection timed out")
if "INTERWORKING-ALREADY-CONNECTED" in ev:
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- values = { 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" }
+ values = {'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"}
dev[0].add_cred_values(values)
dev[0].scan_for_bss(bssid, freq="2412")
params['hs20_icon'] = "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png"
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
params['osu_icon'] = "w1fi_logo"
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_service_desc'] = ["eng:Example services", "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
hostapd.add_ap(apdev[0], params)
params['osu_ssid'] = '"HS 2.0 OSU OSEN"'
params['osu_method_list'] = "0"
params['osu_nai'] = "osen@example.com"
- params['osu_friendly_name'] = [ "eng:Test2 OSU", "fin:Testi2-OSU" ]
+ params['osu_friendly_name'] = ["eng:Test2 OSU", "fin:Testi2-OSU"]
params['osu_icon'] = "w1fi_logo"
- params['osu_service_desc'] = [ "eng:Example services2", "fin:Esimerkkipalveluja2" ]
+ params['osu_service_desc'] = ["eng:Example services2", "fin:Esimerkkipalveluja2"]
params['osu_server_uri'] = "https://example.org/osu/"
hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
dir = "/tmp/osu-fetch"
if os.path.isdir(dir):
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
else:
if "OSU-PROVIDER " + bssid2 not in prov:
raise Exception("Missing OSU_PROVIDER(2)")
finally:
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
os.rmdir(dir)
dev[0].hs20_enable()
dir = "/tmp/osu-fetch"
if os.path.isdir(dir):
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
else:
if ev is None:
raise Exception("Timeout on OSU fetch")
finally:
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
os.rmdir(dir)
params['hs20_icon'] = "128:80:zxx:image/png:w1fi_logo:w1fi_logo-no-file.png"
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
params['osu_icon'] = "w1fi_logo"
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_service_desc'] = ["eng:Example services",
+ "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
dir = "/tmp/osu-fetch"
if os.path.isdir(dir):
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
else:
if ev is None:
raise Exception("Timeout on OSU fetch")
finally:
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
os.rmdir(dir)
params['hs20_icon'] = "128:80:zxx:image/png:w1fi_logo:w1fi_logo-no-file.png"
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
params['osu_nai2'] = "osen@example.com"
params['osu_icon'] = "w1fi_logo"
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_service_desc'] = ["eng:Example services",
+ "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
params['wpa_key_mgmt'] = "WPA-EAP OSEN"
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
dir = "/tmp/osu-fetch"
if os.path.isdir(dir):
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
else:
if not osu_nai2:
raise Exception("osu_nai2 not reported")
finally:
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
os.rmdir(dir)
params['hs20_icon'] = "128:80:zxx:image/png:w1fi_logo:w1fi_logo-no-file.png"
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
params['osu_nai2'] = "osen@example.com"
params['osu_icon'] = "w1fi_logo"
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_service_desc'] = ["eng:Example services",
+ "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
params['wpa_key_mgmt'] = "WPA-EAP OSEN"
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
dev[0].hs20_enable()
dir = "/tmp/osu-fetch"
if os.path.isdir(dir):
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
else:
if not osu_nai2b:
raise Exception("osu_nai2b not reported")
finally:
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
os.rmdir(dir)
"""Hotspot 2.0 OSU provider and multi-icon fetch with REQ_HS20_ICON"""
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['hs20_icon'] = [ "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png",
- "128:80:zxx:image/png:test_logo:auth_serv/sha512-server.pem" ]
+ params['hs20_icon'] = ["128:80:zxx:image/png:w1fi_logo:w1fi_logo.png",
+ "128:80:zxx:image/png:test_logo:auth_serv/sha512-server.pem"]
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
- params['osu_icon'] = [ "w1fi_logo", "w1fi_logo2" ]
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
+ params['osu_icon'] = ["w1fi_logo", "w1fi_logo2"]
+ params['osu_service_desc'] = ["eng:Example services",
+ "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
hostapd.add_ap(apdev[0], params)
"""Hotspot 2.0 operator icons"""
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['hs20_icon'] = [ "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png",
- "500:300:fi:image/png:test_logo:auth_serv/sha512-server.pem" ]
- params['operator_icon'] = [ "w1fi_logo", "unknown_logo", "test_logo" ]
+ params['hs20_icon'] = ["128:80:zxx:image/png:w1fi_logo:w1fi_logo.png",
+ "500:300:fi:image/png:test_logo:auth_serv/sha512-server.pem"]
+ params['operator_icon'] = ["w1fi_logo", "unknown_logo", "test_logo"]
hostapd.add_ap(apdev[0], params)
value = struct.pack('<HH', 128, 80) + b"zxx"
"""Hotspot 2.0 icon fetch OOM with REQ_HS20_ICON"""
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['hs20_icon'] = [ "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png",
- "128:80:zxx:image/png:test_logo:auth_serv/sha512-server.pem" ]
+ params['hs20_icon'] = ["128:80:zxx:image/png:w1fi_logo:w1fi_logo.png",
+ "128:80:zxx:image/png:test_logo:auth_serv/sha512-server.pem"]
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
- params['osu_icon'] = [ "w1fi_logo", "w1fi_logo2" ]
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
+ params['osu_icon'] = ["w1fi_logo", "w1fi_logo2"]
+ params['osu_service_desc'] = ["eng:Example services",
+ "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
hostapd.add_ap(apdev[0], params)
"""Hotspot 2.0 OSU provider and multi-icon parallel fetch with REQ_HS20_ICON"""
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['hs20_icon'] = [ "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png",
- "128:80:zxx:image/png:test_logo:auth_serv/sha512-server.pem" ]
+ params['hs20_icon'] = ["128:80:zxx:image/png:w1fi_logo:w1fi_logo.png",
+ "128:80:zxx:image/png:test_logo:auth_serv/sha512-server.pem"]
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
- params['osu_icon'] = [ "w1fi_logo", "w1fi_logo2" ]
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
+ params['osu_icon'] = ["w1fi_logo", "w1fi_logo2"]
+ params['osu_service_desc'] = ["eng:Example services",
+ "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
hostapd.add_ap(apdev[0], params)
params['hs20_icon'] = "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png"
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
params['osu_icon'] = "w1fi_logo"
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_service_desc'] = ["eng:Example services",
+ "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
hapd = hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
dir = "/tmp/osu-fetch"
if os.path.isdir(dir):
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
else:
if ev is None:
raise Exception("GAS event timed out after CANCEL_FETCH_OSU")
finally:
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
os.rmdir(dir)
dev[0].hs20_enable()
dir = "/tmp/osu-fetch"
if os.path.isdir(dir):
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
else:
except:
pass
- tests = [ ( "Empty provider list (no OSU SSID field)", b'' ),
- ( "HS 2.0: Not enough room for OSU SSID",
- binascii.unhexlify('01') ),
- ( "HS 2.0: Invalid OSU SSID Length 33",
- binascii.unhexlify('21') + 33*b'A' ),
- ( "HS 2.0: Not enough room for Number of OSU Providers",
- binascii.unhexlify('0130') ),
- ( "Truncated OSU Provider",
- binascii.unhexlify('013001020000') ),
- ( "HS 2.0: Ignored 5 bytes of extra data after OSU Providers",
- binascii.unhexlify('0130001122334455') ),
- ( "HS 2.0: Not enough room for OSU Friendly Name Length",
- binascii.unhexlify('013001000000') ),
- ( "HS 2.0: Not enough room for OSU Friendly Name Duples",
- build_prov('0100') ),
- ( "Invalid OSU Friendly Name", build_prov('040000000000') ),
- ( "Invalid OSU Friendly Name(2)", build_prov('040004000000') ),
- ( "HS 2.0: Not enough room for OSU Server URI length",
- build_prov('0000') ),
- ( "HS 2.0: Not enough room for OSU Server URI",
- build_prov('000001') ),
- ( "HS 2.0: Not enough room for OSU Method list length",
- build_prov('000000') ),
- ( "HS 2.0: Not enough room for OSU Method list",
- build_prov('00000001') ),
- ( "HS 2.0: Not enough room for Icons Available Length",
- build_prov('00000000') ),
- ( "HS 2.0: Not enough room for Icons Available Length(2)",
- build_prov('00000001ff00') ),
- ( "HS 2.0: Not enough room for Icons Available",
- build_prov('000000000100') ),
- ( "HS 2.0: Invalid Icon Metadata",
- build_prov('00000000010000') ),
- ( "HS 2.0: Not room for Icon Type",
- build_prov('000000000900111122223333330200') ),
- ( "HS 2.0: Not room for Icon Filename length",
- build_prov('000000000900111122223333330100') ),
- ( "HS 2.0: Not room for Icon Filename",
- build_prov('000000000900111122223333330001') ),
- ( "HS 2.0: Not enough room for OSU_NAI",
- build_prov('000000000000') ),
- ( "HS 2.0: Not enough room for OSU_NAI(2)",
- build_prov('00000000000001') ),
- ( "HS 2.0: Not enough room for OSU Service Description Length",
- build_prov('00000000000000') ),
- ( "HS 2.0: Not enough room for OSU Service Description Length(2)",
- build_prov('0000000000000000') ),
- ( "HS 2.0: Not enough room for OSU Service Description Duples",
- build_prov('000000000000000100') ),
- ( "Invalid OSU Service Description",
- build_prov('00000000000000040000000000') ),
- ( "Invalid OSU Service Description(2)",
- build_prov('00000000000000040004000000') ) ]
+ tests = [("Empty provider list (no OSU SSID field)", b''),
+ ("HS 2.0: Not enough room for OSU SSID",
+ binascii.unhexlify('01')),
+ ("HS 2.0: Invalid OSU SSID Length 33",
+ binascii.unhexlify('21') + 33*b'A'),
+ ("HS 2.0: Not enough room for Number of OSU Providers",
+ binascii.unhexlify('0130')),
+ ("Truncated OSU Provider",
+ binascii.unhexlify('013001020000')),
+ ("HS 2.0: Ignored 5 bytes of extra data after OSU Providers",
+ binascii.unhexlify('0130001122334455')),
+ ("HS 2.0: Not enough room for OSU Friendly Name Length",
+ binascii.unhexlify('013001000000')),
+ ("HS 2.0: Not enough room for OSU Friendly Name Duples",
+ build_prov('0100')),
+ ("Invalid OSU Friendly Name", build_prov('040000000000')),
+ ("Invalid OSU Friendly Name(2)", build_prov('040004000000')),
+ ("HS 2.0: Not enough room for OSU Server URI length",
+ build_prov('0000')),
+ ("HS 2.0: Not enough room for OSU Server URI",
+ build_prov('000001')),
+ ("HS 2.0: Not enough room for OSU Method list length",
+ build_prov('000000')),
+ ("HS 2.0: Not enough room for OSU Method list",
+ build_prov('00000001')),
+ ("HS 2.0: Not enough room for Icons Available Length",
+ build_prov('00000000')),
+ ("HS 2.0: Not enough room for Icons Available Length(2)",
+ build_prov('00000001ff00')),
+ ("HS 2.0: Not enough room for Icons Available",
+ build_prov('000000000100')),
+ ("HS 2.0: Invalid Icon Metadata",
+ build_prov('00000000010000')),
+ ("HS 2.0: Not room for Icon Type",
+ build_prov('000000000900111122223333330200')),
+ ("HS 2.0: Not room for Icon Filename length",
+ build_prov('000000000900111122223333330100')),
+ ("HS 2.0: Not room for Icon Filename",
+ build_prov('000000000900111122223333330001')),
+ ("HS 2.0: Not enough room for OSU_NAI",
+ build_prov('000000000000')),
+ ("HS 2.0: Not enough room for OSU_NAI(2)",
+ build_prov('00000000000001')),
+ ("HS 2.0: Not enough room for OSU Service Description Length",
+ build_prov('00000000000000')),
+ ("HS 2.0: Not enough room for OSU Service Description Length(2)",
+ build_prov('0000000000000000')),
+ ("HS 2.0: Not enough room for OSU Service Description Duples",
+ build_prov('000000000000000100')),
+ ("Invalid OSU Service Description",
+ build_prov('00000000000000040000000000')),
+ ("Invalid OSU Service Description(2)",
+ build_prov('00000000000000040004000000'))]
try:
dev[0].request("SET osu_dir " + dir)
for note, prov in tests:
run_fetch_osu(hapd, dev, bssid, note, prov)
finally:
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
os.rmdir(dir)
params['hs20_icon'] = "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png"
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
params['osu_icon'] = "w1fi_logo"
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_service_desc'] = ["eng:Example services",
+ "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
hostapd.add_ap(apdev[0], params)
params['hs20_icon'] = "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png"
params['osu_ssid'] = '"HS 2.0 OSU open"'
params['osu_method_list'] = "1"
- params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ]
+ params['osu_friendly_name'] = ["eng:Test OSU", "fin:Testi-OSU"]
params['osu_icon'] = "w1fi_logo"
- params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ]
+ params['osu_service_desc'] = ["eng:Example services",
+ "fin:Esimerkkipalveluja"]
params['osu_server_uri'] = "https://example.com/osu/"
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
dir = "/tmp/osu-fetch"
if os.path.isdir(dir):
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
else:
if ev is None:
raise Exception("Timeout on OSU fetch")
finally:
- files = [ f for f in os.listdir(dir) if f.startswith("osu-") ]
+ files = [f for f in os.listdir(dir) if f.startswith("osu-")]
for f in files:
os.remove(dir + "/" + f)
os.rmdir(dir)
hapd = hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'update_identifier': "1234" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'update_identifier': "1234"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
dev[0].dump_monitor()
cur.execute("CREATE TABLE authlog(timestamp TEXT, session TEXT, nas_ip TEXT, username TEXT, note TEXT)")
try:
- params = { "ssid": "as", "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18128',
- "eap_server": "1",
- "eap_user_file": "sqlite:" + dbfile,
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key",
- "subscr_remediation_url": "https://example.org/",
- "subscr_remediation_method": "1" }
+ params = {"ssid": "as", "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18128',
+ "eap_server": "1",
+ "eap_user_file": "sqlite:" + dbfile,
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key",
+ "subscr_remediation_url": "https://example.org/",
+ "subscr_remediation_method": "1"}
hostapd.add_ap(apdev[1], params)
bssid = apdev[0]['bssid']
dev[0].request("SET pmf 1")
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "user-mschapv2",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "user-mschapv2",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem"})
interworking_select(dev[0], bssid, freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
ev = dev[0].wait_event(["HS20-SUBSCRIPTION-REMEDIATION"], timeout=5)
cur.execute("CREATE TABLE current_sessions(mac_addr TEXT PRIMARY KEY, identity TEXT, start_time TEXT, nas TEXT, hs20_t_c_filtering BOOLEAN, waiting_coa_ack BOOLEAN, coa_ack_received BOOLEAN)")
try:
- params = { "ssid": "as", "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18128',
- "eap_server": "1",
- "eap_user_file": "sqlite:" + dbfile,
- "eap_sim_db": "unix:/tmp/hlr_auc_gw.sock",
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key",
- "hs20_sim_provisioning_url":
- "https://example.org/?hotspot2dot0-mobile-identifier-hash=",
- "subscr_remediation_method": "1" }
+ params = {"ssid": "as", "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18128',
+ "eap_server": "1",
+ "eap_user_file": "sqlite:" + dbfile,
+ "eap_sim_db": "unix:/tmp/hlr_auc_gw.sock",
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key",
+ "hs20_sim_provisioning_url":
+ "https://example.org/?hotspot2dot0-mobile-identifier-hash=",
+ "subscr_remediation_method": "1"}
hostapd.add_ap(apdev[1], params)
bssid = apdev[0]['bssid']
wpas.request("SET rand_addr_lifetime 60")
wpas.hs20_enable()
wpas.flush_scan_cache()
- id = wpas.add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'update_identifier': "1234" })
+ id = wpas.add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'update_identifier': "1234"})
interworking_select(wpas, bssid, "home", freq="2412")
interworking_connect(wpas, bssid, "TTLS")
addr1 = wpas.get_driver_status_field("addr")
check_eap_capa(dev[0], "MSCHAPV2")
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,25[3:26]"]
+ params['nai_realm'] = ["0,example.com,25[3:26]"]
hapd = hostapd.add_ap(apdev[0], params)
dev[0].add_network()
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "user",
- 'password': "password" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "user",
+ 'password': "password"})
interworking_select(dev[0], bssid, freq="2412")
interworking_connect(dev[0], bssid, "PEAP")
dev[0].add_network()
check_eap_capa(dev[0], "MSCHAPV2")
bssid = apdev[0]['bssid']
params = hs20_ap_params()
- params['nai_realm'] = [ "0,example.com,21[3:26][6:7][99:99]" ]
+ params['nai_realm'] = ["0,example.com,21[3:26][6:7][99:99]"]
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
subprocess.call(['brctl', 'setfd', 'ap-br0', '0'])
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'up'])
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'update_identifier': "1234" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'update_identifier': "1234"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
addr0 = dev[0].p2p_interface_addr()
addr1 = dev[1].p2p_interface_addr()
- src_ll_opt0 = b"\x01\x01" + binascii.unhexlify(addr0.replace(':',''))
- src_ll_opt1 = b"\x01\x01" + binascii.unhexlify(addr1.replace(':',''))
+ src_ll_opt0 = b"\x01\x01" + binascii.unhexlify(addr0.replace(':', ''))
+ src_ll_opt1 = b"\x01\x01" + binascii.unhexlify(addr1.replace(':', ''))
pkt = build_ns(src_ll=addr0, ip_src="aaaa:bbbb:cccc::2",
ip_dst="ff02::1:ff00:2", target="aaaa:bbbb:cccc::2",
check_eap_capa(dev[0], "MSCHAPV2")
bssid = apdev[0]['bssid']
- hapd = hostapd.add_ap(apdev[0], { "ssid": 'secret',
- "ignore_broadcast_ssid": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'secret',
+ "ignore_broadcast_ssid": "1"})
dev[0].scan_for_bss(bssid, freq=2412)
hapd.disable()
hapd_global = hostapd.HostapdGlobal(apdev[0])
hapd = hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
subprocess.call(['brctl', 'setfd', 'ap-br0', '0'])
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'up'])
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'update_identifier': "1234" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'update_identifier': "1234"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
addr0 = dev[0].p2p_interface_addr()
- src_ll_opt0 = b"\x01\x01" + binascii.unhexlify(addr0.replace(':',''))
+ src_ll_opt0 = b"\x01\x01" + binascii.unhexlify(addr0.replace(':', ''))
pkt = build_ns(src_ll=addr0, ip_src="aaaa:bbbb:cccc::2",
ip_dst="ff02::1:ff00:2", target="aaaa:bbbb:cccc::2",
def build_ra(src_ll, ip_src, ip_dst, cur_hop_limit=0, router_lifetime=0,
reachable_time=0, retrans_timer=0, opt=None):
link_mc = binascii.unhexlify("3333ff000002")
- _src_ll = binascii.unhexlify(src_ll.replace(':',''))
+ _src_ll = binascii.unhexlify(src_ll.replace(':', ''))
proto = b'\x86\xdd'
ehdr = link_mc + _src_ll + proto
_ip_src = socket.inet_pton(socket.AF_INET6, ip_src)
def build_ns(src_ll, ip_src, ip_dst, target, opt=None):
link_mc = binascii.unhexlify("3333ff000002")
- _src_ll = binascii.unhexlify(src_ll.replace(':',''))
+ _src_ll = binascii.unhexlify(src_ll.replace(':', ''))
proto = b'\x86\xdd'
ehdr = link_mc + _src_ll + proto
_ip_src = socket.inet_pton(socket.AF_INET6, ip_src)
cmd = "DATA_TEST_FRAME "
if opt is None:
- opt = b"\x01\x01" + binascii.unhexlify(src_ll.replace(':',''))
+ opt = b"\x01\x01" + binascii.unhexlify(src_ll.replace(':', ''))
pkt = build_ns(src_ll=src_ll, ip_src=ip_src, ip_dst=ip_dst, target=target,
opt=opt)
def build_na(src_ll, ip_src, ip_dst, target, opt=None, flags=0):
link_mc = binascii.unhexlify("3333ff000002")
- _src_ll = binascii.unhexlify(src_ll.replace(':',''))
+ _src_ll = binascii.unhexlify(src_ll.replace(':', ''))
proto = b'\x86\xdd'
ehdr = link_mc + _src_ll + proto
_ip_src = socket.inet_pton(socket.AF_INET6, ip_src)
subnet_mask="255.255.255.0", truncated_opt=False,
wrong_magic=False, force_tot_len=None, no_dhcp=False,
udp_checksum=True):
- _dst_ll = binascii.unhexlify(dst_ll.replace(':',''))
- _src_ll = binascii.unhexlify(src_ll.replace(':',''))
+ _dst_ll = binascii.unhexlify(dst_ll.replace(':', ''))
+ _src_ll = binascii.unhexlify(src_ll.replace(':', ''))
proto = b'\x08\x00'
ehdr = _dst_ll + _src_ll + proto
_ip_src = socket.inet_pton(socket.AF_INET, ip_src)
_yiaddr = socket.inet_pton(socket.AF_INET, yiaddr)
_siaddr = b'\x00\x00\x00\x00'
_giaddr = b'\x00\x00\x00\x00'
- _chaddr = binascii.unhexlify(chaddr.replace(':','') + "00000000000000000000")
+ _chaddr = binascii.unhexlify(chaddr.replace(':', '') + "00000000000000000000")
payload = struct.pack('>BBBBL3BB', 2, 1, 6, 0, 12345, 0, 0, 0, 0)
payload += _ciaddr + _yiaddr + _siaddr + _giaddr + _chaddr + 192*b'\x00'
# magic
def build_arp(dst_ll, src_ll, opcode, sender_mac, sender_ip,
target_mac, target_ip):
- _dst_ll = binascii.unhexlify(dst_ll.replace(':',''))
- _src_ll = binascii.unhexlify(src_ll.replace(':',''))
+ _dst_ll = binascii.unhexlify(dst_ll.replace(':', ''))
+ _src_ll = binascii.unhexlify(src_ll.replace(':', ''))
proto = b'\x08\x06'
ehdr = _dst_ll + _src_ll + proto
- _sender_mac = binascii.unhexlify(sender_mac.replace(':',''))
+ _sender_mac = binascii.unhexlify(sender_mac.replace(':', ''))
_sender_ip = socket.inet_pton(socket.AF_INET, sender_ip)
- _target_mac = binascii.unhexlify(target_mac.replace(':',''))
+ _target_mac = binascii.unhexlify(target_mac.replace(':', ''))
_target_ip = socket.inet_pton(socket.AF_INET, target_ip)
arp = struct.pack('>HHBBH', 1, 0x0800, 6, 4, opcode)
cmd = subprocess.Popen(['ip', 'nei'], stdout=subprocess.PIPE)
res = cmd.stdout.read().decode()
cmd.stdout.close()
- return [ line for line in res.splitlines() if "PERMANENT" in line and ifname in line ]
+ return [line for line in res.splitlines() if "PERMANENT" in line and ifname in line]
def get_bridge_macs(ifname):
cmd = subprocess.Popen(['brctl', 'showmacs', ifname],
def tshark_get_arp(cap, filter):
res = run_tshark(cap, filter,
- [ "eth.dst", "eth.src",
- "arp.src.hw_mac", "arp.src.proto_ipv4",
- "arp.dst.hw_mac", "arp.dst.proto_ipv4" ],
+ ["eth.dst", "eth.src",
+ "arp.src.hw_mac", "arp.src.proto_ipv4",
+ "arp.dst.hw_mac", "arp.dst.proto_ipv4"],
wait=False)
frames = []
for l in res.splitlines():
def tshark_get_ns(cap):
res = run_tshark(cap, "icmpv6.type == 135",
- [ "eth.dst", "eth.src",
- "ipv6.src", "ipv6.dst",
- "icmpv6.nd.ns.target_address",
- "icmpv6.opt.linkaddr" ],
+ ["eth.dst", "eth.src",
+ "ipv6.src", "ipv6.dst",
+ "icmpv6.nd.ns.target_address",
+ "icmpv6.opt.linkaddr"],
wait=False)
frames = []
for l in res.splitlines():
def tshark_get_na(cap):
res = run_tshark(cap, "icmpv6.type == 136",
- [ "eth.dst", "eth.src",
- "ipv6.src", "ipv6.dst",
- "icmpv6.nd.na.target_address",
- "icmpv6.opt.linkaddr" ],
+ ["eth.dst", "eth.src",
+ "ipv6.src", "ipv6.dst",
+ "icmpv6.nd.na.target_address",
+ "icmpv6.opt.linkaddr"],
wait=False)
frames = []
for l in res.splitlines():
prefix + ".%s.pcap" % dev[2].ifname)
bssid = apdev[0]['bssid']
- params = { 'ssid': 'open' }
+ params = {'ssid': 'open'}
params['proxy_arp'] = '1'
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
hapd.set("ap_isolate", "1")
if "AP-ENABLED" not in ev:
raise Exception("AP startup failed")
- params2 = { 'ssid': 'another' }
+ params2 = {'ssid': 'another'}
hapd2 = hostapd.add_ap(apdev[1], params2, no_enable=True)
hapd2.set('bridge', 'ap-br0')
hapd2.enable()
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'up'])
if ebtables:
- for chain in [ 'FORWARD', 'OUTPUT' ]:
+ for chain in ['FORWARD', 'OUTPUT']:
try:
subprocess.call(['ebtables', '-A', chain, '-p', 'ARP',
'-d', 'Broadcast', '-o', apdev[0]['ifname'],
if '192.168.1.123 dev ap-br0 lladdr 02:00:00:00:00:00 PERMANENT' not in matches:
raise Exception("dev0 IPv4 addr missing")
- targets = [ "192.168.1.123", "192.168.1.124", "192.168.1.125",
- "192.168.1.126" ]
+ targets = ["192.168.1.123", "192.168.1.124", "192.168.1.125",
+ "192.168.1.126"]
for target in targets:
send_arp(dev[1], sender_ip="192.168.1.100", target_ip=target)
logger.info("dev0 seen ARP requests:\n" + str(arp_req))
logger.info("dev0 seen ARP replies:\n" + str(arp_reply))
- if [ 'ff:ff:ff:ff:ff:ff', addr1,
- addr1, '192.168.1.100',
- '00:00:00:00:00:00', '192.168.1.123' ] in arp_req:
+ if ['ff:ff:ff:ff:ff:ff', addr1,
+ addr1, '192.168.1.100',
+ '00:00:00:00:00:00', '192.168.1.123'] in arp_req:
raise Exception("dev0 saw ARP request from dev1")
- if [ 'ff:ff:ff:ff:ff:ff', addr2,
- addr2, '192.168.1.103',
- '00:00:00:00:00:00', '192.168.1.123' ] in arp_req:
+ if ['ff:ff:ff:ff:ff:ff', addr2,
+ addr2, '192.168.1.103',
+ '00:00:00:00:00:00', '192.168.1.123'] in arp_req:
raise Exception("dev0 saw ARP request from dev2")
# TODO: Uncomment once fixed in kernel
- #if [ 'ff:ff:ff:ff:ff:ff', bssid,
- # bssid, '192.168.1.101',
- # '00:00:00:00:00:00', '192.168.1.123' ] in arp_req:
+ #if ['ff:ff:ff:ff:ff:ff', bssid,
+ # bssid, '192.168.1.101',
+ # '00:00:00:00:00:00', '192.168.1.123'] in arp_req:
# raise Exception("dev0 saw ARP request from br")
if ebtables:
logger.info("dev1 seen ARP requests:\n" + str(arp_req))
logger.info("dev1 seen ARP replies:\n" + str(arp_reply))
- if [ 'ff:ff:ff:ff:ff:ff', addr2,
- addr2, '192.168.1.103',
- '00:00:00:00:00:00', '192.168.1.123' ] in arp_req:
+ if ['ff:ff:ff:ff:ff:ff', addr2,
+ addr2, '192.168.1.103',
+ '00:00:00:00:00:00', '192.168.1.123'] in arp_req:
raise Exception("dev1 saw ARP request from dev2")
if [addr1, addr0, addr0, '192.168.1.123', addr1, '192.168.1.100'] not in arp_reply:
raise Exception("dev1 did not get ARP response for 192.168.1.123")
logger.info("dev2 seen ARP requests:\n" + str(arp_req))
logger.info("dev2 seen ARP replies:\n" + str(arp_reply))
- if [ addr2, addr0,
- addr0, '192.168.1.123',
- addr2, '192.168.1.103' ] not in arp_reply:
+ if [addr2, addr0,
+ addr0, '192.168.1.123',
+ addr2, '192.168.1.103'] not in arp_reply:
raise Exception("dev2 did not get ARP response for 192.168.1.123")
arp_req = tshark_get_arp(cap_br, "arp.opcode == 1")
logger.info("br seen ARP replies:\n" + str(arp_reply))
# TODO: Uncomment once fixed in kernel
- #if [ bssid, addr0,
- # addr0, '192.168.1.123',
- # bssid, '192.168.1.101' ] not in arp_reply:
+ #if [bssid, addr0,
+ # addr0, '192.168.1.123',
+ # bssid, '192.168.1.101'] not in arp_reply:
# raise Exception("br did not get ARP response for 192.168.1.123")
def _test_proxyarp_open_ipv6(dev, apdev, params, ebtables=False):
prefix + ".%s.pcap" % dev[2].ifname)
bssid = apdev[0]['bssid']
- params = { 'ssid': 'open' }
+ params = {'ssid': 'open'}
params['proxy_arp'] = '1'
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
hapd.set("ap_isolate", "1")
if "AP-ENABLED" not in ev:
raise Exception("AP startup failed")
- params2 = { 'ssid': 'another' }
+ params2 = {'ssid': 'another'}
hapd2 = hostapd.add_ap(apdev[1], params2, no_enable=True)
hapd2.set('bridge', 'ap-br0')
hapd2.enable()
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'up'])
if ebtables:
- for chain in [ 'FORWARD', 'OUTPUT' ]:
+ for chain in ['FORWARD', 'OUTPUT']:
try:
subprocess.call(['ebtables', '-A', chain, '-d', 'Multicast',
'-p', 'IPv6', '--ip6-protocol', 'ipv6-icmp',
addr1 = dev[1].p2p_interface_addr()
addr2 = dev[2].p2p_interface_addr()
- src_ll_opt0 = b"\x01\x01" + binascii.unhexlify(addr0.replace(':',''))
- src_ll_opt1 = b"\x01\x01" + binascii.unhexlify(addr1.replace(':',''))
+ src_ll_opt0 = b"\x01\x01" + binascii.unhexlify(addr0.replace(':', ''))
+ src_ll_opt1 = b"\x01\x01" + binascii.unhexlify(addr1.replace(':', ''))
# DAD NS
send_ns(dev[0], ip_src="::", target="aaaa:bbbb:cccc::2")
na = tshark_get_na(cap_dev0)
logger.info("dev0 seen NA: " + str(na))
- if [ addr0, addr1, 'aaaa:bbbb:dddd::2', 'aaaa:bbbb:cccc::2',
- 'aaaa:bbbb:dddd::2', addr1 ] not in na:
+ if [addr0, addr1, 'aaaa:bbbb:dddd::2', 'aaaa:bbbb:cccc::2',
+ 'aaaa:bbbb:dddd::2', addr1] not in na:
# For now, skip the test instead of reporting the error since the IPv6
# proxyarp support is not yet in the upstream kernel tree.
#raise Exception("dev0 did not get NA for aaaa:bbbb:dddd::2")
na = tshark_get_na(cap_dev1)
logger.info("dev1 seen NA: " + str(na))
- if [ addr1, addr0, 'aaaa:bbbb:cccc::2', 'aaaa:bbbb:dddd::2',
- 'aaaa:bbbb:cccc::2', addr0 ] not in na:
+ if [addr1, addr0, 'aaaa:bbbb:cccc::2', 'aaaa:bbbb:dddd::2',
+ 'aaaa:bbbb:cccc::2', addr0] not in na:
raise Exception("dev1 did not get NA for aaaa:bbbb:cccc::2")
if ebtables:
logger.info("dev2 seen NA: " + str(na))
# FIX: enable once kernel implementation for proxyarp IPv6 is fixed
- #if [ addr2, addr0, 'aaaa:bbbb:cccc::2', 'aaaa:bbbb:ff00::2',
- # 'aaaa:bbbb:cccc::2', addr0 ] not in na:
+ #if [addr2, addr0, 'aaaa:bbbb:cccc::2', 'aaaa:bbbb:ff00::2',
+ # 'aaaa:bbbb:cccc::2', addr0] not in na:
# raise Exception("dev2 did not get NA for aaaa:bbbb:cccc::2")
- #if [ addr2, addr1, 'aaaa:bbbb:dddd::2', 'aaaa:bbbb:ff00::2',
- # 'aaaa:bbbb:dddd::2', addr1 ] not in na:
+ #if [addr2, addr1, 'aaaa:bbbb:dddd::2', 'aaaa:bbbb:ff00::2',
+ # 'aaaa:bbbb:dddd::2', addr1] not in na:
# raise Exception("dev2 did not get NA for aaaa:bbbb:dddd::2")
- #if [ addr2, addr1, 'aaaa:bbbb:eeee::2', 'aaaa:bbbb:ff00::2',
- # 'aaaa:bbbb:eeee::2', addr1 ] not in na:
+ #if [addr2, addr1, 'aaaa:bbbb:eeee::2', 'aaaa:bbbb:ff00::2',
+ # 'aaaa:bbbb:eeee::2', addr1] not in na:
# raise Exception("dev2 did not get NA for aaaa:bbbb:eeee::2")
def test_proxyarp_open(dev, apdev, params):
stderr=open('/dev/null', 'w'))
def run_proxyarp_errors(dev, apdev, params):
- params = { 'ssid': 'open',
- 'proxy_arp': '1',
- 'ap_isolate': '1',
- 'bridge': 'ap-br0',
- 'disable_dgaf': '1' }
+ params = {'ssid': 'open',
+ 'proxy_arp': '1',
+ 'ap_isolate': '1',
+ 'bridge': 'ap-br0',
+ 'disable_dgaf': '1'}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
try:
hapd.enable()
wait_fail_trigger(dev[0], "GET_FAIL")
with alloc_fail(hapd, 1, "sta_ip6addr_add"):
- src_ll_opt0 = b"\x01\x01" + binascii.unhexlify(addr0.replace(':',''))
+ src_ll_opt0 = b"\x01\x01" + binascii.unhexlify(addr0.replace(':', ''))
pkt = build_ns(src_ll=addr0, ip_src="aaaa:bbbb:cccc::2",
ip_dst="ff02::1:ff00:2", target="aaaa:bbbb:cccc::2",
opt=src_ll_opt0)
wpas.interface_add("wlan5", drv_params="")
wpas.hs20_enable()
wpas.flush_scan_cache()
- wpas.add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com" })
+ wpas.add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com"})
wpas.scan_for_bss(bssid, freq=2412)
hapd.disable()
hapd = hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- values = { 'realm': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.com" }
+ values = {'realm': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"}
id = dev[0].add_cred_values(values)
dev[0].scan_for_bss(bssid, freq="2412")
- tests = [ "00", "ffff", "010011223344", "020008000005112233445500",
- "01000400000000", "01000000000000",
- "01000300000200", "0100040000ff0000", "01000300000100",
- "01000300000001",
- "01000600000056112233",
- "01000900000002050001000111",
- "01000600000001000000", "01000600000001ff0000",
- "01000600000001020001",
- "010008000000010400010001", "0100080000000104000100ff",
- "010011000000010d00050200020100030005000600",
- "0000" ]
+ tests = ["00", "ffff", "010011223344", "020008000005112233445500",
+ "01000400000000", "01000000000000",
+ "01000300000200", "0100040000ff0000", "01000300000100",
+ "01000300000001",
+ "01000600000056112233",
+ "01000900000002050001000111",
+ "01000600000001000000", "01000600000001ff0000",
+ "01000600000001020001",
+ "010008000000010400010001", "0100080000000104000100ff",
+ "010011000000010d00050200020100030005000600",
+ "0000"]
for t in tests:
hapd.set("anqp_elem", "263:" + t)
dev[0].request("INTERWORKING_SELECT freq=2412")
dev[0].dump_monitor()
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'imsi': "555444-333222111", 'eap': "AKA",
- 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
+ id = dev[0].add_cred_values({'imsi': "555444-333222111", 'eap': "AKA",
+ 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
- tests = [ "00", "0100", "0001", "00ff", "000200ff", "0003000101",
- "00020100" ]
+ tests = ["00", "0100", "0001", "00ff", "000200ff", "0003000101",
+ "00020100"]
for t in tests:
hapd.set("anqp_elem", "264:" + t)
dev[0].request("INTERWORKING_SELECT freq=2412")
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "test",
- 'password': "secret",
- 'domain': "example.com",
- 'eap': 'TTLS' })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com",
+ 'eap': 'TTLS'})
interworking_select(dev[0], bssid, "home", freq=2412)
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'realm': "foo.com",
- 'username': "test",
- 'password': "secret",
- 'domain': "example.com",
- 'roaming_consortium': "112234",
- 'eap': 'TTLS' })
+ id = dev[0].add_cred_values({'realm': "foo.com",
+ 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com",
+ 'roaming_consortium': "112234",
+ 'eap': 'TTLS'})
interworking_select(dev[0], bssid, "home", freq=2412, no_match=True)
dev[0].remove_cred(id)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "test",
- 'password': "secret",
- 'domain': "example.com",
- 'roaming_consortium': "112234",
- 'eap': 'TTLS' })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com",
+ 'roaming_consortium': "112234",
+ 'eap': 'TTLS'})
interworking_select(dev[0], bssid, "home", freq=2412, no_match=True)
def test_ap_hs20_interworking_oom(dev, apdev):
bssid = apdev[0]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid
- params['nai_realm'] = [ "0,no.match.here;example.com;no.match.here.either,21[2:1][5:7]",
- "0,example.com,13[5:6],21[2:4][5:7]",
- "0,another.example.com" ]
+ params['nai_realm'] = ["0,no.match.here;example.com;no.match.here.either,21[2:1][5:7]",
+ "0,example.com,13[5:6],21[2:4][5:7]",
+ "0,another.example.com"]
hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "test",
- 'password': "secret",
- 'domain': "example.com",
- 'eap': 'TTLS' })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com",
+ 'eap': 'TTLS'})
dev[0].scan_for_bss(bssid, freq="2412")
- funcs = [ "wpabuf_alloc;interworking_anqp_send_req",
- "anqp_build_req;interworking_anqp_send_req",
- "gas_query_req;interworking_anqp_send_req",
- "dup_binstr;nai_realm_parse_realm",
- "=nai_realm_parse_realm",
- "=nai_realm_parse",
- "=nai_realm_match" ]
+ funcs = ["wpabuf_alloc;interworking_anqp_send_req",
+ "anqp_build_req;interworking_anqp_send_req",
+ "gas_query_req;interworking_anqp_send_req",
+ "dup_binstr;nai_realm_parse_realm",
+ "=nai_realm_parse_realm",
+ "=nai_realm_parse",
+ "=nai_realm_match"]
for func in funcs:
with alloc_fail(dev[0], 1, func):
dev[0].request("INTERWORKING_SELECT auto freq=2412")
params['auth_server_port'] = "1812"
params['auth_server_shared_secret'] = "radius"
params['interworking'] = "1"
- params['roaming_consortium'] = [ "112233", "1020304050", "010203040506",
- "fedcba" ]
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]",
- "0,another.example.com" ]
+ params['roaming_consortium'] = ["112233", "1020304050", "010203040506",
+ "fedcba"]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]",
+ "0,another.example.com"]
hapd = hostapd.add_ap(apdev[0], params)
dev[0].hs20_enable()
dev[0].scan_for_bss(bssid, freq="2412")
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "test",
- 'password': "secret",
- 'domain': "example.com",
- 'roaming_consortium': "112233",
- 'eap': 'TTLS' })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com",
+ 'roaming_consortium': "112233",
+ 'eap': 'TTLS'})
interworking_select(dev[0], bssid, freq=2412, no_match=True)
if "FAIL" not in dev[0].request("INTERWORKING_CONNECT " + bssid):
dev[0].hs20_enable()
dev[0].scan_for_bss(bssid, freq="2412")
- id = dev[0].add_cred_values({ 'realm': "example.org",
- 'username': "test",
- 'password': "secret",
- 'domain': "example.org",
- 'roaming_consortium': "112234",
- 'eap': 'TTLS' })
+ id = dev[0].add_cred_values({'realm': "example.org",
+ 'username': "test",
+ 'password': "secret",
+ 'domain': "example.org",
+ 'roaming_consortium': "112234",
+ 'eap': 'TTLS'})
interworking_select(dev[0], bssid, freq=2412, no_match=True)
if "FAIL" not in dev[0].request("INTERWORKING_CONNECT " + bssid):
bssid = apdev[0]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]" ]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]"]
params['domain_name'] = "example.com"
hapd = hostapd.add_ap(apdev[0], params)
bssid2 = apdev[1]['bssid']
params = hs20_ap_params(ssid="test-hs20-other")
params['hessid'] = bssid2
- params['nai_realm'] = [ "0,example.org,13[5:6],21[2:4][5:7]" ]
+ params['nai_realm'] = ["0,example.org,13[5:6],21[2:4][5:7]"]
params['domain_name'] = "example.org"
hapd2 = hostapd.add_ap(apdev[1], params)
dev[0].hs20_enable()
dev[0].scan_for_bss(bssid2, freq="2412")
dev[0].scan_for_bss(bssid, freq="2412")
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'priority': '2',
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'priority': '2',
+ 'username': "hs20-test",
+ 'password': "password",
+ 'domain': "example.com"})
+ id2 = dev[0].add_cred_values({'realm': "example.org",
+ 'priority': '3',
'username': "hs20-test",
'password': "password",
- 'domain': "example.com" })
- id2 = dev[0].add_cred_values({ 'realm': "example.org",
- 'priority': '3',
- 'username': "hs20-test",
- 'password': "password",
- 'domain': "example.org" })
+ 'domain': "example.org"})
dev[0].request("INTERWORKING_SELECT auto freq=2412")
ev = dev[0].wait_connected(timeout=15)
if bssid2 not in ev:
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "test",
- 'password': "secret",
- 'domain': "example.com",
- 'roaming_consortium': "112234",
- 'eap': 'TTLS' })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "test",
+ 'password': "secret",
+ 'domain': "example.com",
+ 'roaming_consortium': "112234",
+ 'eap': 'TTLS'})
dev[0].request("INTERWORKING_SELECT freq=2412")
query = gas_rx(hapd)
if "result=SUCCESS" not in ev:
raise Exception("Unexpected result: " + ev)
- tests = [ struct.pack('<HH', 0xdddd, 0),
- struct.pack('<HH3B', 0xdddd, 3, 0x50, 0x6f, 0x9a),
- struct.pack('<HH4B', 0xdddd, 4, 0x50, 0x6f, 0x9a, 0),
- struct.pack('<HH4B', 0xdddd, 4, 0x11, 0x22, 0x33, 0),
- struct.pack('<HHHH', 1, 0, 1, 0) ]
+ tests = [struct.pack('<HH', 0xdddd, 0),
+ struct.pack('<HH3B', 0xdddd, 3, 0x50, 0x6f, 0x9a),
+ struct.pack('<HH4B', 0xdddd, 4, 0x50, 0x6f, 0x9a, 0),
+ struct.pack('<HH4B', 0xdddd, 4, 0x11, 0x22, 0x33, 0),
+ struct.pack('<HHHH', 1, 0, 1, 0)]
for elements in tests:
dev[0].request("INTERWORKING_SELECT freq=2412")
dev[0].hs20_enable()
dev[0].scan_for_bss(bssid, freq="2412")
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'domain': "example.com",
- 'username': "test",
- 'password': "secret",
- 'eap': 'TTLS' })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'domain': "example.com",
+ 'username': "test",
+ 'password': "secret",
+ 'eap': 'TTLS'})
interworking_select(dev[0], bssid, "home", freq=2412)
dev[0].dump_monitor()
dev[0].request("NOTE ssid->eap.eap_methods = os_malloc()")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'domain': "example.com",
- 'username': "hs20-test-with-domain@example.com",
- 'password': "password" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'domain': "example.com",
+ 'username': "hs20-test-with-domain@example.com",
+ 'password': "password"})
interworking_select(dev[0], bssid, "home", freq=2412)
dev[0].dump_monitor()
dev[0].request("NOTE anon = os_malloc()")
dev[0].remove_cred(id)
dev[0].wait_disconnected()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'domain': "example.com",
- 'username': "hs20-test",
- 'password': "password" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'domain': "example.com",
+ 'username': "hs20-test",
+ 'password': "password"})
interworking_select(dev[0], bssid, "home", freq=2412)
dev[0].dump_monitor()
dev[0].request("NOTE anon = os_malloc() (second)")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'roaming_consortium': "112233",
- 'domain': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'eap': 'TTLS',
- 'phase2': "auth=MSCHAPV2" })
+ id = dev[0].add_cred_values({'roaming_consortium': "112233",
+ 'domain': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'eap': 'TTLS',
+ 'phase2': "auth=MSCHAPV2"})
interworking_select(dev[0], bssid, "home", freq=2412)
dev[0].dump_monitor()
dev[0].request("NOTE anon = os_strdup()")
dev[0].remove_cred(id)
dev[0].wait_disconnected()
- id = dev[0].add_cred_values({ 'roaming_consortium': "112233",
- 'domain': "example.com",
- 'realm': "example.com",
- 'username': "user",
- 'password': "password",
- 'eap': 'PEAP' })
+ id = dev[0].add_cred_values({'roaming_consortium': "112233",
+ 'domain': "example.com",
+ 'realm': "example.com",
+ 'username': "user",
+ 'password': "password",
+ 'eap': 'PEAP'})
interworking_select(dev[0], bssid, "home", freq=2412)
dev[0].dump_monitor()
dev[0].request("NOTE id = os_strdup()")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'roaming_consortium': "112233",
- 'domain': "example.com",
- 'realm': "example.com",
- 'username': "user",
- 'password': "password",
- 'eap': "TTLS" })
+ id = dev[0].add_cred_values({'roaming_consortium': "112233",
+ 'domain': "example.com",
+ 'realm': "example.com",
+ 'username': "user",
+ 'password': "password",
+ 'eap': "TTLS"})
interworking_select(dev[0], bssid, "home", freq=2412)
dev[0].dump_monitor()
dev[0].request("NOTE wpa_config_set_quoted(identity) (second)")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'roaming_consortium': "112233",
- 'domain': "example.com",
- 'realm': "example.com",
- 'username': "user",
- 'eap': "PEAP" })
+ id = dev[0].add_cred_values({'roaming_consortium': "112233",
+ 'domain': "example.com",
+ 'realm': "example.com",
+ 'username': "user",
+ 'eap': "PEAP"})
dev[0].set_cred(id, "password", "ext:password")
interworking_select(dev[0], bssid, "home", freq=2412)
dev[0].dump_monitor()
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'domain': "example.com",
- 'username': "certificate-user",
- 'phase1': "include_tls_length=0",
- 'domain_suffix_match': "example.com",
- 'ca_cert': "auth_serv/ca.pem",
- 'client_cert': "auth_serv/user.pem",
- 'private_key': "auth_serv/user.key",
- 'private_key_passwd': "secret" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'domain': "example.com",
+ 'username': "certificate-user",
+ 'phase1': "include_tls_length=0",
+ 'domain_suffix_match': "example.com",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'client_cert': "auth_serv/user.pem",
+ 'private_key': "auth_serv/user.key",
+ 'private_key_passwd': "secret"})
interworking_select(dev[0], bssid, "home", freq=2412)
dev[0].dump_monitor()
dev[0].request("NOTE wpa_config_set_quoted(client_cert)")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'imsi': "555444-333222111", 'eap': "SIM",
- 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
+ id = dev[0].add_cred_values({'imsi': "555444-333222111", 'eap': "SIM",
+ 'milenage': "5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123"})
interworking_select(dev[0], bssid, freq=2412)
dev[0].dump_monitor()
with alloc_fail(dev[0], 1, "interworking_set_hs20_params"):
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
dev[0].remove_cred(id)
- id = dev[0].add_cred_values({ 'roaming_consortium': "112233",
- 'username': "user@example.com",
- 'password': "password" })
+ id = dev[0].add_cred_values({'roaming_consortium': "112233",
+ 'username': "user@example.com",
+ 'password': "password"})
interworking_select(dev[0], bssid, freq=2412)
dev[0].dump_monitor()
dev[0].request("NOTE Interworking: No EAP method set for credential using roaming consortium")
params = hs20_ap_params()
params['nai_realm'] = "0,example.com,25[3:26]"
hapd = hostapd.add_ap(apdev[0], params)
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'domain': "example.com",
- 'username': "hs20-test",
- 'password': "password" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'domain': "example.com",
+ 'username': "hs20-test",
+ 'password': "password"})
interworking_select(dev[0], bssid, freq=2412)
dev[0].dump_monitor()
dev[0].request("NOTE wpa_config_set(PEAP/FAST-phase1)")
try:
- params = { "ssid": "as", "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18128',
- "eap_server": "1",
- "eap_user_file": "sqlite:" + dbfile,
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key" }
+ params = {"ssid": "as", "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18128',
+ "eap_server": "1",
+ "eap_user_file": "sqlite:" + dbfile,
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key"}
params['hs20_t_c_server_url'] = url_template
authsrv = hostapd.add_ap(apdev[1], params)
dev[0].request("SET pmf 1")
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "user-mschapv2",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "user-mschapv2",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem"})
interworking_select(dev[0], bssid, freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
def test_ap_ht40_scan(dev, apdev):
"""HT40 co-ex scan"""
clear_scan_cache(apdev[0])
- params = { "ssid": "test-ht40",
- "channel": "5",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "5",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
def test_ap_ht_wifi_generation(dev, apdev):
"""HT and wifi_generation"""
clear_scan_cache(apdev[0])
- params = { "ssid": "test-ht",
- "channel": "6" }
+ params = {"ssid": "test-ht",
+ "channel": "6"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-ht", key_mgmt="NONE", scan_freq="2437")
def test_ap_ht40_scan_conflict(dev, apdev):
"""HT40 co-ex scan conflict"""
clear_scan_cache(apdev[0])
- params = { "ssid": "test-ht40",
- "channel": "6",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "channel": "6",
+ "ht_capab": "[HT40+]"}
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-ht40",
- "channel": "5",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "5",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
def test_ap_ht40_scan_conflict2(dev, apdev):
"""HT40 co-ex scan conflict (HT40-)"""
clear_scan_cache(apdev[0])
- params = { "ssid": "test-ht40",
- "channel": "11",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "11",
+ "ht_capab": "[HT40-]"}
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-ht40",
- "channel": "1",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "channel": "1",
+ "ht_capab": "[HT40+]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
def test_ap_ht40_scan_not_affected(dev, apdev):
"""HT40 co-ex scan and other BSS not affected"""
clear_scan_cache(apdev[0])
- params = { "ssid": "test-ht20",
- "channel": "11" }
+ params = {"ssid": "test-ht20",
+ "channel": "11"}
hostapd.add_ap(apdev[1], params)
hostapd.cmd_execute(apdev[0], ['ifconfig', apdev[0]['ifname'], 'up'])
time.sleep(0.1)
hostapd.cmd_execute(apdev[0], ['ifconfig', apdev[0]['ifname'], 'down'])
- params = { "ssid": "test-ht40",
- "channel": "1",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "channel": "1",
+ "ht_capab": "[HT40+]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
def test_ap_ht40_scan_legacy_conflict(dev, apdev):
"""HT40 co-ex scan conflict with legacy 20 MHz AP"""
clear_scan_cache(apdev[0])
- params = { "ssid": "legacy-20",
- "channel": "7", "ieee80211n": "0" }
+ params = {"ssid": "legacy-20",
+ "channel": "7", "ieee80211n": "0"}
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-ht40",
- "channel": "5",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "5",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
def test_ap_ht40_scan_ht20_conflict(dev, apdev):
"""HT40 co-ex scan conflict with HT 20 MHz AP"""
clear_scan_cache(apdev[0])
- params = { "ssid": "ht-20",
- "channel": "7", "ieee80211n": "1" }
+ params = {"ssid": "ht-20",
+ "channel": "7", "ieee80211n": "1"}
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-ht40",
- "channel": "5",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "5",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
def test_ap_ht40_scan_intolerant(dev, apdev):
"""HT40 co-ex scan finding an AP advertising 40 MHz intolerant"""
clear_scan_cache(apdev[0])
- params = { "ssid": "another-bss",
- "channel": "1",
- "ht_capab": "[40-INTOLERANT]" }
+ params = {"ssid": "another-bss",
+ "channel": "1",
+ "ht_capab": "[40-INTOLERANT]"}
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-ht40",
- "channel": "1",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "channel": "1",
+ "ht_capab": "[HT40+]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
def test_ap_ht40_scan_match(dev, apdev):
"""HT40 co-ex scan matching configuration"""
clear_scan_cache(apdev[0])
- params = { "ssid": "test-ht40",
- "channel": "5",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "5",
+ "ht_capab": "[HT40-]"}
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-ht40",
- "channel": "5",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "5",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
try:
hapd = None
hapd2 = None
- params = { "ssid": "test-ht40",
- "hw_mode": "a",
- "channel": "36",
- "country_code": "US",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "hw_mode": "a",
+ "channel": "36",
+ "country_code": "US",
+ "ht_capab": "[HT40+]"}
hapd2 = hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-ht40",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
try:
hapd = None
hapd2 = None
- params = { "ssid": "test-ht40",
- "hw_mode": "a",
- "channel": "36",
- "country_code": "US",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "hw_mode": "a",
+ "channel": "36",
+ "country_code": "US",
+ "ht_capab": "[HT40+]"}
hapd2 = hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-ht40",
- "hw_mode": "a",
- "channel": "40",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "hw_mode": "a",
+ "channel": "40",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
try:
hapd = None
hapd2 = None
- params = { "ssid": "test-ht40",
- "hw_mode": "a",
- "channel": "36",
- "country_code": "US",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "hw_mode": "a",
+ "channel": "36",
+ "country_code": "US",
+ "ht_capab": "[HT40+]"}
hapd2 = hostapd.add_ap(apdev[1], params)
id = dev[0].add_network()
dev[0].select_network(id)
time.sleep(1)
- params = { "ssid": "test-ht40",
- "hw_mode": "a",
- "channel": "40",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "hw_mode": "a",
+ "channel": "40",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
def test_obss_scan(dev, apdev):
"""Overlapping BSS scan request"""
- params = { "ssid": "obss-scan",
- "channel": "6",
- "ht_capab": "[HT40-]",
- "obss_interval": "10" }
+ params = {"ssid": "obss-scan",
+ "channel": "6",
+ "ht_capab": "[HT40-]",
+ "obss_interval": "10"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "another-bss",
- "channel": "9",
- "ieee80211n": "0" }
+ params = {"ssid": "another-bss",
+ "channel": "9",
+ "ieee80211n": "0"}
hostapd.add_ap(apdev[1], params)
run_obss_scan(hapd, dev)
def test_obss_scan_ht40_plus(dev, apdev):
"""Overlapping BSS scan request (HT40+)"""
- params = { "ssid": "obss-scan",
- "channel": "6",
- "ht_capab": "[HT40+]",
- "obss_interval": "10" }
+ params = {"ssid": "obss-scan",
+ "channel": "6",
+ "ht_capab": "[HT40+]",
+ "obss_interval": "10"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "another-bss",
- "channel": "9",
- "ieee80211n": "0" }
+ params = {"ssid": "another-bss",
+ "channel": "9",
+ "ieee80211n": "0"}
hostapd.add_ap(apdev[1], params)
run_obss_scan(hapd, dev)
def test_obss_scan_40_intolerant(dev, apdev):
"""Overlapping BSS scan request with 40 MHz intolerant AP"""
- params = { "ssid": "obss-scan",
- "channel": "6",
- "ht_capab": "[HT40-]",
- "obss_interval": "10" }
+ params = {"ssid": "obss-scan",
+ "channel": "6",
+ "ht_capab": "[HT40-]",
+ "obss_interval": "10"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "another-bss",
- "channel": "7",
- "ht_capab": "[40-INTOLERANT]" }
+ params = {"ssid": "another-bss",
+ "channel": "7",
+ "ht_capab": "[40-INTOLERANT]"}
hostapd.add_ap(apdev[1], params)
dev[0].connect("obss-scan", key_mgmt="NONE", scan_freq="2437")
def test_obss_coex_report_handling(dev, apdev):
"""Overlapping BSS scan report handling with obss_interval=0"""
clear_scan_cache(apdev[0])
- params = { "ssid": "obss-scan",
- "channel": "6",
- "ht_capab": "[HT40-]" }
+ params = {"ssid": "obss-scan",
+ "channel": "6",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
dev[0].connect("obss-scan", key_mgmt="NONE", scan_freq="2437")
# 20/40 MHz co-ex report tests: number of invalid reports and a valid report
# that forces 20 MHz channel.
- tests = [ '0400', '040048', '04004801', '0400480000', '0400490100',
- '040048ff0000', '04004801ff49ff00', '04004801004900',
- '0400480100490101', '0400480100490201ff',
- '040048010449020005' ]
+ tests = ['0400', '040048', '04004801', '0400480000', '0400490100',
+ '040048ff0000', '04004801ff49ff00', '04004801004900',
+ '0400480100490101', '0400480100490201ff',
+ '040048010449020005']
for msg in tests:
req = "MGMT_TX {} {} freq=2437 action={}".format(bssid, bssid, msg)
if "OK" not in dev[0].request(req):
def test_obss_coex_report_handling1(dev, apdev):
"""Overlapping BSS scan report handling with obss_interval=1"""
clear_scan_cache(apdev[0])
- params = { "ssid": "obss-scan",
- "channel": "6",
- "ht_capab": "[HT40+]",
- "obss_interval": "1" }
+ params = {"ssid": "obss-scan",
+ "channel": "6",
+ "ht_capab": "[HT40+]",
+ "obss_interval": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
dev[0].connect("obss-scan", key_mgmt="NONE", scan_freq="2437")
def test_obss_coex_report_handling2(dev, apdev):
"""Overlapping BSS scan report handling with obss_interval=1 and no overlap"""
clear_scan_cache(apdev[0])
- params = { "ssid": "obss-scan",
- "channel": "6",
- "ht_capab": "[HT40+]",
- "obss_interval": "1" }
+ params = {"ssid": "obss-scan",
+ "channel": "6",
+ "ht_capab": "[HT40+]",
+ "obss_interval": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
dev[0].connect("obss-scan", key_mgmt="NONE", scan_freq="2437")
def test_olbc(dev, apdev):
"""OLBC detection"""
- params = { "ssid": "test-olbc",
- "channel": "6",
- "ht_capab": "[HT40-]",
- "ap_table_expiration_time": "2" }
+ params = {"ssid": "test-olbc",
+ "channel": "6",
+ "ht_capab": "[HT40-]",
+ "ap_table_expiration_time": "2"}
hapd = hostapd.add_ap(apdev[0], params)
status = hapd.get_status()
if status['olbc'] != '0' or status['olbc_ht'] != '0':
raise Exception("Unexpected OLBC information")
- params = { "ssid": "olbc-ap",
- "hw_mode": "b",
- "channel": "6",
- "wmm_enabled": "0" }
+ params = {"ssid": "olbc-ap",
+ "hw_mode": "b",
+ "channel": "6",
+ "wmm_enabled": "0"}
hostapd.add_ap(apdev[1], params)
time.sleep(0.5)
status = hapd.get_status()
hostapd.add_bss(apdev[0], ifname2, 'bss-2.conf')
hostapd.add_bss(apdev[0], ifname3, 'bss-3.conf')
- params = { "ssid": "test-olbc",
- "channel": "1",
- "ap_table_max_size": "2" }
+ params = {"ssid": "test-olbc",
+ "channel": "1",
+ "ap_table_max_size": "2"}
hapd = hostapd.add_ap(apdev[1], params)
time.sleep(0.3)
try:
hapd = None
hapd2 = None
- params = { "ssid": "test-olbc",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]" }
+ params = {"ssid": "test-olbc",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]"}
hapd = hostapd.add_ap(apdev[0], params)
status = hapd.get_status()
if status['olbc'] != '0' or status['olbc_ht'] != '0':
raise Exception("Unexpected OLBC information")
- params = { "ssid": "olbc-ap",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ieee80211n": "0",
- "wmm_enabled": "0" }
+ params = {"ssid": "olbc-ap",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ieee80211n": "0",
+ "wmm_enabled": "0"}
hapd2 = hostapd.add_ap(apdev[1], params)
found = False
for i in range(20):
def test_ap_require_ht(dev, apdev):
"""Require HT"""
- params = { "ssid": "require-ht",
- "require_ht": "1" }
+ params = {"ssid": "require-ht",
+ "require_ht": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[1].connect("require-ht", key_mgmt="NONE", scan_freq="2412",
def test_ap_ht_stbc(dev, apdev):
"""HT STBC overrides"""
- params = { "ssid": "ht" }
+ params = {"ssid": "ht"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("ht", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_ap_require_ht_limited_rates(dev, apdev):
"""Require HT with limited supported rates"""
- params = { "ssid": "require-ht",
- "supported_rates": "60 120 240 360 480 540",
- "require_ht": "1" }
+ params = {"ssid": "require-ht",
+ "supported_rates": "60 120 240 360 480 540",
+ "require_ht": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[1].connect("require-ht", key_mgmt="NONE", scan_freq="2412",
@remote_compatible
def test_ap_ht_capab_not_supported(dev, apdev):
"""HT configuration with driver not supporting all ht_capab entries"""
- params = { "ssid": "test-ht40",
- "channel": "5",
- "ht_capab": "[HT40-][LDPC][SMPS-STATIC][SMPS-DYNAMIC][GF][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][RX-STBC12][RX-STBC123][DELAYED-BA][MAX-AMSDU-7935][DSSS_CCK-40][LSIG-TXOP-PROT]"}
+ params = {"ssid": "test-ht40",
+ "channel": "5",
+ "ht_capab": "[HT40-][LDPC][SMPS-STATIC][SMPS-DYNAMIC][GF][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][RX-STBC12][RX-STBC123][DELAYED-BA][MAX-AMSDU-7935][DSSS_CCK-40][LSIG-TXOP-PROT]"}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
if "FAIL" not in hapd.request("ENABLE"):
raise Exception("Unexpected ENABLE success")
def test_ap_ht_40mhz_intolerant_sta(dev, apdev):
"""Associated STA indicating 40 MHz intolerant"""
clear_scan_cache(apdev[0])
- params = { "ssid": "intolerant",
- "channel": "6",
- "ht_capab": "[HT40-]" }
+ params = {"ssid": "intolerant",
+ "channel": "6",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params)
if hapd.get_status_field("num_sta_ht40_intolerant") != "0":
raise Exception("Unexpected num_sta_ht40_intolerant value")
def test_ap_ht_40mhz_intolerant_sta_deinit(dev, apdev):
"""Associated STA indicating 40 MHz intolerant and hostapd deinit"""
clear_scan_cache(apdev[0])
- params = { "ssid": "intolerant",
- "channel": "6",
- "ht_capab": "[HT40-]",
- "obss_interval": "0" }
+ params = {"ssid": "intolerant",
+ "channel": "6",
+ "ht_capab": "[HT40-]",
+ "obss_interval": "0"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("intolerant", key_mgmt="NONE", scan_freq="2437",
def test_ap_ht_40mhz_intolerant_ap(dev, apdev):
"""Associated STA reports 40 MHz intolerant AP after association"""
clear_scan_cache(apdev[0])
- params = { "ssid": "ht",
- "channel": "6",
- "ht_capab": "[HT40-]",
- "obss_interval": "3" }
+ params = {"ssid": "ht",
+ "channel": "6",
+ "ht_capab": "[HT40-]",
+ "obss_interval": "3"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("ht", key_mgmt="NONE", scan_freq="2437")
raise Exception("Unexpected secondary channel information")
logger.info("Start 40 MHz intolerant AP")
- params = { "ssid": "intolerant",
- "channel": "5",
- "ht_capab": "[40-INTOLERANT]" }
+ params = {"ssid": "intolerant",
+ "channel": "5",
+ "ht_capab": "[40-INTOLERANT]"}
hapd2 = hostapd.add_ap(apdev[1], params)
logger.info("Waiting for co-ex report from STA")
csa_supported(dev[0])
try:
hapd = None
- params = { "ssid": "ht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1" }
+ params = {"ssid": "ht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("ht", key_mgmt="NONE", scan_freq="5180")
csa_supported(dev[0])
try:
hapd = None
- params = { "ssid": "ht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1" }
+ params = {"ssid": "ht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("ht", key_mgmt="NONE", scan_freq="5180")
csa_supported(dev[0])
try:
hapd = None
- params = { "ssid": "ht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1" }
+ params = {"ssid": "ht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("ht", key_mgmt="NONE", scan_freq="5180")
@remote_compatible
def test_ap_ht_smps(dev, apdev):
"""SMPS AP configuration options"""
- params = { "ssid": "ht1", "ht_capab": "[SMPS-STATIC]" }
+ params = {"ssid": "ht1", "ht_capab": "[SMPS-STATIC]"}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
raise HwsimSkip("Assume mac80211_hwsim was not recent enough to support SMPS")
- params = { "ssid": "ht2", "ht_capab": "[SMPS-DYNAMIC]" }
+ params = {"ssid": "ht2", "ht_capab": "[SMPS-DYNAMIC]"}
hapd2 = hostapd.add_ap(apdev[1], params)
dev[0].connect("ht1", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_prefer_ht20(dev, apdev):
"""Preference on HT20 over no-HT"""
- params = { "ssid": "test",
- "channel": "1",
- "ieee80211n": "0" }
+ params = {"ssid": "test",
+ "channel": "1",
+ "ieee80211n": "0"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "test",
- "channel": "1",
- "ieee80211n": "1" }
+ params = {"ssid": "test",
+ "channel": "1",
+ "ieee80211n": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
def test_prefer_ht40(dev, apdev):
"""Preference on HT40 over HT20"""
- params = { "ssid": "test",
- "channel": "1",
- "ieee80211n": "1" }
+ params = {"ssid": "test",
+ "channel": "1",
+ "ieee80211n": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "test",
- "channel": "1",
- "ieee80211n": "1",
- "ht_capab": "[HT40+]" }
+ params = {"ssid": "test",
+ "channel": "1",
+ "ieee80211n": "1",
+ "ht_capab": "[HT40+]"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
@remote_compatible
def test_prefer_ht20_during_roam(dev, apdev):
"""Preference on HT20 over no-HT in roaming consideration"""
- params = { "ssid": "test",
- "channel": "1",
- "ieee80211n": "0" }
+ params = {"ssid": "test",
+ "channel": "1",
+ "ieee80211n": "0"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
dev[0].scan_for_bss(bssid, freq=2412)
dev[0].connect("test", key_mgmt="NONE", scan_freq="2412")
- params = { "ssid": "test",
- "channel": "1",
- "ieee80211n": "1" }
+ params = {"ssid": "test",
+ "channel": "1",
+ "ieee80211n": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
dev[0].scan_for_bss(bssid2, freq=2412)
"""HT40 on 5 GHz with invalid channel pair"""
clear_scan_cache(apdev[0])
try:
- params = { "ssid": "test-ht40",
- "hw_mode": "a",
- "channel": "40",
- "country_code": "US",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "hw_mode": "a",
+ "channel": "40",
+ "country_code": "US",
+ "ht_capab": "[HT40+]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
ev = hapd.wait_event(["AP-DISABLED", "AP-ENABLED"], timeout=10)
if not ev:
"""HT40 on 5 GHz with disabled secondary channel"""
clear_scan_cache(apdev[0])
try:
- params = { "ssid": "test-ht40",
- "hw_mode": "a",
- "channel": "48",
- "country_code": "US",
- "ht_capab": "[HT40+]"}
+ params = {"ssid": "test-ht40",
+ "hw_mode": "a",
+ "channel": "48",
+ "country_code": "US",
+ "ht_capab": "[HT40+]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
ev = hapd.wait_event(["AP-DISABLED", "AP-ENABLED"], timeout=10)
if not ev:
clear_scan_cache(apdev[0])
# Broken AP: Include HT Capabilities element but not HT Operation element
- params = { "ssid": "legacy-20",
- "channel": "7", "ieee80211n": "0",
- "wmm_enabled": "1",
- "vendor_elements": "2d1a0e001bffff000000000000000000000100000000000000000000" }
+ params = {"ssid": "legacy-20",
+ "channel": "7", "ieee80211n": "0",
+ "wmm_enabled": "1",
+ "vendor_elements": "2d1a0e001bffff000000000000000000000100000000000000000000"}
hapd2 = hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-ht40",
- "channel": "5",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "5",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
state = hapd.get_status_field("state")
freq, opclass):
clear_scan_cache(apdev[0])
try:
- params = { "ssid": "test-ht40",
- "hw_mode": hw_mode,
- "channel": channel,
- "ht_capab": ht_capab }
+ params = {"ssid": "test-ht40",
+ "hw_mode": hw_mode,
+ "channel": channel,
+ "ht_capab": ht_capab}
if country:
params['country_code'] = country
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
def test_ap_ht40_plus_minus1(dev, apdev):
"""HT40 with both plus and minus allowed (1)"""
clear_scan_cache(apdev[0])
- params = { "ssid": "test-ht40",
- "channel": "11",
- "ht_capab": "[HT40+][HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "11",
+ "ht_capab": "[HT40+][HT40-]"}
hapd = hostapd.add_ap(apdev[0], params)
freq = hapd.get_status_field("freq")
def test_ap_ht40_plus_minus2(dev, apdev):
"""HT40 with both plus and minus allowed (2)"""
clear_scan_cache(apdev[0])
- params = { "ssid": "test-ht40",
- "channel": "1",
- "ht_capab": "[HT40+][HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "1",
+ "ht_capab": "[HT40+][HT40-]"}
hapd = hostapd.add_ap(apdev[0], params)
freq = hapd.get_status_field("freq")
def test_ap_ht40_disable(dev, apdev):
"""HT40 disabling"""
clear_scan_cache(apdev[0])
- params = { "ssid": "test-ht40",
- "channel": "6",
- "ht_capab": "[HT40-]"}
+ params = {"ssid": "test-ht40",
+ "channel": "6",
+ "ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0], params)
sec = hapd.get_status_field("secondary_channel")
_test_ap_open(dev, apdev)
def _test_ap_open(dev, apdev):
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
bg_scan_period="0")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
hwsim_utils.test_connectivity(dev[0], hapd)
dev[0].request("DISCONNECT")
- ev = hapd.wait_event([ "AP-STA-DISCONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-DISCONNECTED"], timeout=5)
if ev is None:
raise Exception("No disconnection event received from hostapd")
def test_ap_open_packet_loss(dev, apdev):
"""AP with open mode configuration and large packet loss"""
- params = { "ssid": "open",
- "ignore_probe_probability": "0.5",
- "ignore_auth_probability": "0.5",
- "ignore_assoc_probability": "0.5",
- "ignore_reassoc_probability": "0.5" }
+ params = {"ssid": "open",
+ "ignore_probe_probability": "0.5",
+ "ignore_auth_probability": "0.5",
+ "ignore_assoc_probability": "0.5",
+ "ignore_reassoc_probability": "0.5"}
hapd = hostapd.add_ap(apdev[0], params)
for i in range(0, 3):
dev[i].connect("open", key_mgmt="NONE", scan_freq="2412",
@remote_compatible
def test_ap_open_unknown_action(dev, apdev):
"""AP with open mode configuration and unknown Action frame"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
bssid = apdev[0]['bssid']
cmd = "MGMT_TX {} {} freq=2412 action=765432".format(bssid, bssid)
def test_ap_open_invalid_wmm_action(dev, apdev):
"""AP with open mode configuration and invalid WMM Action frame"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
bssid = apdev[0]['bssid']
cmd = "MGMT_TX {} {} freq=2412 action=1100".format(bssid, bssid)
@remote_compatible
def test_ap_open_reconnect_on_inactivity_disconnect(dev, apdev):
"""Reconnect to open mode AP after inactivity related disconnection"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
hapd.request("DEAUTHENTICATE " + dev[0].p2p_interface_addr() + " reason=4")
dev[0].wait_disconnected(timeout=5)
def test_ap_open_assoc_timeout(dev, apdev):
"""AP timing out association"""
ssid = "test"
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].scan(freq="2412")
hapd.set("ext_mgmt_frame_handling", "1")
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
def test_ap_open_auth_drop_sta(dev, apdev):
"""AP dropping station after successful authentication"""
- hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0]['ifname'], {"ssid": "open"})
dev[0].scan(freq="2412")
hapd.set("ext_mgmt_frame_handling", "1")
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
@remote_compatible
def test_ap_open_id_str(dev, apdev):
"""AP with open mode and id_str"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412", id_str="foo",
wait_connect=False)
ev = dev[0].wait_connected(timeout=10)
@remote_compatible
def test_ap_open_select_any(dev, apdev):
"""AP with open mode and select any network"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
id = dev[0].connect("unknown", key_mgmt="NONE", scan_freq="2412",
only_add_network=True)
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
@remote_compatible
def test_ap_open_unexpected_assoc_event(dev, apdev):
"""AP with open mode and unexpected association event"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
dev[0].request("DISCONNECT")
dev[0].wait_disconnected(timeout=15)
def test_ap_open_external_assoc(dev, apdev):
"""AP with open mode and external association"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open-ext-assoc" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open-ext-assoc"})
try:
dev[0].request("STA_AUTOCONNECT 0")
id = dev[0].connect("open-ext-assoc", key_mgmt="NONE", scan_freq="2412",
# This will be accepted due to matching network
dev[0].cmd_execute(['iw', 'dev', dev[0].ifname, 'connect',
'open-ext-assoc', "2412", apdev[0]['bssid']])
- ev = dev[0].wait_event([ "CTRL-EVENT-DISCONNECTED",
- "CTRL-EVENT-CONNECTED" ], timeout=10)
+ ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED",
+ "CTRL-EVENT-CONNECTED"], timeout=10)
if ev is None:
raise Exception("Connection timed out")
if "CTRL-EVENT-DISCONNECTED" in ev:
def test_ap_bss_load(dev, apdev):
"""AP with open mode (no security) configuration"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "open",
- "bss_load_update_period": "10",
- "chan_util_avg_period": "20" })
+ {"ssid": "open",
+ "bss_load_update_period": "10",
+ "chan_util_avg_period": "20"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
# this does not really get much useful output with mac80211_hwsim currently,
# but run through the channel survey update couple of times
def test_ap_bss_load_fail(dev, apdev):
"""BSS Load update failing to get survey data"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "open",
- "bss_load_update_period": "1" })
+ {"ssid": "open",
+ "bss_load_update_period": "1"})
with fail_test(hapd, 1, "wpa_driver_nl80211_get_survey"):
wait_fail_trigger(hapd, "GET_FAIL")
with alloc_fail(hapd, count, func):
started = False
try:
- hostapd.add_ap(apdev, { "ssid": "open" })
+ hostapd.add_ap(apdev, {"ssid": "open"})
started = True
except:
pass
def test_ap_open_out_of_memory(dev, apdev):
"""hostapd failing to setup interface due to allocation failure"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
hapd_out_of_mem(hapd, apdev[1], 1, "hostapd_alloc_bss_data")
for i in range(1, 3):
# verify that a new interface can still be added when memory allocation does
# not fail
- hostapd.add_ap(apdev[1], { "ssid": "open" })
+ hostapd.add_ap(apdev[1], {"ssid": "open"})
def test_bssid_black_white_list(dev, apdev):
"""BSSID black/white list"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
bssid_whitelist=apdev[1]['bssid'])
def test_ap_open_wpas_in_bridge(dev, apdev):
"""Open mode AP and wpas interface in a bridge"""
- br_ifname='sta-br0'
- ifname='wlan5'
+ br_ifname = 'sta-br0'
+ ifname = 'wlan5'
try:
_test_ap_open_wpas_in_bridge(dev, apdev)
finally:
subprocess.call(['iw', ifname, 'set', '4addr', 'off'])
def _test_ap_open_wpas_in_bridge(dev, apdev):
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
- br_ifname='sta-br0'
- ifname='wlan5'
+ br_ifname = 'sta-br0'
+ ifname = 'wlan5'
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
# First, try a failure case of adding an interface
try:
@remote_compatible
def test_ap_open_start_disabled(dev, apdev):
"""AP with open mode and beaconing disabled"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open",
- "start_disabled": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open",
+ "start_disabled": "1"})
bssid = apdev[0]['bssid']
dev[0].flush_scan_cache()
@remote_compatible
def test_ap_open_start_disabled2(dev, apdev):
"""AP with open mode and beaconing disabled (2)"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open",
- "start_disabled": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open",
+ "start_disabled": "1"})
bssid = apdev[0]['bssid']
dev[0].flush_scan_cache()
@remote_compatible
def test_ap_open_ifdown(dev, apdev):
"""AP with open mode and external ifconfig down"""
- params = { "ssid": "open",
- "ap_max_inactivity": "1" }
+ params = {"ssid": "open",
+ "ap_max_inactivity": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
def test_ap_open_disconnect_in_ps(dev, apdev, params):
"""Disconnect with the client in PS to regression-test a kernel bug"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
bg_scan_period="0")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
@remote_compatible
def test_ap_open_select_network(dev, apdev):
"""Open mode connection and SELECT_NETWORK to change network"""
- hapd1 = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd1 = hostapd.add_ap(apdev[0], {"ssid": "open"})
bssid1 = apdev[0]['bssid']
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "open2" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "open2"})
bssid2 = apdev[1]['bssid']
id1 = dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
@remote_compatible
def test_ap_open_disable_enable(dev, apdev):
"""AP with open mode getting disabled and re-enabled"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
bg_scan_period="0")
def test_ap_open_sta_enable_disable(dev, apdev):
"""AP with open mode and wpa_supplicant ENABLE/DISABLE_NETWORK"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
bssid = apdev[0]['bssid']
sta_enable_disable(dev[0], bssid)
ev = dev[0].wait_event(["CTRL-EVENT-NETWORK-NOT-FOUND"], timeout=10)
if ev is None:
raise Exception("No result reported")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
# Verify that the second SELECT_NETWORK starts a new scan immediately by
# waiting less than the default scan period.
dev[0].select_network(id)
@remote_compatible
def test_ap_open_sta_statistics(dev, apdev):
"""AP with open mode and STA statistics"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_ap_open_poll_sta(dev, apdev):
"""AP with open mode and STA poll"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
def test_ap_open_pmf_default(dev, apdev):
"""AP with open mode (no security) configuration and pmf=2"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[1].connect("open", key_mgmt="NONE", scan_freq="2412",
ieee80211w="2", wait_connect=False)
dev[2].connect("open", key_mgmt="NONE", scan_freq="2412",
def test_ap_open_drv_fail(dev, apdev):
"""AP with open mode and driver operations failing"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
with fail_test(dev[0], 1, "wpa_driver_nl80211_authenticate"):
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
def run_multicast_to_unicast(dev, apdev, convert):
- params = { "ssid": "open" }
+ params = {"ssid": "open"}
params["multicast_to_unicast"] = "1" if convert else "0"
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(hapd.own_addr(), freq=2412)
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
hwsim_utils.test_connectivity(dev[0], hapd, multicast_to_unicast=convert)
dev[0].request("DISCONNECT")
- ev = hapd.wait_event([ "AP-STA-DISCONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-DISCONNECTED"], timeout=5)
if ev is None:
raise Exception("No disconnection event received from hostapd")
def test_ap_open_drop_duplicate(dev, apdev, params):
"""AP dropping duplicate management frames"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open",
- "interworking": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open",
+ "interworking": "1"})
hapd.set("ext_mgmt_frame_handling", "1")
bssid = hapd.own_addr().replace(':', '')
addr = "020304050607"
def test_ap_open_select_network_freq(dev, apdev):
"""AP with open mode and use for SELECT_NETWORK freq parameter"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
id = dev[0].connect("open", key_mgmt="NONE", only_add_network=True)
dev[0].select_network(id, freq=2412)
start = os.times()[4]
clear_regdom(hapd, dev)
def run_ap_open_country(dev, apdev, country_code, country3):
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open",
- "country_code": country_code,
- "country3": country3,
- "ieee80211d": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open",
+ "country_code": country_code,
+ "country3": country3,
+ "ieee80211d": "1"})
dev[0].scan_for_bss(hapd.own_addr(), freq=2412)
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
dev[0].wait_regdom(country_ie=True)
def test_ap_open_disable_select(dev, apdev):
"""DISABLE_NETWORK for connected AP followed by SELECT_NETWORK"""
- hapd1 = hostapd.add_ap(apdev[0], { "ssid": "open" })
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "open" })
+ hapd1 = hostapd.add_ap(apdev[0], {"ssid": "open"})
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "open"})
id = dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
dev[0].request("DISABLE_NETWORK %d" % id)
def test_ap_open_reassoc_same(dev, apdev):
"""AP with open mode and STA reassociating back to same AP without auth exchange"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
try:
dev[0].request("SET reassoc_same_bss_optim 1")
def test_ap_open_no_reflection(dev, apdev):
"""AP with open mode, STA sending packets to itself"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
# test normal connectivity is OK
def test_ap_no_auth_ack(dev, apdev):
"""AP not receiving Authentication frame ACK"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open",
- "ap_max_inactivity": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open",
+ "ap_max_inactivity": "1"})
hapd.set("ext_mgmt_frame_handling", "1")
bssid = hapd.own_addr()
addr = "02:01:02:03:04:05"
"""Information element parsing - extra coverage"""
bssid = apdev[0]['bssid']
ssid = "test-wpa2-psk"
- params = { 'ssid': ssid,
- 'vendor_elements': "380501020304059e009e009e009e009e009e00" }
+ params = {'ssid': ssid,
+ 'vendor_elements': "380501020304059e009e009e009e009e009e00"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
bss = dev[0].get_bss(bssid)
"""Information element parsing OOM"""
bssid = apdev[0]['bssid']
ssid = "test-wpa2-psk"
- params = { 'ssid': ssid,
- 'vendor_elements': "dd0d506f9a0a00000600411c440028" }
+ params = {'ssid': ssid,
+ 'vendor_elements': "dd0d506f9a0a00000600411c440028"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
with alloc_fail(dev[0], 1, "wpabuf_alloc;ieee802_11_vendor_ie_concat"):
dev[1].scan(freq=2412, type="ONLY")
if seen:
out = run_tshark(os.path.join(logdir, "hwsim0.pcapng"),
- "wlan.fc.type_subtype == 5", ["wlan.da" ])
+ "wlan.fc.type_subtype == 5", ["wlan.da"])
if out:
if dev[0].own_addr() not in out:
# Discovery happened through Beacon frame reception. That's not
def test_ap_beacon_rate_legacy(dev, apdev):
"""Open AP with Beacon frame TX rate 5.5 Mbps"""
- hapd = hostapd.add_ap(apdev[0], { 'ssid': 'beacon-rate' })
+ hapd = hostapd.add_ap(apdev[0], {'ssid': 'beacon-rate'})
res = hapd.get_driver_status_field('capa.flags')
if (int(res, 0) & 0x0000080000000000) == 0:
raise HwsimSkip("Setting Beacon frame TX rate not supported")
def test_ap_beacon_rate_legacy2(dev, apdev):
"""Open AP with Beacon frame TX rate 12 Mbps in VHT BSS"""
- hapd = hostapd.add_ap(apdev[0], { 'ssid': 'beacon-rate' })
+ hapd = hostapd.add_ap(apdev[0], {'ssid': 'beacon-rate'})
res = hapd.get_driver_status_field('capa.flags')
if (int(res, 0) & 0x0000080000000000) == 0:
raise HwsimSkip("Setting Beacon frame TX rate not supported")
def test_ap_beacon_rate_ht(dev, apdev):
"""Open AP with Beacon frame TX rate HT-MCS 0"""
- hapd = hostapd.add_ap(apdev[0], { 'ssid': 'beacon-rate' })
+ hapd = hostapd.add_ap(apdev[0], {'ssid': 'beacon-rate'})
res = hapd.get_driver_status_field('capa.flags')
if (int(res, 0) & 0x0000100000000000) == 0:
raise HwsimSkip("Setting Beacon frame TX rate not supported")
def test_ap_beacon_rate_ht2(dev, apdev):
"""Open AP with Beacon frame TX rate HT-MCS 1 in VHT BSS"""
- hapd = hostapd.add_ap(apdev[0], { 'ssid': 'beacon-rate' })
+ hapd = hostapd.add_ap(apdev[0], {'ssid': 'beacon-rate'})
res = hapd.get_driver_status_field('capa.flags')
if (int(res, 0) & 0x0000100000000000) == 0:
raise HwsimSkip("Setting Beacon frame TX rate not supported")
def test_ap_beacon_rate_vht(dev, apdev):
"""Open AP with Beacon frame TX rate VHT-MCS 0"""
- hapd = hostapd.add_ap(apdev[0], { 'ssid': 'beacon-rate' })
+ hapd = hostapd.add_ap(apdev[0], {'ssid': 'beacon-rate'})
res = hapd.get_driver_status_field('capa.flags')
if (int(res, 0) & 0x0000200000000000) == 0:
raise HwsimSkip("Setting Beacon frame TX rate not supported")
def test_ap_wep_to_wpa(dev, apdev):
"""WEP to WPA2-PSK configuration change in hostapd"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wep-to-wpa",
- "wep_key0": '"hello"' })
+ {"ssid": "wep-to-wpa",
+ "wep_key0": '"hello"'})
dev[0].flush_scan_cache()
dev[0].connect("wep-to-wpa", key_mgmt="NONE", wep_key0='"hello"',
scan_freq="2412")
def test_ap_dtim_period(dev, apdev):
"""DTIM period configuration"""
ssid = "dtim-period"
- params = { 'ssid': ssid, 'dtim_period': "10" }
+ params = {'ssid': ssid, 'dtim_period': "10"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
def test_ap_no_probe_resp(dev, apdev):
"""AP with Probe Response frame sending from hostapd disabled"""
ssid = "no-probe-resp"
- params = { 'ssid': ssid, 'send_probe_response': "0" }
+ params = {'ssid': ssid, 'send_probe_response': "0"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[0].scan_for_bss(bssid, freq="2412", passive=True)
def test_ap_long_preamble(dev, apdev):
"""AP with long preamble"""
ssid = "long-preamble"
- params = { 'ssid': ssid, 'preamble': "0",
- 'hw_mode': 'b', 'ieee80211n': '0',
- 'supported_rates': '10', 'basic_rates': '10' }
+ params = {'ssid': ssid, 'preamble': "0",
+ 'hw_mode': 'b', 'ieee80211n': '0',
+ 'supported_rates': '10', 'basic_rates': '10'}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[0].scan_for_bss(bssid, freq="2412")
def test_ap_wmm_uapsd(dev, apdev):
"""AP with U-APSD advertisement"""
ssid = "uapsd"
- params = { 'ssid': ssid, 'uapsd_advertisement_enabled': "1" }
+ params = {'ssid': ssid, 'uapsd_advertisement_enabled': "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[0].scan_for_bss(bssid, freq="2412")
def test_ap_wowlan_triggers(dev, apdev):
"""AP with wowlan_triggers"""
ssid = "wowlan"
- params = { 'ssid': ssid, 'wowlan_triggers': "any" }
+ params = {'ssid': ssid, 'wowlan_triggers': "any"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[0].scan_for_bss(bssid, freq="2412")
if "OK" not in hapd.request("RELOAD_WPA_PSK"):
raise Exception("RELOAD_WPA_PSK failed")
- check_disconnect(dev, [ False, True, False ])
+ check_disconnect(dev, [False, True, False])
with open(psk_file, 'w') as f:
f.write('00:00:00:00:00:00 secret passphrase\n')
if "OK" not in hapd.request("RELOAD_WPA_PSK"):
raise Exception("RELOAD_WPA_PSK failed")
- check_disconnect(dev, [ True, True, False ])
+ check_disconnect(dev, [True, True, False])
@remote_compatible
def test_ap_wpa2_psk_mem(dev, apdev):
if ev is None:
raise Exception("PTK rekey timed out")
hwsim_utils.test_connectivity(dev[0], hapd)
- check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-6"),
- ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-6") ])
+ check_mib(dev[0], [("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-6"),
+ ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-6")])
@remote_compatible
def test_ap_wpa2_sha256_ptk_rekey_ap(dev, apdev):
if ev is None:
raise Exception("PTK rekey timed out")
hwsim_utils.test_connectivity(dev[0], hapd)
- check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-6"),
- ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-6") ])
+ check_mib(dev[0], [("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-6"),
+ ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-6")])
@remote_compatible
def test_ap_wpa_ptk_rekey(dev, apdev):
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], hapd)
- check_mib(dev[0], [ ("dot11RSNAConfigGroupCipherSize", "128"),
- ("dot11RSNAGroupCipherRequested", "00-50-f2-4"),
- ("dot11RSNAPairwiseCipherRequested", "00-50-f2-4"),
- ("dot11RSNAAuthenticationSuiteRequested", "00-50-f2-2"),
- ("dot11RSNAGroupCipherSelected", "00-50-f2-4"),
- ("dot11RSNAPairwiseCipherSelected", "00-50-f2-4"),
- ("dot11RSNAAuthenticationSuiteSelected", "00-50-f2-2"),
- ("dot1xSuppSuppControlledPortStatus", "Authorized") ])
+ check_mib(dev[0], [("dot11RSNAConfigGroupCipherSize", "128"),
+ ("dot11RSNAGroupCipherRequested", "00-50-f2-4"),
+ ("dot11RSNAPairwiseCipherRequested", "00-50-f2-4"),
+ ("dot11RSNAAuthenticationSuiteRequested", "00-50-f2-2"),
+ ("dot11RSNAGroupCipherSelected", "00-50-f2-4"),
+ ("dot11RSNAPairwiseCipherSelected", "00-50-f2-4"),
+ ("dot11RSNAAuthenticationSuiteSelected", "00-50-f2-2"),
+ ("dot1xSuppSuppControlledPortStatus", "Authorized")])
def test_ap_wpa2_psk_file_errors(dev, apdev):
"""WPA2-PSK AP with various PSK file error and success cases"""
except:
pass
- params = { "ssid": ssid, "wpa": "2", "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "CCMP", "wpa_psk_file": pskfile }
+ params = {"ssid": ssid, "wpa": "2", "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "CCMP", "wpa_psk_file": pskfile}
try:
# missing PSK file
def pmk_to_ptk(pmk, addr1, addr2, nonce1, nonce2):
if addr1 < addr2:
- data = binascii.unhexlify(addr1.replace(':','')) + binascii.unhexlify(addr2.replace(':',''))
+ data = binascii.unhexlify(addr1.replace(':', '')) + binascii.unhexlify(addr2.replace(':', ''))
else:
- data = binascii.unhexlify(addr2.replace(':','')) + binascii.unhexlify(addr1.replace(':',''))
+ data = binascii.unhexlify(addr2.replace(':', '')) + binascii.unhexlify(addr1.replace(':', ''))
if nonce1 < nonce2:
data += nonce1 + nonce2
else:
else:
rsne = binascii.unhexlify('dd160050f20101000050f20201000050f20201000050f202')
snonce = binascii.unhexlify('1111111111111111111111111111111111111111111111111111111111111111')
- return (bssid,ssid,hapd,snonce,pmk,addr,rsne)
+ return (bssid, ssid, hapd, snonce, pmk, addr, rsne)
@remote_compatible
def test_ap_wpa2_psk_ext_eapol(dev, apdev):
"""WPA2-PSK AP using external EAPOL supplicant"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
msg = recv_eapol(hapd)
anonce = msg['rsn_key_nonce']
@remote_compatible
def test_ap_wpa2_psk_ext_eapol_retry1(dev, apdev):
"""WPA2 4-way handshake with EAPOL-Key 1/4 retransmitted"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
msg1 = recv_eapol(hapd)
anonce = msg1['rsn_key_nonce']
@remote_compatible
def test_ap_wpa2_psk_ext_eapol_retry1b(dev, apdev):
"""WPA2 4-way handshake with EAPOL-Key 1/4 and 2/4 retransmitted"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
msg1 = recv_eapol(hapd)
anonce = msg1['rsn_key_nonce']
@remote_compatible
def test_ap_wpa2_psk_ext_eapol_retry1c(dev, apdev):
"""WPA2 4-way handshake with EAPOL-Key 1/4 and 2/4 retransmitted and SNonce changing"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
msg1 = recv_eapol(hapd)
anonce = msg1['rsn_key_nonce']
@remote_compatible
def test_ap_wpa2_psk_ext_eapol_retry1d(dev, apdev):
"""WPA2 4-way handshake with EAPOL-Key 1/4 and 2/4 retransmitted and SNonce changing and older used"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
msg1 = recv_eapol(hapd)
anonce = msg1['rsn_key_nonce']
@remote_compatible
def test_ap_wpa2_psk_ext_eapol_type_diff(dev, apdev):
"""WPA2 4-way handshake using external EAPOL supplicant"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
msg = recv_eapol(hapd)
anonce = msg['rsn_key_nonce']
@remote_compatible
def test_ap_wpa_psk_ext_eapol(dev, apdev):
"""WPA2-PSK AP using external EAPOL supplicant"""
- (bssid,ssid,hapd,snonce,pmk,addr,wpae) = eapol_test(apdev[0], dev[0],
- wpa2=False)
+ (bssid, ssid, hapd, snonce, pmk, addr, wpae) = eapol_test(apdev[0], dev[0],
+ wpa2=False)
msg = recv_eapol(hapd)
anonce = msg['rsn_key_nonce']
@remote_compatible
def test_ap_wpa2_psk_ext_eapol_key_info(dev, apdev):
"""WPA2-PSK 4-way handshake with strange key info values"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
msg = recv_eapol(hapd)
anonce = msg['rsn_key_nonce']
for i in range(1, n + 1):
b = enc(struct.pack('>Q', a) + r[i - 1])
a = struct.unpack('>Q', b[:8])[0] ^ (n * j + i)
- r[i - 1] =b[8:]
+ r[i - 1] = b[8:]
return struct.pack('>Q', a) + b''.join(r)
def pad_key_data(plain):
def test_ap_wpa2_psk_supp_proto(dev, apdev):
"""WPA2-PSK 4-way handshake protocol testing for supplicant"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_no_ie(dev, apdev):
"""WPA2-PSK supplicant protocol testing: IE not included"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_ie_mismatch(dev, apdev):
"""WPA2-PSK supplicant protocol testing: IE mismatch"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_ok(dev, apdev):
"""WPA2-PSK supplicant protocol testing: success"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_no_gtk(dev, apdev):
"""WPA2-PSK supplicant protocol testing: no GTK"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_anonce_change(dev, apdev):
"""WPA2-PSK supplicant protocol testing: ANonce change"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_unexpected_group_msg(dev, apdev):
"""WPA2-PSK supplicant protocol testing: unexpected group message"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
@remote_compatible
def test_ap_wpa2_psk_supp_proto_msg_1_invalid_kde(dev, apdev):
"""WPA2-PSK supplicant protocol testing: invalid KDE in msg 1/4"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_wrong_pairwise_key_len(dev, apdev):
"""WPA2-PSK supplicant protocol testing: wrong pairwise key length"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_wrong_group_key_len(dev, apdev):
"""WPA2-PSK supplicant protocol testing: wrong group key length"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_gtk_tx_bit_workaround(dev, apdev):
"""WPA2-PSK supplicant protocol testing: GTK TX bit workaround"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_gtk_keyidx_0_and_3(dev, apdev):
"""WPA2-PSK supplicant protocol testing: GTK key index 0 and 3"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_no_gtk_in_group_msg(dev, apdev):
"""WPA2-PSK supplicant protocol testing: GTK KDE missing from group msg"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_too_long_gtk_in_group_msg(dev, apdev):
"""WPA2-PSK supplicant protocol testing: too long GTK KDE in group msg"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_too_long_gtk_kde(dev, apdev):
"""WPA2-PSK supplicant protocol testing: too long GTK KDE"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
def test_ap_wpa2_psk_supp_proto_gtk_not_encrypted(dev, apdev):
"""WPA2-PSK supplicant protocol testing: GTK KDE not encrypted"""
- (bssid,ssid,hapd,snonce,pmk,addr,rsne) = eapol_test(apdev[0], dev[0])
+ (bssid, ssid, hapd, snonce, pmk, addr, rsne) = eapol_test(apdev[0], dev[0])
# Wait for EAPOL-Key msg 1/4 from hostapd to determine when associated
msg = recv_eapol(hapd)
continue
if not perm.startswith('rw'):
continue
- for name in [ "[heap]", "[stack]" ]:
+ for name in ["[heap]", "[stack]"]:
if name in l:
logger.info("%s 0x%x-0x%x is at %d-%d" % (name, start, end, len(buf), len(buf) + (end - start)))
mem.seek(start)
def test_ap_wpa2_psk_wpas_in_bridge(dev, apdev):
"""WPA2-PSK AP and wpas interface in a bridge"""
- br_ifname='sta-br0'
- ifname='wlan5'
+ br_ifname = 'sta-br0'
+ ifname = 'wlan5'
try:
_test_ap_wpa2_psk_wpas_in_bridge(dev, apdev)
finally:
params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
hapd = hostapd.add_ap(apdev[0], params)
- br_ifname='sta-br0'
- ifname='wlan5'
+ br_ifname = 'sta-br0'
+ ifname = 'wlan5'
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
subprocess.call(['brctl', 'addbr', br_ifname])
subprocess.call(['brctl', 'setfd', br_ifname, '0'])
id = dev[0].connect(ssid, psk=passphrase, scan_freq="2412",
only_add_network=True)
- tests = [ "dd040050f201",
- "dd050050f20101",
- "dd060050f2010100",
- "dd060050f2010001",
- "dd070050f201010000",
- "dd080050f20101000050",
- "dd090050f20101000050f2",
- "dd0a0050f20101000050f202",
- "dd0b0050f20101000050f20201",
- "dd0c0050f20101000050f2020100",
- "dd0c0050f20101000050f2020000",
- "dd0c0050f20101000050f202ffff",
- "dd0d0050f20101000050f202010000",
- "dd0e0050f20101000050f20201000050",
- "dd0f0050f20101000050f20201000050f2",
- "dd100050f20101000050f20201000050f202",
- "dd110050f20101000050f20201000050f20201",
- "dd120050f20101000050f20201000050f2020100",
- "dd120050f20101000050f20201000050f2020000",
- "dd120050f20101000050f20201000050f202ffff",
- "dd130050f20101000050f20201000050f202010000",
- "dd140050f20101000050f20201000050f20201000050",
- "dd150050f20101000050f20201000050f20201000050f2" ]
+ tests = ["dd040050f201",
+ "dd050050f20101",
+ "dd060050f2010100",
+ "dd060050f2010001",
+ "dd070050f201010000",
+ "dd080050f20101000050",
+ "dd090050f20101000050f2",
+ "dd0a0050f20101000050f202",
+ "dd0b0050f20101000050f20201",
+ "dd0c0050f20101000050f2020100",
+ "dd0c0050f20101000050f2020000",
+ "dd0c0050f20101000050f202ffff",
+ "dd0d0050f20101000050f202010000",
+ "dd0e0050f20101000050f20201000050",
+ "dd0f0050f20101000050f20201000050f2",
+ "dd100050f20101000050f20201000050f202",
+ "dd110050f20101000050f20201000050f20201",
+ "dd120050f20101000050f20201000050f2020100",
+ "dd120050f20101000050f20201000050f2020000",
+ "dd120050f20101000050f20201000050f202ffff",
+ "dd130050f20101000050f20201000050f202010000",
+ "dd140050f20101000050f20201000050f20201000050",
+ "dd150050f20101000050f20201000050f20201000050f2"]
for t in tests:
try:
if "OK" not in dev[0].request("VENDOR_ELEM_ADD 13 " + t):
finally:
dev[0].request("VENDOR_ELEM_REMOVE 13 *")
- tests = [ "dd170050f20101000050f20201000050f20201000050f202ff",
- "dd180050f20101000050f20201000050f20201000050f202ffff",
- "dd190050f20101000050f20201000050f20201000050f202ffffff" ]
+ tests = ["dd170050f20101000050f20201000050f20201000050f202ff",
+ "dd180050f20101000050f20201000050f20201000050f202ffff",
+ "dd190050f20101000050f20201000050f20201000050f202ffffff"]
for t in tests:
try:
if "OK" not in dev[0].request("VENDOR_ELEM_ADD 13 " + t):
raise Exception("Invalid own_ie_override value accepted")
id = dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
- tests = [ ('No RSN Capabilities field',
- '30120100000fac040100000fac040100000fac02'),
- ('Reserved RSN Capabilities bits set',
- '30140100000fac040100000fac040100000fac023cff'),
- ('Truncated RSN Capabilities field',
- '30130100000fac040100000fac040100000fac023c'),
- ('Extra pairwise cipher suite (unsupported)',
- '30180100000fac040200ffffffff000fac040100000fac020c00'),
- ('Extra AKM suite (unsupported)',
- '30180100000fac040100000fac040200ffffffff000fac020c00'),
- ('PMKIDCount field included',
- '30160100000fac040100000fac040100000fac020c000000'),
- ('Truncated PMKIDCount field',
- '30150100000fac040100000fac040100000fac020c0000'),
- ('Unexpected Group Management Cipher Suite with PMF disabled',
- '301a0100000fac040100000fac040100000fac020c000000000fac06'),
- ('Extra octet after defined fields (future extensibility)',
- '301b0100000fac040100000fac040100000fac020c000000000fac0600') ]
- for txt,ie in tests:
+ tests = [('No RSN Capabilities field',
+ '30120100000fac040100000fac040100000fac02'),
+ ('Reserved RSN Capabilities bits set',
+ '30140100000fac040100000fac040100000fac023cff'),
+ ('Truncated RSN Capabilities field',
+ '30130100000fac040100000fac040100000fac023c'),
+ ('Extra pairwise cipher suite (unsupported)',
+ '30180100000fac040200ffffffff000fac040100000fac020c00'),
+ ('Extra AKM suite (unsupported)',
+ '30180100000fac040100000fac040200ffffffff000fac020c00'),
+ ('PMKIDCount field included',
+ '30160100000fac040100000fac040100000fac020c000000'),
+ ('Truncated PMKIDCount field',
+ '30150100000fac040100000fac040100000fac020c0000'),
+ ('Unexpected Group Management Cipher Suite with PMF disabled',
+ '301a0100000fac040100000fac040100000fac020c000000000fac06'),
+ ('Extra octet after defined fields (future extensibility)',
+ '301b0100000fac040100000fac040100000fac020c000000000fac0600')]
+ for txt, ie in tests:
dev[0].request("DISCONNECT")
dev[0].wait_disconnected()
dev[0].dump_monitor()
params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ ("Normal wpa_supplicant assoc req RSN IE",
- "30140100000fac040100000fac040100000fac020000"),
- ("RSN IE without RSN Capabilities",
- "30120100000fac040100000fac040100000fac02") ]
+ tests = [("Normal wpa_supplicant assoc req RSN IE",
+ "30140100000fac040100000fac040100000fac020000"),
+ ("RSN IE without RSN Capabilities",
+ "30120100000fac040100000fac040100000fac02")]
for title, ie in tests:
logger.info(title)
set_test_assoc_ie(dev[0], ie)
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ ("WPA IE instead of RSN IE and only RSN enabled on AP",
- "dd160050f20101000050f20201000050f20201000050f202", 40),
- ("Empty RSN IE", "3000", 40),
- ("RSN IE with truncated Version", "300101", 40),
- ("RSN IE with only Version", "30020100", 43) ]
+ tests = [("WPA IE instead of RSN IE and only RSN enabled on AP",
+ "dd160050f20101000050f20201000050f20201000050f202", 40),
+ ("Empty RSN IE", "3000", 40),
+ ("RSN IE with truncated Version", "300101", 40),
+ ("RSN IE with only Version", "30020100", 43)]
for title, ie, status in tests:
logger.info(title)
set_test_assoc_ie(dev[0], ie)
ssid = "test-wpa2-psk-ft"
passphrase = 'qwertyuiop'
- params = { "wpa": "2",
- "wpa_key_mgmt": "FT-PSK WPA-PSK",
- "rsn_pairwise": "CCMP",
- "ssid": ssid,
- "wpa_passphrase": passphrase }
+ params = {"wpa": "2",
+ "wpa_key_mgmt": "FT-PSK WPA-PSK",
+ "rsn_pairwise": "CCMP",
+ "ssid": ssid,
+ "wpa_passphrase": passphrase}
params["mobility_domain"] = "a1b2"
params["r0_key_lifetime"] = "10000"
params["pmk_r1_push"] = "1"
def test_ap_wpa_psk_rsn_pairwise(dev, apdev):
"""WPA-PSK AP and only rsn_pairwise set"""
- params = { "ssid": "wpapsk", "wpa": "1", "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "TKIP", "wpa_passphrase": "1234567890" }
+ params = {"ssid": "wpapsk", "wpa": "1", "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "TKIP", "wpa_passphrase": "1234567890"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("wpapsk", psk="1234567890", proto="WPA", pairwise="TKIP",
scan_freq="2412")
time.sleep(sleep_time)
tx = wt.get_tx_tid(bssid, sta, tid)
if tx == 0:
- [ tx, rx ] = wt.get_tid_counters(bssid, sta)
+ [tx, rx] = wt.get_tid_counters(bssid, sta)
logger.info("Expected TX DSCP " + str(dscp) + " with TID " + str(tid) + " but counters: " + str(tx))
raise Exception("No STA->AP data frame using the expected TID")
rx = wt.get_rx_tid(bssid, sta, ap_tid)
if rx == 0:
- [ tx, rx ] = wt.get_tid_counters(bssid, sta)
+ [tx, rx] = wt.get_tid_counters(bssid, sta)
logger.info("Expected RX DSCP " + str(dscp) + " with TID " + str(ap_tid) + " but counters: " + str(rx))
raise Exception("No AP->STA data frame using the expected TID")
if int(drv_flags, 0) & 0x40000000 == 0:
raise HwsimSkip("Driver does not support QoS Map")
ssid = "test-qosmap"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
params['qos_map_set'] = '53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55'
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
def test_ap_qosmap_default(dev, apdev):
"""QoS mapping with default values"""
ssid = "test-qosmap-default"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
addr = dev[0].p2p_interface_addr()
dev[0].request("DATA_TEST_CONFIG 1")
hapd.request("DATA_TEST_CONFIG 1")
Wlantest.setup(hapd)
- for dscp in [ 0, 7, 8, 15, 16, 23, 24, 31, 32, 39, 40, 47, 48, 55, 56, 63]:
+ for dscp in [0, 7, 8, 15, 16, 23, 24, 31, 32, 39, 40, 47, 48, 55, 56, 63]:
check_qos_map(apdev[0], hapd, dev[0], addr, dscp, dscp >> 3)
dev[0].request("DATA_TEST_CONFIG 0")
hapd.request("DATA_TEST_CONFIG 0")
def test_ap_qosmap_default_acm(dev, apdev):
"""QoS mapping with default values and ACM=1 for VO/VI"""
ssid = "test-qosmap-default"
- params = { "ssid": ssid,
- "wmm_ac_bk_aifs": "7",
- "wmm_ac_bk_cwmin": "4",
- "wmm_ac_bk_cwmax": "10",
- "wmm_ac_bk_txop_limit": "0",
- "wmm_ac_bk_acm": "0",
- "wmm_ac_be_aifs": "3",
- "wmm_ac_be_cwmin": "4",
- "wmm_ac_be_cwmax": "10",
- "wmm_ac_be_txop_limit": "0",
- "wmm_ac_be_acm": "0",
- "wmm_ac_vi_aifs": "2",
- "wmm_ac_vi_cwmin": "3",
- "wmm_ac_vi_cwmax": "4",
- "wmm_ac_vi_txop_limit": "94",
- "wmm_ac_vi_acm": "1",
- "wmm_ac_vo_aifs": "2",
- "wmm_ac_vo_cwmin": "2",
- "wmm_ac_vo_cwmax": "2",
- "wmm_ac_vo_txop_limit": "47",
- "wmm_ac_vo_acm": "1" }
+ params = {"ssid": ssid,
+ "wmm_ac_bk_aifs": "7",
+ "wmm_ac_bk_cwmin": "4",
+ "wmm_ac_bk_cwmax": "10",
+ "wmm_ac_bk_txop_limit": "0",
+ "wmm_ac_bk_acm": "0",
+ "wmm_ac_be_aifs": "3",
+ "wmm_ac_be_cwmin": "4",
+ "wmm_ac_be_cwmax": "10",
+ "wmm_ac_be_txop_limit": "0",
+ "wmm_ac_be_acm": "0",
+ "wmm_ac_vi_aifs": "2",
+ "wmm_ac_vi_cwmin": "3",
+ "wmm_ac_vi_cwmax": "4",
+ "wmm_ac_vi_txop_limit": "94",
+ "wmm_ac_vi_acm": "1",
+ "wmm_ac_vo_aifs": "2",
+ "wmm_ac_vo_cwmin": "2",
+ "wmm_ac_vo_cwmax": "2",
+ "wmm_ac_vo_txop_limit": "47",
+ "wmm_ac_vo_acm": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
addr = dev[0].p2p_interface_addr()
dev[0].request("DATA_TEST_CONFIG 1")
hapd.request("DATA_TEST_CONFIG 1")
Wlantest.setup(hapd)
- for dscp in [ 0, 7, 8, 15, 16, 23, 24, 31, 32, 39, 40, 47, 48, 55, 56, 63]:
+ for dscp in [0, 7, 8, 15, 16, 23, 24, 31, 32, 39, 40, 47, 48, 55, 56, 63]:
ap_tid = dscp >> 3
tid = ap_tid
# downgrade VI/VO to BE
- if tid in [ 4, 5, 6, 7 ]:
+ if tid in [4, 5, 6, 7]:
tid = 3
check_qos_map(apdev[0], hapd, dev[0], addr, dscp, tid, ap_tid)
dev[0].request("DATA_TEST_CONFIG 0")
def test_ap_qosmap_invalid(dev, apdev):
"""QoS mapping ctrl_iface error handling"""
ssid = "test-qosmap"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" not in hapd.request("SEND_QOS_MAP_CONF 00:11:22:33:44:55"):
raise Exception("Unexpected SEND_QOS_MAP_CONF success")
@remote_compatible
def test_ap_roam_open(dev, apdev):
"""Roam between two open APs"""
- hapd0 = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd0 = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE")
hwsim_utils.test_connectivity(dev[0], hapd0)
- hapd1 = hostapd.add_ap(apdev[1], { "ssid": "test-open" })
+ hapd1 = hostapd.add_ap(apdev[1], {"ssid": "test-open"})
dev[0].scan(type="ONLY")
dev[0].roam(apdev[1]['bssid'])
hwsim_utils.test_connectivity(dev[0], hapd1)
@remote_compatible
def test_ap_roam_open_failed(dev, apdev):
"""Roam failure due to rejected authentication"""
- hapd0 = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd0 = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], hapd0)
- params = { "ssid": "test-open", "max_num_sta" : "0" }
+ params = {"ssid": "test-open", "max_num_sta": "0"}
hapd1 = hostapd.add_ap(apdev[1], params)
bssid = hapd1.own_addr()
@remote_compatible
def test_ap_reassociation_to_same_bss(dev, apdev):
"""Reassociate to the same BSS"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE")
dev[0].request("REASSOCIATE")
@remote_compatible
def test_ap_roam_set_bssid(dev, apdev):
"""Roam control"""
- hostapd.add_ap(apdev[0], { "ssid": "test-open" })
- hostapd.add_ap(apdev[1], { "ssid": "test-open" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-open"})
+ hostapd.add_ap(apdev[1], {"ssid": "test-open"})
id = dev[0].connect("test-open", key_mgmt="NONE", bssid=apdev[1]['bssid'],
scan_freq="2412")
if dev[0].get_status_field('bssid') != apdev[1]['bssid']:
inv_dl = wt.get_tdls_counter("invalid_direct_link", bssid, addr0, addr1)
ap = wt.get_tdls_counter("valid_ap_path", bssid, addr0, addr1)
inv_ap = wt.get_tdls_counter("invalid_ap_path", bssid, addr0, addr1)
- return [dl,inv_dl,ap,inv_ap]
+ return [dl, inv_dl, ap, inv_ap]
def tdls_check_dl(sta0, sta1, bssid, addr0, addr1):
wt = Wlantest()
wt.tdls_clear(bssid, addr0, addr1)
hwsim_utils.test_connectivity_sta(sta0, sta1)
- [dl,inv_dl,ap,inv_ap] = wlantest_tdls_packet_counters(bssid, addr0, addr1)
+ [dl, inv_dl, ap, inv_ap] = wlantest_tdls_packet_counters(bssid, addr0, addr1)
if dl == 0:
raise Exception("No valid frames through direct link")
if inv_dl > 0:
wt = Wlantest()
wt.tdls_clear(bssid, addr0, addr1)
hwsim_utils.test_connectivity_sta(sta0, sta1)
- [dl,inv_dl,ap,inv_ap] = wlantest_tdls_packet_counters(bssid, addr0, addr1)
+ [dl, inv_dl, ap, inv_ap] = wlantest_tdls_packet_counters(bssid, addr0, addr1)
if dl > 0:
raise Exception("Unexpected frames through direct link")
if inv_dl > 0:
def test_ap_wep_tdls(dev, apdev):
"""WEP AP and two stations using TDLS"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "test-wep", "wep_key0": '"hello"' })
+ {"ssid": "test-wep", "wep_key0": '"hello"'})
wlantest_setup(hapd)
connect_2sta_wep(dev, hapd)
setup_tdls(dev[0], dev[1], hapd)
def test_ap_open_tdls(dev, apdev):
"""Open AP and two stations using TDLS"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
wlantest_setup(hapd)
connect_2sta_open(dev, hapd)
setup_tdls(dev[0], dev[1], hapd)
def test_ap_open_tdls_vht(dev, apdev):
"""Open AP and two stations using TDLS"""
- params = { "ssid": "test-open",
- "country_code": "DE",
- "hw_mode": "a",
- "channel": "36",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "ht_capab": "",
- "vht_capab": "",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "0" }
+ params = {"ssid": "test-open",
+ "country_code": "DE",
+ "hw_mode": "a",
+ "channel": "36",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "ht_capab": "",
+ "vht_capab": "",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "0"}
hapd = None
try:
hapd = hostapd.add_ap(apdev[0], params)
def test_ap_open_tdls_vht80(dev, apdev):
"""Open AP and two stations using TDLS with VHT 80"""
- params = { "ssid": "test-open",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_capab": "",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42" }
+ params = {"ssid": "test-open",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_capab": "",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42"}
try:
hapd = None
hapd = hostapd.add_ap(apdev[0], params)
def test_ap_open_tdls_vht80plus80(dev, apdev):
"""Open AP and two stations using TDLS with VHT 80+80"""
- params = { "ssid": "test-open",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_capab": "",
- "vht_oper_chwidth": "3",
- "vht_oper_centr_freq_seg0_idx": "42",
- "vht_oper_centr_freq_seg1_idx": "155" }
+ params = {"ssid": "test-open",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_capab": "",
+ "vht_oper_chwidth": "3",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "vht_oper_centr_freq_seg1_idx": "155"}
try:
hapd = None
hapd = hostapd.add_ap(apdev[0], params)
def test_ap_open_tdls_vht160(dev, apdev):
"""Open AP and two stations using TDLS with VHT 160"""
- params = { "ssid": "test-open",
- "country_code": "ZA",
- "hw_mode": "a",
- "channel": "104",
- "ht_capab": "[HT40-]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "2",
- "vht_oper_centr_freq_seg0_idx": "114" }
+ params = {"ssid": "test-open",
+ "country_code": "ZA",
+ "hw_mode": "a",
+ "channel": "104",
+ "ht_capab": "[HT40-]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "2",
+ "vht_oper_centr_freq_seg0_idx": "114"}
try:
hapd = None
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
if flags & 0x800000000 == 0:
raise HwsimSkip("Driver does not support TDLS channel switching")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
wlantest_setup(hapd)
connect_2sta_open(dev, hapd)
setup_tdls(dev[0], dev[1], hapd)
def test_ap_tdls_prohibit(dev, apdev):
"""Open AP and TDLS prohibited"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open",
- "tdls_prohibit": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open",
+ "tdls_prohibit": "1"})
connect_2sta_open(dev, hapd)
if "FAIL" not in dev[0].request("TDLS_SETUP " + dev[1].own_addr()):
raise Exception("TDLS_SETUP accepted unexpectedly")
def test_ap_tdls_chan_switch_prohibit(dev, apdev):
"""Open AP and TDLS channel switch prohibited"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open",
- "tdls_prohibit_chan_switch": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open",
+ "tdls_prohibit_chan_switch": "1"})
wlantest_setup(hapd)
connect_2sta_open(dev, hapd)
setup_tdls(dev[0], dev[1], hapd)
dev[0].set("tdls_external_control", "0")
def _test_ap_open_tdls_external_control(dev, apdev):
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
dev[1].connect("test-open", key_mgmt="NONE", scan_freq="2412")
addr0 = dev[0].own_addr()
time.sleep(0.1)
def _test_ap_track_sta(dev, apdev):
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "g",
- "channel": "6",
- "track_sta_max_num": "2" }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "g",
+ "channel": "6",
+ "track_sta_max_num": "2"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "40",
- "track_sta_max_num": "100",
- "track_sta_max_age": "1" }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "40",
+ "track_sta_max_num": "100",
+ "track_sta_max_age": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
def _test_ap_track_sta_no_probe_resp(dev, apdev):
dev[0].flush_scan_cache()
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "g",
- "channel": "6",
- "beacon_int": "10000",
- "no_probe_resp_if_seen_on": apdev[1]['ifname'] }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "g",
+ "channel": "6",
+ "beacon_int": "10000",
+ "no_probe_resp_if_seen_on": apdev[1]['ifname']}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "40",
- "track_sta_max_num": "100" }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "40",
+ "track_sta_max_num": "100"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
time.sleep(0.1)
def _test_ap_track_sta_no_auth(dev, apdev):
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "g",
- "channel": "6",
- "track_sta_max_num": "100",
- "no_auth_if_seen_on": apdev[1]['ifname'] }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "g",
+ "channel": "6",
+ "track_sta_max_num": "100",
+ "no_auth_if_seen_on": apdev[1]['ifname']}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "40",
- "track_sta_max_num": "100" }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "40",
+ "track_sta_max_num": "100"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
dev[0].connect("track", key_mgmt="NONE", scan_freq="2437",
freq_list="2437", wait_connect=False)
dev[1].request("DISCONNECT")
- ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
- "CTRL-EVENT-AUTH-REJECT" ], timeout=10)
+ ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
+ "CTRL-EVENT-AUTH-REJECT"], timeout=10)
if ev is None:
raise Exception("Unknown connection result")
if "CTRL-EVENT-CONNECTED" in ev:
def _test_ap_track_sta_no_auth_passive(dev, apdev):
dev[0].flush_scan_cache()
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "g",
- "channel": "6",
- "no_auth_if_seen_on": apdev[1]['ifname'] }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "g",
+ "channel": "6",
+ "no_auth_if_seen_on": apdev[1]['ifname']}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "40",
- "interworking": "1",
- "venue_name": "eng:Venue",
- "track_sta_max_num": "100" }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "40",
+ "interworking": "1",
+ "venue_name": "eng:Venue",
+ "track_sta_max_num": "100"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
dev[0].connect("track", key_mgmt="NONE", scan_freq="2437",
freq_list="2437", wait_connect=False)
- ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
- "CTRL-EVENT-AUTH-REJECT" ], timeout=10)
+ ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
+ "CTRL-EVENT-AUTH-REJECT"], timeout=10)
if ev is None:
raise Exception("Unknown connection result")
if "CTRL-EVENT-CONNECTED" in ev:
time.sleep(0.1)
def _test_ap_track_sta_force_5ghz(dev, apdev):
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "g",
- "channel": "6",
- "no_probe_resp_if_seen_on": apdev[1]['ifname'],
- "no_auth_if_seen_on": apdev[1]['ifname'] }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "g",
+ "channel": "6",
+ "no_probe_resp_if_seen_on": apdev[1]['ifname'],
+ "no_auth_if_seen_on": apdev[1]['ifname']}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "40",
- "track_sta_max_num": "100" }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "40",
+ "track_sta_max_num": "100"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
time.sleep(0.1)
def _test_ap_track_sta_force_2ghz(dev, apdev):
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "g",
- "channel": "6",
- "track_sta_max_num": "100" }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "g",
+ "channel": "6",
+ "track_sta_max_num": "100"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "40",
- "no_probe_resp_if_seen_on": apdev[0]['ifname'],
- "no_auth_if_seen_on": apdev[0]['ifname'] }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "40",
+ "no_probe_resp_if_seen_on": apdev[0]['ifname'],
+ "no_auth_if_seen_on": apdev[0]['ifname']}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
dev[2].flush_scan_cache()
def _test_ap_track_taxonomy(dev, apdev):
- params = { "ssid": "track",
- "country_code": "US",
- "hw_mode": "g",
- "channel": "6",
- "track_sta_max_num": "2" }
+ params = {"ssid": "track",
+ "country_code": "US",
+ "hw_mode": "g",
+ "channel": "6",
+ "track_sta_max_num": "2"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
"""VHT with 80 MHz channel width"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42" }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
"""VHT and wifi_generation"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42" }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
clear_scan_cache(apdev)
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": str(channel),
- "ht_capab": ht_capab,
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42" }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": str(channel),
+ "ht_capab": ht_capab,
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42"}
hapd = hostapd.add_ap(apdev, params)
bssid = apdev['bssid']
"""VHT with 80 MHz channel width and number of optional features enabled"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+][SHORT-GI-40][DSS_CCK-40]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_capab": "[MAX-MPDU-11454][RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][MAX-A-MPDU-LEN-EXP0]",
- "vht_oper_centr_freq_seg0_idx": "42",
- "require_vht": "1" }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+][SHORT-GI-40][DSS_CCK-40]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_capab": "[MAX-MPDU-11454][RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][MAX-A-MPDU-LEN-EXP0]",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "require_vht": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[1].connect("vht", key_mgmt="NONE", scan_freq="5180",
"""VHT with invalid 80 MHz channel configuration (seg1)"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42",
- "vht_oper_centr_freq_seg1_idx": "155",
- 'ieee80211d': '1',
- 'ieee80211h': '1' }
+ params = {"ssid": "vht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "vht_oper_centr_freq_seg1_idx": "155",
+ 'ieee80211d': '1',
+ 'ieee80211h': '1'}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
# This fails due to unexpected seg1 configuration
ev = hapd.wait_event(["AP-DISABLED"], timeout=5)
"""VHT with invalid 80 MHz channel configuration (seg0)"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "46",
- 'ieee80211d': '1',
- 'ieee80211h': '1' }
+ params = {"ssid": "vht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "46",
+ 'ieee80211d': '1',
+ 'ieee80211h': '1'}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
# This fails due to invalid seg0 configuration
ev = hapd.wait_event(["AP-DISABLED"], timeout=5)
ap = apdevs[0]
try:
hapd = None
- params = { "ssid": "test-vht20",
- "country_code": "DE",
- "hw_mode": "a",
- "channel": "36",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "ht_capab": "",
- "vht_capab": "",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "0",
- "supported_rates": "60 120 240 360 480 540",
- "require_vht": "1",
- }
+ params = {"ssid": "test-vht20",
+ "country_code": "DE",
+ "hw_mode": "a",
+ "channel": "36",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "ht_capab": "",
+ "vht_capab": "",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "0",
+ "supported_rates": "60 120 240 360 480 540",
+ "require_vht": "1"}
hapd = hostapd.add_ap(ap, params)
dev.connect("test-vht20", scan_freq="5180", key_mgmt="NONE")
hwsim_utils.test_connectivity(dev, hapd)
ap = apdevs[0]
try:
hapd = None
- params = { "ssid": "test-vht40",
- "country_code": "DE",
- "hw_mode": "a",
- "channel": "36",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "ht_capab": "[HT40+]",
- "vht_capab": "",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "0",
- }
+ params = {"ssid": "test-vht40",
+ "country_code": "DE",
+ "hw_mode": "a",
+ "channel": "36",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "ht_capab": "[HT40+]",
+ "vht_capab": "",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "0"}
hapd = hostapd.add_ap(ap, params)
dev.connect("test-vht40", scan_freq="5180", key_mgmt="NONE")
hwsim_utils.test_connectivity(dev, hapd)
def test_ap_vht_capab_not_supported(dev, apdev):
"""VHT configuration with driver not supporting all vht_capab entries"""
try:
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+][SHORT-GI-40][DSS_CCK-40]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_capab": "[MAX-MPDU-7991][MAX-MPDU-11454][VHT160][VHT160-80PLUS80][RXLDPC][SHORT-GI-80][SHORT-GI-160][TX-STBC-2BY1][RX-STBC-1][RX-STBC-12][RX-STBC-123][RX-STBC-1234][SU-BEAMFORMER][SU-BEAMFORMEE][BF-ANTENNA-2][BF-ANTENNA-3][BF-ANTENNA-4][SOUNDING-DIMENSION-2][SOUNDING-DIMENSION-3][SOUNDING-DIMENSION-4][MU-BEAMFORMER][VHT-TXOP-PS][HTC-VHT][MAX-A-MPDU-LEN-EXP0][MAX-A-MPDU-LEN-EXP7][VHT-LINK-ADAPT2][VHT-LINK-ADAPT3][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN]",
- "vht_oper_centr_freq_seg0_idx": "42",
- "require_vht": "1" }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+][SHORT-GI-40][DSS_CCK-40]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_capab": "[MAX-MPDU-7991][MAX-MPDU-11454][VHT160][VHT160-80PLUS80][RXLDPC][SHORT-GI-80][SHORT-GI-160][TX-STBC-2BY1][RX-STBC-1][RX-STBC-12][RX-STBC-123][RX-STBC-1234][SU-BEAMFORMER][SU-BEAMFORMEE][BF-ANTENNA-2][BF-ANTENNA-3][BF-ANTENNA-4][SOUNDING-DIMENSION-2][SOUNDING-DIMENSION-3][SOUNDING-DIMENSION-4][MU-BEAMFORMER][VHT-TXOP-PS][HTC-VHT][MAX-A-MPDU-LEN-EXP0][MAX-A-MPDU-LEN-EXP7][VHT-LINK-ADAPT2][VHT-LINK-ADAPT3][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN]",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "require_vht": "1"}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
ev = hapd.wait_event(["AP-DISABLED"], timeout=5)
if ev is None:
"""VHT with 160 MHz channel width (1)"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "2",
- "vht_oper_centr_freq_seg0_idx": "50",
- 'ieee80211d': '1',
- 'ieee80211h': '1' }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "2",
+ "vht_oper_centr_freq_seg0_idx": "50",
+ 'ieee80211d': '1',
+ 'ieee80211h': '1'}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
ev = wait_dfs_event(hapd, "DFS-CAC-START", 5)
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "104",
- "ht_capab": "[HT40-]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "2",
- "vht_oper_centr_freq_seg0_idx": "114",
- 'ieee80211d': '1',
- 'ieee80211h': '1' }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "104",
+ "ht_capab": "[HT40-]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "2",
+ "vht_oper_centr_freq_seg0_idx": "114",
+ 'ieee80211d': '1',
+ 'ieee80211h': '1'}
hapd = hostapd.add_ap(apdev[1], params, wait_enabled=False)
ev = wait_dfs_event(hapd, "DFS-CAC-START", 5)
def run_ap_vht160_no_dfs(dev, apdev, channel, ht_capab):
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "ZA",
- "hw_mode": "a",
- "channel": channel,
- "ht_capab": ht_capab,
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "2",
- "vht_oper_centr_freq_seg0_idx": "114",
- 'ieee80211d': '1',
- 'ieee80211h': '1' }
+ params = {"ssid": "vht",
+ "country_code": "ZA",
+ "hw_mode": "a",
+ "channel": channel,
+ "ht_capab": ht_capab,
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "2",
+ "vht_oper_centr_freq_seg0_idx": "114",
+ 'ieee80211d': '1',
+ 'ieee80211h': '1'}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
ev = hapd.wait_event(["AP-ENABLED"], timeout=2)
if not ev:
"""VHT with 160 MHz channel width and HT40 disabled"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "ZA",
- "hw_mode": "a",
- "channel": "108",
- "ht_capab": "",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "2",
- "vht_oper_centr_freq_seg0_idx": "114",
- 'ieee80211d': '1',
- 'ieee80211h': '1' }
+ params = {"ssid": "vht",
+ "country_code": "ZA",
+ "hw_mode": "a",
+ "channel": "108",
+ "ht_capab": "",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "2",
+ "vht_oper_centr_freq_seg0_idx": "114",
+ 'ieee80211d': '1',
+ 'ieee80211h': '1'}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
ev = hapd.wait_event(["AP-ENABLED", "AP-DISABLED"], timeout=2)
if not ev:
try:
hapd = None
hapd2 = None
- params = { "ssid": "vht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "52",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "3",
- "vht_oper_centr_freq_seg0_idx": "58",
- "vht_oper_centr_freq_seg1_idx": "155",
- 'ieee80211d': '1',
- 'ieee80211h': '1' }
+ params = {"ssid": "vht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "52",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "3",
+ "vht_oper_centr_freq_seg0_idx": "58",
+ "vht_oper_centr_freq_seg1_idx": "155",
+ 'ieee80211d': '1',
+ 'ieee80211h': '1'}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
# This will actually fail since DFS on 80+80 is not yet supported
ev = hapd.wait_event(["AP-DISABLED"], timeout=5)
# ignore result to avoid breaking the test once 80+80 DFS gets enabled
- params = { "ssid": "vht2",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "3",
- "vht_oper_centr_freq_seg0_idx": "42",
- "vht_oper_centr_freq_seg1_idx": "155" }
+ params = {"ssid": "vht2",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "3",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "vht_oper_centr_freq_seg1_idx": "155"}
hapd2 = hostapd.add_ap(apdev[1], params, wait_enabled=False)
ev = hapd2.wait_event(["AP-ENABLED", "AP-DISABLED"], timeout=5)
"""VHT with invalid 80+80 MHz channel"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "3",
- "vht_oper_centr_freq_seg0_idx": "42",
- "vht_oper_centr_freq_seg1_idx": "0",
- 'ieee80211d': '1',
- 'ieee80211h': '1' }
+ params = {"ssid": "vht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "3",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "vht_oper_centr_freq_seg1_idx": "0",
+ 'ieee80211d': '1',
+ 'ieee80211h': '1'}
hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False)
# This fails due to missing(invalid) seg1 configuration
ev = hapd.wait_event(["AP-DISABLED"], timeout=5)
csa_supported(dev[0])
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "149",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "155" }
+ params = {"ssid": "vht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "149",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "155"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("vht", key_mgmt="NONE", scan_freq="5745")
csa_supported(dev[0])
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "149",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "0" }
+ params = {"ssid": "vht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "149",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "0"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
csa_supported(dev[0])
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "149",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "0" }
+ params = {"ssid": "vht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "149",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "0"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
csa_supported(dev[0])
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "US",
- "hw_mode": "a",
- "channel": "149",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_capab": "",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "0" }
+ params = {"ssid": "vht",
+ "country_code": "US",
+ "hw_mode": "a",
+ "channel": "149",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_capab": "",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "0"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
def test_ap_vht_on_24ghz(dev, apdev):
"""Subset of VHT features on 2.4 GHz"""
hapd = None
- params = { "ssid": "test-vht-2g",
- "hw_mode": "g",
- "channel": "1",
- "ieee80211n": "1",
- "vendor_vht": "1",
- "vht_capab": "[MAX-MPDU-11454]",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "1"
- }
+ params = {"ssid": "test-vht-2g",
+ "hw_mode": "g",
+ "channel": "1",
+ "ieee80211n": "1",
+ "vendor_vht": "1",
+ "vht_capab": "[MAX-MPDU-11454]",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "1"}
hapd = hostapd.add_ap(apdev[0], params)
try:
if "OK" not in dev[0].request("VENDOR_ELEM_ADD 13 dd1300904c0400bf0c3240820feaff0000eaff0000"):
try:
hapd2 = None
- params = { "ssid": "test",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ieee80211n": "1",
- "ht_capab": "[HT40+]" }
+ params = {"ssid": "test",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ieee80211n": "1",
+ "ht_capab": "[HT40+]"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "test",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "ht_capab": "[HT40+]",
- "vht_capab": "",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "0",
- }
+ params = {"ssid": "test",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "ht_capab": "[HT40+]",
+ "vht_capab": "",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "0"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
"""VHT with 80 MHz channel width and local power constraint"""
hapd = None
try:
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211d": "1",
- "local_pwr_constraint": "3",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42" }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211d": "1",
+ "local_pwr_constraint": "3",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("vht", key_mgmt="NONE", scan_freq="5180")
"""VHT with 80 MHz channel width and use_sta_nsts=1"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42",
- "use_sta_nsts": "1" }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "use_sta_nsts": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
"""VHT and TKIP"""
try:
hapd = None
- params = { "ssid": "vht",
- "wpa": "1",
- "wpa_key_mgmt": "WPA-PSK",
- "wpa_pairwise": "TKIP",
- "wpa_passphrase": "12345678",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42" }
+ params = {"ssid": "vht",
+ "wpa": "1",
+ "wpa_key_mgmt": "WPA-PSK",
+ "wpa_pairwise": "TKIP",
+ "wpa_passphrase": "12345678",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
ap = apdevs[0]
try:
hapd = None
- params = { "ssid": "test-vht40",
- "country_code": "US",
- "hw_mode": "a",
- "basic_rates": "60 120 240",
- "channel": "161",
- "ieee80211d": "1",
- "ieee80211h": "1",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "ht_capab": "[HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]",
- "vht_capab": "[RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC1][MAX-MPDU-11454][MAX-A-MPDU-LEN-EXP7]",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "155",
- }
+ params = {"ssid": "test-vht40",
+ "country_code": "US",
+ "hw_mode": "a",
+ "basic_rates": "60 120 240",
+ "channel": "161",
+ "ieee80211d": "1",
+ "ieee80211h": "1",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "ht_capab": "[HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]",
+ "vht_capab": "[RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC1][MAX-MPDU-11454][MAX-A-MPDU-LEN-EXP7]",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "155"}
hapd = hostapd.add_ap(ap, params)
dev.connect("test-vht40", scan_freq="5805", key_mgmt="NONE")
dev.wait_regdom(country_ie=True)
"""VHT with 80 MHz channel width reconfigured to 2.4 GHz HT"""
try:
hapd = None
- params = { "ssid": "vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_capab": "[MAX-MPDU-11454]",
- "vht_oper_centr_freq_seg0_idx": "42" }
+ params = {"ssid": "vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_capab": "[MAX-MPDU-11454]",
+ "vht_oper_centr_freq_seg0_idx": "42"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
def test_ap_vlan_open(dev, apdev):
"""AP VLAN with open network"""
- params = { "ssid": "test-vlan-open",
- "dynamic_vlan": "1",
- "accept_mac_file": "hostapd.accept" }
+ params = {"ssid": "test-vlan-open",
+ "dynamic_vlan": "1",
+ "accept_mac_file": "hostapd.accept"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
def test_ap_vlan_file_open(dev, apdev):
"""AP VLAN with open network and vlan_file mapping"""
- params = { "ssid": "test-vlan-open",
- "dynamic_vlan": "1",
- "vlan_file": "hostapd.vlan",
- "accept_mac_file": "hostapd.accept" }
+ params = {"ssid": "test-vlan-open",
+ "dynamic_vlan": "1",
+ "vlan_file": "hostapd.vlan",
+ "accept_mac_file": "hostapd.accept"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
def test_ap_vlan_file_open2(dev, apdev):
"""AP VLAN with open network and vlan_file mapping (2)"""
- params = { "ssid": "test-vlan-open",
- "dynamic_vlan": "1",
- "vlan_file": "hostapd.vlan2",
- "accept_mac_file": "hostapd.accept2" }
+ params = {"ssid": "test-vlan-open",
+ "dynamic_vlan": "1",
+ "vlan_file": "hostapd.vlan2",
+ "accept_mac_file": "hostapd.accept2"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
def test_ap_vlan_file_parsing(dev, apdev, params):
"""hostapd vlan_file/mac_file parsing"""
tmp = os.path.join(params['logdir'], 'ap_vlan_file_parsing.tmp')
- params = { "ssid": "test-vlan-open", "dynamic_vlan": "1" }
+ params = {"ssid": "test-vlan-open", "dynamic_vlan": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "#\n\n0\t11\n",
- "* ",
- "1 netdev12345678901234567890" ]
+ tests = ["#\n\n0\t11\n",
+ "* ",
+ "1 netdev12345678901234567890"]
for t in tests:
with open(tmp, "w") as f:
f.write(t)
if "FAIL" not in hapd.request("SET vlan_file " + tmp):
raise Exception("vlan_file accepted during OOM")
- tests = [ "#\n\n0\tvlan\n",
- "4095\tvlan\n",
- "vlan\n",
- "1\t1234567890abcdef1234567890\n",
- "1\n" ]
+ tests = ["#\n\n0\tvlan\n",
+ "4095\tvlan\n",
+ "vlan\n",
+ "1\t1234567890abcdef1234567890\n",
+ "1\n"]
for t in tests:
with open(tmp, "w") as f:
f.write(t)
subprocess.call(['ip', 'link', 'del', ifname2])
def generic_ap_vlan_wpa2_radius_id_change(dev, apdev, tagged):
- as_params = { "ssid": "as",
- "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18128',
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key" }
+ as_params = {"ssid": "as",
+ "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18128',
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key"}
authserv = hostapd.add_ap(apdev[1], as_params)
params = hostapd.wpa2_eap_params(ssid="test-vlan")
def test_ap_vlan_tagged(dev, apdev):
"""AP VLAN with tagged interface"""
- params = { "ssid": "test-vlan-open",
- "dynamic_vlan": "1",
- "vlan_tagged_interface": "lo",
- "accept_mac_file": "hostapd.accept" }
+ params = {"ssid": "test-vlan-open",
+ "dynamic_vlan": "1",
+ "vlan_tagged_interface": "lo",
+ "accept_mac_file": "hostapd.accept"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
def ap_vlan_iface_cleanup_multibss_cleanup():
subprocess.call(['ifconfig', 'dummy0', 'down'],
stderr=open('/dev/null', 'w'))
- ifnames = [ 'wlan3.1', 'wlan3.2', 'wlan3-2.1', 'wlan3-2.2', 'dummy0.2',
- 'dummy0.1', 'dummy0', 'brvlan1', 'brvlan2' ]
+ ifnames = ['wlan3.1', 'wlan3.2', 'wlan3-2.1', 'wlan3-2.2', 'dummy0.2',
+ 'dummy0.1', 'dummy0', 'brvlan1', 'brvlan2']
for ifname in ifnames:
subprocess.call(['ip', 'link', 'del', ifname],
stderr=open('/dev/null', 'w'))
ap_vlan_iface_cleanup_multibss_cleanup()
ap_vlan_iface_test_and_prepare_environ()
- as_params = { "ssid": "as",
- "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18128',
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key",
- "vlan_naming": "1" }
+ as_params = {"ssid": "as",
+ "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18128',
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key",
+ "vlan_naming": "1"}
authserv = hostapd.add_ap(apdev[1], as_params)
# start the actual test
@remote_compatible
def test_ap_open_per_sta_vif(dev, apdev):
"""AP VLAN with open network"""
- params = { "ssid": "test-vlan-open",
- "per_sta_vif": "1" }
+ params = {"ssid": "test-vlan-open",
+ "per_sta_vif": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_ap_vlan_open_per_sta_vif(dev, apdev):
"""AP VLAN (dynamic) with open network"""
- params = { "ssid": "test-vlan-open",
- "per_sta_vif": "1",
- "dynamic_vlan": "1" }
+ params = {"ssid": "test-vlan-open",
+ "per_sta_vif": "1",
+ "dynamic_vlan": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
raise HwsimSkip("SAE not supported")
params = hostapd.wpa2_params(ssid="test-sae-vlan")
params['wpa_key_mgmt'] = 'SAE'
- params['sae_password'] = [ 'pw1|vlanid=1|id=id1',
- 'pw2|mac=ff:ff:ff:ff:ff:ff|vlanid=2|id=id2',
- 'pw3|vlanid=3|id=id3' ]
+ params['sae_password'] = ['pw1|vlanid=1|id=id1',
+ 'pw2|mac=ff:ff:ff:ff:ff:ff|vlanid=2|id=id2',
+ 'pw3|vlanid=3|id=id3']
params['dynamic_vlan'] = "1"
hapd = hostapd.add_ap(apdev[0], params)
from test_ap_eap import int_eap_server_params
def wps_start_ap(apdev, ssid="test-wps-conf"):
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"}
return hostapd.add_ap(apdev, params)
@remote_compatible
"""Initial AP configuration with first WPS Enrollee"""
ssid = "test-wps"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1"})
logger.info("WPS provisioning step")
hapd.request("WPS_PBC")
if "PBC Status: Active" not in hapd.request("WPS_GET_STATUS"):
def test_ap_wps_init_2ap_pbc(dev, apdev):
"""Initial two-radio AP configuration with first WPS PBC Enrollee"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "1" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "1"}
hapd = hostapd.add_ap(apdev[0], params)
hostapd.add_ap(apdev[1], params)
logger.info("WPS provisioning step")
def test_ap_wps_init_2ap_pin(dev, apdev):
"""Initial two-radio AP configuration with first WPS PIN Enrollee"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "1" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "1"}
hapd = hostapd.add_ap(apdev[0], params)
hostapd.add_ap(apdev[1], params)
logger.info("WPS provisioning step")
"""Initial AP configuration using wps_config command"""
ssid = "test-wps-init-config"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1"})
if "FAIL" in hapd.request("WPS_CONFIG " + binascii.hexlify(ssid.encode()).decode() + " WPA2PSK CCMP " + binascii.hexlify(b"12345678").decode()):
raise Exception("WPS_CONFIG command failed")
ev = hapd.wait_event(["WPS-NEW-AP-SETTINGS"], timeout=5)
"""AP configuration using wps_config and wps_cred_processing=2"""
ssid = "test-wps-init-config"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1",
- "wps_cred_processing": "2" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1",
+ "wps_cred_processing": "2"})
if "FAIL" in hapd.request("WPS_CONFIG " + binascii.hexlify(ssid.encode()).decode() + " WPA2PSK CCMP " + binascii.hexlify(b"12345678").decode()):
raise Exception("WPS_CONFIG command failed")
ev = hapd.wait_event(["WPS-NEW-AP-SETTINGS"], timeout=5)
"""AP configuration using wps_config command with invalid passphrase"""
ssid = "test-wps-init-config"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1"})
if "FAIL" not in hapd.request("WPS_CONFIG " + binascii.hexlify(ssid.encode()).decode() + " WPA2PSK CCMP " + binascii.hexlify(b"1234567").decode()):
raise Exception("Invalid WPS_CONFIG command accepted")
"""WPS PBC provisioning with configured AP"""
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
logger.info("WPS provisioning step")
hapd.request("WPS_PBC")
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
try:
hapd = None
ssid = "test-wps-conf"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "country_code": "FI", "hw_mode": "a", "channel": "36" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "country_code": "FI", "hw_mode": "a", "channel": "36"}
hapd = hostapd.add_ap(apdev[0], params)
logger.info("WPS provisioning step")
hapd.request("WPS_PBC")
try:
hapd = None
ssid = "test-wps-conf"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "country_code": "JP", "hw_mode": "b", "channel": "14" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "country_code": "JP", "hw_mode": "b", "channel": "14"}
hapd = hostapd.add_ap(apdev[0], params)
logger.info("WPS provisioning step")
hapd.request("WPS_PBC")
def test_ap_wps_twice(dev, apdev):
"""WPS provisioning with twice to change passphrase"""
ssid = "test-wps-twice"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"}
hapd = hostapd.add_ap(apdev[0], params)
logger.info("WPS provisioning step")
hapd.request("WPS_PBC")
"""WPS PIN provisioning with incorrect PIN"""
ssid = "test-wps-incorrect-pin"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
logger.info("WPS provisioning attempt 1")
hapd.request("WPS_PIN any 12345670")
"""WPS PIN provisioning with configured AP"""
ssid = "test-wps-conf-pin"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
logger.info("WPS provisioning step")
pin = dev[0].wps_read_pin()
hapd.request("WPS_PIN any " + pin)
raise Exception("WPS-AUTH flag not cleared")
logger.info("Try to connect from another station using the same PIN")
pin = dev[1].request("WPS_PIN " + apdev[0]['bssid'])
- ev = dev[1].wait_event(["WPS-M2D","CTRL-EVENT-CONNECTED"], timeout=30)
+ ev = dev[1].wait_event(["WPS-M2D", "CTRL-EVENT-CONNECTED"], timeout=30)
if ev is None:
raise Exception("Operation timed out")
if "WPS-M2D" not in ev:
"""WPS PIN provisioning with configured AP (WPA+WPA2)"""
ssid = "test-wps-conf-pin-mixed"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "3",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wpa_pairwise": "TKIP" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "3",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wpa_pairwise": "TKIP"})
logger.info("WPS provisioning step")
pin = dev[0].wps_read_pin()
"""WPS PIN provisioning with configured WPS v1.0 AP"""
ssid = "test-wps-conf-pin-v1"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
logger.info("WPS provisioning step")
pin = dev[0].wps_read_pin()
hapd.request("SET wps_version_number 0x10")
"""Two stations trying to use WPS PIN at the same time"""
ssid = "test-wps-conf-pin2"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
logger.info("WPS provisioning step")
pin = "12345670"
pin2 = "55554444"
"""WPS PIN provisioning with configured AP timing out PIN"""
ssid = "test-wps-conf-pin"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
addr = dev[0].p2p_interface_addr()
pin = dev[0].wps_read_pin()
if "FAIL" not in hapd.request("WPS_PIN "):
ssid = "test-wps-reg-ap-pin"
appin = "12345670"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "ap_pin": appin})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "ap_pin": appin})
logger.info("WPS provisioning step")
dev[0].dump_monitor()
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
ssid = "test-wps-reg-ap-pin"
appin = ""
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "ap_pin": appin})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "ap_pin": appin})
logger.info("WPS provisioning step")
dev[0].dump_monitor()
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
ssid = "test-wps-reg-ap-pin"
appin = "12345670"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "3",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wpa_pairwise": "TKIP", "ap_pin": appin})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "3",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wpa_pairwise": "TKIP", "ap_pin": appin})
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], appin)
status = dev[0].get_status()
ssid = "test-wps-reg-ap-pin"
appin = "12345670"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "ap_pin": appin, "ap_settings": ap_settings })
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "test" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "ap_pin": appin, "ap_settings": ap_settings})
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "test"})
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].scan_for_bss(apdev[1]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], appin)
"""WPS registrar using random AP PIN"""
ssid = "test-wps-reg-random-ap-pin"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "uuid": ap_uuid, "upnp_iface": "lo" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(apdev[0], params)
appin = hapd.request("WPS_AP_PIN random")
if "FAIL" in appin:
ssid = "test-wps-init-ap-pin"
appin = "12345670"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "ap_pin": appin})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "ap_pin": appin})
logger.info("WPS configuration step")
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].dump_monitor()
"""WPS registrar configuring an AP with external config processing"""
ssid = "test-wps-init-ap-pin"
appin = "12345670"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wps_cred_processing": "1", "ap_pin": appin}
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wps_cred_processing": "1", "ap_pin": appin}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
new_ssid = "wps-new-ssid"
ssid = "test-wps-init-ap"
appin = "12345670"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1",
- "ap_pin": appin})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1",
+ "ap_pin": appin})
logger.info("WPS configuration step")
dev[0].request("SET wps_version_number 0x10")
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
ssid = "test-wps-incorrect-ap-pin"
appin = "12345670"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "ap_pin": appin})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "ap_pin": appin})
new_ssid = "wps-new-ssid-test"
new_passphrase = "1234567890"
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
- ap_setup_locked=False
+ ap_setup_locked = False
for pin in ["55554444", "1234", "12345678", "00000000", "11111111"]:
dev[0].dump_monitor()
logger.info("Try incorrect AP PIN - attempt " + pin)
raise Exception("Unexpected connection")
if "config_error=15" in ev:
logger.info("AP Setup Locked")
- ap_setup_locked=True
+ ap_setup_locked = True
elif "config_error=18" not in ev:
raise Exception("config_error=18 not reported")
dev[0].wait_disconnected(timeout=10)
ssid = "test-wps-incorrect-ap-pin"
appin = "12345670"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "ap_pin": appin})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "ap_pin": appin})
new_ssid = "wps-new-ssid-test"
new_passphrase = "1234567890"
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
- ap_setup_locked=False
+ ap_setup_locked = False
for pin in ["55554444", "1234", "12345678", "00000000", "11111111"]:
dev[0].dump_monitor()
logger.info("Try incorrect AP PIN - attempt " + pin)
raise Exception("Unexpected connection")
if "config_error=15" in ev:
logger.info("AP Setup Locked")
- ap_setup_locked=True
+ ap_setup_locked = True
break
elif "config_error=18" not in ev:
raise Exception("config_error=18 not reported")
"""WPS AP configured for special ap_setup_locked=2 mode"""
ssid = "test-wps-ap-pin"
appin = "12345670"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "ap_pin": appin, "ap_setup_locked": "2" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "ap_pin": appin, "ap_setup_locked": "2"}
hapd = hostapd.add_ap(apdev[0], params)
new_ssid = "wps-new-ssid-test"
new_passphrase = "1234567890"
@remote_compatible
def test_ap_wps_pbc_overlap_2ap(dev, apdev):
"""WPS PBC session overlap with two active APs"""
- params = { "ssid": "wps1", "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wps_independent": "1"}
+ params = {"ssid": "wps1", "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wps_independent": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "wps2", "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "123456789", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wps_independent": "1"}
+ params = {"ssid": "wps2", "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "123456789", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wps_independent": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
hapd.request("WPS_PBC")
hapd2.request("WPS_PBC")
"""WPS PBC session overlap with two active STAs"""
ssid = "test-wps-pbc-overlap"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
logger.info("WPS provisioning step")
hapd.request("WPS_PBC")
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
"""WPS AP cancelling enabled config method"""
ssid = "test-wps-ap-cancel"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
bssid = apdev[0]['bssid']
logger.info("Verify PBC enable/cancel")
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- 'friendly_name': "WPS AP - <>&'\" - TEST",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ 'friendly_name': "WPS AP - <>&'\" - TEST",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
logger.info("WPS configuration step")
new_passphrase = "1234567890"
dev[0].dump_monitor()
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
logger.info("WPS configuration step")
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], ap_pin)
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- 'friendly_name': "WPS AP",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ 'friendly_name': "WPS AP",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
for i in range(2):
dev[i].scan_for_bss(apdev[0]['bssid'], freq=2412)
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
logger.info("Learn AP configuration")
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].dump_monitor()
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].dump_monitor()
dev[0].wps_reg(apdev[0]['bssid'], ap_pin)
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
logger.info("Learn AP configuration")
dev[0].request("SET wps_version_number 0x10")
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
logger.info("Connect ER to the AP")
dev[0].connect(ssid, psk="12345678", scan_freq="2412")
ssid = "wps-er-add-enrollee"
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], ap_pin)
hapd.disable()
for i in range(2):
- ev = dev[0].wait_event([ "WPS-ER-AP-REMOVE",
- "CTRL-EVENT-DISCONNECTED" ],
+ ev = dev[0].wait_event(["WPS-ER-AP-REMOVE", "CTRL-EVENT-DISCONNECTED"],
timeout=15)
if ev is None:
raise Exception("AP removal or disconnection timed out")
hapd = hostapd.add_ap(apdev[0], params)
for i in range(2):
- ev = dev[0].wait_event([ "WPS-ER-AP-ADD", "CTRL-EVENT-CONNECTED" ],
+ ev = dev[0].wait_event(["WPS-ER-AP-ADD", "CTRL-EVENT-CONNECTED"],
timeout=15)
if ev is None:
raise Exception("AP discovery or connection timed out")
ssid = "wps-er-add-enrollee"
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], ap_pin)
hapd.disable()
for i in range(2):
- ev = dev[0].wait_event([ "WPS-ER-AP-REMOVE",
- "CTRL-EVENT-DISCONNECTED" ],
+ ev = dev[0].wait_event(["WPS-ER-AP-REMOVE",
+ "CTRL-EVENT-DISCONNECTED"],
timeout=15)
if ev is None:
raise Exception("AP removal or disconnection timed out")
hapd = hostapd.add_ap(apdev[0], params)
for i in range(2):
- ev = dev[0].wait_event([ "WPS-ER-AP-ADD", "CTRL-EVENT-CONNECTED" ],
+ ev = dev[0].wait_event(["WPS-ER-AP-ADD", "CTRL-EVENT-CONNECTED"],
timeout=15)
if ev is None:
raise Exception("AP discovery or connection timed out")
ssid = "wps-er-add-enrollee"
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], ap_pin)
hapd.disable()
for i in range(2):
- ev = dev[0].wait_event([ "WPS-ER-AP-REMOVE",
- "CTRL-EVENT-DISCONNECTED" ],
+ ev = dev[0].wait_event(["WPS-ER-AP-REMOVE",
+ "CTRL-EVENT-DISCONNECTED"],
timeout=15)
if ev is None:
raise Exception("AP removal or disconnection timed out")
hapd = hostapd.add_ap(apdev[0], params)
for i in range(2):
- ev = dev[0].wait_event([ "WPS-ER-AP-ADD", "CTRL-EVENT-CONNECTED" ],
+ ev = dev[0].wait_event(["WPS-ER-AP-ADD", "CTRL-EVENT-CONNECTED"],
timeout=15)
if ev is None:
raise Exception("AP discovery or connection timed out")
ssid = "wps-er-add-enrollee"
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], ap_pin)
ssid = "wps-er-add-enrollee"
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], ap_pin)
raise Exception("WPS-FAIL timed out")
time.sleep(0.1)
- for func in [ "http_client_url_parse;wps_er_send_set_sel_reg",
- "wps_er_soap_hdr;wps_er_send_set_sel_reg",
- "http_client_addr;wps_er_send_set_sel_reg",
- "wpabuf_alloc;wps_er_set_sel_reg" ]:
+ for func in ["http_client_url_parse;wps_er_send_set_sel_reg",
+ "wps_er_soap_hdr;wps_er_send_set_sel_reg",
+ "http_client_addr;wps_er_send_set_sel_reg",
+ "wpabuf_alloc;wps_er_set_sel_reg"]:
with alloc_fail(dev[0], 1, func):
if "OK" not in dev[0].request("WPS_ER_PBC " + ap_uuid):
raise Exception("WPS_ER_PBC failed")
ssid = "wps-er-add-enrollee"
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], ap_pin)
if ev is None:
raise Exception("AP not discovered")
- for func in [ "wps_er_http_put_message_cb",
- "xml_get_base64_item;wps_er_http_put_message_cb",
- "http_client_url_parse;wps_er_ap_put_message",
- "wps_er_soap_hdr;wps_er_ap_put_message",
- "http_client_addr;wps_er_ap_put_message" ]:
+ for func in ["wps_er_http_put_message_cb",
+ "xml_get_base64_item;wps_er_http_put_message_cb",
+ "http_client_url_parse;wps_er_ap_put_message",
+ "wps_er_soap_hdr;wps_er_ap_put_message",
+ "http_client_addr;wps_er_ap_put_message"]:
with alloc_fail(dev[0], 1, func):
dev[0].request("WPS_ER_LEARN " + ap_uuid + " " + ap_pin)
ev = dev[0].wait_event(["WPS-ER-AP-SETTINGS"], timeout=1)
ssid = "test-wps-fragmentation"
appin = "12345670"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "3",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wpa_pairwise": "TKIP", "ap_pin": appin,
- "fragment_size": "50" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "3",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wpa_pairwise": "TKIP", "ap_pin": appin,
+ "fragment_size": "50"})
logger.info("WPS provisioning step (PBC)")
hapd.request("WPS_PBC")
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
"""WPS compatibility with new version number on the station"""
ssid = "test-wps-ver"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
logger.info("WPS provisioning step")
hapd.request("WPS_PBC")
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
"""WPS compatibility with new version number on the AP"""
ssid = "test-wps-ver"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
logger.info("WPS provisioning step")
if "FAIL" in hapd.request("SET wps_version_number 0x43"):
raise Exception("Failed to enable test functionality")
def test_ap_wps_check_pin(dev, apdev):
"""Verify PIN checking through control interface"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wps", "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP" })
- for t in [ ("12345670", "12345670"),
- ("12345678", "FAIL-CHECKSUM"),
- ("12345", "FAIL"),
- ("123456789", "FAIL"),
- ("1234-5670", "12345670"),
- ("1234 5670", "12345670"),
- ("1-2.3:4 5670", "12345670") ]:
+ {"ssid": "wps", "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ for t in [("12345670", "12345670"),
+ ("12345678", "FAIL-CHECKSUM"),
+ ("12345", "FAIL"),
+ ("123456789", "FAIL"),
+ ("1234-5670", "12345670"),
+ ("1234 5670", "12345670"),
+ ("1-2.3:4 5670", "12345670")]:
res = hapd.request("WPS_CHECK_PIN " + t[0]).rstrip('\n')
res2 = dev[0].request("WPS_CHECK_PIN " + t[0]).rstrip('\n')
if res != res2:
ssid = "test-wps-config"
appin = "12345670"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "ap_pin": appin})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "ap_pin": appin})
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
dev[0].wps_reg(apdev[0]['bssid'], appin, "wps-new-ssid-wep", "OPEN", "WEP",
"hello", no_wait=True)
def test_ap_wps_wep_enroll(dev, apdev):
"""WPS 2.0 STA rejecting WEP configuration"""
ssid = "test-wps-wep"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "skip_cred_build": "1", "extra_cred": "wps-wep-cred" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "skip_cred_build": "1", "extra_cred": "wps-wep-cred"}
hapd = hostapd.add_ap(apdev[0], params)
hapd.request("WPS_PBC")
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
def test_ap_wps_ie_fragmentation(dev, apdev):
"""WPS AP using fragmented WPS IE"""
ssid = "test-wps-ie-fragmentation"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "1234567890abcdef1234567890abcdef",
- "manufacturer": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
- "model_name": "1234567890abcdef1234567890abcdef",
- "model_number": "1234567890abcdef1234567890abcdef",
- "serial_number": "1234567890abcdef1234567890abcdef" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "1234567890abcdef1234567890abcdef",
+ "manufacturer": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
+ "model_name": "1234567890abcdef1234567890abcdef",
+ "model_number": "1234567890abcdef1234567890abcdef",
+ "serial_number": "1234567890abcdef1234567890abcdef"}
hapd = hostapd.add_ap(apdev[0], params)
hapd.request("WPS_PBC")
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
for l in lines:
if l == "# WPA PSKs":
continue
- (addr,psk) = l.split(' ')
+ (addr, psk) = l.split(' ')
psks[addr] = psk
return psks
with open(pskfile, "w") as f:
f.write("# WPA PSKs\n")
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa": "2", "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "CCMP", "ap_pin": appin,
- "wpa_psk_file": pskfile }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa": "2", "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "CCMP", "ap_pin": appin,
+ "wpa_psk_file": pskfile}
hapd = hostapd.add_ap(apdev[0], params)
logger.info("First enrollee")
with open(pskfile, "w") as f:
f.write("# WPA PSKs\n")
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa": "2", "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "CCMP", "ap_pin": appin,
- "wpa_psk_file": pskfile }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa": "2", "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "CCMP", "ap_pin": appin,
+ "wpa_psk_file": pskfile}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" in hapd.request("SET wpa_psk_file /tmp/does/not/exists/ap_wps_per_enrollee_psk_failure.psk_file"):
raise Exception("Failed to set wpa_psk_file")
if os.path.exists(pinfile):
os.remove(pinfile)
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wps_pin_requests": pinfile,
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wps_pin_requests": pinfile,
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
uuid = dev[0].get_status_field("uuid")
pin = dev[0].wps_read_pin()
try:
vals = dict()
for l in lines:
try:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
except ValueError as e:
if "# WPS configuration" in l:
server = MyTCPServer(("127.0.0.1", 12345), WPSERHTTPServer)
server.timeout = 1
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
</u:SetSelectedRegistrar>
</s:Body>
</s:Envelope>'''
- headers = { "Content-type": 'text/xml; charset="utf-8"' }
+ headers = {"Content-type": 'text/xml; charset="utf-8"'}
headers["SOAPAction"] = '"urn:schemas-wifialliance-org:service:WFAWLANConfig:1#%s"' % "SetSelectedRegistrar"
conn.request("POST", ctrlurl.path, msg, headers)
resp = conn.getresponse()
def add_ssdp_ap(ap, ap_uuid):
ssid = "wps-ssdp"
ap_pin = "12345670"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo",
- "friendly_name": "WPS Access Point",
- "manufacturer_url": "http://www.example.com/",
- "model_description": "Wireless Access Point",
- "model_url": "http://www.example.com/model/",
- "upc": "123456789012" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo",
+ "friendly_name": "WPS Access Point",
+ "manufacturer_url": "http://www.example.com/",
+ "model_description": "Wireless Access Point",
+ "model_url": "http://www.example.com/model/",
+ "upc": "123456789012"}
return hostapd.add_ap(ap, params)
def ssdp_send(msg, no_recv=False):
msg = ET.SubElement(act, "NewWLANEventMAC")
msg.text = neweventmac
- headers = { "Content-type": 'text/xml; charset="utf-8"' }
+ headers = {"Content-type": 'text/xml; charset="utf-8"'}
if include_soap_action:
headers["SOAPAction"] = '"urn:schemas-wifialliance-org:service:WFAWLANConfig:1#%s"' % action
elif soap_action_override:
url = urlparse(location)
conn = HTTPConnection(url.netloc)
#conn.set_debuglevel(1)
- headers = { "Content-type": 'text/xml; charset="utf-8"',
- "SOAPAction": '"urn:schemas-wifialliance-org:service:WFAWLANConfig:1#GetDeviceInfo"' }
+ headers = {"Content-type": 'text/xml; charset="utf-8"',
+ "SOAPAction": '"urn:schemas-wifialliance-org:service:WFAWLANConfig:1#GetDeviceInfo"'}
conn.request("POST", "hello", "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 404:
if resp.status != 501:
raise Exception("Unexpected HTTP response: %d" % resp.status)
- headers = { "Content-type": 'text/xml; charset="utf-8"',
- "SOAPAction": '"urn:some-unknown-action#GetDeviceInfo"' }
+ headers = {"Content-type": 'text/xml; charset="utf-8"',
+ "SOAPAction": '"urn:some-unknown-action#GetDeviceInfo"'}
ctrlurl = urlparse(urls['control_url'])
conn.request("POST", ctrlurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("GetDeviceInfo with invalid SOAPAction header")
- for act in [ "foo",
- "urn:schemas-wifialliance-org:service:WFAWLANConfig:1#GetDeviceInfo",
- '"urn:schemas-wifialliance-org:service:WFAWLANConfig:1"',
- '"urn:schemas-wifialliance-org:service:WFAWLANConfig:123#GetDevice']:
+ for act in ["foo",
+ "urn:schemas-wifialliance-org:service:WFAWLANConfig:1#GetDeviceInfo",
+ '"urn:schemas-wifialliance-org:service:WFAWLANConfig:1"',
+ '"urn:schemas-wifialliance-org:service:WFAWLANConfig:123#GetDevice']:
resp = upnp_soap_action(conn, ctrlurl.path, "GetDeviceInfo",
include_soap_action=False,
soap_action_override=act)
url = urlparse(location)
conn = HTTPConnection(url.netloc)
#conn.set_debuglevel(1)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", "hello", "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 412:
if resp.status != 412:
raise Exception("Unexpected HTTP response: %d" % resp.status)
- headers = { "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 412:
raise Exception("Unexpected HTTP response: %d" % resp.status)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:foobar",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:foobar",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 400:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Valid subscription")
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
logger.debug("Subscription SID " + sid)
logger.debug("Invalid re-subscription")
- headers = { "NT": "upnp:event",
- "sid": "123456734567854",
- "timeout": "Second-1234" }
+ headers = {"NT": "upnp:event",
+ "sid": "123456734567854",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 400:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Invalid re-subscription")
- headers = { "NT": "upnp:event",
- "sid": "uuid:123456734567854",
- "timeout": "Second-1234" }
+ headers = {"NT": "upnp:event",
+ "sid": "uuid:123456734567854",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 400:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Invalid re-subscription")
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "sid": sid,
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "sid": sid,
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 400:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("SID mismatch in re-subscription")
- headers = { "NT": "upnp:event",
- "sid": "uuid:4c2bca79-1ff4-4e43-85d4-952a2b8a51fb",
- "timeout": "Second-1234" }
+ headers = {"NT": "upnp:event",
+ "sid": "uuid:4c2bca79-1ff4-4e43-85d4-952a2b8a51fb",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 412:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Valid re-subscription")
- headers = { "NT": "upnp:event",
- "sid": sid,
- "timeout": "Second-1234" }
+ headers = {"NT": "upnp:event",
+ "sid": sid,
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
raise Exception("Unexpected SID change")
logger.debug("Valid re-subscription")
- headers = { "NT": "upnp:event",
- "sid": "uuid: \t \t" + sid.split(':')[1],
- "timeout": "Second-1234" }
+ headers = {"NT": "upnp:event",
+ "sid": "uuid: \t \t" + sid.split(':')[1],
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Invalid unsubscription")
- headers = { "sid": sid }
+ headers = {"sid": sid}
conn.request("UNSUBSCRIBE", "/hello", "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 412:
raise Exception("Unexpected HTTP response: %d" % resp.status)
- headers = { "foo": "bar" }
+ headers = {"foo": "bar"}
conn.request("UNSUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 412:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Valid unsubscription")
- headers = { "sid": sid }
+ headers = {"sid": sid}
conn.request("UNSUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Unsubscription for not existing SID")
- headers = { "sid": sid }
+ headers = {"sid": sid}
conn.request("UNSUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 412:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Invalid unsubscription")
- headers = { "sid": " \t \tfoo" }
+ headers = {"sid": " \t \tfoo"}
conn.request("UNSUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 400:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Invalid unsubscription")
- headers = { "sid": "uuid:\t \tfoo" }
+ headers = {"sid": "uuid:\t \tfoo"}
conn.request("UNSUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 400:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Invalid unsubscription")
- headers = { "NT": "upnp:event",
- "sid": sid }
+ headers = {"NT": "upnp:event",
+ "sid": sid}
conn.request("UNSUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 400:
raise Exception("Unexpected HTTP response: %d" % resp.status)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "sid": sid }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "sid": sid}
conn.request("UNSUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 400:
raise Exception("Unexpected HTTP response: %d" % resp.status)
logger.debug("Valid subscription with multiple callbacks")
- headers = { "callback": '<http://127.0.0.1:12345/event> <http://127.0.0.1:12345/event>\t<http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event> <http://127.0.0.1:12345/event>\t<http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event><http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
time.sleep(0.1)
time.sleep(0.2)
- headers = { "sid": sid }
+ headers = {"sid": sid}
conn.request("UNSUBSCRIBE", eventurl.path, "", headers)
resp = conn.getresponse()
if resp.status != 200 and resp.status != 412:
raise Exception("Unexpected HTTP response for UNSUBSCRIBE: %d" % resp.status)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
with alloc_fail(hapd, 1, "http_client_addr;event_send_start"):
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
sid = resp.getheader("sid")
logger.debug("Subscription SID " + sid)
- headers = { "sid": sid }
+ headers = {"sid": sid}
conn.request("UNSUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
raise Exception("Unexpected HTTP response for UNSUBSCRIBE: %d" % resp.status)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
if resp.status != 500:
raise Exception("Unexpected HTTP response: %d" % resp.status)
- headers = { "callback": '',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 500:
raise Exception("Unexpected HTTP response: %d" % resp.status)
- headers = { "callback": ' <',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": ' <',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 500:
raise Exception("Unexpected HTTP response: %d" % resp.status)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
with alloc_fail(hapd, 1, "wpabuf_alloc;subscription_first_event"):
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
raise Exception("Unexpected HTTP response: %d" % resp.status)
for i in range(6):
- headers = { "callback": '<http://127.0.0.1:%d/event>' % (12345 + i),
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:%d/event>' % (12345 + i),
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
url = urlparse(location)
conn = HTTPConnection(url.netloc)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
raise Exception("Unexpected response to HEAD: " + str(resp.status))
conn.close()
- for cmd in [ "PUT", "DELETE", "TRACE", "CONNECT", "M-SEARCH", "M-POST" ]:
+ for cmd in ["PUT", "DELETE", "TRACE", "CONNECT", "M-SEARCH", "M-POST"]:
try:
conn.request(cmd, "hello")
resp = conn.getresponse()
pass
conn.close()
- headers = { "Content-Length": 'abc' }
+ headers = {"Content-Length": 'abc'}
conn.request("HEAD", "hello", "\r\n\r\n", headers)
try:
resp = conn.getresponse()
pass
conn.close()
- headers = { "Content-Length": '-10' }
+ headers = {"Content-Length": '-10'}
conn.request("HEAD", "hello", "\r\n\r\n", headers)
try:
resp = conn.getresponse()
pass
conn.close()
- headers = { "Content-Length": '10000000000000' }
+ headers = {"Content-Length": '10000000000000'}
conn.request("HEAD", "hello", "\r\n\r\nhello", headers)
try:
resp = conn.getresponse()
pass
conn.close()
- headers = { "Transfer-Encoding": 'abc' }
+ headers = {"Transfer-Encoding": 'abc'}
conn.request("HEAD", "hello", "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 501:
raise Exception("Unexpected response to HEAD: " + str(resp.status))
conn.close()
- headers = { "Transfer-Encoding": 'chunked' }
+ headers = {"Transfer-Encoding": 'chunked'}
conn.request("HEAD", "hello", "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 501:
raise Exception("Unexpected response to HEAD: " + str(resp.status))
conn.close()
- headers = { "Content-Length": '20' }
+ headers = {"Content-Length": '20'}
conn.request("POST", "hello", 10 * 'A' + "\r\n\r\n", headers)
try:
resp = conn.getresponse()
conn = HTTPConnection(url.netloc)
#conn.set_debuglevel(1)
- headers = { "Transfer-Encoding": 'chunked' }
+ headers = {"Transfer-Encoding": 'chunked'}
conn.request("POST", "hello",
"a\r\nabcdefghij\r\n" + "2\r\nkl\r\n" + "0\r\n\r\n",
headers)
if completed:
raise Exception("Too long chunked request did not result in connection reset")
- headers = { "Transfer-Encoding": 'chunked' }
+ headers = {"Transfer-Encoding": 'chunked'}
conn.request("POST", "hello", "80000000\r\na", headers)
try:
resp = conn.getresponse()
def test_ap_wps_disabled(dev, apdev):
"""WPS operations while WPS is disabled"""
ssid = "test-wps-disabled"
- hapd = hostapd.add_ap(apdev[0], { "ssid": ssid })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": ssid})
if "FAIL" not in hapd.request("WPS_PBC"):
raise Exception("WPS_PBC succeeded unexpectedly")
if "FAIL" not in hapd.request("WPS_CANCEL"):
def test_ap_wps_mixed_cred(dev, apdev):
"""WPS 2.0 STA merging mixed mode WPA/WPA2 credentials"""
ssid = "test-wps-wep"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "skip_cred_build": "1", "extra_cred": "wps-mixed-cred" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "skip_cred_build": "1", "extra_cred": "wps-mixed-cred"}
hapd = hostapd.add_ap(apdev[0], params)
hapd.request("WPS_PBC")
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
"""WPS PBC provisioning while connected to another AP"""
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
- hostapd.add_ap(apdev[1], { "ssid": "open" })
+ hostapd.add_ap(apdev[1], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
logger.info("WPS provisioning step")
"""WPS PBC provisioning while connected to another AP and STA_AUTOCONNECT disabled"""
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
- hostapd.add_ap(apdev[1], { "ssid": "open" })
+ hostapd.add_ap(apdev[1], {"ssid": "open"})
try:
dev[0].request("STA_AUTOCONNECT 0")
"""WPS PBC event on AP to enable PBC"""
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
dev[0].dump_monitor()
hapd.dump_monitor()
"""AP_SCAN 2 for WPS"""
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
hapd.request("WPS_PBC")
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
"""EAPOL workaround code path for 802.1X header length mismatch"""
ssid = "test-wps"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1"})
bssid = apdev[0]['bssid']
hapd.request("SET ext_eapol_frame_io 1")
dev[0].request("SET ext_eapol_frame_io 1")
"""WPS PIN and iterate through APs without selected registrar"""
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
ssid2 = "test-wps-conf2"
hapd2 = hostapd.add_ap(apdev[1],
- { "ssid": ssid2, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid2, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
dev[0].scan_for_bss(apdev[1]['bssid'], freq="2412")
"""WPS AP iteration on no Selected Registrar and error case with an AP"""
ssid = "test-wps-conf-pin"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wps_independent": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wps_independent": "1"})
hapd.request("SET ext_eapol_frame_io 1")
bssid = apdev[0]['bssid']
pin = dev[0].wps_read_pin()
# Start the real target AP and activate registrar on it.
hapd2 = hostapd.add_ap(apdev[1],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wps_independent": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wps_independent": "1"})
hapd2.request("WPS_PIN any " + pin)
dev[0].wait_disconnected(timeout=15)
"""WPS PIN provisioning with configured AP and wps_priority"""
ssid = "test-wps-conf-pin"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
logger.info("WPS provisioning step")
pin = dev[0].wps_read_pin()
hapd.request("WPS_PIN any " + pin)
@remote_compatible
def test_ap_wps_and_non_wps(dev, apdev):
"""WPS and non-WPS AP in single hostapd process"""
- params = { "ssid": "wps", "eap_server": "1", "wps_state": "1" }
+ params = {"ssid": "wps", "eap_server": "1", "wps_state": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "no wps" }
+ params = {"ssid": "no wps"}
hapd2 = hostapd.add_ap(apdev[1], params)
appin = hapd.request("WPS_AP_PIN random")
def test_ap_wps_init_oom(dev, apdev):
"""Initial AP configuration and OOM during PSK generation"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "1" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "1"}
hapd = hostapd.add_ap(apdev[0], params)
with alloc_fail(hapd, 1, "base64_gen_encode;?base64_encode;wps_build_cred"):
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"})
dev[0].connect(ssid, psk="12345678", scan_freq="2412")
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
prg = os.path.join(test_params['logdir'],
'alt-wpa_supplicant/wpa_supplicant/wpa_cli')
if not os.path.exists(prg):
prg = '../../wpa_supplicant/wpa_cli'
- arg = [ prg, '-P', pidfile, '-B', '-i', dev[0].ifname, '-a', actionfile ]
+ arg = [prg, '-P', pidfile, '-B', '-i', dev[0].ifname, '-a', actionfile]
subprocess.call(arg)
- arg = [ 'ps', 'ax' ]
+ arg = ['ps', 'ax']
cmd = subprocess.Popen(arg, stdout=subprocess.PIPE)
out = cmd.communicate()[0].decode()
cmd.wait()
if "WPS-SUCCESS" not in res:
raise Exception("WPS-SUCCESS event not seen in action file")
- arg = [ 'ps', 'ax' ]
+ arg = ['ps', 'ax']
cmd = subprocess.Popen(arg, stdout=subprocess.PIPE)
out = cmd.communicate()[0].decode()
cmd.wait()
raise Exception("Invalid filter accepted")
if "OK" not in dev[0].request("WPS_ER_START ifname=lo 1.2.3.4"):
raise Exception("WPS_ER_START with filter failed")
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
msg = msg.decode()
logger.debug("Received SSDP message from %s: %s" % (str(addr), msg))
if "M-SEARCH" not in msg:
dev[0].request("WPS_ER_STOP")
dev[0].request("WPS_ER_START ifname=lo")
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
msg = msg.decode()
logger.debug("Received SSDP message from %s: %s" % (str(addr), msg))
if "M-SEARCH" not in msg:
sock.bind(("239.255.255.250", 1900))
dev.request("WPS_ER_START ifname=lo")
for i in range(100):
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
msg = msg.decode()
logger.debug("Received SSDP message from %s: %s" % (str(addr), msg))
if "M-SEARCH" in msg:
location_url = 'http://127.0.0.1:12345/foo.xml'
sock.sendto(("HTTP/1.1 200 OK\r\nST: urn:schemas-wifialliance-org:device:WFADevice:1\r\nlocation:%s\r\ncache-control:max-age=%d\r\n\r\n" % (location_url, max_age)).encode(), addr)
server.timeout = 1
- return server,sock
+ return server, sock
def wps_er_stop(dev, sock, server, on_alloc_fail=False):
sock.close()
def run_wps_er_proto_test(dev, handler, no_event_url=False, location_url=None):
try:
uuid = '27ea801a-9e5c-4e73-bd82-f89cbcd10d7e'
- server,sock = wps_er_start(dev, handler, location_url=location_url)
+ server, sock = wps_er_start(dev, handler, location_url=location_url)
global wps_event_url
wps_event_url = None
server.handle_request()
<e:property><WLANEvent>'''
payload += base64.b64encode(data).decode()
payload += '</WLANEvent></e:property></e:propertyset>'
- headers = { "Content-type": 'text/xml; charset="utf-8"',
- "Server": "Unspecified, UPnP/1.0, Unspecified",
- "HOST": url.netloc,
- "NT": "upnp:event",
- "SID": "uuid:" + uuid,
- "SEQ": "0",
- "Content-Length": str(len(payload)) }
+ headers = {"Content-type": 'text/xml; charset="utf-8"',
+ "Server": "Unspecified, UPnP/1.0, Unspecified",
+ "HOST": url.netloc,
+ "NT": "upnp:event",
+ "SID": "uuid:" + uuid,
+ "SEQ": "0",
+ "Content-Length": str(len(payload))}
conn.request("NOTIFY", url.path, payload, headers)
if no_response:
try:
def _test_ap_wps_er_http_proto(dev, apdev):
uuid = '27ea801a-9e5c-4e73-bd82-f89cbcd10d7e'
- server,sock = wps_er_start(dev[0], WPSAPHTTPServer, max_age=15)
+ server, sock = wps_er_start(dev[0], WPSAPHTTPServer, max_age=15)
global wps_event_url
wps_event_url = None
server.handle_request()
</WLANEvent></e:property>
</e:propertyset>
'''
- headers = { "Content-type": 'text/xml; charset="utf-8"',
- "Server": "Unspecified, UPnP/1.0, Unspecified",
- "HOST": url.netloc,
- "NT": "upnp:event",
- "SID": "uuid:" + uuid,
- "SEQ": "0",
- "Content-Length": str(len(payload)) }
+ headers = {"Content-type": 'text/xml; charset="utf-8"',
+ "Server": "Unspecified, UPnP/1.0, Unspecified",
+ "HOST": url.netloc,
+ "NT": "upnp:event",
+ "SID": "uuid:" + uuid,
+ "SEQ": "0",
+ "Content-Length": str(len(payload))}
conn.request("NOTIFY", url.path, payload, headers)
resp = conn.getresponse()
if resp.status != 200:
raise Exception("Too few concurrent HTTP connections accepted")
logger.info("OOM in HTTP server")
- for func in [ "http_request_init", "httpread_create",
- "eloop_register_timeout;httpread_create",
- "eloop_sock_table_add_sock;?eloop_register_sock;httpread_create",
- "httpread_hdr_analyze" ]:
+ for func in ["http_request_init", "httpread_create",
+ "eloop_register_timeout;httpread_create",
+ "eloop_sock_table_add_sock;?eloop_register_sock;httpread_create",
+ "httpread_hdr_analyze"]:
with alloc_fail(dev[0], 1, func):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM,
socket.IPPROTO_TCP)
sock.close()
logger.info("Invalid HTTP header")
- for req in [ " GET / HTTP/1.1\r\n\r\n",
- "HTTP/1.1 200 OK\r\n\r\n",
- "HTTP/\r\n\r\n",
- "GET %%a%aa% HTTP/1.1\r\n\r\n",
- "GET / HTTP/1.1\r\n FOO\r\n\r\n",
- "NOTIFY / HTTP/1.1\r\n" + 4097*'a' + '\r\n\r\n',
- "NOTIFY / HTTP/1.1\r\n\r\n" + 8193*'a',
- "POST / HTTP/1.1\r\nTransfer-Encoding: CHUNKED\r\n\r\n foo\r\n",
- "POST / HTTP/1.1\r\nTransfer-Encoding: CHUNKED\r\n\r\n1\r\nfoo\r\n",
- "POST / HTTP/1.1\r\nTransfer-Encoding: CHUNKED\r\n\r\n0\r\n",
- "POST / HTTP/1.1\r\nTransfer-Encoding: CHUNKED\r\n\r\n0\r\naa\ra\r\n\ra" ]:
+ for req in [" GET / HTTP/1.1\r\n\r\n",
+ "HTTP/1.1 200 OK\r\n\r\n",
+ "HTTP/\r\n\r\n",
+ "GET %%a%aa% HTTP/1.1\r\n\r\n",
+ "GET / HTTP/1.1\r\n FOO\r\n\r\n",
+ "NOTIFY / HTTP/1.1\r\n" + 4097*'a' + '\r\n\r\n',
+ "NOTIFY / HTTP/1.1\r\n\r\n" + 8193*'a',
+ "POST / HTTP/1.1\r\nTransfer-Encoding: CHUNKED\r\n\r\n foo\r\n",
+ "POST / HTTP/1.1\r\nTransfer-Encoding: CHUNKED\r\n\r\n1\r\nfoo\r\n",
+ "POST / HTTP/1.1\r\nTransfer-Encoding: CHUNKED\r\n\r\n0\r\n",
+ "POST / HTTP/1.1\r\nTransfer-Encoding: CHUNKED\r\n\r\n0\r\naa\ra\r\n\ra"]:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM,
socket.IPPROTO_TCP)
sock.settimeout(0.1)
conn = HTTPConnection(url.netloc)
payload = '<foo'
- headers = { "Content-type": 'text/xml; charset="utf-8"',
- "Server": "Unspecified, UPnP/1.0, Unspecified",
- "HOST": url.netloc,
- "NT": "upnp:event",
- "SID": "uuid:" + uuid,
- "SEQ": "0",
- "Content-Length": str(len(payload)) }
+ headers = {"Content-type": 'text/xml; charset="utf-8"',
+ "Server": "Unspecified, UPnP/1.0, Unspecified",
+ "HOST": url.netloc,
+ "NT": "upnp:event",
+ "SID": "uuid:" + uuid,
+ "SEQ": "0",
+ "Content-Length": str(len(payload))}
conn.request("NOTIFY", url.path, payload, headers)
resp = conn.getresponse()
if resp.status != 200:
conn = HTTPConnection(url.netloc)
payload = '<WLANEvent foo></WLANEvent>'
- headers = { "Content-type": 'text/xml; charset="utf-8"',
- "Server": "Unspecified, UPnP/1.0, Unspecified",
- "HOST": url.netloc,
- "NT": "upnp:event",
- "SID": "uuid:" + uuid,
- "SEQ": "0",
- "Content-Length": str(len(payload)) }
+ headers = {"Content-type": 'text/xml; charset="utf-8"',
+ "Server": "Unspecified, UPnP/1.0, Unspecified",
+ "HOST": url.netloc,
+ "NT": "upnp:event",
+ "SID": "uuid:" + uuid,
+ "SEQ": "0",
+ "Content-Length": str(len(payload))}
conn.request("NOTIFY", url.path, payload, headers)
resp = conn.getresponse()
if resp.status != 200:
with alloc_fail(dev[0], 1, "wpabuf_alloc_ext_data;xml_get_base64_item"):
send_wlanevent(url, uuid, b'foo')
- for func in [ "wps_init",
- "wps_process_manufacturer",
- "wps_process_model_name",
- "wps_process_model_number",
- "wps_process_serial_number",
- "wps_process_dev_name" ]:
+ for func in ["wps_init",
+ "wps_process_manufacturer",
+ "wps_process_model_name",
+ "wps_process_model_number",
+ "wps_process_serial_number",
+ "wps_process_dev_name"]:
with alloc_fail(dev[0], 1, func):
send_wlanevent(url, uuid, m1)
dev[0].request("WPS_ER_STOP")
def _test_ap_wps_er_http_proto_subscribe_oom(dev, apdev):
- tests = [ (1, "http_client_url_parse"),
- (1, "wpabuf_alloc;wps_er_subscribe"),
- (1, "http_client_addr"),
- (1, "eloop_sock_table_add_sock;?eloop_register_sock;http_client_addr"),
- (1, "eloop_register_timeout;http_client_addr") ]
- for count,func in tests:
+ tests = [(1, "http_client_url_parse"),
+ (1, "wpabuf_alloc;wps_er_subscribe"),
+ (1, "http_client_addr"),
+ (1, "eloop_sock_table_add_sock;?eloop_register_sock;http_client_addr"),
+ (1, "eloop_register_timeout;http_client_addr")]
+ for count, func in tests:
with alloc_fail(dev[0], count, func):
- server,sock = wps_er_start(dev[0], WPSAPHTTPServer)
+ server, sock = wps_er_start(dev[0], WPSAPHTTPServer)
server.handle_request()
server.handle_request()
wps_er_stop(dev[0], sock, server, on_alloc_fail=True)
logger.debug("DummyServer - wait done")
logger.debug("Start WPS ER")
- server,sock2 = wps_er_start(dev[0], DummyServer, max_age=40,
- wait_m_search=True)
+ server, sock2 = wps_er_start(dev[0], DummyServer, max_age=40,
+ wait_m_search=True)
logger.debug("Start server to accept, but not complete, HTTP connection from WPS ER")
# This will wait for 31 seconds..
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("239.255.255.250", 1900))
dev[0].request("WPS_ER_START ifname=lo")
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
msg = msg.decode()
logger.debug("Received SSDP message from %s: %s" % (str(addr), msg))
if "M-SEARCH" not in msg:
"""wps_init OOM cases"""
ssid = "test-wps"
appin = "12345670"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "ap_pin": appin }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "ap_pin": appin}
hapd = hostapd.add_ap(apdev[0], params)
pin = dev[0].wps_read_pin()
def test_ap_wps_invalid_assoc_req_elem(dev, apdev):
"""WPS and invalid IE in Association Request frame"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2"}
hapd = hostapd.add_ap(apdev[0], params)
pin = "12345670"
hapd.request("WPS_PIN any " + pin)
def test_ap_wps_pbc_pin_mismatch(dev, apdev):
"""WPS PBC/PIN mismatch"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2"}
hapd = hostapd.add_ap(apdev[0], params)
hapd.request("SET wps_version_number 0x10")
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
def test_ap_wps_ie_invalid(dev, apdev):
"""WPS PIN attempt with AP that has invalid WSC IE"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "vendor_elements": "dd050050f20410" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "vendor_elements": "dd050050f20410"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { 'ssid': "another", "vendor_elements": "dd050050f20410" }
+ params = {'ssid': "another", "vendor_elements": "dd050050f20410"}
hostapd.add_ap(apdev[1], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
pin = dev[0].wps_read_pin()
def test_ap_wps_scan_prio_order(dev, apdev):
"""WPS scan priority ordering"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { 'ssid': "another", "vendor_elements": "dd050050f20410" }
+ params = {'ssid': "another", "vendor_elements": "dd050050f20410"}
hostapd.add_ap(apdev[1], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
dev[0].scan_for_bss(apdev[1]['bssid'], freq="2412")
def test_ap_wps_probe_req_ie_oom(dev, apdev):
"""WPS ProbeReq IE OOM"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2"}
hapd = hostapd.add_ap(apdev[0], params)
pin = dev[0].wps_read_pin()
hapd.request("WPS_PIN any " + pin)
def test_ap_wps_assoc_req_ie_oom(dev, apdev):
"""WPS AssocReq IE OOM"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2"}
hapd = hostapd.add_ap(apdev[0], params)
pin = dev[0].wps_read_pin()
hapd.request("WPS_PIN any " + pin)
def test_ap_wps_assoc_resp_ie_oom(dev, apdev):
"""WPS AssocResp IE OOM"""
ssid = "test-wps"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2"}
hapd = hostapd.add_ap(apdev[0], params)
pin = dev[0].wps_read_pin()
hapd.request("WPS_PIN any " + pin)
@remote_compatible
def test_ap_wps_bss_info_errors(dev, apdev):
"""WPS BSS info errors"""
- params = { "ssid": "1",
- "vendor_elements": "dd0e0050f20410440001ff101100010a" }
+ params = {"ssid": "1",
+ "vendor_elements": "dd0e0050f20410440001ff101100010a"}
hostapd.add_ap(apdev[0], params)
- params = { 'ssid': "2", "vendor_elements": "dd050050f20410" }
+ params = {'ssid': "2", "vendor_elements": "dd050050f20410"}
hostapd.add_ap(apdev[1], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
dev[0].scan_for_bss(apdev[1]['bssid'], freq="2412")
with open(pskfile, "w") as f:
f.write("# WPA PSKs\n")
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa": "2", "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "CCMP", "ap_pin": appin,
- "wpa_psk_file": pskfile }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa": "2", "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "CCMP", "ap_pin": appin,
+ "wpa_psk_file": pskfile}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
addr = dev.own_addr()
bssid = apdev['bssid']
ssid = "test-wps-conf"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"}
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"}
hapd = hostapd.add_ap(apdev, params)
if pbc:
dev.request("WPS_PBC " + bssid)
else:
dev.request("WPS_PIN " + bssid + " " + pin)
- return addr,bssid,hapd
+ return addr, bssid, hapd
def wps_auth_corrupt(dst, src, addr):
ev = src.wait_event(["EAPOL-TX"], timeout=10)
def test_ap_wps_authenticator_mismatch_m2(dev, apdev):
"""WPS and Authenticator attribute mismatch in M2"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_authenticator_mismatch_m3(dev, apdev):
"""WPS and Authenticator attribute mismatch in M3"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_authenticator_mismatch_m4(dev, apdev):
"""WPS and Authenticator attribute mismatch in M4"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_authenticator_mismatch_m5(dev, apdev):
"""WPS and Authenticator attribute mismatch in M5"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_authenticator_mismatch_m6(dev, apdev):
"""WPS and Authenticator attribute mismatch in M6"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_authenticator_mismatch_m7(dev, apdev):
"""WPS and Authenticator attribute mismatch in M7"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_authenticator_mismatch_m8(dev, apdev):
"""WPS and Authenticator attribute mismatch in M8"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_authenticator_missing_m2(dev, apdev):
"""WPS and Authenticator attribute missing from M2"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_dev_passwd_id_p2p(dev, apdev):
"""WPS and M2 with different Device Password ID (P2P)"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_dev_passwd_id_change_pin_to_pbc(dev, apdev):
"""WPS and M2 with different Device Password ID (PIN to PBC)"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_dev_passwd_id_change_pbc_to_pin(dev, apdev):
"""WPS and M2 with different Device Password ID (PBC to PIN)"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_missing_dev_passwd_id(dev, apdev):
"""WPS and M2 without Device Password ID"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_missing_registrar_nonce(dev, apdev):
"""WPS and M2 without Registrar Nonce"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_missing_enrollee_nonce(dev, apdev):
"""WPS and M2 without Enrollee Nonce"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_missing_uuid_r(dev, apdev):
"""WPS and M2 without UUID-R"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_invalid(dev, apdev):
"""WPS and M2 parsing failure"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_missing_msg_type(dev, apdev):
"""WPS and M2 without Message Type"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_unknown_msg_type(dev, apdev):
"""WPS and M2 but unknown Message Type"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_unknown_opcode(dev, apdev):
"""WPS and M2 but unknown opcode"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_unknown_opcode2(dev, apdev):
"""WPS and M2 but unknown opcode (WSC_Start)"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_m2_unknown_opcode3(dev, apdev):
"""WPS and M2 but unknown opcode (WSC_Done)"""
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
dev[0].flush_scan_cache()
def wps_m2_but_other(dev, apdev, title, msgtype):
- addr,bssid,hapd = wps_start_ext(apdev, dev)
+ addr, bssid, hapd = wps_start_ext(apdev, dev)
wps_ext_eap_identity_req(dev, hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev, addr)
wps_ext_eap_wsc(dev, hapd, bssid, "EAP-WSC/Start")
dev.wait_disconnected()
def wps_m4_but_other(dev, apdev, title, msgtype):
- addr,bssid,hapd = wps_start_ext(apdev, dev)
+ addr, bssid, hapd = wps_start_ext(apdev, dev)
wps_ext_eap_identity_req(dev, hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev, addr)
wps_ext_eap_wsc(dev, hapd, bssid, "EAP-WSC/Start")
def test_ap_wps_config_methods(dev, apdev):
"""WPS configuration method parsing"""
ssid = "test-wps-conf"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "config_methods": "ethernet display ext_nfc_token int_nfc_token physical_display physical_push_button" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "config_methods": "ethernet display ext_nfc_token int_nfc_token physical_display physical_push_button"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "config_methods": "display push_button" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "config_methods": "display push_button"}
hapd2 = hostapd.add_ap(apdev[1], params)
def test_ap_wps_set_selected_registrar_proto(dev, apdev):
server = MyTCPServer(("127.0.0.1", 12345), WPSERHTTPServer)
server.timeout = 1
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 200:
logger.debug("Subscription SID " + sid)
server.handle_request()
- tests = [ (500, "10"),
- (200, "104a000110" + "1041000101" + "101200020000" +
- "105300023148" +
- "1049002c00372a0001200124111111111111222222222222333333333333444444444444555555555555666666666666" +
- "10480010362db47ba53a519188fb5458b986b2e4"),
- (200, "104a000110" + "1041000100" + "101200020000" +
- "105300020000"),
- (200, "104a000110" + "1041000100"),
- (200, "104a000110") ]
- for status,test in tests:
+ tests = [(500, "10"),
+ (200, "104a000110" + "1041000101" + "101200020000" +
+ "105300023148" +
+ "1049002c00372a0001200124111111111111222222222222333333333333444444444444555555555555666666666666" +
+ "10480010362db47ba53a519188fb5458b986b2e4"),
+ (200, "104a000110" + "1041000100" + "101200020000" +
+ "105300020000"),
+ (200, "104a000110" + "1041000100"),
+ (200, "104a000110")]
+ for status, test in tests:
tlvs = binascii.unhexlify(test)
newmsg = base64.b64encode(tlvs).decode()
msg = '<?xml version="1.0"?>\n'
msg += '<NewMessage>'
msg += newmsg
msg += "</NewMessage></u:SetSelectedRegistrar></s:Body></s:Envelope>"
- headers = { "Content-type": 'text/xml; charset="utf-8"' }
+ headers = {"Content-type": 'text/xml; charset="utf-8"'}
headers["SOAPAction"] = '"urn:schemas-wifialliance-org:service:WFAWLANConfig:1#%s"' % "SetSelectedRegistrar"
conn.request("POST", ctrlurl.path, msg, headers)
resp = conn.getresponse()
# Parse EAPOL header
if len(data) < 4:
raise Exception("No room for EAPOL header")
- version,type,length = struct.unpack('>BBH', data[0:4])
+ version, type, length = struct.unpack('>BBH', data[0:4])
msg['eapol_version'] = version
msg['eapol_type'] = type
msg['eapol_length'] = length
# Parse EAP header
if len(data) < 4:
raise Exception("No room for EAP header")
- code,identifier,length = struct.unpack('>BBH', data[0:4])
+ code, identifier, length = struct.unpack('>BBH', data[0:4])
msg['eap_code'] = code
msg['eap_identifier'] = identifier
msg['eap_length'] = length
while len(data) > 0:
if len(data) < 4:
raise Exception("Truncated attribute header")
- attr,length = struct.unpack('>HH', data[0:4])
+ attr, length = struct.unpack('>HH', data[0:4])
data = data[4:]
if length > len(data):
raise Exception("Truncated attribute 0x%04x" % attr)
authkey = keys[0:32]
keywrapkey = keys[32:48]
emsk = keys[48:80]
- return authkey,keywrapkey,emsk
+ return authkey, keywrapkey, emsk
def wsc_dev_pw_half_psk(authkey, dev_pw):
m = hmac.new(authkey, dev_pw.encode(), hashlib.sha256)
dev_pw_2 = dev_pw[len(dev_pw) // 2:]
psk1 = wsc_dev_pw_half_psk(authkey, dev_pw_1)
psk2 = wsc_dev_pw_half_psk(authkey, dev_pw_2)
- return psk1,psk2
+ return psk1, psk2
def build_attr_authenticator(authkey, prev_msg, curr_msg):
m = hmac.new(authkey, prev_msg + curr_msg, hashlib.sha256)
if len(decrypted) < 12:
raise Exception("Truncated Encrypted Settings plaintext")
kwa = decrypted[-12:]
- attr,length = struct.unpack(">HH", kwa[0:4])
+ attr, length = struct.unpack(">HH", kwa[0:4])
if attr != ATTR_KEY_WRAP_AUTH or length != 8:
raise Exception("Invalid KWA header")
kwa = kwa[4:]
m = hmac.new(dhkey, e_nonce + mac_addr + r_nonce, hashlib.sha256)
kdk = m.digest()
logger.debug("KDK: " + binascii.hexlify(kdk).decode())
- authkey,keywrapkey,emsk = wsc_keys(kdk)
+ authkey, keywrapkey, emsk = wsc_keys(kdk)
logger.debug("AuthKey: " + binascii.hexlify(authkey).decode())
logger.debug("KeyWrapKey: " + binascii.hexlify(keywrapkey).decode())
logger.debug("EMSK: " + binascii.hexlify(emsk).decode())
- return authkey,keywrapkey
+ return authkey, keywrapkey
def wsc_dev_pw_hash(authkey, dev_pw, e_pk, r_pk):
- psk1,psk2 = wsc_dev_pw_psk(authkey, dev_pw)
+ psk1, psk2 = wsc_dev_pw_psk(authkey, dev_pw)
logger.debug("PSK1: " + binascii.hexlify(psk1).decode())
logger.debug("PSK2: " + binascii.hexlify(psk2).decode())
m = hmac.new(authkey, s2 + psk2 + e_pk + r_pk, hashlib.sha256)
hash2 = m.digest()
logger.debug("Hash2: " + binascii.hexlify(hash2).decode())
- return s1,s2,hash1,hash2
+ return s1, s2, hash1, hash2
def build_m1(eap_id, uuid_e, mac_addr, e_nonce, e_pk,
manufacturer='', model_name='', config_methods='\x00\x00'):
def test_wps_ext(dev, apdev):
"""WPS against external implementation"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
logger.debug("Receive M2 from AP")
msg, m2_attrs, raw_m2_attrs = recv_wsc_msg(hapd, WSC_MSG, WPS_M2)
- authkey,keywrapkey = wsc_dh_kdf(m2_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, e_nonce,
- m2_attrs[ATTR_REGISTRAR_NONCE])
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk,
- m2_attrs[ATTR_PUBLIC_KEY])
+ authkey, keywrapkey = wsc_dh_kdf(m2_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, e_nonce,
+ m2_attrs[ATTR_REGISTRAR_NONCE])
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk,
+ m2_attrs[ATTR_PUBLIC_KEY])
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
logger.debug("Receive M1 from STA")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
def wps_start_kwa(dev, apdev):
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
eap_id = (msg['eap_identifier'] + 1) % 256
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
def test_wps_ext_kwa_proto_no_kwa(dev, apdev):
"""WPS and KWA error: No KWA attribute"""
- r_s1,keywrapkey,authkey,raw_m3_attrs,eap_id,bssid,attrs = wps_start_kwa(dev, apdev)
+ r_s1, keywrapkey, authkey, raw_m3_attrs, eap_id, bssid, attrs = wps_start_kwa(dev, apdev)
data = build_wsc_attr(ATTR_R_SNONCE1, r_s1)
# Encrypted Settings without KWA
iv = 16*b'\x99'
def test_wps_ext_kwa_proto_data_after_kwa(dev, apdev):
"""WPS and KWA error: Data after KWA"""
- r_s1,keywrapkey,authkey,raw_m3_attrs,eap_id,bssid,attrs = wps_start_kwa(dev, apdev)
+ r_s1, keywrapkey, authkey, raw_m3_attrs, eap_id, bssid, attrs = wps_start_kwa(dev, apdev)
data = build_wsc_attr(ATTR_R_SNONCE1, r_s1)
# Encrypted Settings and data after KWA
m = hmac.new(authkey, data, hashlib.sha256)
def test_wps_ext_kwa_proto_kwa_mismatch(dev, apdev):
"""WPS and KWA error: KWA mismatch"""
- r_s1,keywrapkey,authkey,raw_m3_attrs,eap_id,bssid,attrs = wps_start_kwa(dev, apdev)
+ r_s1, keywrapkey, authkey, raw_m3_attrs, eap_id, bssid, attrs = wps_start_kwa(dev, apdev)
data = build_wsc_attr(ATTR_R_SNONCE1, r_s1)
# Encrypted Settings and KWA with incorrect value
data += build_wsc_attr(ATTR_KEY_WRAP_AUTH, 8*'\x00')
def wps_run_cred_proto(dev, apdev, m8_cred, connect=False, no_connect=False):
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
eap_id = (msg['eap_identifier'] + 1) % 256
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
def test_wps_ext_proto_m2_no_public_key(dev, apdev):
"""WPS and no Public Key in M2"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
eap_id = (msg['eap_identifier'] + 1) % 256
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
def test_wps_ext_proto_m2_invalid_public_key(dev, apdev):
"""WPS and invalid Public Key in M2"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
eap_id = (msg['eap_identifier'] + 1) % 256
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
def test_wps_ext_proto_m2_public_key_oom(dev, apdev):
"""WPS and Public Key OOM in M2"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
eap_id = (msg['eap_identifier'] + 1) % 256
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
def test_wps_ext_proto_nack_m3(dev, apdev):
"""WPS and NACK M3"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
eap_id = (msg['eap_identifier'] + 1) % 256
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
def test_wps_ext_proto_nack_m5(dev, apdev):
"""WPS and NACK M5"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
eap_id = (msg['eap_identifier'] + 1) % 256
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
def wps_nack_m3(dev, apdev):
pin = "00000000"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pbc=True)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
eap_id = (msg['eap_identifier'] + 1) % 256
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
def wps_to_m3_helper(dev, apdev):
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
wps_ext_eap_wsc(dev[0], hapd, bssid, "EAP-WSC/Start")
msg, m1_attrs, raw_m1_attrs = recv_wsc_msg(dev[0], WSC_MSG, WPS_M1)
eap_id = (msg['eap_identifier'] + 1) % 256
- authkey,keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
- mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, pin,
- m1_attrs[ATTR_PUBLIC_KEY], e_pk)
+ authkey, keywrapkey = wsc_dh_kdf(m1_attrs[ATTR_PUBLIC_KEY], own_private,
+ mac_addr, m1_attrs[ATTR_ENROLLEE_NONCE],
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, pin,
+ m1_attrs[ATTR_PUBLIC_KEY],
+ e_pk)
logger.debug("Send M2 to STA")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, eap_id,
bssid = apdev['bssid']
ssid = "test-wps-conf"
appin = "12345670"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "ap_pin": appin }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "ap_pin": appin}
hapd = hostapd.add_ap(apdev, params)
dev.scan_for_bss(bssid, freq="2412")
dev.request("WPS_REG " + bssid + " " + appin)
- return addr,bssid,hapd
+ return addr, bssid, hapd
def wps_run_ap_settings_proto(dev, apdev, ap_settings, success):
- addr,bssid,hapd = wps_start_ext_reg(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext_reg(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
uuid_r = 16*b'\x33'
r_nonce = 16*b'\x44'
own_private, r_pk = wsc_dh_init()
- authkey,keywrapkey = wsc_dh_kdf(e_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- r_s1,r_s2,r_hash1,r_hash2 = wsc_dev_pw_hash(authkey, appin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(e_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ r_s1, r_s2, r_hash1, r_hash2 = wsc_dev_pw_hash(authkey, appin, e_pk, r_pk)
logger.debug("Send M2 to AP")
m2, raw_m2_attrs = build_m2(authkey, raw_m1_attrs, msg['eap_identifier'],
raise Exception("Unexpected message - expected WSC_Done")
logger.debug("Send WSC_ACK to AP")
- ack,attrs = build_ack(msg['eap_identifier'], e_nonce, r_nonce,
- eap_code=2)
+ ack, attrs = build_ack(msg['eap_identifier'], e_nonce, r_nonce,
+ eap_code=2)
send_wsc_msg(hapd, addr, ack)
dev[0].wait_disconnected()
else:
raise Exception("Unexpected message - expected WSC_NACK")
logger.debug("Send WSC_NACK to AP")
- nack,attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
- eap_code=2)
+ nack, attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
+ eap_code=2)
send_wsc_msg(hapd, addr, nack)
dev[0].wait_disconnected()
@remote_compatible
def test_wps_ext_ap_settings_m2d(dev, apdev):
"""WPS and AP Settings: M2D"""
- addr,bssid,hapd = wps_start_ext_reg(apdev[0], dev[0])
+ addr, bssid, hapd = wps_start_ext_reg(apdev[0], dev[0])
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
raise Exception("Unexpected message - expected WSC_NACK")
logger.debug("Send WSC_NACK to AP")
- nack,attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
- eap_code=2)
+ nack, attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
+ eap_code=2)
send_wsc_msg(hapd, dev.own_addr(), nack)
dev.wait_disconnected()
def test_wps_ext_m3_missing_e_hash1(dev, apdev):
"""WPS proto: M3 missing E-Hash1"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m3_missing_e_hash2(dev, apdev):
"""WPS proto: M3 missing E-Hash2"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m5_missing_e_snonce1(dev, apdev):
"""WPS proto: M5 missing E-SNonce1"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m5_e_snonce1_mismatch(dev, apdev):
"""WPS proto: M5 E-SNonce1 mismatch"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m7_missing_e_snonce2(dev, apdev):
"""WPS proto: M7 missing E-SNonce2"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m7_e_snonce2_mismatch(dev, apdev):
"""WPS proto: M7 E-SNonce2 mismatch"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m1_pubkey_oom(dev, apdev):
"""WPS proto: M1 PubKey OOM"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
def test_wps_ext_m3_m1(dev, apdev):
"""WPS proto: M3 replaced with M1"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3(M1) to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m5_m3(dev, apdev):
"""WPS proto: M5 replaced with M3"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m3_m2(dev, apdev):
"""WPS proto: M3 replaced with M2"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3(M2) to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m3_m5(dev, apdev):
"""WPS proto: M3 replaced with M5"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3(M5) to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m3_m7(dev, apdev):
"""WPS proto: M3 replaced with M7"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3(M7) to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m3_done(dev, apdev):
"""WPS proto: M3 replaced with WSC_Done"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3(WSC_Done) to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m2_nack_invalid(dev, apdev):
"""WPS proto: M2 followed by invalid NACK"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_NACK to AP")
attrs = b'\x10\x00\x00'
def test_wps_ext_m2_nack_no_msg_type(dev, apdev):
"""WPS proto: M2 followed by NACK without Msg Type"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_NACK to AP")
- nack,attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
- msg_type=None, eap_code=2)
+ nack, attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
+ msg_type=None, eap_code=2)
send_wsc_msg(hapd, addr, nack)
wps_wait_eap_failure(hapd, dev[0])
def test_wps_ext_m2_nack_invalid_msg_type(dev, apdev):
"""WPS proto: M2 followed by NACK with invalid Msg Type"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_NACK to AP")
- nack,attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
- msg_type=WPS_WSC_ACK, eap_code=2)
+ nack, attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
+ msg_type=WPS_WSC_ACK, eap_code=2)
send_wsc_msg(hapd, addr, nack)
wps_wait_eap_failure(hapd, dev[0])
def test_wps_ext_m2_nack_e_nonce_mismatch(dev, apdev):
"""WPS proto: M2 followed by NACK with e-nonce mismatch"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_NACK to AP")
- nack,attrs = build_nack(msg['eap_identifier'], 16*b'\x00', r_nonce,
- eap_code=2)
+ nack, attrs = build_nack(msg['eap_identifier'], 16*b'\x00', r_nonce,
+ eap_code=2)
send_wsc_msg(hapd, addr, nack)
wps_wait_eap_failure(hapd, dev[0])
def test_wps_ext_m2_nack_no_config_error(dev, apdev):
"""WPS proto: M2 followed by NACK without Config Error"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_NACK to AP")
- nack,attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
- config_error=None, eap_code=2)
+ nack, attrs = build_nack(msg['eap_identifier'], e_nonce, r_nonce,
+ config_error=None, eap_code=2)
send_wsc_msg(hapd, addr, nack)
wps_wait_eap_failure(hapd, dev[0])
def test_wps_ext_m2_ack_invalid(dev, apdev):
"""WPS proto: M2 followed by invalid ACK"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_ACK to AP")
attrs = b'\x10\x00\x00'
def test_wps_ext_m2_ack(dev, apdev):
"""WPS proto: M2 followed by ACK"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_ACK to AP")
- ack,attrs = build_ack(msg['eap_identifier'], e_nonce, r_nonce, eap_code=2)
+ ack, attrs = build_ack(msg['eap_identifier'], e_nonce, r_nonce, eap_code=2)
send_wsc_msg(hapd, addr, ack)
wps_wait_eap_failure(hapd, dev[0])
def test_wps_ext_m2_ack_no_msg_type(dev, apdev):
"""WPS proto: M2 followed by ACK missing Msg Type"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_ACK to AP")
- ack,attrs = build_ack(msg['eap_identifier'], e_nonce, r_nonce,
- msg_type=None, eap_code=2)
+ ack, attrs = build_ack(msg['eap_identifier'], e_nonce, r_nonce,
+ msg_type=None, eap_code=2)
send_wsc_msg(hapd, addr, ack)
wps_wait_eap_failure(hapd, dev[0])
def test_wps_ext_m2_ack_invalid_msg_type(dev, apdev):
"""WPS proto: M2 followed by ACK with invalid Msg Type"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_ACK to AP")
- ack,attrs = build_ack(msg['eap_identifier'], e_nonce, r_nonce,
+ ack, attrs = build_ack(msg['eap_identifier'], e_nonce, r_nonce,
msg_type=WPS_WSC_NACK, eap_code=2)
send_wsc_msg(hapd, addr, ack)
def test_wps_ext_m2_ack_e_nonce_mismatch(dev, apdev):
"""WPS proto: M2 followed by ACK with e-nonce mismatch"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send WSC_ACK to AP")
- ack,attrs = build_ack(msg['eap_identifier'], 16*b'\x00', r_nonce,
- eap_code=2)
+ ack, attrs = build_ack(msg['eap_identifier'], 16*b'\x00', r_nonce,
+ eap_code=2)
send_wsc_msg(hapd, addr, ack)
wps_wait_eap_failure(hapd, dev[0])
def test_wps_ext_m1_invalid(dev, apdev):
"""WPS proto: M1 failing parsing"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
def test_wps_ext_m1_missing_msg_type(dev, apdev):
"""WPS proto: M1 missing Msg Type"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
def wps_ext_wsc_done(dev, apdev):
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m7_no_encr_settings(dev, apdev):
"""WPS proto: M7 without Encr Settings"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
r_nonce = m2_attrs[ATTR_REGISTRAR_NONCE]
r_pk = m2_attrs[ATTR_PUBLIC_KEY]
- authkey,keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
- r_nonce)
- e_s1,e_s2,e_hash1,e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
+ authkey, keywrapkey = wsc_dh_kdf(r_pk, own_private, mac_addr, e_nonce,
+ r_nonce)
+ e_s1, e_s2, e_hash1, e_hash2 = wsc_dev_pw_hash(authkey, pin, e_pk, r_pk)
logger.debug("Send M3 to AP")
attrs = build_wsc_attr(ATTR_VERSION, '\x10')
def test_wps_ext_m1_workaround(dev, apdev):
"""WPS proto: M1 Manufacturer/Model workaround"""
pin = "12345670"
- addr,bssid,hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
+ addr, bssid, hapd = wps_start_ext(apdev[0], dev[0], pin=pin)
wps_ext_eap_identity_req(dev[0], hapd, bssid)
wps_ext_eap_identity_resp(hapd, dev[0], addr)
with alloc_fail(hapd, 1, "web_connection_parse_subscribe"):
conn = HTTPConnection(url.netloc)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
try:
resp = conn.getresponse()
with alloc_fail(hapd, 1, "dup_binstr;web_connection_parse_subscribe"):
conn = HTTPConnection(url.netloc)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("SUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
resp = conn.getresponse()
if resp.status != 500:
with alloc_fail(hapd, 1, "wpabuf_alloc;web_connection_parse_unsubscribe"):
conn = HTTPConnection(url.netloc)
- headers = { "callback": '<http://127.0.0.1:12345/event>',
- "NT": "upnp:event",
- "timeout": "Second-1234" }
+ headers = {"callback": '<http://127.0.0.1:12345/event>',
+ "NT": "upnp:event",
+ "timeout": "Second-1234"}
conn.request("UNSUBSCRIBE", eventurl.path, "\r\n\r\n", headers)
try:
resp = conn.getresponse()
"""WPS and EAP-WSC error cases"""
ssid = "test-wps-conf-pin"
appin = "12345670"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "fragment_size": "300", "ap_pin": appin }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "fragment_size": "300", "ap_pin": appin}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
wait_scan_stopped(dev[0])
dev[0].dump_monitor()
- tests = [ "eap_wsc_init",
- "eap_msg_alloc;eap_wsc_build_msg",
- "wpabuf_alloc;eap_wsc_process_fragment" ]
+ tests = ["eap_wsc_init",
+ "eap_msg_alloc;eap_wsc_build_msg",
+ "wpabuf_alloc;eap_wsc_process_fragment"]
for func in tests:
with alloc_fail(dev[0], 1, func):
dev[0].request("WPS_PIN %s %s" % (bssid, pin))
pass
def _test_ap_wps_and_bss_limit(dev, apdev):
- params = { "ssid": "test-wps", "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP" }
+ params = {"ssid": "test-wps", "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "test-wps-2", "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "1234567890", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP" }
+ params = {"ssid": "test-wps-2", "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "1234567890", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"}
hapd2 = hostapd.add_ap(apdev[1], params)
id = dev[1].add_network()
def test_ap_wps_pbc_2ap(dev, apdev):
"""WPS PBC with two APs advertising same SSID"""
- params = { "ssid": "wps", "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wps_independent": "1"}
+ params = {"ssid": "wps", "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wps_independent": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "wps", "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "123456789", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wps_independent": "1"}
+ params = {"ssid": "wps", "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "123456789", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wps_independent": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
hapd.request("WPS_PBC")
ssid = "wps-er-enrollee-to-conf-ap"
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
ssid = "wps-er-enrollee-to-conf-ap"
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
"""WPS AP trying to ignore broadcast SSID"""
ssid = "test-wps"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1",
- "ignore_broadcast_ssid": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1",
+ "ignore_broadcast_ssid": "1"})
if "FAIL" not in hapd.request("WPS_PBC"):
raise Exception("WPS unexpectedly enabled")
"""WPS AP trying to enable WEP"""
ssid = "test-wps"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1",
- "ieee80211n": "0", "wep_key0": '"hello"' })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1",
+ "ieee80211n": "0", "wep_key0": '"hello"'})
if "FAIL" not in hapd.request("WPS_PBC"):
raise Exception("WPS unexpectedly enabled")
"""WPS AP trying to enable TKIP"""
ssid = "test-wps"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1",
- "ieee80211n": "0", "wpa": '1',
- "wpa_key_mgmt": "WPA-PSK",
- "wpa_passphrase": "12345678" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1",
+ "ieee80211n": "0", "wpa": '1',
+ "wpa_key_mgmt": "WPA-PSK",
+ "wpa_passphrase": "12345678"})
if "FAIL" not in hapd.request("WPS_PBC"):
raise Exception("WPS unexpectedly enabled")
"""WPS PIN provisioning with configured AP using dummy cred"""
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
hapd.request("WPS_PIN any 12345670")
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
dev[0].dump_monitor()
def test_ap_wps_rf_bands(dev, apdev):
"""WPS and wps_rf_bands configuration"""
ssid = "test-wps-conf"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wps_rf_bands": "ag" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wps_rf_bands": "ag"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
def test_ap_wps_pbc_in_m1(dev, apdev):
"""WPS and pbc_in_m1"""
ssid = "test-wps-conf"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "config_methods": "virtual_push_button virtual_display",
- "pbc_in_m1": "1" }
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "config_methods": "virtual_push_button virtual_display",
+ "pbc_in_m1": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
"""WPS and random UUID on Enrollee"""
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
config = os.path.join(params['logdir'], 'ap_wps_random_uuid.conf')
with open(config, "w") as f:
raise HwsimSkip("Cipher %s not supported" % cipher)
ssid = "test-wps-conf-pin"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": cipher })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": cipher})
logger.info("WPS provisioning step")
pin = dev[0].wps_read_pin()
hapd.request("WPS_PIN any " + pin)
def run_ap_wps_and_sae(dev, apdev):
ssid = "test-wps-sae"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1",
- "wps_cred_add_sae": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1",
+ "wps_cred_add_sae": "1"})
logger.info("WPS provisioning step")
pin = dev[0].wps_read_pin()
hapd.request("WPS_PIN any " + pin)
def run_ap_wps_conf_and_sae(dev, apdev):
ssid = "test-wps-conf-sae"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "ieee80211w": "1", "sae_require_mfp": "1",
- "wpa_key_mgmt": "WPA-PSK SAE",
- "rsn_pairwise": "CCMP" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "ieee80211w": "1", "sae_require_mfp": "1",
+ "wpa_key_mgmt": "WPA-PSK SAE",
+ "rsn_pairwise": "CCMP"})
dev[0].set("wps_cred_add_sae", "1")
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
ssid = "test-wps-init-ap-pin-sae"
appin = "12345670"
hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "ap_pin": appin, "wps_cred_add_sae": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "ap_pin": appin, "wps_cred_add_sae": "1"})
logger.info("WPS configuration step")
dev[0].set("wps_cred_add_sae", "1")
dev[0].scan_for_bss(apdev[0]['bssid'], freq=2412)
from utils import alloc_fail, fail_test, wait_fail_trigger
def authsrv_params():
- params = { "ssid": "as", "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18128',
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "eap_sim_db": "unix:/tmp/hlr_auc_gw.sock",
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key",
- "eap_message": "hello" }
+ params = {"ssid": "as", "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18128',
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "eap_sim_db": "unix:/tmp/hlr_auc_gw.sock",
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key",
+ "eap_message": "hello"}
return params
def test_authsrv_oom(dev, apdev):
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ "radius_server_encapsulate_eap",
- "radius_server_receive_auth" ]
+ tests = ["radius_server_encapsulate_eap",
+ "radius_server_receive_auth"]
for t in tests:
with alloc_fail(authsrv, 1, t):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
dev[0].wait_disconnected()
dev[0].dump_monitor()
- tests = [ "radius_msg_add_attr;radius_server_encapsulate_eap",
- "radius_msg_add_eap;radius_server_encapsulate_eap",
- "radius_msg_finish_srv;radius_server_encapsulate_eap" ]
+ tests = ["radius_msg_add_attr;radius_server_encapsulate_eap",
+ "radius_msg_add_eap;radius_server_encapsulate_eap",
+ "radius_msg_finish_srv;radius_server_encapsulate_eap"]
for t in tests:
with fail_test(authsrv, 1, t):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
# The first two would be fine to run with any server build; the rest are
# actually supposed to fail, but they don't fail when using a server build
# that does not support the TLS protocol tests.
- tests = [ "foo@test-unknown",
- "foo@test-tls-unknown",
- "foo@test-tls-1",
- "foo@test-tls-2",
- "foo@test-tls-3",
- "foo@test-tls-4",
- "foo@test-tls-5",
- "foo@test-tls-6",
- "foo@test-tls-7",
- "foo@test-tls-8" ]
+ tests = ["foo@test-unknown",
+ "foo@test-tls-unknown",
+ "foo@test-tls-1",
+ "foo@test-tls-2",
+ "foo@test-tls-3",
+ "foo@test-tls-4",
+ "foo@test-tls-5",
+ "foo@test-tls-6",
+ "foo@test-tls-7",
+ "foo@test-tls-8"]
for t in tests:
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
eap="TTLS", identity="user",
def test_autoscan_periodic(dev, apdev):
"""autoscan_periodic"""
- hostapd.add_ap(apdev[0], { "ssid": "autoscan" })
+ hostapd.add_ap(apdev[0], {"ssid": "autoscan"})
try:
if "OK" not in dev[0].request("AUTOSCAN periodic:1"):
@remote_compatible
def test_autoscan_exponential(dev, apdev):
"""autoscan_exponential"""
- hostapd.add_ap(apdev[0], { "ssid": "autoscan" })
+ hostapd.add_ap(apdev[0], {"ssid": "autoscan"})
try:
if "OK" not in dev[0].request("AUTOSCAN exponential:2:10"):
def test_bgscan_simple(dev, apdev):
"""bgscan_simple"""
- hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
- hostapd.add_ap(apdev[1], { "ssid": "bgscan" })
+ hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
+ hostapd.add_ap(apdev[1], {"ssid": "bgscan"})
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
bgscan="simple:1:-20:2")
def test_bgscan_simple_beacon_loss(dev, apdev):
"""bgscan_simple and beacon loss"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
bgscan="simple:1:-20:2")
def test_bgscan_simple_scan_failure(dev, apdev):
"""bgscan_simple and scan failure"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
bgscan="simple:1:-20:2")
def test_bgscan_simple_scanning(dev, apdev):
"""bgscan_simple and scanning behavior"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
bgscan="simple:1:-20:2")
def test_bgscan_simple_same_scan_int(dev, apdev):
"""bgscan_simple and same short/long scan interval"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
bgscan="simple:1:-20:1")
def test_bgscan_simple_oom(dev, apdev):
"""bgscan_simple OOM"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
with alloc_fail(dev[0], 1, "bgscan_simple_init"):
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
def test_bgscan_simple_driver_conf_failure(dev, apdev):
"""bgscan_simple driver configuration failure"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
with fail_test(dev[0], 1, "bgscan_simple_init"):
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
def test_bgscan_learn(dev, apdev):
"""bgscan_learn"""
- hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
- hostapd.add_ap(apdev[1], { "ssid": "bgscan" })
+ hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
+ hostapd.add_ap(apdev[1], {"ssid": "bgscan"})
try:
os.remove("/tmp/test_bgscan_learn.bgscan")
def test_bgscan_learn_beacon_loss(dev, apdev):
"""bgscan_simple and beacon loss"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
bgscan="learn:1:-20:2")
def test_bgscan_learn_scan_failure(dev, apdev):
"""bgscan_learn and scan failure"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
bgscan="learn:1:-20:2")
def test_bgscan_learn_oom(dev, apdev):
"""bgscan_learn OOM"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
with alloc_fail(dev[0], 1, "bgscan_learn_init"):
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
def test_bgscan_learn_driver_conf_failure(dev, apdev):
"""bgscan_learn driver configuration failure"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
with fail_test(dev[0], 1, "bgscan_learn_init"):
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
def test_bgscan_unknown_module(dev, apdev):
"""bgscan init failing due to unknown module"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "bgscan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
bgscan="unknown:-20:2")
@remote_compatible
def test_cfg80211_disassociate(dev, apdev):
"""cfg80211 disassociation command"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
attrs += build_nl80211_attr_mac('MAC', apdev[0]['bssid'])
nl80211_command(dev[0], 'DISASSOCIATE', attrs)
- ev = hapd.wait_event([ "AP-STA-DISCONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-DISCONNECTED"], timeout=5)
if ev is None:
raise Exception("No disconnection event received from hostapd")
def test_cfg80211_wep_key_idx_change(dev, apdev):
"""WEP Shared Key authentication and key index change without deauth"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wep-shared-key",
- "wep_key0": '"hello12345678"',
- "wep_key1": '"other12345678"',
- "auth_algs": "2" })
+ {"ssid": "wep-shared-key",
+ "wep_key0": '"hello12345678"',
+ "wep_key1": '"other12345678"',
+ "auth_algs": "2"})
id = dev[0].connect("wep-shared-key", key_mgmt="NONE", auth_alg="SHARED",
wep_key0='"hello12345678"',
wep_key1='"other12345678"',
@remote_compatible
def test_cfg80211_hostapd_ext_sta_remove(dev, apdev):
"""cfg80211 DEL_STATION issued externally to hostapd"""
- hapd = hostapd.add_ap(apdev[0],
- { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
id = dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
ifindex = int(hapd.get_driver_status_field("ifindex"))
def test_connect_cmd_open(dev, apdev):
"""Open connection using cfg80211 connect command"""
- params = { "ssid": "sta-connect",
- "manage_p2p": "1",
- "allow_cross_connection": "1" }
+ params = {"ssid": "sta-connect",
+ "manage_p2p": "1",
+ "allow_cross_connection": "1"}
hostapd.add_ap(apdev[0], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
def test_connect_cmd_wep(dev, apdev):
"""WEP Open System using cfg80211 connect command"""
- params = { "ssid": "sta-connect-wep", "wep_key0": '"hello"' }
+ params = {"ssid": "sta-connect-wep", "wep_key0": '"hello"'}
hapd = hostapd.add_ap(apdev[0], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
def test_connect_cmd_wep_shared(dev, apdev):
"""WEP Shared key using cfg80211 connect command"""
- params = { "ssid": "sta-connect-wep", "wep_key0": '"hello"',
- "auth_algs": "2" }
+ params = {"ssid": "sta-connect-wep", "wep_key0": '"hello"',
+ "auth_algs": "2"}
hapd = hostapd.add_ap(apdev[0], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
def test_connect_cmd_p2p_management(dev, apdev):
"""Open connection using cfg80211 connect command and AP using P2P management"""
- params = { "ssid": "sta-connect",
- "manage_p2p": "1",
- "allow_cross_connection": "0" }
+ params = {"ssid": "sta-connect",
+ "manage_p2p": "1",
+ "allow_cross_connection": "0"}
hostapd.add_ap(apdev[0], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
def test_connect_cmd_concurrent_grpform_while_connecting(dev, apdev):
"""Concurrent P2P group formation while connecting to an AP using cfg80211 connect command"""
logger.info("Start connection to an infrastructure AP")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
def test_connect_cmd_reject_assoc(dev, apdev):
"""Connection using cfg80211 connect command getting rejected"""
- params = { "ssid": "sta-connect",
- "require_ht": "1" }
+ params = {"ssid": "sta-connect",
+ "require_ht": "1"}
hostapd.add_ap(apdev[0], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
def test_connect_cmd_disconnect_event(dev, apdev):
"""Connection using cfg80211 connect command getting disconnected by the AP"""
- params = { "ssid": "sta-connect" }
+ params = {"ssid": "sta-connect"}
hapd = hostapd.add_ap(apdev[0], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
def test_connect_cmd_roam(dev, apdev):
"""cfg80211 connect command to trigger roam"""
- params = { "ssid": "sta-connect" }
+ params = {"ssid": "sta-connect"}
hostapd.add_ap(apdev[0], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
def test_connect_cmd_bssid_hint(dev, apdev):
"""cfg80211 connect command with bssid_hint"""
- params = { "ssid": "sta-connect" }
+ params = {"ssid": "sta-connect"}
hostapd.add_ap(apdev[0], params)
hostapd.add_ap(apdev[1], params)
wpas = dbus.Interface(wpas_obj, WPAS_DBUS_SERVICE)
path = wpas.GetInterface(dev.ifname)
if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
- return (bus,wpas_obj,path,if_obj)
+ return (bus, wpas_obj, path, if_obj)
except Exception as e:
raise HwsimSkip("Could not connect to D-Bus: %s" % e)
def start_ap(ap, ssid="test-wps",
ap_uuid="27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"):
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "ap_pin": "12345670", "uuid": ap_uuid}
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "ap_pin": "12345670", "uuid": ap_uuid}
return hostapd.add_ap(ap, params)
def test_dbus_getall(dev, apdev):
"""D-Bus GetAll"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
props = wpas_obj.GetAll(WPAS_DBUS_SERVICE,
dbus_interface=dbus.PROPERTIES_IFACE)
if len(res) != 0:
raise Exception("Unexpected Networks entry: " + str(res))
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
bssid = apdev[0]['bssid']
dev[0].scan_for_bss(bssid, freq=2412)
id = dev[0].add_network()
def test_dbus_getall_oom(dev, apdev):
"""D-Bus GetAll wpa_config_get_all() OOM"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
id = dev[0].add_network()
dev[0].set_network(id, "disabled", "0")
def test_dbus_properties(dev, apdev):
"""D-Bus Get/Set fi.w1.wpa_supplicant1 properties"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
dbus_get(dbus, wpas_obj, "DebugLevel", expect="msgdump")
dbus_set(dbus, wpas_obj, "DebugLevel", "debug")
dbus_get(dbus, wpas_obj, "DebugLevel", expect="debug")
- for (val,err) in [ (3, "Error.Failed: wrong property type"),
- ("foo", "Error.Failed: wrong debug level value") ]:
+ for (val, err) in [(3, "Error.Failed: wrong property type"),
+ ("foo", "Error.Failed: wrong debug level value")]:
try:
dbus_set(dbus, wpas_obj, "DebugLevel", val)
raise Exception("Invalid DebugLevel value accepted: " + str(val))
def test_dbus_set_global_properties(dev, apdev):
"""D-Bus Get/Set fi.w1.wpa_supplicant1 interface global properties"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
dev[0].set("model_name", "")
- props = [ ('Okc', '0', '1'), ('ModelName', '', 'blahblahblah') ]
+ props = [('Okc', '0', '1'), ('ModelName', '', 'blahblahblah')]
for p in props:
res = if_obj.Get(WPAS_DBUS_IFACE, p[0],
def test_dbus_invalid_method(dev, apdev):
"""D-Bus invalid method"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
try:
dev[0].set("device_type", "0-00000000-0")
def _test_dbus_get_set_wps(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
if_obj.Get(WPAS_DBUS_IFACE_WPS, "ConfigMethods",
dbus_interface=dbus.PROPERTIES_IFACE)
if val != expected_val:
raise Exception("Unexpected Get(ProcessCredentials) result({}): {}".format(i, val))
- tests = [ ("device_name", "DeviceName"),
- ("manufacturer", "Manufacturer"),
- ("model_name", "ModelName"),
- ("model_number", "ModelNumber"),
- ("serial_number", "SerialNumber") ]
+ tests = [("device_name", "DeviceName"),
+ ("manufacturer", "Manufacturer"),
+ ("model_name", "ModelName"),
+ ("model_number", "ModelNumber"),
+ ("serial_number", "SerialNumber")]
- for f1,f2 in tests:
+ for f1, f2 in tests:
val2 = "test-value-test"
dev[0].set(f1, val2)
val = if_obj.Get(WPAS_DBUS_IFACE_WPS, f2,
def test_dbus_wps_invalid(dev, apdev):
"""D-Bus invaldi WPS operation"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
- failures = [ {'Role': 'foo', 'Type': 'pbc'},
- {'Role': 123, 'Type': 'pbc'},
- {'Type': 'pbc'},
- {'Role': 'enrollee'},
- {'Role': 'registrar'},
- {'Role': 'enrollee', 'Type': 123},
- {'Role': 'enrollee', 'Type': 'foo'},
- {'Role': 'enrollee', 'Type': 'pbc',
- 'Bssid': '02:33:44:55:66:77'},
- {'Role': 'enrollee', 'Type': 'pin', 'Pin': 123},
- {'Role': 'enrollee', 'Type': 'pbc',
- 'Bssid': dbus.ByteArray(b'12345')},
- {'Role': 'enrollee', 'Type': 'pbc',
- 'P2PDeviceAddress': 12345},
- {'Role': 'enrollee', 'Type': 'pbc',
- 'P2PDeviceAddress': dbus.ByteArray(b'12345')},
- {'Role': 'enrollee', 'Type': 'pbc', 'Foo': 'bar'} ]
+ failures = [{'Role': 'foo', 'Type': 'pbc'},
+ {'Role': 123, 'Type': 'pbc'},
+ {'Type': 'pbc'},
+ {'Role': 'enrollee'},
+ {'Role': 'registrar'},
+ {'Role': 'enrollee', 'Type': 123},
+ {'Role': 'enrollee', 'Type': 'foo'},
+ {'Role': 'enrollee', 'Type': 'pbc',
+ 'Bssid': '02:33:44:55:66:77'},
+ {'Role': 'enrollee', 'Type': 'pin', 'Pin': 123},
+ {'Role': 'enrollee', 'Type': 'pbc',
+ 'Bssid': dbus.ByteArray(b'12345')},
+ {'Role': 'enrollee', 'Type': 'pbc',
+ 'P2PDeviceAddress': 12345},
+ {'Role': 'enrollee', 'Type': 'pbc',
+ 'P2PDeviceAddress': dbus.ByteArray(b'12345')},
+ {'Role': 'enrollee', 'Type': 'pbc', 'Foo': 'bar'}]
for args in failures:
try:
wps.Start(args)
def test_dbus_wps_oom(dev, apdev):
"""D-Bus WPS operation (OOM)"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
with alloc_fail_dbus(dev[0], 1, "=wpas_dbus_getter_state", "Get"):
if_obj.Get(WPAS_DBUS_IFACE, "State",
dbus_interface=dbus.PROPERTIES_IFACE)
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
bssid = apdev[0]['bssid']
dev[0].scan_for_bss(bssid, freq=2412)
dev[0].request("SET wps_cred_processing 0")
def _test_dbus_wps_pbc(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
hapd = start_ap(apdev[0])
def test_dbus_wps_pbc_overlap(dev, apdev):
"""D-Bus WPS/PBC operation and signal for PBC overlap"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
hapd = start_ap(apdev[0])
dev[0].request("SET wps_cred_processing 0")
def _test_dbus_wps_pin(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
hapd = start_ap(apdev[0])
def start_pin(self, *args):
logger.debug("start_pin")
- bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':','').encode()))
+ bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':', '').encode()))
wps.Start({'Role': 'enrollee', 'Type': 'pin', 'Pin': '12345670',
'Bssid': bssid_ay})
return False
dev[0].request("SET wps_cred_processing 0")
def _test_dbus_wps_pin2(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
hapd = start_ap(apdev[0])
def start_pin(self, *args):
logger.debug("start_pin")
- bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':','').encode()))
+ bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':', '').encode()))
res = wps.Start({'Role': 'enrollee', 'Type': 'pin',
'Bssid': bssid_ay})
pin = res['Pin']
dev[0].request("SET wps_cred_processing 0")
def _test_dbus_wps_pin_m2d(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
hapd = start_ap(apdev[0])
def start_pin(self, *args):
logger.debug("start_pin")
- bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':','').encode()))
+ bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':', '').encode()))
wps.Start({'Role': 'enrollee', 'Type': 'pin', 'Pin': '12345670',
'Bssid': bssid_ay})
return False
dev[0].request("SET wps_cred_processing 0")
def _test_dbus_wps_reg(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
hapd = start_ap(apdev[0])
def start_reg(self, *args):
logger.debug("start_reg")
- bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':','').encode()))
+ bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':', '').encode()))
wps.Start({'Role': 'registrar', 'Type': 'pin',
'Pin': '12345670', 'Bssid': bssid_ay})
return False
def test_dbus_wps_cancel(dev, apdev):
"""D-Bus WPS Cancel operation"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wps = dbus.Interface(if_obj, WPAS_DBUS_IFACE_WPS)
hapd = start_ap(apdev[0])
wps.Cancel()
dev[0].scan_for_bss(bssid, freq="2412")
- bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':','').encode()))
+ bssid_ay = dbus.ByteArray(binascii.unhexlify(bssid.replace(':', '').encode()))
wps.Start({'Role': 'enrollee', 'Type': 'pin', 'Pin': '12345670',
'Bssid': bssid_ay})
wps.Cancel()
def test_dbus_scan_invalid(dev, apdev):
"""D-Bus invalid scan method"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
- tests = [ ({}, "InvalidArgs"),
- ({'Type': 123}, "InvalidArgs"),
- ({'Type': 'foo'}, "InvalidArgs"),
- ({'Type': 'active', 'Foo': 'bar'}, "InvalidArgs"),
- ({'Type': 'active', 'SSIDs': 'foo'}, "InvalidArgs"),
- ({'Type': 'active', 'SSIDs': ['foo']}, "InvalidArgs"),
- ({'Type': 'active',
- 'SSIDs': [ dbus.ByteArray(b"1"), dbus.ByteArray(b"2"),
- dbus.ByteArray(b"3"), dbus.ByteArray(b"4"),
- dbus.ByteArray(b"5"), dbus.ByteArray(b"6"),
- dbus.ByteArray(b"7"), dbus.ByteArray(b"8"),
- dbus.ByteArray(b"9"), dbus.ByteArray(b"10"),
- dbus.ByteArray(b"11"), dbus.ByteArray(b"12"),
- dbus.ByteArray(b"13"), dbus.ByteArray(b"14"),
- dbus.ByteArray(b"15"), dbus.ByteArray(b"16"),
- dbus.ByteArray(b"17") ]},
- "InvalidArgs"),
- ({'Type': 'active',
- 'SSIDs': [ dbus.ByteArray(b"1234567890abcdef1234567890abcdef1") ]},
- "InvalidArgs"),
- ({'Type': 'active', 'IEs': 'foo'}, "InvalidArgs"),
- ({'Type': 'active', 'IEs': ['foo']}, "InvalidArgs"),
- ({'Type': 'active', 'Channels': 2412 }, "InvalidArgs"),
- ({'Type': 'active', 'Channels': [ 2412 ] }, "InvalidArgs"),
- ({'Type': 'active',
- 'Channels': [ (dbus.Int32(2412), dbus.UInt32(20)) ] },
- "InvalidArgs"),
- ({'Type': 'active',
- 'Channels': [ (dbus.UInt32(2412), dbus.Int32(20)) ] },
- "InvalidArgs"),
- ({'Type': 'active', 'AllowRoam': "yes" }, "InvalidArgs"),
- ({'Type': 'passive', 'IEs': [ dbus.ByteArray(b"\xdd\x00") ]},
- "InvalidArgs"),
- ({'Type': 'passive', 'SSIDs': [ dbus.ByteArray(b"foo") ]},
- "InvalidArgs")]
- for (t,err) in tests:
+ tests = [({}, "InvalidArgs"),
+ ({'Type': 123}, "InvalidArgs"),
+ ({'Type': 'foo'}, "InvalidArgs"),
+ ({'Type': 'active', 'Foo': 'bar'}, "InvalidArgs"),
+ ({'Type': 'active', 'SSIDs': 'foo'}, "InvalidArgs"),
+ ({'Type': 'active', 'SSIDs': ['foo']}, "InvalidArgs"),
+ ({'Type': 'active',
+ 'SSIDs': [dbus.ByteArray(b"1"), dbus.ByteArray(b"2"),
+ dbus.ByteArray(b"3"), dbus.ByteArray(b"4"),
+ dbus.ByteArray(b"5"), dbus.ByteArray(b"6"),
+ dbus.ByteArray(b"7"), dbus.ByteArray(b"8"),
+ dbus.ByteArray(b"9"), dbus.ByteArray(b"10"),
+ dbus.ByteArray(b"11"), dbus.ByteArray(b"12"),
+ dbus.ByteArray(b"13"), dbus.ByteArray(b"14"),
+ dbus.ByteArray(b"15"), dbus.ByteArray(b"16"),
+ dbus.ByteArray(b"17")]},
+ "InvalidArgs"),
+ ({'Type': 'active',
+ 'SSIDs': [dbus.ByteArray(b"1234567890abcdef1234567890abcdef1")]},
+ "InvalidArgs"),
+ ({'Type': 'active', 'IEs': 'foo'}, "InvalidArgs"),
+ ({'Type': 'active', 'IEs': ['foo']}, "InvalidArgs"),
+ ({'Type': 'active', 'Channels': 2412}, "InvalidArgs"),
+ ({'Type': 'active', 'Channels': [2412]}, "InvalidArgs"),
+ ({'Type': 'active',
+ 'Channels': [(dbus.Int32(2412), dbus.UInt32(20))]},
+ "InvalidArgs"),
+ ({'Type': 'active',
+ 'Channels': [(dbus.UInt32(2412), dbus.Int32(20))]},
+ "InvalidArgs"),
+ ({'Type': 'active', 'AllowRoam': "yes"}, "InvalidArgs"),
+ ({'Type': 'passive', 'IEs': [dbus.ByteArray(b"\xdd\x00")]},
+ "InvalidArgs"),
+ ({'Type': 'passive', 'SSIDs': [dbus.ByteArray(b"foo")]},
+ "InvalidArgs")]
+ for (t, err) in tests:
try:
iface.Scan(t)
raise Exception("Invalid Scan() arguments accepted: " + str(t))
def test_dbus_scan_oom(dev, apdev):
"""D-Bus scan method and OOM"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
with alloc_fail_dbus(dev[0], 1,
"wpa_scan_clone_params;wpas_dbus_handler_scan",
"Scan", expected="ScanError: Scan request rejected"):
- iface.Scan({ 'Type': 'passive',
- 'Channels': [ (dbus.UInt32(2412), dbus.UInt32(20)) ] })
+ iface.Scan({'Type': 'passive',
+ 'Channels': [(dbus.UInt32(2412), dbus.UInt32(20))]})
with alloc_fail_dbus(dev[0], 1,
"=wpas_dbus_get_scan_channels;wpas_dbus_handler_scan",
"Scan"):
- iface.Scan({ 'Type': 'passive',
- 'Channels': [ (dbus.UInt32(2412), dbus.UInt32(20)) ] })
+ iface.Scan({'Type': 'passive',
+ 'Channels': [(dbus.UInt32(2412), dbus.UInt32(20))]})
with alloc_fail_dbus(dev[0], 1,
"=wpas_dbus_get_scan_ies;wpas_dbus_handler_scan",
"Scan"):
- iface.Scan({ 'Type': 'active',
- 'IEs': [ dbus.ByteArray(b"\xdd\x00") ],
- 'Channels': [ (dbus.UInt32(2412), dbus.UInt32(20)) ] })
+ iface.Scan({'Type': 'active',
+ 'IEs': [dbus.ByteArray(b"\xdd\x00")],
+ 'Channels': [(dbus.UInt32(2412), dbus.UInt32(20))]})
with alloc_fail_dbus(dev[0], 1,
"=wpas_dbus_get_scan_ssids;wpas_dbus_handler_scan",
"Scan"):
- iface.Scan({ 'Type': 'active',
- 'SSIDs': [ dbus.ByteArray(b"open"),
- dbus.ByteArray() ],
- 'Channels': [ (dbus.UInt32(2412), dbus.UInt32(20)) ] })
+ iface.Scan({'Type': 'active',
+ 'SSIDs': [dbus.ByteArray(b"open"),
+ dbus.ByteArray()],
+ 'Channels': [(dbus.UInt32(2412), dbus.UInt32(20))]})
def test_dbus_scan(dev, apdev):
"""D-Bus scan and related signals"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
class TestDbusScan(TestDbus):
def __init__(self, bus):
def run_scan(self, *args):
logger.debug("run_scan")
iface.Scan({'Type': 'active',
- 'SSIDs': [ dbus.ByteArray(b"open"),
- dbus.ByteArray() ],
- 'IEs': [ dbus.ByteArray(b"\xdd\x00"),
- dbus.ByteArray() ],
+ 'SSIDs': [dbus.ByteArray(b"open"),
+ dbus.ByteArray()],
+ 'IEs': [dbus.ByteArray(b"\xdd\x00"),
+ dbus.ByteArray()],
'AllowRoam': False,
'Channels': [(dbus.UInt32(2412), dbus.UInt32(20))]})
return False
def test_dbus_scan_busy(dev, apdev):
"""D-Bus scan trigger rejection when busy with previous scan"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
if "OK" not in dev[0].request("SCAN freq=2412-2462"):
def test_dbus_scan_abort(dev, apdev):
"""D-Bus scan trigger and abort"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
iface.Scan({'Type': 'active', 'AllowRoam': False})
def test_dbus_connect(dev, apdev):
"""D-Bus AddNetwork and connect"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
ssid = "test-wpa2-psk"
def run_connect(self, *args):
logger.debug("run_connect")
- args = dbus.Dictionary({ 'ssid': ssid,
- 'key_mgmt': 'WPA-PSK',
- 'psk': passphrase,
- 'scan_freq': 2412 },
+ args = dbus.Dictionary({'ssid': ssid,
+ 'key_mgmt': 'WPA-PSK',
+ 'psk': passphrase,
+ 'scan_freq': 2412},
signature='sv')
self.netw = iface.AddNetwork(args)
iface.SelectNetwork(self.netw)
def test_dbus_connect_psk_mem(dev, apdev):
"""D-Bus AddNetwork and connect with memory-only PSK"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
ssid = "test-wpa2-psk"
def run_connect(self, *args):
logger.debug("run_connect")
- args = dbus.Dictionary({ 'ssid': ssid,
- 'key_mgmt': 'WPA-PSK',
- 'mem_only_psk': 1,
- 'scan_freq': 2412 },
+ args = dbus.Dictionary({'ssid': ssid,
+ 'key_mgmt': 'WPA-PSK',
+ 'mem_only_psk': 1,
+ 'scan_freq': 2412},
signature='sv')
self.netw = iface.AddNetwork(args)
iface.SelectNetwork(self.netw)
def test_dbus_connect_oom(dev, apdev):
"""D-Bus AddNetwork and connect when out-of-memory"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
if "OK" not in dev[0].request("TEST_ALLOC_FAIL 0:"):
def run_connect(self, *args):
logger.debug("run_connect")
- args = dbus.Dictionary({ 'ssid': ssid,
- 'key_mgmt': 'WPA-PSK',
- 'psk': passphrase,
- 'scan_freq': 2412 },
+ args = dbus.Dictionary({'ssid': ssid,
+ 'key_mgmt': 'WPA-PSK',
+ 'psk': passphrase,
+ 'scan_freq': 2412},
signature='sv')
try:
self.netw = iface.AddNetwork(args)
def test_dbus_while_not_connected(dev, apdev):
"""D-Bus invalid operations while not connected"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
try:
def test_dbus_connect_eap(dev, apdev):
"""D-Bus AddNetwork and connect to EAP network"""
check_altsubject_match_support(dev[0])
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
ssid = "ieee8021x-open"
iface.EAPLogoff()
logger.info("Set dNSName constraint")
net_obj = bus.get_object(WPAS_DBUS_SERVICE, self.netw)
- args = dbus.Dictionary({ 'altsubject_match':
- self.server_dnsname },
+ args = dbus.Dictionary({'altsubject_match':
+ self.server_dnsname},
signature='sv')
net_obj.Set(WPAS_DBUS_NETWORK, "Properties", args,
dbus_interface=dbus.PROPERTIES_IFACE)
iface.Disconnect()
logger.info("Set non-matching dNSName constraint")
net_obj = bus.get_object(WPAS_DBUS_SERVICE, self.netw)
- args = dbus.Dictionary({ 'altsubject_match':
- self.server_dnsname + "FOO" },
+ args = dbus.Dictionary({'altsubject_match':
+ self.server_dnsname + "FOO"},
signature='sv')
net_obj.Set(WPAS_DBUS_NETWORK, "Properties", args,
dbus_interface=dbus.PROPERTIES_IFACE)
def run_connect(self, *args):
logger.debug("run_connect")
- args = dbus.Dictionary({ 'ssid': ssid,
- 'key_mgmt': 'IEEE8021X',
- 'eapol_flags': 0,
- 'eap': 'TTLS',
- 'anonymous_identity': 'ttls',
- 'identity': 'pap user',
- 'ca_cert': 'auth_serv/ca.pem',
- 'phase2': 'auth=PAP',
- 'scan_freq': 2412 },
+ args = dbus.Dictionary({'ssid': ssid,
+ 'key_mgmt': 'IEEE8021X',
+ 'eapol_flags': 0,
+ 'eap': 'TTLS',
+ 'anonymous_identity': 'ttls',
+ 'identity': 'pap user',
+ 'ca_cert': 'auth_serv/ca.pem',
+ 'phase2': 'auth=PAP',
+ 'scan_freq': 2412},
signature='sv')
self.netw = iface.AddNetwork(args)
iface.SelectNetwork(self.netw)
def test_dbus_network(dev, apdev):
"""D-Bus AddNetwork/RemoveNetwork parameters and error cases"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
- args = dbus.Dictionary({ 'ssid': "foo",
- 'key_mgmt': 'WPA-PSK',
- 'psk': "12345678",
- 'identity': dbus.ByteArray([ 1, 2 ]),
- 'priority': dbus.Int32(0),
- 'scan_freq': dbus.UInt32(2412) },
+ args = dbus.Dictionary({'ssid': "foo",
+ 'key_mgmt': 'WPA-PSK',
+ 'psk': "12345678",
+ 'identity': dbus.ByteArray([1, 2]),
+ 'priority': dbus.Int32(0),
+ 'scan_freq': dbus.UInt32(2412)},
signature='sv')
netw = iface.AddNetwork(args)
id = int(dev[0].list_networks()[0]['id'])
raise Exception("Invalid scan_freq value: " + str(val))
iface.RemoveNetwork(netw)
- args = dbus.Dictionary({ 'ssid': "foo",
- 'key_mgmt': 'NONE',
- 'scan_freq': "2412 2432",
- 'freq_list': "2412 2417 2432" },
+ args = dbus.Dictionary({'ssid': "foo",
+ 'key_mgmt': 'NONE',
+ 'scan_freq': "2412 2432",
+ 'freq_list': "2412 2417 2432"},
signature='sv')
netw = iface.AddNetwork(args)
id = int(dev[0].list_networks()[0]['id'])
if "NetworkUnknown" not in str(e):
raise Exception("Unexpected error message for invalid RemoveNetwork: " + str(e))
- args = dbus.Dictionary({ 'ssid': "foo1", 'key_mgmt': 'NONE',
- 'identity': "testuser", 'scan_freq': '2412' },
+ args = dbus.Dictionary({'ssid': "foo1", 'key_mgmt': 'NONE',
+ 'identity': "testuser", 'scan_freq': '2412'},
signature='sv')
netw1 = iface.AddNetwork(args)
- args = dbus.Dictionary({ 'ssid': "foo2", 'key_mgmt': 'NONE' },
+ args = dbus.Dictionary({'ssid': "foo2", 'key_mgmt': 'NONE'},
signature='sv')
netw2 = iface.AddNetwork(args)
res = if_obj.Get(WPAS_DBUS_IFACE, "Networks",
if "Error.Failed: wrong property type" not in str(e):
raise Exception("Unexpected error message for invalid Set(Enabled,1): " + str(e))
- args = dbus.Dictionary({ 'ssid': "foo1new" }, signature='sv')
+ args = dbus.Dictionary({'ssid': "foo1new"}, signature='sv')
net_obj.Set(WPAS_DBUS_NETWORK, "Properties", args,
dbus_interface=dbus.PROPERTIES_IFACE)
res = net_obj.Get(WPAS_DBUS_NETWORK, "Properties",
raise Exception("Unexpected number of networks")
iface.RemoveAllNetworks()
- tests = [ dbus.Dictionary({ 'psk': "1234567" }, signature='sv'),
- dbus.Dictionary({ 'identity': dbus.ByteArray() },
- signature='sv'),
- dbus.Dictionary({ 'identity': dbus.Byte(1) }, signature='sv'),
- dbus.Dictionary({ 'identity': "" }, signature='sv') ]
+ tests = [dbus.Dictionary({'psk': "1234567"}, signature='sv'),
+ dbus.Dictionary({'identity': dbus.ByteArray()},
+ signature='sv'),
+ dbus.Dictionary({'identity': dbus.Byte(1)}, signature='sv'),
+ dbus.Dictionary({'identity': ""}, signature='sv')]
for args in tests:
try:
iface.AddNetwork(args)
def test_dbus_network_oom(dev, apdev):
"""D-Bus AddNetwork/RemoveNetwork parameters and OOM error cases"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
- args = dbus.Dictionary({ 'ssid': "foo1", 'key_mgmt': 'NONE',
- 'identity': "testuser", 'scan_freq': '2412' },
+ args = dbus.Dictionary({'ssid': "foo1", 'key_mgmt': 'NONE',
+ 'identity': "testuser", 'scan_freq': '2412'},
signature='sv')
netw1 = iface.AddNetwork(args)
net_obj = bus.get_object(WPAS_DBUS_SERVICE, netw1)
iface.RemoveNetwork(dbus.ObjectPath("/fi/w1/wpa_supplicant1/Interfaces/1234/Networks/1234"))
with alloc_fail(dev[0], 1, "wpa_dbus_register_object_per_iface;wpas_dbus_register_network"):
- args = dbus.Dictionary({ 'ssid': "foo2", 'key_mgmt': 'NONE' },
+ args = dbus.Dictionary({'ssid': "foo2", 'key_mgmt': 'NONE'},
signature='sv')
try:
netw = iface.AddNetwork(args)
"=wpa_config_add_network;wpas_dbus_handler_add_network",
"AddNetwork",
"UnknownError: wpa_supplicant could not add a network"):
- args = dbus.Dictionary({ 'ssid': "foo2", 'key_mgmt': 'NONE' },
+ args = dbus.Dictionary({'ssid': "foo2", 'key_mgmt': 'NONE'},
signature='sv')
netw = iface.AddNetwork(args)
- tests = [ (1,
- 'wpa_dbus_dict_get_entry;set_network_properties;wpas_dbus_handler_add_network',
- dbus.Dictionary({ 'ssid': dbus.ByteArray(b' ') },
- signature='sv')),
- (1, '=set_network_properties;wpas_dbus_handler_add_network',
- dbus.Dictionary({ 'ssid': 'foo' }, signature='sv')),
- (1, '=set_network_properties;wpas_dbus_handler_add_network',
- dbus.Dictionary({ 'eap': 'foo' }, signature='sv')),
- (1, '=set_network_properties;wpas_dbus_handler_add_network',
- dbus.Dictionary({ 'priority': dbus.UInt32(1) },
- signature='sv')),
- (1, '=set_network_properties;wpas_dbus_handler_add_network',
- dbus.Dictionary({ 'priority': dbus.Int32(1) },
- signature='sv')),
- (1, '=set_network_properties;wpas_dbus_handler_add_network',
- dbus.Dictionary({ 'ssid': dbus.ByteArray(b' ') },
- signature='sv')) ]
- for (count,funcs,args) in tests:
+ tests = [(1,
+ 'wpa_dbus_dict_get_entry;set_network_properties;wpas_dbus_handler_add_network',
+ dbus.Dictionary({'ssid': dbus.ByteArray(b' ')},
+ signature='sv')),
+ (1, '=set_network_properties;wpas_dbus_handler_add_network',
+ dbus.Dictionary({'ssid': 'foo'}, signature='sv')),
+ (1, '=set_network_properties;wpas_dbus_handler_add_network',
+ dbus.Dictionary({'eap': 'foo'}, signature='sv')),
+ (1, '=set_network_properties;wpas_dbus_handler_add_network',
+ dbus.Dictionary({'priority': dbus.UInt32(1)},
+ signature='sv')),
+ (1, '=set_network_properties;wpas_dbus_handler_add_network',
+ dbus.Dictionary({'priority': dbus.Int32(1)},
+ signature='sv')),
+ (1, '=set_network_properties;wpas_dbus_handler_add_network',
+ dbus.Dictionary({'ssid': dbus.ByteArray(b' ')},
+ signature='sv'))]
+ for (count, funcs, args) in tests:
with alloc_fail_dbus(dev[0], count, funcs, "AddNetwork", "InvalidArgs"):
netw = iface.AddNetwork(args)
subprocess.call(['iw', 'reg', 'set', '00'])
def _test_dbus_interface(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wpas = dbus.Interface(wpas_obj, WPAS_DBUS_SERVICE)
- params = dbus.Dictionary({ 'Ifname': 'lo', 'Driver': 'none' },
+ params = dbus.Dictionary({'Ifname': 'lo', 'Driver': 'none'},
signature='sv')
path = wpas.CreateInterface(params)
logger.debug("New interface path: " + str(path))
if path != path2:
raise Exception("Interface object mismatch")
- params = dbus.Dictionary({ 'Ifname': 'lo',
- 'Driver': 'none',
- 'ConfigFile': 'foo',
- 'BridgeIfname': 'foo', },
+ params = dbus.Dictionary({'Ifname': 'lo',
+ 'Driver': 'none',
+ 'ConfigFile': 'foo',
+ 'BridgeIfname': 'foo',},
signature='sv')
try:
wpas.CreateInterface(params)
if "InterfaceUnknown" not in str(e):
raise Exception("Unexpected error message for invalid RemoveInterface: " + str(e))
- params = dbus.Dictionary({ 'Ifname': 'lo', 'Driver': 'none',
- 'Foo': 123 },
+ params = dbus.Dictionary({'Ifname': 'lo', 'Driver': 'none',
+ 'Foo': 123},
signature='sv')
try:
wpas.CreateInterface(params)
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid CreateInterface: " + str(e))
- params = dbus.Dictionary({ 'Driver': 'none' }, signature='sv')
+ params = dbus.Dictionary({'Driver': 'none'}, signature='sv')
try:
wpas.CreateInterface(params)
raise Exception("Invalid CreateInterface() accepted")
def test_dbus_interface_oom(dev, apdev):
"""D-Bus CreateInterface/GetInterface/RemoveInterface OOM error cases"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wpas = dbus.Interface(wpas_obj, WPAS_DBUS_SERVICE)
with alloc_fail_dbus(dev[0], 1, "wpa_dbus_dict_get_entry;wpas_dbus_handler_create_interface", "CreateInterface", "InvalidArgs"):
- params = dbus.Dictionary({ 'Ifname': 'lo', 'Driver': 'none' },
+ params = dbus.Dictionary({'Ifname': 'lo', 'Driver': 'none'},
signature='sv')
wpas.CreateInterface(params)
for i in range(1, 1000):
dev[0].request("TEST_ALLOC_FAIL %d:wpa_supplicant_add_iface;wpas_dbus_handler_create_interface" % i)
- params = dbus.Dictionary({ 'Ifname': 'lo', 'Driver': 'none' },
+ params = dbus.Dictionary({'Ifname': 'lo', 'Driver': 'none'},
signature='sv')
try:
npath = wpas.CreateInterface(params)
except dbus.exceptions.DBusException as e:
pass
- for arg in [ 'Driver', 'Ifname', 'ConfigFile', 'BridgeIfname' ]:
+ for arg in ['Driver', 'Ifname', 'ConfigFile', 'BridgeIfname']:
with alloc_fail_dbus(dev[0], 1, "=wpas_dbus_handler_create_interface",
"CreateInterface"):
- params = dbus.Dictionary({ arg: 'foo' }, signature='sv')
+ params = dbus.Dictionary({arg: 'foo'}, signature='sv')
wpas.CreateInterface(params)
def test_dbus_blob(dev, apdev):
"""D-Bus AddNetwork/RemoveNetwork parameters and error cases"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
blob = dbus.ByteArray(b"\x01\x02\x03")
def test_dbus_blob_oom(dev, apdev):
"""D-Bus AddNetwork/RemoveNetwork OOM error cases"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
for i in range(1, 4):
def test_dbus_autoscan(dev, apdev):
"""D-Bus Autoscan()"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
iface.AutoScan("foo")
def test_dbus_autoscan_oom(dev, apdev):
"""D-Bus Autoscan() OOM"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
with alloc_fail_dbus(dev[0], 1, "wpas_dbus_handler_autoscan", "AutoScan"):
def test_dbus_tdls_invalid(dev, apdev):
"""D-Bus invalid TDLS operations"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
connect_2sta_open(dev, hapd)
addr1 = dev[1].p2p_interface_addr()
def test_dbus_tdls_oom(dev, apdev):
"""D-Bus TDLS operations during OOM"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
with alloc_fail_dbus(dev[0], 1, "wpa_tdls_add_peer", "TDLSSetup",
def test_dbus_tdls(dev, apdev):
"""D-Bus TDLS"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
connect_2sta_open(dev, hapd)
addr1 = dev[1].p2p_interface_addr()
if flags & 0x800000000 == 0:
raise HwsimSkip("Driver does not support TDLS channel switching")
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
connect_2sta_open(dev, hapd)
addr1 = dev[1].p2p_interface_addr()
logger.info("Unexpected TDLSStatus: " + res)
# Unknown dict entry
- args = dbus.Dictionary({ 'Foobar': dbus.Byte(1) },
+ args = dbus.Dictionary({'Foobar': dbus.Byte(1)},
signature='sv')
try:
iface.TDLSChannelSwitch(args)
raise Exception("Unexpected exception")
# Missing Frequency
- args = dbus.Dictionary({ 'OperClass': dbus.Byte(1) },
+ args = dbus.Dictionary({'OperClass': dbus.Byte(1)},
signature='sv')
try:
iface.TDLSChannelSwitch(args)
raise Exception("Unexpected exception")
# Missing PeerAddress
- args = dbus.Dictionary({ 'OperClass': dbus.Byte(1),
- 'Frequency': dbus.UInt32(2417) },
+ args = dbus.Dictionary({'OperClass': dbus.Byte(1),
+ 'Frequency': dbus.UInt32(2417)},
signature='sv')
try:
iface.TDLSChannelSwitch(args)
raise Exception("Unexpected exception")
# Valid parameters
- args = dbus.Dictionary({ 'OperClass': dbus.Byte(1),
- 'Frequency': dbus.UInt32(2417),
- 'PeerAddress': addr1,
- 'SecChannelOffset': dbus.UInt32(0),
- 'CenterFrequency1': dbus.UInt32(0),
- 'CenterFrequency2': dbus.UInt32(0),
- 'Bandwidth': dbus.UInt32(20),
- 'HT': dbus.Boolean(False),
- 'VHT': dbus.Boolean(False) },
+ args = dbus.Dictionary({'OperClass': dbus.Byte(1),
+ 'Frequency': dbus.UInt32(2417),
+ 'PeerAddress': addr1,
+ 'SecChannelOffset': dbus.UInt32(0),
+ 'CenterFrequency1': dbus.UInt32(0),
+ 'CenterFrequency2': dbus.UInt32(0),
+ 'Bandwidth': dbus.UInt32(20),
+ 'HT': dbus.Boolean(False),
+ 'VHT': dbus.Boolean(False)},
signature='sv')
iface.TDLSChannelSwitch(args)
def test_dbus_pkcs11(dev, apdev):
"""D-Bus SetPKCS11EngineAndModulePath()"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
try:
dev[0].request("AP_SCAN 1")
def _test_dbus_apscan(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
res = if_obj.Get(WPAS_DBUS_IFACE, "ApScan",
dbus_interface=dbus.PROPERTIES_IFACE)
dev[0].request("SET pmf 0")
def _test_dbus_pmf(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
dev[0].set("pmf", "0")
res = if_obj.Get(WPAS_DBUS_IFACE, "Pmf",
def test_dbus_fastreauth(dev, apdev):
"""D-Bus Get/Set FastReauth"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
res = if_obj.Get(WPAS_DBUS_IFACE, "FastReauth",
dbus_interface=dbus.PROPERTIES_IFACE)
if res != True:
raise Exception("Unexpected initial FastReauth value: " + str(res))
- for i in [ False, True ]:
+ for i in [False, True]:
if_obj.Set(WPAS_DBUS_IFACE, "FastReauth", dbus.Boolean(i),
dbus_interface=dbus.PROPERTIES_IFACE)
res = if_obj.Get(WPAS_DBUS_IFACE, "FastReauth",
def test_dbus_bss_expire(dev, apdev):
"""D-Bus Get/Set BSSExpireAge and BSSExpireCount"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
if_obj.Set(WPAS_DBUS_IFACE, "BSSExpireAge", dbus.UInt32(179),
dbus_interface=dbus.PROPERTIES_IFACE)
subprocess.call(['iw', 'reg', 'set', '00'])
def _test_dbus_country(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
# work around issues with possible pending regdom event from the end of
# the previous test case
dev[0].request("SCAN_INTERVAL 5")
def _test_dbus_scan_interval(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
if_obj.Set(WPAS_DBUS_IFACE, "ScanInterval", dbus.Int32(3),
dbus_interface=dbus.PROPERTIES_IFACE)
def test_dbus_probe_req_reporting(dev, apdev):
"""D-Bus Probe Request reporting"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
dev[1].p2p_find(social=True)
def run_test(self, *args):
logger.debug("run_test")
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
- params = dbus.Dictionary({ 'frequency': 2412 })
+ params = dbus.Dictionary({'frequency': 2412})
p2p.GroupAdd(params)
return False
def test_dbus_probe_req_reporting_oom(dev, apdev):
"""D-Bus Probe Request reporting (OOM)"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
# Need to make sure this process has not already subscribed to avoid false
def test_dbus_p2p_invalid(dev, apdev):
"""D-Bus invalid P2P operations"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
try:
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid RejectPeer(): " + str(e))
- tests = [ { },
- { 'peer': 'foo' },
- { 'foo': "bar" },
- { 'iface': "abc" },
- { 'iface': 123 } ]
+ tests = [{},
+ {'peer': 'foo'},
+ {'foo': "bar"},
+ {'iface': "abc"},
+ {'iface': 123}]
for t in tests:
try:
p2p.RemoveClient(t)
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid RemoveClient(): " + str(e))
- tests = [ {'DiscoveryType': 'foo'},
- {'RequestedDeviceTypes': 'foo'},
- {'RequestedDeviceTypes': ['foo']},
- {'RequestedDeviceTypes': ['1','2','3','4','5','6','7','8','9',
- '10','11','12','13','14','15','16',
- '17']},
- {'RequestedDeviceTypes': dbus.Array([], signature="s")},
- {'RequestedDeviceTypes': dbus.Array([['foo']], signature="as")},
- {'RequestedDeviceTypes': dbus.Array([], signature="i")},
- {'RequestedDeviceTypes': [dbus.ByteArray(b'12345678'),
- dbus.ByteArray(b'1234567')]},
- {'Foo': dbus.Int16(1)},
- {'Foo': dbus.UInt16(1)},
- {'Foo': dbus.Int64(1)},
- {'Foo': dbus.UInt64(1)},
- {'Foo': dbus.Double(1.23)},
- {'Foo': dbus.Signature('s')},
- {'Foo': 'bar'}]
+ tests = [{'DiscoveryType': 'foo'},
+ {'RequestedDeviceTypes': 'foo'},
+ {'RequestedDeviceTypes': ['foo']},
+ {'RequestedDeviceTypes': ['1', '2', '3', '4', '5', '6', '7', '8',
+ '9', '10', '11', '12', '13', '14', '15',
+ '16', '17']},
+ {'RequestedDeviceTypes': dbus.Array([], signature="s")},
+ {'RequestedDeviceTypes': dbus.Array([['foo']], signature="as")},
+ {'RequestedDeviceTypes': dbus.Array([], signature="i")},
+ {'RequestedDeviceTypes': [dbus.ByteArray(b'12345678'),
+ dbus.ByteArray(b'1234567')]},
+ {'Foo': dbus.Int16(1)},
+ {'Foo': dbus.UInt16(1)},
+ {'Foo': dbus.Int64(1)},
+ {'Foo': dbus.UInt64(1)},
+ {'Foo': dbus.Double(1.23)},
+ {'Foo': dbus.Signature('s')},
+ {'Foo': 'bar'}]
for t in tests:
try:
p2p.Find(dbus.Dictionary(t))
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid Find(): " + str(e))
- for p in [ "/foo",
- "/fi/w1/wpa_supplicant1/Interfaces/1234",
- "/fi/w1/wpa_supplicant1/Interfaces/1234/Networks/1234" ]:
+ for p in ["/foo",
+ "/fi/w1/wpa_supplicant1/Interfaces/1234",
+ "/fi/w1/wpa_supplicant1/Interfaces/1234/Networks/1234"]:
try:
p2p.RemovePersistentGroup(dbus.ObjectPath(p))
raise Exception("Invalid RemovePersistentGroup accepted")
try:
dev[0].request("P2P_SET disabled 1")
- args = { 'duration1': 30000, 'interval1': 102400,
- 'duration2': 20000, 'interval2': 102400 }
+ args = {'duration1': 30000, 'interval1': 102400,
+ 'duration2': 20000, 'interval2': 102400}
p2p.PresenceRequest(args)
raise Exception("Invalid PresenceRequest accepted")
except dbus.exceptions.DBusException as e:
try:
dev[0].request("P2P_SET disabled 1")
- args = { 'peer': path,
- 'join': True,
- 'wps_method': 'pbc',
- 'frequency': 2412 }
+ args = {'peer': path,
+ 'join': True,
+ 'wps_method': 'pbc',
+ 'frequency': 2412}
pin = p2p.Connect(args)
raise Exception("Invalid Connect accepted")
except dbus.exceptions.DBusException as e:
finally:
dev[0].request("P2P_SET disabled 0")
- tests = [ { 'frequency': dbus.Int32(-1) },
- { 'wps_method': 'pbc' },
- { 'wps_method': 'foo' } ]
+ tests = [{'frequency': dbus.Int32(-1)},
+ {'wps_method': 'pbc'},
+ {'wps_method': 'foo'}]
for args in tests:
try:
pin = p2p.Connect(args)
try:
dev[0].request("P2P_SET disabled 1")
- args = { 'peer': path }
+ args = {'peer': path}
pin = p2p.Invite(args)
raise Exception("Invalid Invite accepted")
except dbus.exceptions.DBusException as e:
dev[0].request("P2P_SET disabled 0")
try:
- args = { 'foo': 'bar' }
+ args = {'foo': 'bar'}
pin = p2p.Invite(args)
raise Exception("Invalid Invite accepted")
except dbus.exceptions.DBusException as e:
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid Connect: " + str(e))
- tests = [ (path, 'display', "InvalidArgs"),
- (dbus.ObjectPath(path + "/Peers/00112233445566"),
- 'display',
- "UnknownError: Failed to send provision discovery request"),
- (dbus.ObjectPath(path + "/Peers/00112233445566"),
- 'keypad',
- "UnknownError: Failed to send provision discovery request"),
- (dbus.ObjectPath(path + "/Peers/00112233445566"),
- 'pbc',
- "UnknownError: Failed to send provision discovery request"),
- (dbus.ObjectPath(path + "/Peers/00112233445566"),
- 'pushbutton',
- "UnknownError: Failed to send provision discovery request"),
- (dbus.ObjectPath(path + "/Peers/00112233445566"),
- 'foo', "InvalidArgs") ]
- for (p,method,err) in tests:
+ tests = [(path, 'display', "InvalidArgs"),
+ (dbus.ObjectPath(path + "/Peers/00112233445566"),
+ 'display',
+ "UnknownError: Failed to send provision discovery request"),
+ (dbus.ObjectPath(path + "/Peers/00112233445566"),
+ 'keypad',
+ "UnknownError: Failed to send provision discovery request"),
+ (dbus.ObjectPath(path + "/Peers/00112233445566"),
+ 'pbc',
+ "UnknownError: Failed to send provision discovery request"),
+ (dbus.ObjectPath(path + "/Peers/00112233445566"),
+ 'pushbutton',
+ "UnknownError: Failed to send provision discovery request"),
+ (dbus.ObjectPath(path + "/Peers/00112233445566"),
+ 'foo', "InvalidArgs")]
+ for (p, method, err) in tests:
try:
p2p.ProvisionDiscoveryRequest(p, method)
raise Exception("Invalid ProvisionDiscoveryRequest accepted")
def test_dbus_p2p_oom(dev, apdev):
"""D-Bus P2P operations and OOM"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
with alloc_fail_dbus(dev[0], 1, "_wpa_dbus_dict_entry_get_string_array",
"Find", "InvalidArgs"):
- p2p.Find(dbus.Dictionary({ 'Foo': [ 'bar' ] }))
+ p2p.Find(dbus.Dictionary({'Foo': ['bar']}))
with alloc_fail_dbus(dev[0], 2, "_wpa_dbus_dict_entry_get_string_array",
"Find", "InvalidArgs"):
- p2p.Find(dbus.Dictionary({ 'Foo': [ 'bar' ] }))
+ p2p.Find(dbus.Dictionary({'Foo': ['bar']}))
with alloc_fail_dbus(dev[0], 10, "_wpa_dbus_dict_entry_get_string_array",
"Find", "InvalidArgs"):
- p2p.Find(dbus.Dictionary({ 'Foo': [ '1','2','3','4','5','6','7','8','9' ] }))
+ p2p.Find(dbus.Dictionary({'Foo': ['1', '2', '3', '4', '5', '6', '7',
+ '8', '9']}))
with alloc_fail_dbus(dev[0], 1, ":=_wpa_dbus_dict_entry_get_binarray",
"Find", "InvalidArgs"):
- p2p.Find(dbus.Dictionary({ 'Foo': [ dbus.ByteArray(b'123') ] }))
+ p2p.Find(dbus.Dictionary({'Foo': [dbus.ByteArray(b'123')]}))
with alloc_fail_dbus(dev[0], 1, "_wpa_dbus_dict_entry_get_byte_array;_wpa_dbus_dict_entry_get_binarray",
"Find", "InvalidArgs"):
- p2p.Find(dbus.Dictionary({ 'Foo': [ dbus.ByteArray(b'123') ] }))
+ p2p.Find(dbus.Dictionary({'Foo': [dbus.ByteArray(b'123')]}))
with alloc_fail_dbus(dev[0], 2, "=_wpa_dbus_dict_entry_get_binarray",
"Find", "InvalidArgs"):
- p2p.Find(dbus.Dictionary({ 'Foo': [ dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123'),
- dbus.ByteArray(b'123') ] }))
+ p2p.Find(dbus.Dictionary({'Foo': [dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123'),
+ dbus.ByteArray(b'123')]}))
with alloc_fail_dbus(dev[0], 1, "wpabuf_alloc_ext_data;_wpa_dbus_dict_entry_get_binarray",
"Find", "InvalidArgs"):
- p2p.Find(dbus.Dictionary({ 'Foo': [ dbus.ByteArray(b'123') ] }))
+ p2p.Find(dbus.Dictionary({'Foo': [dbus.ByteArray(b'123')]}))
with alloc_fail_dbus(dev[0], 1, "_wpa_dbus_dict_fill_value_from_variant;wpas_dbus_handler_p2p_find",
"Find", "InvalidArgs"):
- p2p.Find(dbus.Dictionary({ 'Foo': path }))
+ p2p.Find(dbus.Dictionary({'Foo': path}))
with alloc_fail_dbus(dev[0], 1, "_wpa_dbus_dict_entry_get_byte_array",
"AddService", "InvalidArgs"):
- args = { 'service_type': 'bonjour',
- 'response': dbus.ByteArray(500*b'b') }
+ args = {'service_type': 'bonjour',
+ 'response': dbus.ByteArray(500*b'b')}
p2p.AddService(args)
with alloc_fail_dbus(dev[0], 2, "_wpa_dbus_dict_entry_get_byte_array",
dev[1].request("VENDOR_ELEM_REMOVE 1 *")
def run_dbus_p2p_discovery(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
dev[1].request("VENDOR_ELEM_ADD 1 dd06001122335566")
dev[1].p2p_listen()
addr1 = dev[1].p2p_dev_addr()
- a1 = binascii.unhexlify(addr1.replace(':',''))
+ a1 = binascii.unhexlify(addr1.replace(':', ''))
wfd_devinfo = "00001c440028"
dev[2].request("SET wifi_display 1")
wfd = binascii.unhexlify('000006' + wfd_devinfo)
dev[2].p2p_listen()
addr2 = dev[2].p2p_dev_addr()
- a2 = binascii.unhexlify(addr2.replace(':',''))
+ a2 = binascii.unhexlify(addr2.replace(':', ''))
res = if_obj.GetAll(WPAS_DBUS_IFACE_P2PDEVICE,
dbus_interface=dbus.PROPERTIES_IFACE)
args = {'DiscoveryType': 'social',
'RequestedDeviceTypes': [dbus.ByteArray(b'12345678')],
- 'Timeout': dbus.Int32(1) }
+ 'Timeout': dbus.Int32(1)}
p2p.Find(dbus.Dictionary(args))
p2p.StopFind()
def test_dbus_p2p_discovery_freq(dev, apdev):
"""D-Bus P2P discovery on a specific non-social channel"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr1 = dev[1].p2p_dev_addr()
def test_dbus_p2p_service_discovery(dev, apdev):
"""D-Bus P2P service discovery"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
bonjour_query = dbus.ByteArray(binascii.unhexlify('0b5f6166706f766572746370c00c000c01'))
bonjour_response = dbus.ByteArray(binascii.unhexlify('074578616d706c65c027'))
- args = { 'service_type': 'bonjour',
- 'query': bonjour_query,
- 'response': bonjour_response }
+ args = {'service_type': 'bonjour',
+ 'query': bonjour_query,
+ 'response': bonjour_response}
p2p.AddService(args)
p2p.FlushService()
p2p.AddService(args)
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid DeleteService(): " + str(e))
- args = { 'service_type': 'bonjour',
- 'query': bonjour_query }
+ args = {'service_type': 'bonjour',
+ 'query': bonjour_query}
p2p.DeleteService(args)
try:
p2p.DeleteService(args)
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid DeleteService(): " + str(e))
- args = { 'service_type': 'upnp',
- 'version': 0x10,
- 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice' }
+ args = {'service_type': 'upnp',
+ 'version': 0x10,
+ 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice'}
p2p.AddService(args)
p2p.DeleteService(args)
try:
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid DeleteService(): " + str(e))
- tests = [ { 'service_type': 'foo' },
- { 'service_type': 'foo', 'query': bonjour_query },
- { 'service_type': 'upnp' },
- { 'service_type': 'upnp', 'version': 0x10 },
- { 'service_type': 'upnp',
- 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice' },
- { 'version': 0x10,
- 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice' },
- { 'service_type': 'upnp', 'foo': 'bar' },
- { 'service_type': 'bonjour' },
- { 'service_type': 'bonjour', 'query': 'foo' },
- { 'service_type': 'bonjour', 'foo': 'bar' } ]
+ tests = [{'service_type': 'foo'},
+ {'service_type': 'foo', 'query': bonjour_query},
+ {'service_type': 'upnp'},
+ {'service_type': 'upnp', 'version': 0x10},
+ {'service_type': 'upnp',
+ 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice'},
+ {'version': 0x10,
+ 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice'},
+ {'service_type': 'upnp', 'foo': 'bar'},
+ {'service_type': 'bonjour'},
+ {'service_type': 'bonjour', 'query': 'foo'},
+ {'service_type': 'bonjour', 'foo': 'bar'}]
for args in tests:
try:
p2p.DeleteService(args)
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid DeleteService(): " + str(e))
- tests = [ { 'service_type': 'foo' },
- { 'service_type': 'upnp' },
- { 'service_type': 'upnp', 'version': 0x10 },
- { 'service_type': 'upnp',
- 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice' },
- { 'version': 0x10,
- 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice' },
- { 'service_type': 'upnp', 'foo': 'bar' },
- { 'service_type': 'bonjour' },
- { 'service_type': 'bonjour', 'query': 'foo' },
- { 'service_type': 'bonjour', 'response': 'foo' },
- { 'service_type': 'bonjour', 'query': bonjour_query },
- { 'service_type': 'bonjour', 'response': bonjour_response },
- { 'service_type': 'bonjour', 'query': dbus.ByteArray(500*b'a') },
- { 'service_type': 'bonjour', 'foo': 'bar' } ]
+ tests = [{'service_type': 'foo'},
+ {'service_type': 'upnp'},
+ {'service_type': 'upnp', 'version': 0x10},
+ {'service_type': 'upnp',
+ 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice'},
+ {'version': 0x10,
+ 'service': 'uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice'},
+ {'service_type': 'upnp', 'foo': 'bar'},
+ {'service_type': 'bonjour'},
+ {'service_type': 'bonjour', 'query': 'foo'},
+ {'service_type': 'bonjour', 'response': 'foo'},
+ {'service_type': 'bonjour', 'query': bonjour_query},
+ {'service_type': 'bonjour', 'response': bonjour_response},
+ {'service_type': 'bonjour', 'query': dbus.ByteArray(500*b'a')},
+ {'service_type': 'bonjour', 'foo': 'bar'}]
for args in tests:
try:
p2p.AddService(args)
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid AddService(): " + str(e))
- args = { 'tlv': dbus.ByteArray(b"\x02\x00\x00\x01") }
+ args = {'tlv': dbus.ByteArray(b"\x02\x00\x00\x01")}
ref = p2p.ServiceDiscoveryRequest(args)
p2p.ServiceDiscoveryCancelRequest(ref)
try:
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid AddService(): " + str(e))
- args = { 'service_type': 'upnp',
- 'version': 0x10,
- 'service': 'ssdp:foo' }
+ args = {'service_type': 'upnp',
+ 'version': 0x10,
+ 'service': 'ssdp:foo'}
ref = p2p.ServiceDiscoveryRequest(args)
p2p.ServiceDiscoveryCancelRequest(ref)
- tests = [ { 'service_type': 'foo' },
- { 'foo': 'bar' },
- { 'tlv': 'foo' },
- { },
- { 'version': 0 },
- { 'service_type': 'upnp',
- 'service': 'ssdp:foo' },
- { 'service_type': 'upnp',
- 'version': 0x10 },
- { 'service_type': 'upnp',
- 'version': 0x10,
- 'service': 'ssdp:foo',
- 'peer_object': dbus.ObjectPath(path + "/Peers") },
- { 'service_type': 'upnp',
- 'version': 0x10,
- 'service': 'ssdp:foo',
- 'peer_object': path + "/Peers" },
- { 'service_type': 'upnp',
- 'version': 0x10,
- 'service': 'ssdp:foo',
- 'peer_object': dbus.ObjectPath(path + "/Peers/00112233445566") } ]
+ tests = [{'service_type': 'foo'},
+ {'foo': 'bar'},
+ {'tlv': 'foo'},
+ {},
+ {'version': 0},
+ {'service_type': 'upnp',
+ 'service': 'ssdp:foo'},
+ {'service_type': 'upnp',
+ 'version': 0x10},
+ {'service_type': 'upnp',
+ 'version': 0x10,
+ 'service': 'ssdp:foo',
+ 'peer_object': dbus.ObjectPath(path + "/Peers")},
+ {'service_type': 'upnp',
+ 'version': 0x10,
+ 'service': 'ssdp:foo',
+ 'peer_object': path + "/Peers"},
+ {'service_type': 'upnp',
+ 'version': 0x10,
+ 'service': 'ssdp:foo',
+ 'peer_object': dbus.ObjectPath(path + "/Peers/00112233445566")}]
for args in tests:
try:
p2p.ServiceDiscoveryRequest(args)
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid ServiceDiscoveryRequest(): " + str(e))
- args = { 'foo': 'bar' }
+ args = {'foo': 'bar'}
try:
p2p.ServiceDiscoveryResponse(dbus.Dictionary(args, signature='sv'))
raise Exception("Invalid ServiceDiscoveryResponse accepted")
def test_dbus_p2p_service_discovery_query(dev, apdev):
"""D-Bus P2P service discovery query"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
def deviceFound(self, path):
logger.debug("deviceFound: path=%s" % path)
- args = { 'peer_object': path,
- 'tlv': dbus.ByteArray(b"\x02\x00\x00\x01") }
+ args = {'peer_object': path,
+ 'tlv': dbus.ByteArray(b"\x02\x00\x00\x01")}
p2p.ServiceDiscoveryRequest(args)
def serviceDiscoveryResponse(self, sd_request):
dev[0].request("P2P_SERV_DISC_EXTERNAL 0")
def _test_dbus_p2p_service_discovery_external(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
def serviceDiscoveryRequest(self, sd_request):
logger.debug("serviceDiscoveryRequest: sd_request=%s" % str(sd_request))
self.sd = True
- args = { 'peer_object': sd_request['peer_object'],
- 'frequency': sd_request['frequency'],
- 'dialog_token': sd_request['dialog_token'],
- 'tlvs': dbus.ByteArray(binascii.unhexlify(resp)) }
+ args = {'peer_object': sd_request['peer_object'],
+ 'frequency': sd_request['frequency'],
+ 'dialog_token': sd_request['dialog_token'],
+ 'tlvs': dbus.ByteArray(binascii.unhexlify(resp))}
p2p.ServiceDiscoveryResponse(dbus.Dictionary(args, signature='sv'))
self.loop.quit()
def test_dbus_p2p_autogo(dev, apdev):
"""D-Bus P2P autonomous GO"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
logger.debug("provisionDiscoveryRequestDisplayPin - peer=%s pin=%s" % (peer_object, pin))
self.peer_path = peer_object
peer = binascii.unhexlify(peer_object.split('/')[-1])
- addr = ':'.join([ "%02x" % i for i in struct.unpack('6B', peer) ])
+ addr = ':'.join(["%02x" % i for i in struct.unpack('6B', peer)])
- params = { 'Role': 'registrar',
- 'P2PDeviceAddress': self.peer['DeviceAddress'],
- 'Bssid': self.peer['DeviceAddress'],
- 'Type': 'pin' }
+ params = {'Role': 'registrar',
+ 'P2PDeviceAddress': self.peer['DeviceAddress'],
+ 'Bssid': self.peer['DeviceAddress'],
+ 'Type': 'pin'}
wps = dbus.Interface(self.g_if_obj, WPAS_DBUS_IFACE_WPS)
try:
wps.Start(params)
if "InvalidArgs" not in str(e):
self.exceptions = True
raise Exception("Unexpected error message: " + str(e))
- params = { 'Role': 'registrar',
- 'P2PDeviceAddress': self.peer['DeviceAddress'],
- 'Type': 'pin',
- 'Pin': '12345670' }
+ params = {'Role': 'registrar',
+ 'P2PDeviceAddress': self.peer['DeviceAddress'],
+ 'Type': 'pin',
+ 'Pin': '12345670'}
logger.info("Authorize peer to connect to the group")
wps.Start(params)
# dictionary with 'WPSVendorExtensions' as the key surrounding these
# values.. The current implementations maintains support for that
# for backwards compability reasons. Verify that encoding first.
- vals = dbus.Dictionary({ 'WPSVendorExtensions': [ ext ]},
+ vals = dbus.Dictionary({'WPSVendorExtensions': [ext]},
signature='sv')
g_obj.Set(WPAS_DBUS_GROUP, 'WPSVendorExtensions', vals,
dbus_interface=dbus.PROPERTIES_IFACE)
self.exceptions = True
raise Exception("Unexpected error message for invalid Set(WPSVendorExtensions): " + str(e))
- vals = dbus.Dictionary({ 'Foo': [ ext ]}, signature='sv')
+ vals = dbus.Dictionary({'Foo': [ext]}, signature='sv')
try:
g_obj.Set(WPAS_DBUS_GROUP, 'WPSVendorExtensions', vals,
dbus_interface=dbus.PROPERTIES_IFACE)
self.exceptions = True
raise Exception("Unexpected error message for invalid Set(WPSVendorExtensions): " + str(e))
- vals = [ "foo" ]
+ vals = ["foo"]
try:
g_obj.Set(WPAS_DBUS_GROUP, 'WPSVendorExtensions', vals,
dbus_interface=dbus.PROPERTIES_IFACE)
self.exceptions = True
raise Exception("Unexpected error message for invalid Set(WPSVendorExtensions): " + str(e))
- vals = [ [ "foo" ] ]
+ vals = [["foo"]]
try:
g_obj.Set(WPAS_DBUS_GROUP, 'WPSVendorExtensions', vals,
dbus_interface=dbus.PROPERTIES_IFACE)
self.exceptions = True
raise Exception("Unexpected error message for invalid Set(WPSVendorExtensions): " + str(e))
- p2p.RemoveClient({ 'peer': self.peer_path })
+ p2p.RemoveClient({'peer': self.peer_path})
self.waiting_end = True
group_p2p = dbus.Interface(self.g_if_obj,
def test_dbus_p2p_autogo_pbc(dev, apdev):
"""D-Bus P2P autonomous GO and PBC"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
logger.debug("provisionDiscoveryPBCRequest - peer=%s" % peer_object)
self.peer_path = peer_object
peer = binascii.unhexlify(peer_object.split('/')[-1])
- addr = ':'.join([ "%02x" % i for i in struct.unpack('6B', peer) ])
- params = { 'Role': 'registrar',
- 'P2PDeviceAddress': self.peer['DeviceAddress'],
- 'Type': 'pbc' }
+ addr = ':'.join(["%02x" % i for i in struct.unpack('6B', peer)])
+ params = {'Role': 'registrar',
+ 'P2PDeviceAddress': self.peer['DeviceAddress'],
+ 'Type': 'pbc'}
logger.info("Authorize peer to connect to the group")
wps = dbus.Interface(self.g_if_obj, WPAS_DBUS_IFACE_WPS)
wps.Start(params)
def test_dbus_p2p_autogo_legacy(dev, apdev):
"""D-Bus P2P autonomous GO and legacy STA"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
res = g_obj.GetAll(WPAS_DBUS_GROUP,
dbus_interface=dbus.PROPERTIES_IFACE,
byte_arrays=True)
- bssid = ':'.join([ "%02x" % i for i in struct.unpack('6B', res['BSSID']) ])
+ bssid = ':'.join(["%02x" % i for i in struct.unpack('6B', res['BSSID'])])
pin = '12345670'
- params = { 'Role': 'enrollee',
- 'Type': 'pin',
- 'Pin': pin }
+ params = {'Role': 'enrollee',
+ 'Type': 'pin',
+ 'Pin': pin}
g_if_obj = bus.get_object(WPAS_DBUS_SERVICE,
properties['interface_object'])
wps = dbus.Interface(g_if_obj, WPAS_DBUS_IFACE_WPS)
def test_dbus_p2p_join(dev, apdev):
"""D-Bus P2P join an autonomous GO"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr1 = dev[1].p2p_dev_addr()
dbus_interface=dbus.PROPERTIES_IFACE,
byte_arrays=True)
logger.debug('peer properties: ' + str(res))
- if addr2.replace(':','') in path:
+ if addr2.replace(':', '') in path:
self.peer = path
- elif addr1.replace(':','') in path:
+ elif addr1.replace(':', '') in path:
self.go = path
if self.peer and self.go:
logger.info("Join the group")
p2p.StopFind()
- args = { 'peer': self.go,
- 'join': True,
- 'wps_method': 'pin',
- 'frequency': 2412 }
+ args = {'peer': self.go,
+ 'join': True,
+ 'wps_method': 'pin',
+ 'frequency': 2412}
pin = p2p.Connect(args)
dev1 = WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
raise Exception("Unexpected error message for invalid Set(WPSVendorExtensions): " + str(e))
group_p2p = dbus.Interface(g_if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
- args = { 'duration1': 30000, 'interval1': 102400,
- 'duration2': 20000, 'interval2': 102400 }
+ args = {'duration1': 30000, 'interval1': 102400,
+ 'duration2': 20000, 'interval2': 102400}
group_p2p.PresenceRequest(args)
- args = { 'peer': self.peer }
+ args = {'peer': self.peer}
group_p2p.Invite(args)
def groupFinished(self, properties):
def test_dbus_p2p_invitation_received(dev, apdev):
"""D-Bus P2P and InvitationReceived"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
form(dev[0], dev[1])
dev[0].request("P2P_SET ssid_postfix ")
def _test_dbus_p2p_config(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
res = if_obj.Get(WPAS_DBUS_IFACE_P2PDEVICE, "P2PDeviceConfig",
if res[k] != res2[k]:
raise Exception("Parameter %s value changes" % k)
- changes = { 'SsidPostfix': 'foo',
- 'VendorExtension': [ dbus.ByteArray(b'\x11\x22\x33\x44') ],
- 'SecondaryDeviceTypes': [ dbus.ByteArray(b'\x11\x22\x33\x44\x55\x66\x77\x88') ]}
+ changes = {'SsidPostfix': 'foo',
+ 'VendorExtension': [dbus.ByteArray(b'\x11\x22\x33\x44')],
+ 'SecondaryDeviceTypes': [dbus.ByteArray(b'\x11\x22\x33\x44\x55\x66\x77\x88')]}
if_obj.Set(WPAS_DBUS_IFACE_P2PDEVICE, "P2PDeviceConfig",
dbus.Dictionary(changes, signature='sv'),
dbus_interface=dbus.PROPERTIES_IFACE)
if 'SecondaryDeviceTypes' not in res2 or len(res2['SecondaryDeviceTypes']) != 1:
raise Exception("SecondaryDeviceType does not match")
- changes = { 'SsidPostfix': '',
- 'VendorExtension': dbus.Array([], signature="ay"),
- 'SecondaryDeviceTypes': dbus.Array([], signature="ay") }
+ changes = {'SsidPostfix': '',
+ 'VendorExtension': dbus.Array([], signature="ay"),
+ 'SecondaryDeviceTypes': dbus.Array([], signature="ay")}
if_obj.Set(WPAS_DBUS_IFACE_P2PDEVICE, "P2PDeviceConfig",
dbus.Dictionary(changes, signature='sv'),
dbus_interface=dbus.PROPERTIES_IFACE)
try:
dev[0].request("P2P_SET disabled 1")
- changes = { 'SsidPostfix': 'foo' }
+ changes = {'SsidPostfix': 'foo'}
if_obj.Set(WPAS_DBUS_IFACE_P2PDEVICE, "P2PDeviceConfig",
dbus.Dictionary(changes, signature='sv'),
dbus_interface=dbus.PROPERTIES_IFACE)
finally:
dev[0].request("P2P_SET disabled 0")
- tests = [ { 'DeviceName': 123 },
- { 'SsidPostfix': 123 },
- { 'Foo': 'Bar' } ]
+ tests = [{'DeviceName': 123},
+ {'SsidPostfix': 123},
+ {'Foo': 'Bar'}]
for changes in tests:
try:
if_obj.Set(WPAS_DBUS_IFACE_P2PDEVICE, "P2PDeviceConfig",
def test_dbus_p2p_persistent(dev, apdev):
"""D-Bus P2P persistent group"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
class TestDbusP2p(TestDbus):
res = p_obj.Get(WPAS_DBUS_PERSISTENT_GROUP, "Properties",
dbus_interface=dbus.PROPERTIES_IFACE, byte_arrays=True)
logger.info("Persistent group Properties: " + str(res))
- vals = dbus.Dictionary({ 'ssid': 'DIRECT-foo' }, signature='sv')
+ vals = dbus.Dictionary({'ssid': 'DIRECT-foo'}, signature='sv')
p_obj.Set(WPAS_DBUS_PERSISTENT_GROUP, "Properties", vals,
dbus_interface=dbus.PROPERTIES_IFACE)
res2 = p_obj.Get(WPAS_DBUS_PERSISTENT_GROUP, "Properties",
if res2['ssid'] != '"DIRECT-foo"':
raise Exception("Unexpected ssid")
- args = dbus.Dictionary({ 'ssid': 'DIRECT-testing',
- 'psk': '1234567890' }, signature='sv')
+ args = dbus.Dictionary({'ssid': 'DIRECT-testing',
+ 'psk': '1234567890'}, signature='sv')
group = p2p.AddPersistentGroup(args)
groups = if_obj.Get(WPAS_DBUS_IFACE_P2PDEVICE, "PersistentGroups",
def test_dbus_p2p_reinvoke_persistent(dev, apdev):
"""D-Bus P2P reinvoke persistent group"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
res = g_obj.GetAll(WPAS_DBUS_GROUP,
dbus_interface=dbus.PROPERTIES_IFACE,
byte_arrays=True)
- bssid = ':'.join([ "%02x" % i for i in struct.unpack('6B', res['BSSID']) ])
+ bssid = ':'.join(["%02x" % i for i in struct.unpack('6B', res['BSSID'])])
dev1 = WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
dev1.scan_for_bss(bssid, freq=2412)
dev1.global_request("P2P_CONNECT " + addr0 + " 12345670 join")
dev1.global_request("SET persistent_reconnect 1")
dev1.p2p_listen()
- args = { 'persistent_group_object': dbus.ObjectPath(path),
- 'peer': self.peer_path }
+ args = {'persistent_group_object': dbus.ObjectPath(path),
+ 'peer': self.peer_path}
try:
pin = p2p.Invite(args)
raise Exception("Invalid Invite accepted")
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid Invite: " + str(e))
- args = { 'persistent_group_object': self.persistent,
- 'peer': self.peer_path }
+ args = {'persistent_group_object': self.persistent,
+ 'peer': self.peer_path}
pin = p2p.Invite(args)
self.invited = True
logger.debug("provisionDiscoveryRequestDisplayPin - peer=%s pin=%s" % (peer_object, pin))
self.peer_path = peer_object
peer = binascii.unhexlify(peer_object.split('/')[-1])
- addr = ':'.join([ "%02x" % i for i in struct.unpack('6B', peer) ])
- params = { 'Role': 'registrar',
- 'P2PDeviceAddress': self.peer['DeviceAddress'],
- 'Bssid': self.peer['DeviceAddress'],
- 'Type': 'pin',
- 'Pin': '12345670' }
+ addr = ':'.join(["%02x" % i for i in struct.unpack('6B', peer)])
+ params = {'Role': 'registrar',
+ 'P2PDeviceAddress': self.peer['DeviceAddress'],
+ 'Bssid': self.peer['DeviceAddress'],
+ 'Type': 'pin',
+ 'Pin': '12345670'}
logger.info("Authorize peer to connect to the group")
dev1 = WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
wps = dbus.Interface(self.g_if_obj, WPAS_DBUS_IFACE_WPS)
def test_dbus_p2p_go_neg_rx(dev, apdev):
"""D-Bus P2P GO Negotiation receive"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
logger.debug("goNegotiationRequest: path=%s dev_passwd_id=%d go_intent=%d" % (path, dev_passwd_id, go_intent))
if dev_passwd_id != 1:
raise Exception("Unexpected dev_passwd_id=%d" % dev_passwd_id)
- args = { 'peer': path, 'wps_method': 'display', 'pin': '12345670',
- 'go_intent': 15, 'persistent': False, 'frequency': 5175 }
+ args = {'peer': path, 'wps_method': 'display', 'pin': '12345670',
+ 'go_intent': 15, 'persistent': False, 'frequency': 5175}
try:
p2p.Connect(args)
raise Exception("Invalid Connect accepted")
if "ConnectChannelUnsupported" not in str(e):
raise Exception("Unexpected error message for invalid Connect: " + str(e))
- args = { 'peer': path, 'wps_method': 'display', 'pin': '12345670',
- 'go_intent': 15, 'persistent': False }
+ args = {'peer': path, 'wps_method': 'display', 'pin': '12345670',
+ 'go_intent': 15, 'persistent': False}
p2p.Connect(args)
def goNegotiationSuccess(self, properties):
def test_dbus_p2p_go_neg_auth(dev, apdev):
"""D-Bus P2P GO Negotiation authorized"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
dev[1].p2p_listen()
def deviceFound(self, path):
logger.debug("deviceFound: path=%s" % path)
- args = { 'peer': path, 'wps_method': 'keypad',
- 'go_intent': 15, 'authorize_only': True }
+ args = {'peer': path, 'wps_method': 'keypad',
+ 'go_intent': 15, 'authorize_only': True}
try:
p2p.Connect(args)
raise Exception("Invalid Connect accepted")
if "InvalidArgs" not in str(e):
raise Exception("Unexpected error message for invalid Connect: " + str(e))
- args = { 'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
- 'go_intent': 15, 'authorize_only': True }
+ args = {'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
+ 'go_intent': 15, 'authorize_only': True}
p2p.Connect(args)
p2p.Listen(10)
dev1 = WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
def test_dbus_p2p_go_neg_init(dev, apdev):
"""D-Bus P2P GO Negotiation initiation"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
dev[1].p2p_listen()
def deviceFound(self, path):
logger.debug("deviceFound: path=%s" % path)
dev1 = WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
- args = { 'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
- 'go_intent': 0 }
+ args = {'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
+ 'go_intent': 0}
p2p.Connect(args)
ev = dev1.wait_global_event(["P2P-GO-NEG-REQUEST"], timeout=15)
def test_dbus_p2p_group_termination_by_go(dev, apdev):
"""D-Bus P2P group removal on GO terminating the group"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
dev[1].p2p_listen()
def deviceFound(self, path):
logger.debug("deviceFound: path=%s" % path)
dev1 = WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
- args = { 'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
- 'go_intent': 0 }
+ args = {'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
+ 'go_intent': 0}
p2p.Connect(args)
ev = dev1.wait_global_event(["P2P-GO-NEG-REQUEST"], timeout=15)
dev[0].global_request("SET p2p_group_idle 0")
def _test_dbus_p2p_group_idle_timeout(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
dev[1].p2p_listen()
def deviceFound(self, path):
logger.debug("deviceFound: path=%s" % path)
dev1 = WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
- args = { 'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
- 'go_intent': 0 }
+ args = {'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
+ 'go_intent': 0}
p2p.Connect(args)
ev = dev1.wait_global_event(["P2P-GO-NEG-REQUEST"], timeout=15)
def test_dbus_p2p_wps_failure(dev, apdev):
"""D-Bus P2P WPS failure"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
logger.debug("goNegotiationRequest: path=%s dev_passwd_id=%d go_intent=%d" % (path, dev_passwd_id, go_intent))
if dev_passwd_id != 1:
raise Exception("Unexpected dev_passwd_id=%d" % dev_passwd_id)
- args = { 'peer': path, 'wps_method': 'display', 'pin': '12345670',
- 'go_intent': 15 }
+ args = {'peer': path, 'wps_method': 'display', 'pin': '12345670',
+ 'go_intent': 15}
p2p.Connect(args)
def goNegotiationSuccess(self, properties):
def test_dbus_p2p_two_groups(dev, apdev):
"""D-Bus P2P with two concurrent groups"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
dev[0].request("SET p2p_no_group_iface 0")
def deviceFound(self, path):
logger.debug("deviceFound: path=%s" % path)
- if addr2.replace(':','') in path:
+ if addr2.replace(':', '') in path:
self.peer = path
- elif addr1.replace(':','') in path:
+ elif addr1.replace(':', '') in path:
self.go = path
if self.go and not self.group1:
logger.info("Join the group")
dev1 = WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
dev1.group_ifname = dev1_group_ifname
dev1.group_request("WPS_PIN any " + pin)
- args = { 'peer': self.go,
- 'join': True,
- 'wps_method': 'pin',
- 'pin': pin,
- 'frequency': 2412 }
+ args = {'peer': self.go,
+ 'join': True,
+ 'wps_method': 'pin',
+ 'pin': pin,
+ 'frequency': 2412}
p2p.Connect(args)
def groupStarted(self, properties):
self.group1iface)
logger.info("Start autonomous GO")
- params = dbus.Dictionary({ 'frequency': 2412 })
+ params = dbus.Dictionary({'frequency': 2412})
p2p.GroupAdd(params)
elif not self.group2:
self.group2 = properties['group_object']
if self.group1 and self.group2:
logger.info("Authorize peer to join the group")
- a2 = binascii.unhexlify(addr2.replace(':',''))
- params = { 'Role': 'enrollee',
- 'P2PDeviceAddress': dbus.ByteArray(a2),
- 'Bssid': dbus.ByteArray(a2),
- 'Type': 'pin',
- 'Pin': '12345670' }
+ a2 = binascii.unhexlify(addr2.replace(':', ''))
+ params = {'Role': 'enrollee',
+ 'P2PDeviceAddress': dbus.ByteArray(a2),
+ 'Bssid': dbus.ByteArray(a2),
+ 'Type': 'pin',
+ 'Pin': '12345670'}
g_wps = dbus.Interface(self.g2_if_obj, WPAS_DBUS_IFACE_WPS)
g_wps.Start(params)
- bssid = ':'.join([ "%02x" % i for i in struct.unpack('6B', self.g2_bssid) ])
+ bssid = ':'.join(["%02x" % i for i in struct.unpack('6B', self.g2_bssid)])
dev2 = WpaSupplicant('wlan2', '/tmp/wpas-wlan2')
dev2.scan_for_bss(bssid, freq=2412)
dev2.global_request("P2P_CONNECT " + bssid + " 12345670 join freq=2412")
def test_dbus_p2p_cancel(dev, apdev):
"""D-Bus P2P Cancel"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
try:
p2p.Cancel()
def deviceFound(self, path):
logger.debug("deviceFound: path=%s" % path)
- args = { 'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
- 'go_intent': 0 }
+ args = {'peer': path, 'wps_method': 'keypad', 'pin': '12345670',
+ 'go_intent': 0}
p2p.Connect(args)
p2p.Cancel()
self.done = True
def test_dbus_p2p_ip_addr(dev, apdev):
"""D-Bus P2P and IP address parameters"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
- vals = [ ("IpAddrGo", "192.168.43.1"),
- ("IpAddrMask", "255.255.255.0"),
- ("IpAddrStart", "192.168.43.100"),
- ("IpAddrEnd", "192.168.43.199") ]
+ vals = [("IpAddrGo", "192.168.43.1"),
+ ("IpAddrMask", "255.255.255.0"),
+ ("IpAddrStart", "192.168.43.100"),
+ ("IpAddrEnd", "192.168.43.199")]
for field, value in vals:
if_obj.Set(WPAS_DBUS_IFACE, field, value,
dbus_interface=dbus.PROPERTIES_IFACE)
def test_dbus_introspect(dev, apdev):
"""D-Bus introspection"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
res = if_obj.Introspect(WPAS_DBUS_IFACE,
dbus_interface=dbus.INTROSPECTABLE_IFACE)
def run_busctl(service, obj):
logger.info("busctl introspect %s %s" % (service, obj))
- cmd = subprocess.Popen([ 'busctl', 'introspect', service, obj ],
+ cmd = subprocess.Popen(['busctl', 'introspect', service, obj],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out = cmd.communicate()
def test_dbus_introspect_busctl(dev, apdev):
"""D-Bus introspection with busctl"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
ifaces = dbus_get(dbus, wpas_obj, "Interfaces")
run_busctl(WPAS_DBUS_SERVICE, WPAS_DBUS_PATH)
run_busctl(WPAS_DBUS_SERVICE, WPAS_DBUS_PATH + "/Interfaces")
run_busctl(WPAS_DBUS_SERVICE, ifaces[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
bssid = apdev[0]['bssid']
dev[0].scan_for_bss(bssid, freq=2412)
id = dev[0].add_network()
def test_dbus_ap(dev, apdev):
"""D-Bus AddNetwork for AP mode"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
ssid = "test-wpa2-psk"
def run_connect(self, *args):
logger.debug("run_connect")
- args = dbus.Dictionary({ 'ssid': ssid,
- 'key_mgmt': 'WPA-PSK',
- 'psk': passphrase,
- 'mode': 2,
- 'frequency': 2412,
- 'scan_freq': 2412 },
+ args = dbus.Dictionary({'ssid': ssid,
+ 'key_mgmt': 'WPA-PSK',
+ 'psk': passphrase,
+ 'mode': 2,
+ 'frequency': 2412,
+ 'scan_freq': 2412},
signature='sv')
self.netw = iface.AddNetwork(args)
iface.SelectNetwork(self.netw)
def test_dbus_connect_wpa_eap(dev, apdev):
"""D-Bus AddNetwork and connection with WPA+WPA2-Enterprise AP"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
ssid = "test-wpa-eap"
def run_connect(self, *args):
logger.debug("run_connect")
- args = dbus.Dictionary({ 'ssid': ssid,
- 'key_mgmt': 'WPA-EAP',
- 'eap': 'PEAP',
- 'identity': 'user',
- 'password': 'password',
- 'ca_cert': 'auth_serv/ca.pem',
- 'phase2': 'auth=MSCHAPV2',
- 'scan_freq': 2412 },
+ args = dbus.Dictionary({'ssid': ssid,
+ 'key_mgmt': 'WPA-EAP',
+ 'eap': 'PEAP',
+ 'identity': 'user',
+ 'password': 'password',
+ 'ca_cert': 'auth_serv/ca.pem',
+ 'phase2': 'auth=MSCHAPV2',
+ 'scan_freq': 2412},
signature='sv')
self.netw = iface.AddNetwork(args)
iface.SelectNetwork(self.netw)
dev[0].request("AP_SCAN 1")
def _test_dbus_ap_scan_2_ap_mode_scan(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
if "OK" not in dev[0].request("AP_SCAN 2"):
def test_dbus_expectdisconnect(dev, apdev):
"""D-Bus ExpectDisconnect"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
wpas = dbus.Interface(wpas_obj, WPAS_DBUS_SERVICE)
- params = { "ssid": "test-open" }
+ params = {"ssid": "test-open"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
def test_dbus_save_config(dev, apdev):
"""D-Bus SaveConfig"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
try:
iface.SaveConfig()
dev[0].request("VENDOR_ELEM_REMOVE 1 *")
def _test_dbus_vendor_elem(dev, apdev):
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
dev[0].request("VENDOR_ELEM_REMOVE 1 *")
def test_dbus_assoc_reject(dev, apdev):
"""D-Bus AssocStatusCode"""
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
iface = dbus.Interface(if_obj, WPAS_DBUS_IFACE)
ssid = "test-open"
- params = { "ssid": ssid,
- "max_listen_interval": "1" }
+ params = {"ssid": ssid,
+ "max_listen_interval": "1"}
hapd = hostapd.add_ap(apdev[0], params)
class TestDbusConnect(TestDbus):
self.loop.quit()
def run_connect(self, *args):
- args = dbus.Dictionary({ 'ssid': ssid,
- 'key_mgmt': 'NONE',
- 'scan_freq': 2412 },
+ args = dbus.Dictionary({'ssid': ssid,
+ 'key_mgmt': 'NONE',
+ 'scan_freq': 2412},
signature='sv')
self.netw = iface.AddNetwork(args)
iface.SelectNetwork(self.netw)
def test_dbus_mesh(dev, apdev):
"""D-Bus mesh"""
check_mesh_support(dev[0])
- (bus,wpas_obj,path,if_obj) = prepare_dbus(dev[0])
+ (bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
mesh = dbus.Interface(if_obj, WPAS_DBUS_IFACE_MESH)
add_open_mesh_network(dev[1])
from utils import *
def wait_dfs_event(hapd, event, timeout):
- dfs_events = [ "DFS-RADAR-DETECTED", "DFS-NEW-CHANNEL",
- "DFS-CAC-START", "DFS-CAC-COMPLETED",
- "DFS-NOP-FINISHED", "AP-ENABLED", "AP-CSA-FINISHED" ]
+ dfs_events = ["DFS-RADAR-DETECTED", "DFS-NEW-CHANNEL",
+ "DFS-CAC-START", "DFS-CAC-COMPLETED",
+ "DFS-NOP-FINISHED", "AP-ENABLED", "AP-CSA-FINISHED"]
ev = hapd.wait_event(dfs_events, timeout=timeout)
if not ev:
raise Exception("DFS event timed out")
@remote_compatible
def test_dfs_radar_on_non_dfs_channel(dev, apdev):
"""DFS radar detection test code on non-DFS channel"""
- params = { "ssid": "radar" }
+ params = {"ssid": "radar"}
hapd = hostapd.add_ap(apdev[0], params)
hapd.request("RADAR DETECTED freq=5260 ht_enabled=1 chan_width=1")
check_dpp_capab(dev[0])
id = []
- tests = [ "DPP:C:81/1,115/36;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkq/24e0rsrfMP9K1Tm8gx+ovP0I=;;",
- "DPP:C:81/1,81/2,81/3,81/4,81/5,81/6,81/7,81/8,81/9,81/10,81/11,81/12,81/13,82/14,83/1,83/2,83/3,83/4,83/5,83/6,83/7,83/8,83/9,84/5,84/6,84/7,84/8,84/9,84/10,84/11,84/12,84/13,115/36;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkq/24e0rsrfMP9K1Tm8gx+ovP0I=;;",
- "DPP:I:SN=4774LH2b4044;M:010203040506;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;",
- "DPP:I:;M:010203040506;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;" ]
+ tests = ["DPP:C:81/1,115/36;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkq/24e0rsrfMP9K1Tm8gx+ovP0I=;;",
+ "DPP:C:81/1,81/2,81/3,81/4,81/5,81/6,81/7,81/8,81/9,81/10,81/11,81/12,81/13,82/14,83/1,83/2,83/3,83/4,83/5,83/6,83/7,83/8,83/9,84/5,84/6,84/7,84/8,84/9,84/10,84/11,84/12,84/13,115/36;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkq/24e0rsrfMP9K1Tm8gx+ovP0I=;;",
+ "DPP:I:SN=4774LH2b4044;M:010203040506;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;",
+ "DPP:I:;M:010203040506;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;"]
for uri in tests:
id.append(dev[0].dpp_qr_code(uri))
if uri != uri2:
raise Exception("Returned URI does not match")
- tests = [ "foo",
- "DPP:",
- "DPP:;;",
- "DPP:C:1/2;M:;K;;",
- "DPP:I:;M:01020304050;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;",
- "DPP:K:" + base64.b64encode(b"hello").decode() + ";;",
- "DPP:K:MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEXiJuIWt1Q/CPCkuULechh37UsXPmbUANOeN5U9sOQROE4o/NEFeFEejROHYwwehF;;",
- "DPP:K:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANNZaZA4T/kRDjnmpI1ACOJhAuTIIEk2KFOpS6XPpGF+EVr/ao3XemkE0/nzXmGaLzLqTUCJknSdxTnVPeWfCVsCAwEAAQ==;;",
- "DPP:K:MIIBCjCB0wYHKoZIzj0CATCBxwIBATAkBgcqhkjOPQEBAhkA/////////////////////v//////////MEsEGP////////////////////7//////////AQYZCEFGeWcgOcPp+mrciQwSf643uzBRrmxAxUAMEWub8hCL2TtV5Uo04Eg6uEhltUEMQQYjagOsDCQ9ny/IOtDoYgA9P8K/YL/EBIHGSuV/8jaeGMQEe1rJM3Vc/l3oR55SBECGQD///////////////+Z3vg2FGvJsbTSKDECAQEDMgAEXiJuIWt1Q/CPCkuULechh37UsXPmbUANOeN5U9sOQROE4o/NEFeFEejROHYwwehF;;",
- "DPP:I:foo\tbar;M:010203040506;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;",
- "DPP:C:1;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkqa24e0rsrfMP9K1Tm8gx+ovP0I=;;",
- "DPP:C:81/1a;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkqa24e0rsrfMP9K1Tm8gx+ovP0I=;;",
- "DPP:C:1/2000,81/-1;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkqa24e0rsrfMP9K1Tm8gx+ovP0I=;;",
- "DPP:C:-1/1;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkqa24e0rsrfMP9K1Tm8gx+ovP0I=;;" ]
+ tests = ["foo",
+ "DPP:",
+ "DPP:;;",
+ "DPP:C:1/2;M:;K;;",
+ "DPP:I:;M:01020304050;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;",
+ "DPP:K:" + base64.b64encode(b"hello").decode() + ";;",
+ "DPP:K:MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEXiJuIWt1Q/CPCkuULechh37UsXPmbUANOeN5U9sOQROE4o/NEFeFEejROHYwwehF;;",
+ "DPP:K:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANNZaZA4T/kRDjnmpI1ACOJhAuTIIEk2KFOpS6XPpGF+EVr/ao3XemkE0/nzXmGaLzLqTUCJknSdxTnVPeWfCVsCAwEAAQ==;;",
+ "DPP:K:MIIBCjCB0wYHKoZIzj0CATCBxwIBATAkBgcqhkjOPQEBAhkA/////////////////////v//////////MEsEGP////////////////////7//////////AQYZCEFGeWcgOcPp+mrciQwSf643uzBRrmxAxUAMEWub8hCL2TtV5Uo04Eg6uEhltUEMQQYjagOsDCQ9ny/IOtDoYgA9P8K/YL/EBIHGSuV/8jaeGMQEe1rJM3Vc/l3oR55SBECGQD///////////////+Z3vg2FGvJsbTSKDECAQEDMgAEXiJuIWt1Q/CPCkuULechh37UsXPmbUANOeN5U9sOQROE4o/NEFeFEejROHYwwehF;;",
+ "DPP:I:foo\tbar;M:010203040506;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;",
+ "DPP:C:1;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkqa24e0rsrfMP9K1Tm8gx+ovP0I=;;",
+ "DPP:C:81/1a;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkqa24e0rsrfMP9K1Tm8gx+ovP0I=;;",
+ "DPP:C:1/2000,81/-1;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkqa24e0rsrfMP9K1Tm8gx+ovP0I=;;",
+ "DPP:C:-1/1;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADM2206avxHJaHXgLMkqa24e0rsrfMP9K1Tm8gx+ovP0I=;;"]
for t in tests:
res = dev[0].request("DPP_QR_CODE " + t)
if "FAIL" not in res:
if "FAIL" not in dev[0].request("DPP_QR_CODE DPP:I:SN=4774LH2b4044;M:010203040506;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;"):
raise Exception("DPP_QR_CODE failure not reported")
-dpp_key_p256 ="30570201010420777fc55dc51e967c10ec051b91d860b5f1e6c934e48d5daffef98d032c64b170a00a06082a8648ce3d030107a124032200020c804188c7f85beb6e91070d2b3e5e39b90ca77b4d3c5251bc1844d6ca29dcad"
+dpp_key_p256 = "30570201010420777fc55dc51e967c10ec051b91d860b5f1e6c934e48d5daffef98d032c64b170a00a06082a8648ce3d030107a124032200020c804188c7f85beb6e91070d2b3e5e39b90ca77b4d3c5251bc1844d6ca29dcad"
dpp_key_p384 = "307402010104302f56fdd83b5345cacb630eb7c22fa5ad5daba37307c95191e2a75756d137003bd8b32dbcb00eb5650c1eb499ecfcaec0a00706052b81040022a13403320003615ec2141b5b77aebb6523f8a012755f9a34405a8398d2ceeeebca7f5ce868bf55056cba4c4ec62fad3ed26dd29e0f23"
dpp_key_p521 = "308198020101044200c8010d5357204c252551aaf4e210343111e503fd1dc615b257058997c49b6b643c975226e93be8181cca3d83a7072defd161dfbdf433c19abe1f2ad51867a05761a00706052b81040023a1460344000301cdf3608b1305fe34a1f976095dcf001182b9973354efe156291a66830292f9babd8f412ad462958663e7a75d1d0610abdfc3dd95d40669f7ab3bc001668cfb3b7c"
dpp_key_bp256 = "3058020101042057133a676fb60bf2a3e6797e19833c7b0f89dc192ab99ab5fa377ae23a157765a00b06092b2403030208010107a12403220002945d9bf7ce30c9c1ac0ff21ca62b984d5bb80ff69d2be8c9716ab39a10d2caf0"
def test_dpp_qr_code_curves(dev, apdev):
"""DPP QR Code and supported curves"""
check_dpp_capab(dev[0])
- tests = [ ("prime256v1", dpp_key_p256),
- ("secp384r1", dpp_key_p384),
- ("secp521r1", dpp_key_p521) ]
+ tests = [("prime256v1", dpp_key_p256),
+ ("secp384r1", dpp_key_p384),
+ ("secp521r1", dpp_key_p521)]
for curve, hex in tests:
id = dev[0].dpp_bootstrap_gen(key=hex)
info = dev[0].request("DPP_BOOTSTRAP_INFO %d" % id)
def test_dpp_qr_code_curves_brainpool(dev, apdev):
"""DPP QR Code and supported Brainpool curves"""
check_dpp_capab(dev[0], brainpool=True)
- tests = [ ("brainpoolP256r1", dpp_key_bp256),
- ("brainpoolP384r1", dpp_key_bp384),
- ("brainpoolP512r1", dpp_key_bp512) ]
+ tests = [("brainpoolP256r1", dpp_key_bp256),
+ ("brainpoolP384r1", dpp_key_bp384),
+ ("brainpoolP512r1", dpp_key_bp512)]
for curve, hex in tests:
id = dev[0].dpp_bootstrap_gen(key=hex)
info = dev[0].request("DPP_BOOTSTRAP_INFO %d" % id)
if "FAIL" not in id:
raise Exception("Unsupported curve accepted")
- tests = [ "30",
- "305f02010104187f723ed9e1b41979ec5cd02eb82696efc76b40e277661049a00a06082a8648ce3d030101a134033200043f292614dea97c43f500f069e79ae9fb48f8b07369180de5eec8fa2bc9eea5af7a46dc335f52f10cb1c0e9464201d41b" ]
+ tests = ["30",
+ "305f02010104187f723ed9e1b41979ec5cd02eb82696efc76b40e277661049a00a06082a8648ce3d030101a134033200043f292614dea97c43f500f069e79ae9fb48f8b07369180de5eec8fa2bc9eea5af7a46dc335f52f10cb1c0e9464201d41b"]
for hex in tests:
id = dev[0].request("DPP_BOOTSTRAP_GEN type=qrcode key=" + hex)
if "FAIL" not in id:
check_dpp_capab(dev[1], brainpool=True)
bi = []
- for key in [ dpp_key_p256, dpp_key_p384, dpp_key_p521,
- dpp_key_bp256, dpp_key_bp384, dpp_key_bp512 ]:
+ for key in [dpp_key_p256, dpp_key_p384, dpp_key_p521,
+ dpp_key_bp256, dpp_key_bp384, dpp_key_bp512]:
id = dev[0].dpp_bootstrap_gen(chan="81/1", mac=True, key=key)
info = dev[0].request("DPP_BOOTSTRAP_INFO %d" % id)
for i in info.splitlines():
def test_dpp_qr_code_auth_hostapd_mutual2(dev, apdev):
"""DPP QR Code and authentication exchange (hostapd mutual2)"""
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
check_dpp_capab(hapd)
logger.info("AP displays QR Code")
def test_dpp_config_jws_error_prot_hdr_no_typ(dev, apdev):
"""DPP Config Object JWS error - protected header - no typ"""
- prot_hdr='{"kid":"TnGKjIlNZaatrEAYrbbjiB67rjkL_AGVWXO6q9hDJKU","alg":"ES256"}'
+ prot_hdr = '{"kid":"TnGKjIlNZaatrEAYrbbjiB67rjkL_AGVWXO6q9hDJKU","alg":"ES256"}'
run_dpp_config_error(dev, apdev, build_conf_obj(prot_hdr=prot_hdr))
def test_dpp_config_jws_error_prot_hdr_unsupported_typ(dev, apdev):
"""DPP Config Object JWS error - protected header - unsupported typ"""
- prot_hdr='{"typ":"unsupported","kid":"TnGKjIlNZaatrEAYrbbjiB67rjkL_AGVWXO6q9hDJKU","alg":"ES256"}'
+ prot_hdr = '{"typ":"unsupported","kid":"TnGKjIlNZaatrEAYrbbjiB67rjkL_AGVWXO6q9hDJKU","alg":"ES256"}'
run_dpp_config_error(dev, apdev, build_conf_obj(prot_hdr=prot_hdr))
def test_dpp_config_jws_error_prot_hdr_no_alg(dev, apdev):
"""DPP Config Object JWS error - protected header - no alg"""
- prot_hdr='{"typ":"dppCon","kid":"TnGKjIlNZaatrEAYrbbjiB67rjkL_AGVWXO6q9hDJKU"}'
+ prot_hdr = '{"typ":"dppCon","kid":"TnGKjIlNZaatrEAYrbbjiB67rjkL_AGVWXO6q9hDJKU"}'
run_dpp_config_error(dev, apdev, build_conf_obj(prot_hdr=prot_hdr))
def test_dpp_config_jws_error_prot_hdr_unexpected_alg(dev, apdev):
"""DPP Config Object JWS error - protected header - unexpected alg"""
- prot_hdr='{"typ":"dppCon","kid":"TnGKjIlNZaatrEAYrbbjiB67rjkL_AGVWXO6q9hDJKU","alg":"unexpected"}'
+ prot_hdr = '{"typ":"dppCon","kid":"TnGKjIlNZaatrEAYrbbjiB67rjkL_AGVWXO6q9hDJKU","alg":"unexpected"}'
run_dpp_config_error(dev, apdev, build_conf_obj(prot_hdr=prot_hdr))
def test_dpp_config_jws_error_prot_hdr_no_kid(dev, apdev):
"""DPP Config Object JWS error - protected header - no kid"""
- prot_hdr='{"typ":"dppCon","alg":"ES256"}'
+ prot_hdr = '{"typ":"dppCon","alg":"ES256"}'
run_dpp_config_error(dev, apdev, build_conf_obj(prot_hdr=prot_hdr))
def test_dpp_config_jws_error_prot_hdr_unexpected_kid(dev, apdev):
"""DPP Config Object JWS error - protected header - unexpected kid"""
- prot_hdr='{"typ":"dppCon","kid":"MTIz","alg":"ES256"}'
+ prot_hdr = '{"typ":"dppCon","kid":"MTIz","alg":"ES256"}'
run_dpp_config_error(dev, apdev, build_conf_obj(prot_hdr=prot_hdr))
def test_dpp_config_signed_connector_error_no_dot_1(dev, apdev):
def ecdsa_sign(pkey, message, alg="sha256"):
sign = OpenSSL.crypto.sign(pkey, message, alg)
- a,b = struct.unpack('BB', sign[0:2])
+ a, b = struct.unpack('BB', sign[0:2])
if a != 0x30:
raise Exception("Invalid DER encoding of ECDSA signature")
if b != len(sign) - 2:
raise Exception("Invalid length of ECDSA signature")
sign = sign[2:]
- a,b = struct.unpack('BB', sign[0:2])
+ a, b = struct.unpack('BB', sign[0:2])
if a != 0x02:
raise Exception("Invalid DER encoding of ECDSA signature r")
if b > len(sign) - 2:
else:
raise Exception("Invalid length of ECDSA signature r")
- a,b = struct.unpack('BB', sign[0:2])
+ a, b = struct.unpack('BB', sign[0:2])
if a != 0x02:
raise Exception("Invalid DER encoding of ECDSA signature s")
if b > len(sign) - 2:
def run_dpp_akm(dev, apdev, pmk_len):
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- params = { "ssid": "dpp",
- "wpa": "2",
- "wpa_key_mgmt": "DPP",
- "rsn_pairwise": "CCMP",
- "ieee80211w": "2" }
+ params = {"ssid": "dpp",
+ "wpa": "2",
+ "wpa_key_mgmt": "DPP",
+ "rsn_pairwise": "CCMP",
+ "ieee80211w": "2"}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- params = { "ssid": "dpp",
- "wpa": "2",
- "wpa_key_mgmt": "DPP",
- "ieee80211w": "2",
- "rsn_pairwise": "CCMP",
- "dpp_connector": params1_ap_connector,
- "dpp_csign": params1_csign,
- "dpp_netaccesskey": params1_ap_netaccesskey }
+ params = {"ssid": "dpp",
+ "wpa": "2",
+ "wpa_key_mgmt": "DPP",
+ "ieee80211w": "2",
+ "rsn_pairwise": "CCMP",
+ "dpp_connector": params1_ap_connector,
+ "dpp_csign": params1_csign,
+ "dpp_netaccesskey": params1_ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
if "SAE" not in dev[1].get_capability("auth_alg"):
raise HwsimSkip("SAE not supported")
- params = { "ssid": "dpp+sae",
- "wpa": "2",
- "wpa_key_mgmt": "DPP SAE",
- "ieee80211w": "2",
- "rsn_pairwise": "CCMP",
- "sae_password": "sae-password",
- "dpp_connector": params1_ap_connector,
- "dpp_csign": params1_csign,
- "dpp_netaccesskey": params1_ap_netaccesskey }
+ params = {"ssid": "dpp+sae",
+ "wpa": "2",
+ "wpa_key_mgmt": "DPP SAE",
+ "ieee80211w": "2",
+ "rsn_pairwise": "CCMP",
+ "sae_password": "sae-password",
+ "dpp_connector": params1_ap_connector,
+ "dpp_csign": params1_csign,
+ "dpp_netaccesskey": params1_ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
reconf_configurator=False):
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
check_dpp_capab(hapd)
id_h = hapd.dpp_bootstrap_gen(chan="81/1", mac=True, curve=curve)
"""DPP and auto connect (2) using connect_cmd"""
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
- dev_new = [ wpas, dev[1] ]
+ dev_new = [wpas, dev[1]]
try:
run_dpp_auto_connect(dev_new, apdev, 2)
finally:
ap_connector = "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiJwYWtZbXVzd1dCdWpSYTl5OEsweDViaTVrT3VNT3dzZHRlaml2UG55ZHZzIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7Imdyb3VwSWQiOiIqIiwibmV0Um9sZSI6ImFwIn1dLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiIybU5vNXZuRkI5bEw3d1VWb1hJbGVPYzBNSEE1QXZKbnpwZXZULVVTYzVNIiwieSI6IlhzS3dqVHJlLTg5WWdpU3pKaG9CN1haeUttTU05OTl3V2ZaSVl0bi01Q3MifX0.XhjFpZgcSa7G2lHy0OCYTvaZFRo5Hyx6b7g7oYyusLC7C_73AJ4_BxEZQVYJXAtDuGvb3dXSkHEKxREP9Q6Qeg"
ap_netaccesskey = "30770201010420ceba752db2ad5200fa7bc565b9c05c69b7eb006751b0b329b0279de1c19ca67ca00a06082a8648ce3d030107a14403420004da6368e6f9c507d94bef0515a1722578e73430703902f267ce97af4fe51273935ec2b08d3adefbcf588224b3261a01ed76722a630cf7df7059f64862d9fee42b"
- params = { "ssid": "test",
- "wpa": "2",
- "wpa_key_mgmt": "DPP",
- "ieee80211w": "2",
- "rsn_pairwise": "CCMP",
- "dpp_connector": ap_connector,
- "dpp_csign": csign_pub,
- "dpp_netaccesskey": ap_netaccesskey }
+ params = {"ssid": "test",
+ "wpa": "2",
+ "wpa_key_mgmt": "DPP",
+ "ieee80211w": "2",
+ "rsn_pairwise": "CCMP",
+ "dpp_connector": ap_connector,
+ "dpp_csign": csign_pub,
+ "dpp_netaccesskey": ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
def test_dpp_qr_code_hostapd_init(dev, apdev):
"""DPP QR Code and hostapd as initiator"""
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured",
- "channel": "6" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured",
+ "channel": "6"})
check_dpp_capab(hapd)
cmd = "DPP_CONFIGURATOR_ADD"
def run_dpp_qr_code_hostapd_init_offchannel(dev, apdev, extra):
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured",
- "channel": "6" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured",
+ "channel": "6"})
check_dpp_capab(hapd)
cmd = "DPP_CONFIGURATOR_ADD"
def test_dpp_pkex_hostapd_responder(dev, apdev):
"""DPP PKEX with hostapd as responder"""
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured",
- "channel": "6" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured",
+ "channel": "6"})
check_dpp_capab(hapd)
id_h = hapd.dpp_bootstrap_gen(type="pkex")
def test_dpp_pkex_hostapd_initiator(dev, apdev):
"""DPP PKEX with hostapd as initiator"""
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured",
- "channel": "6" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured",
+ "channel": "6"})
check_dpp_capab(hapd)
cmd = "DPP_CONFIGURATOR_ADD"
def test_dpp_hostapd_configurator(dev, apdev):
"""DPP with hostapd as configurator/initiator"""
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured",
- "channel": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured",
+ "channel": "1"})
check_dpp_capab(hapd)
cmd = "DPP_CONFIGURATOR_ADD"
def test_dpp_hostapd_configurator_responder(dev, apdev):
"""DPP with hostapd as configurator/responder"""
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured",
- "channel": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured",
+ "channel": "1"})
check_dpp_capab(hapd)
cmd = "DPP_CONFIGURATOR_ADD"
def run_dpp_own_config(dev, apdev, own_curve=None, expect_failure=False,
extra=""):
check_dpp_capab(dev[0], own_curve and "BP" in own_curve)
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
check_dpp_capab(hapd)
id_h = hapd.dpp_bootstrap_gen(chan="81/1", mac=True)
def run_dpp_own_config_ap(dev, apdev, reconf_configurator=False, extra=""):
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
check_dpp_capab(hapd)
cmd = "DPP_CONFIGURATOR_ADD"
check_dpp_capab(dev[2])
logger.info("Start AP in unconfigured state")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
check_dpp_capab(hapd)
id_h = hapd.dpp_bootstrap_gen(chan="81/1", mac=True)
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- params = { "ssid": "dpp",
- "wpa": "2",
- "wpa_key_mgmt": "DPP",
- "ieee80211w": "2",
- "rsn_pairwise": "CCMP",
- "dpp_connector": params1_ap_connector,
- "dpp_csign": params1_csign,
- "dpp_netaccesskey": params1_ap_netaccesskey }
+ params = {"ssid": "dpp",
+ "wpa": "2",
+ "wpa_key_mgmt": "DPP",
+ "ieee80211w": "2",
+ "rsn_pairwise": "CCMP",
+ "dpp_connector": params1_ap_connector,
+ "dpp_csign": params1_csign,
+ "dpp_netaccesskey": params1_ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
raise HwsimSkip("DPP not supported")
- for test in [ 60, 61, 80, 82 ]:
+ for test in [60, 61, 80, 82]:
dev[0].set("dpp_test", str(test))
dev[0].connect("dpp", key_mgmt="DPP", scan_freq="2412", ieee80211w="2",
dpp_csign=params1_csign,
hapd.dump_monitor()
dev[0].set("dpp_test", "0")
- for test in [ 62, 63, 64, 77, 78, 79 ]:
+ for test in [62, 63, 64, 77, 78, 79]:
hapd.set("dpp_test", str(test))
dev[0].connect("dpp", key_mgmt="DPP", scan_freq="2412", ieee80211w="2",
dpp_csign=params1_csign,
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- tests = [ (1, "=dpp_keygen_configurator"),
- (1, "base64_gen_encode;dpp_keygen_configurator") ]
+ tests = [(1, "=dpp_keygen_configurator"),
+ (1, "base64_gen_encode;dpp_keygen_configurator")]
for count, func in tests:
with alloc_fail(dev[1], count, func):
cmd = "DPP_CONFIGURATOR_ADD"
id1 = dev[1].dpp_bootstrap_gen(type="pkex")
# Local error cases on the Initiator
- tests = [ (1, "dpp_get_pubkey_point"),
- (1, "dpp_alloc_msg;dpp_pkex_build_exchange_req"),
- (1, "dpp_alloc_msg;dpp_pkex_build_commit_reveal_req"),
- (1, "dpp_alloc_msg;dpp_auth_build_req"),
- (1, "dpp_alloc_msg;dpp_auth_build_conf"),
- (1, "dpp_bootstrap_key_hash"),
- (1, "dpp_auth_init"),
- (1, "=dpp_auth_resp_rx"),
- (2, "=dpp_auth_resp_rx"),
- (1, "dpp_build_conf_start"),
- (1, "dpp_build_conf_obj_dpp"),
- (2, "dpp_build_conf_obj_dpp"),
- (3, "dpp_build_conf_obj_dpp"),
- (4, "dpp_build_conf_obj_dpp"),
- (5, "dpp_build_conf_obj_dpp"),
- (6, "dpp_build_conf_obj_dpp"),
- (7, "dpp_build_conf_obj_dpp"),
- (8, "dpp_build_conf_obj_dpp"),
- (1, "dpp_conf_req_rx"),
- (2, "dpp_conf_req_rx"),
- (3, "dpp_conf_req_rx"),
- (4, "dpp_conf_req_rx"),
- (5, "dpp_conf_req_rx"),
- (6, "dpp_conf_req_rx"),
- (7, "dpp_conf_req_rx"),
- (1, "dpp_pkex_init"),
- (2, "dpp_pkex_init"),
- (3, "dpp_pkex_init"),
- (1, "dpp_pkex_derive_z"),
- (1, "=dpp_pkex_rx_commit_reveal_resp"),
- (1, "dpp_get_pubkey_point;dpp_build_jwk"),
- (2, "dpp_get_pubkey_point;dpp_build_jwk"),
- (1, "dpp_get_pubkey_point;dpp_auth_init") ]
+ tests = [(1, "dpp_get_pubkey_point"),
+ (1, "dpp_alloc_msg;dpp_pkex_build_exchange_req"),
+ (1, "dpp_alloc_msg;dpp_pkex_build_commit_reveal_req"),
+ (1, "dpp_alloc_msg;dpp_auth_build_req"),
+ (1, "dpp_alloc_msg;dpp_auth_build_conf"),
+ (1, "dpp_bootstrap_key_hash"),
+ (1, "dpp_auth_init"),
+ (1, "=dpp_auth_resp_rx"),
+ (2, "=dpp_auth_resp_rx"),
+ (1, "dpp_build_conf_start"),
+ (1, "dpp_build_conf_obj_dpp"),
+ (2, "dpp_build_conf_obj_dpp"),
+ (3, "dpp_build_conf_obj_dpp"),
+ (4, "dpp_build_conf_obj_dpp"),
+ (5, "dpp_build_conf_obj_dpp"),
+ (6, "dpp_build_conf_obj_dpp"),
+ (7, "dpp_build_conf_obj_dpp"),
+ (8, "dpp_build_conf_obj_dpp"),
+ (1, "dpp_conf_req_rx"),
+ (2, "dpp_conf_req_rx"),
+ (3, "dpp_conf_req_rx"),
+ (4, "dpp_conf_req_rx"),
+ (5, "dpp_conf_req_rx"),
+ (6, "dpp_conf_req_rx"),
+ (7, "dpp_conf_req_rx"),
+ (1, "dpp_pkex_init"),
+ (2, "dpp_pkex_init"),
+ (3, "dpp_pkex_init"),
+ (1, "dpp_pkex_derive_z"),
+ (1, "=dpp_pkex_rx_commit_reveal_resp"),
+ (1, "dpp_get_pubkey_point;dpp_build_jwk"),
+ (2, "dpp_get_pubkey_point;dpp_build_jwk"),
+ (1, "dpp_get_pubkey_point;dpp_auth_init")]
for count, func in tests:
dev[0].request("DPP_STOP_LISTEN")
dev[1].request("DPP_STOP_LISTEN")
dev[0].wait_event(["GAS-QUERY-DONE"], timeout=3)
# Local error cases on the Responder
- tests = [ (1, "dpp_get_pubkey_point"),
- (1, "dpp_alloc_msg;dpp_pkex_build_exchange_resp"),
- (1, "dpp_alloc_msg;dpp_pkex_build_commit_reveal_resp"),
- (1, "dpp_alloc_msg;dpp_auth_build_resp"),
- (1, "dpp_get_pubkey_point;dpp_auth_build_resp_ok"),
- (1, "=dpp_auth_req_rx"),
- (2, "=dpp_auth_req_rx"),
- (1, "=dpp_auth_conf_rx"),
- (1, "json_parse;dpp_parse_jws_prot_hdr"),
- (1, "json_get_member_base64url;dpp_parse_jws_prot_hdr"),
- (1, "json_get_member_base64url;dpp_parse_jwk"),
- (2, "json_get_member_base64url;dpp_parse_jwk"),
- (1, "json_parse;dpp_parse_connector"),
- (1, "dpp_parse_jwk;dpp_parse_connector"),
- (1, "dpp_parse_jwk;dpp_parse_cred_dpp"),
- (1, "dpp_get_pubkey_point;dpp_check_pubkey_match"),
- (1, "base64_gen_decode;dpp_process_signed_connector"),
- (1, "dpp_parse_jws_prot_hdr;dpp_process_signed_connector"),
- (2, "base64_gen_decode;dpp_process_signed_connector"),
- (3, "base64_gen_decode;dpp_process_signed_connector"),
- (4, "base64_gen_decode;dpp_process_signed_connector"),
- (1, "json_parse;dpp_parse_conf_obj"),
- (1, "dpp_conf_resp_rx"),
- (1, "=dpp_pkex_derive_z"),
- (1, "=dpp_pkex_rx_exchange_req"),
- (2, "=dpp_pkex_rx_exchange_req"),
- (3, "=dpp_pkex_rx_exchange_req"),
- (1, "=dpp_pkex_rx_commit_reveal_req"),
- (1, "dpp_get_pubkey_point;dpp_pkex_rx_commit_reveal_req"),
- (1, "dpp_bootstrap_key_hash") ]
+ tests = [(1, "dpp_get_pubkey_point"),
+ (1, "dpp_alloc_msg;dpp_pkex_build_exchange_resp"),
+ (1, "dpp_alloc_msg;dpp_pkex_build_commit_reveal_resp"),
+ (1, "dpp_alloc_msg;dpp_auth_build_resp"),
+ (1, "dpp_get_pubkey_point;dpp_auth_build_resp_ok"),
+ (1, "=dpp_auth_req_rx"),
+ (2, "=dpp_auth_req_rx"),
+ (1, "=dpp_auth_conf_rx"),
+ (1, "json_parse;dpp_parse_jws_prot_hdr"),
+ (1, "json_get_member_base64url;dpp_parse_jws_prot_hdr"),
+ (1, "json_get_member_base64url;dpp_parse_jwk"),
+ (2, "json_get_member_base64url;dpp_parse_jwk"),
+ (1, "json_parse;dpp_parse_connector"),
+ (1, "dpp_parse_jwk;dpp_parse_connector"),
+ (1, "dpp_parse_jwk;dpp_parse_cred_dpp"),
+ (1, "dpp_get_pubkey_point;dpp_check_pubkey_match"),
+ (1, "base64_gen_decode;dpp_process_signed_connector"),
+ (1, "dpp_parse_jws_prot_hdr;dpp_process_signed_connector"),
+ (2, "base64_gen_decode;dpp_process_signed_connector"),
+ (3, "base64_gen_decode;dpp_process_signed_connector"),
+ (4, "base64_gen_decode;dpp_process_signed_connector"),
+ (1, "json_parse;dpp_parse_conf_obj"),
+ (1, "dpp_conf_resp_rx"),
+ (1, "=dpp_pkex_derive_z"),
+ (1, "=dpp_pkex_rx_exchange_req"),
+ (2, "=dpp_pkex_rx_exchange_req"),
+ (3, "=dpp_pkex_rx_exchange_req"),
+ (1, "=dpp_pkex_rx_commit_reveal_req"),
+ (1, "dpp_get_pubkey_point;dpp_pkex_rx_commit_reveal_req"),
+ (1, "dpp_bootstrap_key_hash")]
for count, func in tests:
dev[0].request("DPP_STOP_LISTEN")
dev[1].request("DPP_STOP_LISTEN")
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- tests = [ (1, "dpp_keygen_configurator") ]
+ tests = [(1, "dpp_keygen_configurator")]
for count, func in tests:
with fail_test(dev[1], count, func):
cmd = "DPP_CONFIGURATOR_ADD"
if "FAIL" not in res:
raise Exception("Unexpected DPP_CONFIGURATOR_ADD success")
- tests = [ (1, "dpp_keygen") ]
+ tests = [(1, "dpp_keygen")]
for count, func in tests:
with fail_test(dev[1], count, func):
cmd = "DPP_BOOTSTRAP_GEN type=pkex"
id1 = dev[1].dpp_bootstrap_gen(type="pkex")
# Local error cases on the Initiator
- tests = [ (1, "aes_siv_encrypt;dpp_auth_build_req"),
- (1, "os_get_random;dpp_auth_init"),
- (1, "dpp_derive_k1;dpp_auth_init"),
- (1, "dpp_hkdf_expand;dpp_derive_k1;dpp_auth_init"),
- (1, "dpp_gen_i_auth;dpp_auth_build_conf"),
- (1, "aes_siv_encrypt;dpp_auth_build_conf"),
- (1, "dpp_derive_k2;dpp_auth_resp_rx"),
- (1, "dpp_hkdf_expand;dpp_derive_k2;dpp_auth_resp_rx"),
- (1, "dpp_derive_ke;dpp_auth_resp_rx"),
- (1, "dpp_hkdf_expand;dpp_derive_ke;dpp_auth_resp_rx"),
- (1, "dpp_gen_r_auth;dpp_auth_resp_rx"),
- (1, "aes_siv_encrypt;dpp_build_conf_resp"),
- (1, "dpp_pkex_derive_Qi;dpp_pkex_build_exchange_req"),
- (1, "aes_siv_encrypt;dpp_pkex_build_commit_reveal_req"),
- (1, "hmac_sha256_vector;dpp_pkex_rx_exchange_resp"),
- (1, "aes_siv_decrypt;dpp_pkex_rx_commit_reveal_resp"),
- (1, "hmac_sha256_vector;dpp_pkex_rx_commit_reveal_resp"),
- (1, "dpp_bootstrap_key_hash") ]
+ tests = [(1, "aes_siv_encrypt;dpp_auth_build_req"),
+ (1, "os_get_random;dpp_auth_init"),
+ (1, "dpp_derive_k1;dpp_auth_init"),
+ (1, "dpp_hkdf_expand;dpp_derive_k1;dpp_auth_init"),
+ (1, "dpp_gen_i_auth;dpp_auth_build_conf"),
+ (1, "aes_siv_encrypt;dpp_auth_build_conf"),
+ (1, "dpp_derive_k2;dpp_auth_resp_rx"),
+ (1, "dpp_hkdf_expand;dpp_derive_k2;dpp_auth_resp_rx"),
+ (1, "dpp_derive_ke;dpp_auth_resp_rx"),
+ (1, "dpp_hkdf_expand;dpp_derive_ke;dpp_auth_resp_rx"),
+ (1, "dpp_gen_r_auth;dpp_auth_resp_rx"),
+ (1, "aes_siv_encrypt;dpp_build_conf_resp"),
+ (1, "dpp_pkex_derive_Qi;dpp_pkex_build_exchange_req"),
+ (1, "aes_siv_encrypt;dpp_pkex_build_commit_reveal_req"),
+ (1, "hmac_sha256_vector;dpp_pkex_rx_exchange_resp"),
+ (1, "aes_siv_decrypt;dpp_pkex_rx_commit_reveal_resp"),
+ (1, "hmac_sha256_vector;dpp_pkex_rx_commit_reveal_resp"),
+ (1, "dpp_bootstrap_key_hash")]
for count, func in tests:
dev[0].request("DPP_STOP_LISTEN")
dev[1].request("DPP_STOP_LISTEN")
dev[0].wait_event(["GAS-QUERY-DONE"], timeout=3)
# Local error cases on the Responder
- tests = [ (1, "aes_siv_encrypt;dpp_auth_build_resp"),
- (1, "aes_siv_encrypt;dpp_auth_build_resp;dpp_auth_build_resp_ok"),
- (1, "os_get_random;dpp_build_conf_req"),
- (1, "aes_siv_encrypt;dpp_build_conf_req"),
- (1, "os_get_random;dpp_auth_build_resp_ok"),
- (1, "dpp_derive_k2;dpp_auth_build_resp_ok"),
- (1, "dpp_derive_ke;dpp_auth_build_resp_ok"),
- (1, "dpp_gen_r_auth;dpp_auth_build_resp_ok"),
- (1, "aes_siv_encrypt;dpp_auth_build_resp_ok"),
- (1, "dpp_derive_k1;dpp_auth_req_rx"),
- (1, "aes_siv_decrypt;dpp_auth_req_rx"),
- (1, "aes_siv_decrypt;dpp_auth_conf_rx"),
- (1, "dpp_gen_i_auth;dpp_auth_conf_rx"),
- (1, "dpp_check_pubkey_match"),
- (1, "aes_siv_decrypt;dpp_conf_resp_rx"),
- (1, "hmac_sha256_kdf;dpp_pkex_derive_z"),
- (1, "dpp_pkex_derive_Qi;dpp_pkex_rx_exchange_req"),
- (1, "dpp_pkex_derive_Qr;dpp_pkex_rx_exchange_req"),
- (1, "aes_siv_encrypt;dpp_pkex_build_commit_reveal_resp"),
- (1, "aes_siv_decrypt;dpp_pkex_rx_commit_reveal_req"),
- (1, "hmac_sha256_vector;dpp_pkex_rx_commit_reveal_req"),
- (2, "hmac_sha256_vector;dpp_pkex_rx_commit_reveal_req") ]
+ tests = [(1, "aes_siv_encrypt;dpp_auth_build_resp"),
+ (1, "aes_siv_encrypt;dpp_auth_build_resp;dpp_auth_build_resp_ok"),
+ (1, "os_get_random;dpp_build_conf_req"),
+ (1, "aes_siv_encrypt;dpp_build_conf_req"),
+ (1, "os_get_random;dpp_auth_build_resp_ok"),
+ (1, "dpp_derive_k2;dpp_auth_build_resp_ok"),
+ (1, "dpp_derive_ke;dpp_auth_build_resp_ok"),
+ (1, "dpp_gen_r_auth;dpp_auth_build_resp_ok"),
+ (1, "aes_siv_encrypt;dpp_auth_build_resp_ok"),
+ (1, "dpp_derive_k1;dpp_auth_req_rx"),
+ (1, "aes_siv_decrypt;dpp_auth_req_rx"),
+ (1, "aes_siv_decrypt;dpp_auth_conf_rx"),
+ (1, "dpp_gen_i_auth;dpp_auth_conf_rx"),
+ (1, "dpp_check_pubkey_match"),
+ (1, "aes_siv_decrypt;dpp_conf_resp_rx"),
+ (1, "hmac_sha256_kdf;dpp_pkex_derive_z"),
+ (1, "dpp_pkex_derive_Qi;dpp_pkex_rx_exchange_req"),
+ (1, "dpp_pkex_derive_Qr;dpp_pkex_rx_exchange_req"),
+ (1, "aes_siv_encrypt;dpp_pkex_build_commit_reveal_resp"),
+ (1, "aes_siv_decrypt;dpp_pkex_rx_commit_reveal_req"),
+ (1, "hmac_sha256_vector;dpp_pkex_rx_commit_reveal_req"),
+ (2, "hmac_sha256_vector;dpp_pkex_rx_commit_reveal_req")]
for count, func in tests:
dev[0].request("DPP_STOP_LISTEN")
dev[1].request("DPP_STOP_LISTEN")
if "FAIL" in res:
raise Exception("Failed to add configurator")
conf_id = int(res)
- tests = [ "",
- " ",
- " conf=sta-dpp",
- " configurator=%d" % conf_id,
- " conf=sta-dpp configurator=%d curve=unsupported" % conf_id ]
+ tests = ["",
+ " ",
+ " conf=sta-dpp",
+ " configurator=%d" % conf_id,
+ " conf=sta-dpp configurator=%d curve=unsupported" % conf_id]
for t in tests:
if "FAIL" not in dev[0].request("DPP_CONFIGURATOR_SIGN " + t):
raise Exception("Invalid command accepted: " + t)
def run_dpp_peer_intro_failures(dev, apdev):
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
check_dpp_capab(hapd)
res = hapd.request("DPP_CONFIGURATOR_ADD key=" + dpp_key_p256)
dev[0].wait_disconnected()
dev[0].dump_monitor()
- tests = [ "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiIwTlNSNTlxRTc0alFfZTFLVGVPV1lYY1pTWnFUaDdNXzU0aHJPcFRpaFJnIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOltdLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiJiVmFMRGlBT09OQmFjcVFVN1pYamFBVEtEMVhhbDVlUExqOUZFZUl3VkN3IiwieSI6Il95c25JR1hTYjBvNEsyMWg0anZmSkZxMHdVNnlPNWp1VUFPd3FuM0dHVHMifX0.WgzZBOJaisWBRxvtXPbVYPXU7OIZxs6sZD-cPOLmJVTIYZKdMkSOMvP5b6si_j61FIrjhm43tmGq1P6cpoxB_g",
- "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiIwTlNSNTlxRTc0alFfZTFLVGVPV1lYY1pTWnFUaDdNXzU0aHJPcFRpaFJnIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7fV0sIm5ldEFjY2Vzc0tleSI6eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwieCI6IkJhY3BWSDNpNDBrZklNS0RHa1FFRzhCODBCaEk4cEFmTWpLbzM5NlFZT2ciLCJ5IjoiMjBDYjhDNjRsSjFzQzV2NXlKMnBFZXRRempxMjI4YVV2cHMxNmQ0M3EwQSJ9fQ.dG2y8VvZQJ5hfob8E5F2FAeR7Nd700qstYkxDgA2QfARaNMZ0_SfKfoG-yKXsIZNM-TvGBfACgfhagG9Oaw_Xw",
- "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiIwTlNSNTlxRTc0alFfZTFLVGVPV1lYY1pTWnFUaDdNXzU0aHJPcFRpaFJnIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7Imdyb3VwSWQiOiIqIn1dLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiJkc2VmcmJWWlhad0RMWHRpLWlObDBBYkFIOXpqeFFKd0R1SUd5NzNuZGU0IiwieSI6IjZFQnExN3cwYW1fZlh1OUQ4UGxWYk9XZ2I3b19DcTUxWHlmSG8wcHJyeDQifX0.caBvdDUtXrhnS61-juVZ_2FQdprepv0yZjC04G4ERvLUpeX7cgu0Hp-A1aFDogP1PEFGpkaEdcAWRQnSSRiIKQ" ]
+ tests = ["eyJ0eXAiOiJkcHBDb24iLCJraWQiOiIwTlNSNTlxRTc0alFfZTFLVGVPV1lYY1pTWnFUaDdNXzU0aHJPcFRpaFJnIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOltdLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiJiVmFMRGlBT09OQmFjcVFVN1pYamFBVEtEMVhhbDVlUExqOUZFZUl3VkN3IiwieSI6Il95c25JR1hTYjBvNEsyMWg0anZmSkZxMHdVNnlPNWp1VUFPd3FuM0dHVHMifX0.WgzZBOJaisWBRxvtXPbVYPXU7OIZxs6sZD-cPOLmJVTIYZKdMkSOMvP5b6si_j61FIrjhm43tmGq1P6cpoxB_g",
+ "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiIwTlNSNTlxRTc0alFfZTFLVGVPV1lYY1pTWnFUaDdNXzU0aHJPcFRpaFJnIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7fV0sIm5ldEFjY2Vzc0tleSI6eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwieCI6IkJhY3BWSDNpNDBrZklNS0RHa1FFRzhCODBCaEk4cEFmTWpLbzM5NlFZT2ciLCJ5IjoiMjBDYjhDNjRsSjFzQzV2NXlKMnBFZXRRempxMjI4YVV2cHMxNmQ0M3EwQSJ9fQ.dG2y8VvZQJ5hfob8E5F2FAeR7Nd700qstYkxDgA2QfARaNMZ0_SfKfoG-yKXsIZNM-TvGBfACgfhagG9Oaw_Xw",
+ "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiIwTlNSNTlxRTc0alFfZTFLVGVPV1lYY1pTWnFUaDdNXzU0aHJPcFRpaFJnIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7Imdyb3VwSWQiOiIqIn1dLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiJkc2VmcmJWWlhad0RMWHRpLWlObDBBYkFIOXpqeFFKd0R1SUd5NzNuZGU0IiwieSI6IjZFQnExN3cwYW1fZlh1OUQ4UGxWYk9XZ2I3b19DcTUxWHlmSG8wcHJyeDQifX0.caBvdDUtXrhnS61-juVZ_2FQdprepv0yZjC04G4ERvLUpeX7cgu0Hp-A1aFDogP1PEFGpkaEdcAWRQnSSRiIKQ"]
for t in tests:
dev[0].set_network_quoted(id, "dpp_connector", t)
dev[0].select_network(id, freq=2412)
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- params = { "ssid": "dpp",
- "wpa": "2",
- "wpa_key_mgmt": "DPP",
- "ieee80211w": "2",
- "rsn_pairwise": "CCMP",
- "dpp_connector": params1_ap_connector,
- "dpp_csign": params1_csign,
- "dpp_netaccesskey": params1_ap_netaccesskey }
+ params = {"ssid": "dpp",
+ "wpa": "2",
+ "wpa_key_mgmt": "DPP",
+ "ieee80211w": "2",
+ "rsn_pairwise": "CCMP",
+ "dpp_connector": params1_ap_connector,
+ "dpp_csign": params1_csign,
+ "dpp_netaccesskey": params1_ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
raise HwsimSkip("DPP not supported")
- tests = [ "dpp_derive_pmk",
- "dpp_hkdf_expand;dpp_derive_pmk",
- "dpp_derive_pmkid" ]
+ tests = ["dpp_derive_pmk",
+ "dpp_hkdf_expand;dpp_derive_pmk",
+ "dpp_derive_pmkid"]
for func in tests:
with fail_test(dev[0], 1, func):
dev[0].connect("dpp", key_mgmt="DPP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ (1, "base64_gen_decode;dpp_peer_intro"),
- (1, "json_parse;dpp_peer_intro"),
- (50, "json_parse;dpp_peer_intro"),
- (1, "=dpp_peer_intro"),
- (1, "dpp_parse_jwk") ]
- for count,func in tests:
+ tests = [(1, "base64_gen_decode;dpp_peer_intro"),
+ (1, "json_parse;dpp_peer_intro"),
+ (50, "json_parse;dpp_peer_intro"),
+ (1, "=dpp_peer_intro"),
+ (1, "dpp_parse_jwk")]
+ for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("dpp", key_mgmt="DPP", scan_freq="2412",
ieee80211w="2",
dev[0].dump_monitor()
parts = params1_ap_connector.split('.')
- for ap_connector in [ '.'.join(parts[0:2]), '.'.join(parts[0:1]) ]:
+ for ap_connector in ['.'.join(parts[0:2]), '.'.join(parts[0:1])]:
hapd.set("dpp_connector", ap_connector)
dev[0].connect("dpp", key_mgmt="DPP", scan_freq="2412",
ieee80211w="2",
def test_dpp_configurator_id_unknown(dev, apdev):
"""DPP and unknown configurator id"""
run_dpp_configurator_id_unknown(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
run_dpp_configurator_id_unknown(hapd)
def run_dpp_bootstrap_gen_failures(dev, hostapd):
check_dpp_capab(dev)
- tests = [ "type=unsupported",
- "type=qrcode chan=-1",
- "type=qrcode mac=a",
- "type=qrcode key=qq",
- "type=qrcode key=",
- "type=qrcode info=abc\tdef" ]
+ tests = ["type=unsupported",
+ "type=qrcode chan=-1",
+ "type=qrcode mac=a",
+ "type=qrcode key=qq",
+ "type=qrcode key=",
+ "type=qrcode info=abc\tdef"]
for t in tests:
if "FAIL" not in dev.request("DPP_BOOTSTRAP_GEN " + t):
raise Exception("Command accepted unexpectedly")
def test_dpp_bootstrap_gen_failures(dev, apdev):
"""DPP_BOOTSTRAP_GEN/REMOVE/GET_URI/INFO error cases"""
run_dpp_bootstrap_gen_failures(dev[0], False)
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
run_dpp_bootstrap_gen_failures(hapd, True)
def test_dpp_listen_continue(dev, apdev):
dev[0].set("dpp_config_processing", "1")
cmd = "DPP_CONFIGURATOR_SIGN conf=sta-dpp configurator=%d" % conf_id
- tests = [ (1, "=wpas_dpp_add_network"),
- (2, "=wpas_dpp_add_network"),
- (3, "=wpas_dpp_add_network"),
- (4, "=wpas_dpp_add_network"),
- (1, "wpa_config_add_network;wpas_dpp_add_network") ]
- for count,func in tests:
+ tests = [(1, "=wpas_dpp_add_network"),
+ (2, "=wpas_dpp_add_network"),
+ (3, "=wpas_dpp_add_network"),
+ (4, "=wpas_dpp_add_network"),
+ (1, "wpa_config_add_network;wpas_dpp_add_network")]
+ for count, func in tests:
with alloc_fail(dev[0], count, func):
res = dev[0].request(cmd)
if "OK" in res:
dev[0].dump_monitor()
cmd = "DPP_CONFIGURATOR_SIGN conf=sta-psk pass=%s configurator=%d" % (binascii.hexlify(b"passphrase").decode(), conf_id)
- tests = [ (1, "wpa_config_set_quoted;wpas_dpp_add_network") ]
- for count,func in tests:
+ tests = [(1, "wpa_config_set_quoted;wpas_dpp_add_network")]
+ for count, func in tests:
with alloc_fail(dev[0], count, func):
res = dev[0].request(cmd)
if "OK" in res:
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add("wlan5", config=config)
wpas.set("dpp_config_processing", "1")
- run_dpp_qr_code_auth_unicast([ wpas, dev[1] ], apdev, None,
+ run_dpp_qr_code_auth_unicast([wpas, dev[1]], apdev, None,
init_extra="conf=sta-dpp",
require_conf_success=True,
configurator=True)
with open(config, "r") as f:
res = f.read()
- for i in [ "network={", "dpp_connector=", "key_mgmt=DPP", "ieee80211w=2",
- "dpp_netaccesskey=", "dpp_csign=" ]:
+ for i in ["network={", "dpp_connector=", "key_mgmt=DPP", "ieee80211w=2",
+ "dpp_netaccesskey=", "dpp_csign="]:
if i not in res:
raise Exception("Configuration file missing '%s'" % i)
"""DPP and Enrollee AP rejecting Config Object"""
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
check_dpp_capab(hapd)
hapd.set("dpp_test", "91")
t = threading.Thread(target=run_pyrad_server, args=(srv, t_stop, eap_handler))
t.start()
- return { 'srv': srv, 'stop': t_stop, 'thread': t }
+ return {'srv': srv, 'stop': t_stop, 'thread': t}
def stop_radius_server(srv):
srv['stop'].set()
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ ( 1, "eap_msg_alloc;eap_sake_build_msg;eap_sake_process_challenge" ),
- ( 1, "=eap_sake_process_challenge" ),
- ( 1, "eap_sake_compute_mic;eap_sake_process_challenge" ),
- ( 1, "eap_sake_build_msg;eap_sake_process_confirm" ),
- ( 1, "eap_sake_compute_mic;eap_sake_process_confirm" ),
- ( 2, "eap_sake_compute_mic;eap_sake_process_confirm" ),
- ( 1, "eap_sake_getKey" ),
- ( 1, "eap_sake_get_emsk" ),
- ( 1, "eap_sake_get_session_id" ) ]
+ tests = [(1, "eap_msg_alloc;eap_sake_build_msg;eap_sake_process_challenge"),
+ (1, "=eap_sake_process_challenge"),
+ (1, "eap_sake_compute_mic;eap_sake_process_challenge"),
+ (1, "eap_sake_build_msg;eap_sake_process_confirm"),
+ (1, "eap_sake_compute_mic;eap_sake_process_confirm"),
+ (2, "eap_sake_compute_mic;eap_sake_process_confirm"),
+ (1, "eap_sake_getKey"),
+ (1, "eap_sake_get_emsk"),
+ (1, "eap_sake_get_session_id")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
timeout=15)
if ev is None:
raise Exception("Timeout on EAP start")
- if i in [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ]:
+ if i in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]:
ev = dev[0].wait_event(["CTRL-EVENT-EAP-FAILURE"],
timeout=10)
if ev is None:
dev.connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
eap="EKE", identity="eke user@domain", password="hello",
phase1=phase1, erp="1", wait_connect=False)
- ev = dev.wait_event([ "CTRL-EVENT-EAP-FAILURE",
- "CTRL-EVENT-EAP-SUCCESS" ], timeout=5)
+ ev = dev.wait_event(["CTRL-EVENT-EAP-FAILURE",
+ "CTRL-EVENT-EAP-SUCCESS"], timeout=5)
if ev is None:
raise Exception("Timeout on EAP failure")
if not success and "CTRL-EVENT-EAP-FAILURE" not in ev:
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "eap_eke_dh_init", None),
- (1, "eap_eke_prf_hmac_sha1", "dhgroup=3 encr=1 prf=1 mac=1"),
- (1, "eap_eke_prf_hmac_sha256", "dhgroup=5 encr=1 prf=2 mac=2"),
- (1, "eap_eke_prf", None),
- (1, "os_get_random;eap_eke_dhcomp", None),
- (1, "aes_128_cbc_encrypt;eap_eke_dhcomp", None),
- (1, "aes_128_cbc_decrypt;eap_eke_shared_secret", None),
- (1, "eap_eke_prf;eap_eke_shared_secret", None),
- (1, "eap_eke_prfplus;eap_eke_derive_ke_ki", None),
- (1, "eap_eke_prfplus;eap_eke_derive_ka", None),
- (1, "eap_eke_prfplus;eap_eke_derive_msk", None),
- (1, "os_get_random;eap_eke_prot", None),
- (1, "aes_128_cbc_decrypt;eap_eke_decrypt_prot", None),
- (1, "eap_eke_derive_key;eap_eke_process_commit", None),
- (1, "eap_eke_dh_init;eap_eke_process_commit", None),
- (1, "eap_eke_shared_secret;eap_eke_process_commit", None),
- (1, "eap_eke_derive_ke_ki;eap_eke_process_commit", None),
- (1, "eap_eke_dhcomp;eap_eke_process_commit", None),
- (1, "os_get_random;eap_eke_process_commit", None),
- (1, "os_get_random;=eap_eke_process_commit", None),
- (1, "eap_eke_prot;eap_eke_process_commit", None),
- (1, "eap_eke_decrypt_prot;eap_eke_process_confirm", None),
- (1, "eap_eke_derive_ka;eap_eke_process_confirm", None),
- (1, "eap_eke_auth;eap_eke_process_confirm", None),
- (2, "eap_eke_auth;eap_eke_process_confirm", None),
- (1, "eap_eke_prot;eap_eke_process_confirm", None),
- (1, "eap_eke_derive_msk;eap_eke_process_confirm", None) ]
+ tests = [(1, "eap_eke_dh_init", None),
+ (1, "eap_eke_prf_hmac_sha1", "dhgroup=3 encr=1 prf=1 mac=1"),
+ (1, "eap_eke_prf_hmac_sha256", "dhgroup=5 encr=1 prf=2 mac=2"),
+ (1, "eap_eke_prf", None),
+ (1, "os_get_random;eap_eke_dhcomp", None),
+ (1, "aes_128_cbc_encrypt;eap_eke_dhcomp", None),
+ (1, "aes_128_cbc_decrypt;eap_eke_shared_secret", None),
+ (1, "eap_eke_prf;eap_eke_shared_secret", None),
+ (1, "eap_eke_prfplus;eap_eke_derive_ke_ki", None),
+ (1, "eap_eke_prfplus;eap_eke_derive_ka", None),
+ (1, "eap_eke_prfplus;eap_eke_derive_msk", None),
+ (1, "os_get_random;eap_eke_prot", None),
+ (1, "aes_128_cbc_decrypt;eap_eke_decrypt_prot", None),
+ (1, "eap_eke_derive_key;eap_eke_process_commit", None),
+ (1, "eap_eke_dh_init;eap_eke_process_commit", None),
+ (1, "eap_eke_shared_secret;eap_eke_process_commit", None),
+ (1, "eap_eke_derive_ke_ki;eap_eke_process_commit", None),
+ (1, "eap_eke_dhcomp;eap_eke_process_commit", None),
+ (1, "os_get_random;eap_eke_process_commit", None),
+ (1, "os_get_random;=eap_eke_process_commit", None),
+ (1, "eap_eke_prot;eap_eke_process_commit", None),
+ (1, "eap_eke_decrypt_prot;eap_eke_process_confirm", None),
+ (1, "eap_eke_derive_ka;eap_eke_process_confirm", None),
+ (1, "eap_eke_auth;eap_eke_process_confirm", None),
+ (2, "eap_eke_auth;eap_eke_process_confirm", None),
+ (1, "eap_eke_prot;eap_eke_process_confirm", None),
+ (1, "eap_eke_derive_msk;eap_eke_process_confirm", None)]
for count, func, phase1 in tests:
with fail_test(dev[0], count, func):
eap_eke_test_fail(dev[0], phase1)
- tests = [ (1, "=eap_eke_derive_ke_ki", None),
- (1, "=eap_eke_derive_ka", None),
- (1, "=eap_eke_derive_msk", None),
- (1, "eap_eke_build_msg;eap_eke_process_id", None),
- (1, "wpabuf_alloc;eap_eke_process_id", None),
- (1, "=eap_eke_process_id", None),
- (1, "wpabuf_alloc;=eap_eke_process_id", None),
- (1, "wpabuf_alloc;eap_eke_process_id", None),
- (1, "eap_eke_build_msg;eap_eke_process_commit", None),
- (1, "wpabuf_resize;eap_eke_process_commit", None),
- (1, "eap_eke_build_msg;eap_eke_process_confirm", None) ]
+ tests = [(1, "=eap_eke_derive_ke_ki", None),
+ (1, "=eap_eke_derive_ka", None),
+ (1, "=eap_eke_derive_msk", None),
+ (1, "eap_eke_build_msg;eap_eke_process_id", None),
+ (1, "wpabuf_alloc;eap_eke_process_id", None),
+ (1, "=eap_eke_process_id", None),
+ (1, "wpabuf_alloc;=eap_eke_process_id", None),
+ (1, "wpabuf_alloc;eap_eke_process_id", None),
+ (1, "eap_eke_build_msg;eap_eke_process_commit", None),
+ (1, "wpabuf_resize;eap_eke_process_commit", None),
+ (1, "eap_eke_build_msg;eap_eke_process_confirm", None)]
for count, func, phase1 in tests:
with alloc_fail(dev[0], count, func):
eap_eke_test_fail(dev[0], phase1)
- tests = [ (1, "eap_eke_getKey", None),
- (1, "eap_eke_get_emsk", None),
- (1, "eap_eke_get_session_id", None) ]
+ tests = [(1, "eap_eke_getKey", None),
+ (1, "eap_eke_get_emsk", None),
+ (1, "eap_eke_get_session_id", None)]
for count, func, phase1 in tests:
with alloc_fail(dev[0], count, func):
eap_eke_test_fail(dev[0], phase1, success=True)
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ "eap_msg_alloc;eap_pax_alloc_resp;eap_pax_process_std_1",
- "eap_msg_alloc;eap_pax_alloc_resp;eap_pax_process_std_3",
- "eap_pax_getKey",
- "eap_pax_get_emsk",
- "eap_pax_get_session_id" ]
+ tests = ["eap_msg_alloc;eap_pax_alloc_resp;eap_pax_process_std_1",
+ "eap_msg_alloc;eap_pax_alloc_resp;eap_pax_process_std_3",
+ "eap_pax_getKey",
+ "eap_pax_get_emsk",
+ "eap_pax_get_session_id"]
for func in tests:
with alloc_fail(dev[0], 1, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "os_get_random;eap_pax_process_std_1"),
- (1, "eap_pax_initial_key_derivation"),
- (1, "eap_pax_mac;eap_pax_process_std_3"),
- (2, "eap_pax_mac;eap_pax_process_std_3"),
- (1, "eap_pax_kdf;eap_pax_getKey"),
- (1, "eap_pax_kdf;eap_pax_get_emsk") ]
+ tests = [(1, "os_get_random;eap_pax_process_std_1"),
+ (1, "eap_pax_initial_key_derivation"),
+ (1, "eap_pax_mac;eap_pax_process_std_3"),
+ (2, "eap_pax_mac;eap_pax_process_std_3"),
+ (1, "eap_pax_kdf;eap_pax_getKey"),
+ (1, "eap_pax_kdf;eap_pax_get_emsk")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "=eap_psk_process_1"),
- (2, "=eap_psk_process_1"),
- (1, "eap_msg_alloc;eap_psk_process_1"),
- (1, "=eap_psk_process_3"),
- (2, "=eap_psk_process_3"),
- (1, "eap_msg_alloc;eap_psk_process_3"),
- (1, "eap_psk_getKey"),
- (1, "eap_psk_get_session_id"),
- (1, "eap_psk_get_emsk") ]
+ tests = [(1, "=eap_psk_process_1"),
+ (2, "=eap_psk_process_1"),
+ (1, "eap_msg_alloc;eap_psk_process_1"),
+ (1, "=eap_psk_process_3"),
+ (2, "=eap_psk_process_3"),
+ (1, "eap_msg_alloc;eap_psk_process_3"),
+ (1, "eap_psk_getKey"),
+ (1, "eap_psk_get_session_id"),
+ (1, "eap_psk_get_emsk")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "os_get_random;eap_psk_process_1"),
- (1, "omac1_aes_128;eap_psk_process_3"),
- (1, "aes_128_eax_decrypt;eap_psk_process_3"),
- (2, "aes_128_eax_decrypt;eap_psk_process_3"),
- (3, "aes_128_eax_decrypt;eap_psk_process_3"),
- (1, "aes_128_eax_encrypt;eap_psk_process_3"),
- (2, "aes_128_eax_encrypt;eap_psk_process_3"),
- (3, "aes_128_eax_encrypt;eap_psk_process_3"),
- (1, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (2, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (3, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (4, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (5, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (6, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (7, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (8, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (9, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (10, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
- (1, "aes_ctr_encrypt;aes_128_eax_decrypt;eap_psk_process_3"),
- (1, "aes_ctr_encrypt;aes_128_eax_encrypt;eap_psk_process_3") ]
+ tests = [(1, "os_get_random;eap_psk_process_1"),
+ (1, "omac1_aes_128;eap_psk_process_3"),
+ (1, "aes_128_eax_decrypt;eap_psk_process_3"),
+ (2, "aes_128_eax_decrypt;eap_psk_process_3"),
+ (3, "aes_128_eax_decrypt;eap_psk_process_3"),
+ (1, "aes_128_eax_encrypt;eap_psk_process_3"),
+ (2, "aes_128_eax_encrypt;eap_psk_process_3"),
+ (3, "aes_128_eax_encrypt;eap_psk_process_3"),
+ (1, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (2, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (3, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (4, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (5, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (6, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (7, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (8, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (9, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (10, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+ (1, "aes_ctr_encrypt;aes_128_eax_decrypt;eap_psk_process_3"),
+ (1, "aes_ctr_encrypt;aes_128_eax_encrypt;eap_psk_process_3")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
timeout=15)
if ev is None:
raise Exception("Timeout on EAP start")
- if i in [ 0, 15 ]:
+ if i in [0, 15]:
time.sleep(0.1)
else:
ev = dev[0].wait_event(["CTRL-EVENT-EAP-FAILURE"],
timeout=15)
if ev is None:
raise Exception("Timeout on EAP start")
- if i in [ 0 ]:
+ if i in [0]:
time.sleep(0.1)
else:
ev = dev[0].wait_event(["CTRL-EVENT-EAP-FAILURE"],
timeout=15)
if ev is None:
raise Exception("Timeout on EAP start")
- if i in [ 0 ]:
+ if i in [0]:
time.sleep(0.1)
else:
ev = dev[0].wait_event(["CTRL-EVENT-EAP-FAILURE"],
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ (1, "eap_sim_verify_mac;eap_sim_process_challenge"),
- (1, "eap_sim_parse_encr;eap_sim_process_challenge"),
- (1, "eap_sim_msg_init;eap_sim_response_start"),
- (1, "wpabuf_alloc;eap_sim_msg_init;eap_sim_response_start"),
- (1, "=eap_sim_learn_ids"),
- (2, "=eap_sim_learn_ids"),
- (2, "eap_sim_learn_ids"),
- (3, "eap_sim_learn_ids"),
- (1, "eap_sim_process_start"),
- (1, "eap_sim_getKey"),
- (1, "eap_sim_get_emsk"),
- (1, "eap_sim_get_session_id") ]
+ tests = [(1, "eap_sim_verify_mac;eap_sim_process_challenge"),
+ (1, "eap_sim_parse_encr;eap_sim_process_challenge"),
+ (1, "eap_sim_msg_init;eap_sim_response_start"),
+ (1, "wpabuf_alloc;eap_sim_msg_init;eap_sim_response_start"),
+ (1, "=eap_sim_learn_ids"),
+ (2, "=eap_sim_learn_ids"),
+ (2, "eap_sim_learn_ids"),
+ (3, "eap_sim_learn_ids"),
+ (1, "eap_sim_process_start"),
+ (1, "eap_sim_getKey"),
+ (1, "eap_sim_get_emsk"),
+ (1, "eap_sim_get_session_id")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ (1, "aes_128_cbc_decrypt;eap_sim_parse_encr") ]
+ tests = [(1, "aes_128_cbc_decrypt;eap_sim_parse_encr")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ "eap_sim_msg_add_encr_start;eap_sim_response_notification",
- "aes_128_cbc_encrypt;eap_sim_response_notification" ]
+ tests = ["eap_sim_msg_add_encr_start;eap_sim_response_notification",
+ "aes_128_cbc_encrypt;eap_sim_response_notification"]
for func in tests:
with fail_test(dev[0], 1, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ "eap_sim_parse_encr;eap_sim_process_notification_reauth" ]
+ tests = ["eap_sim_parse_encr;eap_sim_process_notification_reauth"]
for func in tests:
with alloc_fail(dev[0], 1, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "=eap_aka_learn_ids"),
- (2, "=eap_aka_learn_ids"),
- (1, "eap_sim_parse_encr;eap_aka_process_challenge"),
- (1, "wpabuf_dup;eap_aka_add_id_msg"),
- (1, "wpabuf_resize;eap_aka_add_id_msg"),
- (1, "eap_aka_getKey"),
- (1, "eap_aka_get_emsk"),
- (1, "eap_aka_get_session_id") ]
+ tests = [(1, "=eap_aka_learn_ids"),
+ (2, "=eap_aka_learn_ids"),
+ (1, "eap_sim_parse_encr;eap_aka_process_challenge"),
+ (1, "wpabuf_dup;eap_aka_add_id_msg"),
+ (1, "wpabuf_resize;eap_aka_add_id_msg"),
+ (1, "eap_aka_getKey"),
+ (1, "eap_aka_get_emsk"),
+ (1, "eap_aka_get_session_id")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ "eap_sim_msg_add_encr_start;eap_aka_response_notification",
- "aes_128_cbc_encrypt;eap_aka_response_notification" ]
+ tests = ["eap_sim_msg_add_encr_start;eap_aka_response_notification",
+ "aes_128_cbc_encrypt;eap_aka_response_notification"]
for func in tests:
with fail_test(dev[0], 1, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ "eap_sim_parse_encr;eap_aka_process_notification_reauth" ]
+ tests = ["eap_sim_parse_encr;eap_aka_process_notification_reauth"]
for func in tests:
with alloc_fail(dev[0], 1, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
- tests = [ (1, "eap_sim_verify_mac_sha256"),
- (1, "=eap_aka_process_challenge") ]
+ tests = [(1, "eap_sim_verify_mac_sha256"),
+ (1, "=eap_aka_process_challenge")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
timeout=15)
if ev is None:
raise Exception("Timeout on EAP method start")
- if i in [ 41, 46 ]:
+ if i in [41, 46]:
ev = dev[0].wait_event(["CTRL-EVENT-EAP-FAILURE"],
timeout=10)
if ev is None:
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "ikev2_encr_encrypt"),
- (1, "ikev2_encr_decrypt"),
- (1, "ikev2_derive_auth_data"),
- (2, "ikev2_derive_auth_data"),
- (1, "=ikev2_decrypt_payload"),
- (1, "ikev2_encr_decrypt;ikev2_decrypt_payload"),
- (1, "ikev2_encr_encrypt;ikev2_build_encrypted"),
- (1, "ikev2_derive_sk_keys"),
- (2, "ikev2_derive_sk_keys"),
- (3, "ikev2_derive_sk_keys"),
- (4, "ikev2_derive_sk_keys"),
- (5, "ikev2_derive_sk_keys"),
- (6, "ikev2_derive_sk_keys"),
- (7, "ikev2_derive_sk_keys"),
- (8, "ikev2_derive_sk_keys"),
- (1, "eap_ikev2_derive_keymat;eap_ikev2_peer_keymat"),
- (1, "eap_msg_alloc;eap_ikev2_build_msg"),
- (1, "eap_ikev2_getKey"),
- (1, "eap_ikev2_get_emsk"),
- (1, "eap_ikev2_get_session_id"),
- (1, "=ikev2_derive_keys"),
- (2, "=ikev2_derive_keys"),
- (1, "wpabuf_alloc;ikev2_process_kei"),
- (1, "=ikev2_process_idi"),
- (1, "ikev2_derive_auth_data;ikev2_build_auth"),
- (1, "wpabuf_alloc;ikev2_build_sa_init"),
- (2, "wpabuf_alloc;ikev2_build_sa_init"),
- (3, "wpabuf_alloc;ikev2_build_sa_init"),
- (4, "wpabuf_alloc;ikev2_build_sa_init"),
- (5, "wpabuf_alloc;ikev2_build_sa_init"),
- (6, "wpabuf_alloc;ikev2_build_sa_init"),
- (1, "wpabuf_alloc;ikev2_build_sa_auth"),
- (2, "wpabuf_alloc;ikev2_build_sa_auth"),
- (1, "ikev2_build_auth;ikev2_build_sa_auth") ]
+ tests = [(1, "ikev2_encr_encrypt"),
+ (1, "ikev2_encr_decrypt"),
+ (1, "ikev2_derive_auth_data"),
+ (2, "ikev2_derive_auth_data"),
+ (1, "=ikev2_decrypt_payload"),
+ (1, "ikev2_encr_decrypt;ikev2_decrypt_payload"),
+ (1, "ikev2_encr_encrypt;ikev2_build_encrypted"),
+ (1, "ikev2_derive_sk_keys"),
+ (2, "ikev2_derive_sk_keys"),
+ (3, "ikev2_derive_sk_keys"),
+ (4, "ikev2_derive_sk_keys"),
+ (5, "ikev2_derive_sk_keys"),
+ (6, "ikev2_derive_sk_keys"),
+ (7, "ikev2_derive_sk_keys"),
+ (8, "ikev2_derive_sk_keys"),
+ (1, "eap_ikev2_derive_keymat;eap_ikev2_peer_keymat"),
+ (1, "eap_msg_alloc;eap_ikev2_build_msg"),
+ (1, "eap_ikev2_getKey"),
+ (1, "eap_ikev2_get_emsk"),
+ (1, "eap_ikev2_get_session_id"),
+ (1, "=ikev2_derive_keys"),
+ (2, "=ikev2_derive_keys"),
+ (1, "wpabuf_alloc;ikev2_process_kei"),
+ (1, "=ikev2_process_idi"),
+ (1, "ikev2_derive_auth_data;ikev2_build_auth"),
+ (1, "wpabuf_alloc;ikev2_build_sa_init"),
+ (2, "wpabuf_alloc;ikev2_build_sa_init"),
+ (3, "wpabuf_alloc;ikev2_build_sa_init"),
+ (4, "wpabuf_alloc;ikev2_build_sa_init"),
+ (5, "wpabuf_alloc;ikev2_build_sa_init"),
+ (6, "wpabuf_alloc;ikev2_build_sa_init"),
+ (1, "wpabuf_alloc;ikev2_build_sa_auth"),
+ (2, "wpabuf_alloc;ikev2_build_sa_auth"),
+ (1, "ikev2_build_auth;ikev2_build_sa_auth")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "wpabuf_alloc;ikev2_build_notify"),
- (2, "wpabuf_alloc;ikev2_build_notify"),
- (1, "ikev2_build_encrypted;ikev2_build_notify") ]
+ tests = [(1, "wpabuf_alloc;ikev2_build_notify"),
+ (2, "wpabuf_alloc;ikev2_build_notify"),
+ (1, "ikev2_build_encrypted;ikev2_build_notify")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "ikev2_integ_hash"),
- (1, "ikev2_integ_hash;ikev2_decrypt_payload"),
- (1, "os_get_random;ikev2_build_encrypted"),
- (1, "ikev2_prf_plus;ikev2_derive_sk_keys"),
- (1, "eap_ikev2_derive_keymat;eap_ikev2_peer_keymat"),
- (1, "os_get_random;ikev2_build_sa_init"),
- (2, "os_get_random;ikev2_build_sa_init"),
- (1, "ikev2_integ_hash;eap_ikev2_validate_icv"),
- (1, "hmac_sha1_vector;?ikev2_prf_hash;ikev2_derive_keys"),
- (1, "hmac_sha1_vector;?ikev2_prf_hash;ikev2_derive_auth_data"),
- (2, "hmac_sha1_vector;?ikev2_prf_hash;ikev2_derive_auth_data"),
- (3, "hmac_sha1_vector;?ikev2_prf_hash;ikev2_derive_auth_data") ]
+ tests = [(1, "ikev2_integ_hash"),
+ (1, "ikev2_integ_hash;ikev2_decrypt_payload"),
+ (1, "os_get_random;ikev2_build_encrypted"),
+ (1, "ikev2_prf_plus;ikev2_derive_sk_keys"),
+ (1, "eap_ikev2_derive_keymat;eap_ikev2_peer_keymat"),
+ (1, "os_get_random;ikev2_build_sa_init"),
+ (2, "os_get_random;ikev2_build_sa_init"),
+ (1, "ikev2_integ_hash;eap_ikev2_validate_icv"),
+ (1, "hmac_sha1_vector;?ikev2_prf_hash;ikev2_derive_keys"),
+ (1, "hmac_sha1_vector;?ikev2_prf_hash;ikev2_derive_auth_data"),
+ (2, "hmac_sha1_vector;?ikev2_prf_hash;ikev2_derive_auth_data"),
+ (3, "hmac_sha1_vector;?ikev2_prf_hash;ikev2_derive_auth_data")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- params = { "ssid": "eap-test2", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
- "rsn_pairwise": "CCMP", "ieee8021x": "1",
- "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
- "fragment_size": "50" }
+ params = {"ssid": "eap-test2", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
+ "rsn_pairwise": "CCMP", "ieee8021x": "1",
+ "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
+ "fragment_size": "50"}
hapd2 = hostapd.add_ap(apdev[1], params)
dev[0].scan_for_bss(hapd2.own_addr(), freq=2412)
- tests = [ (1, "eap_ikev2_build_frag_ack"),
- (1, "wpabuf_alloc;eap_ikev2_process_fragment") ]
+ tests = [(1, "eap_ikev2_build_frag_ack"),
+ (1, "wpabuf_alloc;eap_ikev2_process_fragment")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test2", key_mgmt="WPA-EAP", scan_freq="2412",
if ev is None:
raise Exception("Timeout on EAP start")
- if i in [ 8, 11, 12 ]:
+ if i in [8, 11, 12]:
ev = dev[0].wait_event(["CTRL-REQ-NEW_PASSWORD"],
timeout=10)
if ev is None:
raise Exception("Timeout on new password request")
id = ev.split(':')[0].split('-')[-1]
dev[0].request("CTRL-RSP-NEW_PASSWORD-" + id + ":new-pw")
- if i in [ 11, 12 ]:
+ if i in [11, 12]:
ev = dev[0].wait_event(["CTRL-EVENT-PASSWORD-CHANGED"],
timeout=10)
if ev is None:
if ev is None:
raise Exception("Timeout on EAP failure")
- if i in [ 13 ]:
+ if i in [13]:
ev = dev[0].wait_event(["CTRL-REQ-IDENTITY"],
timeout=10)
if ev is None:
if ev is None:
raise Exception("Timeout on EAP failure")
- if i in [ 4, 5, 6, 7, 14 ]:
+ if i in [4, 5, 6, 7, 14]:
ev = dev[0].wait_event(["CTRL-EVENT-EAP-FAILURE"],
timeout=10)
if ev is None:
hapd = start_ap(apdev[0])
dev[0].scan_for_bss(hapd.own_addr(), freq=2412)
- tests = [ "os_get_random;eap_mschapv2_change_password",
- "generate_nt_response;eap_mschapv2_change_password",
- "get_master_key;eap_mschapv2_change_password",
- "nt_password_hash;eap_mschapv2_change_password",
- "old_nt_password_hash_encrypted_with_new_nt_password_hash" ]
+ tests = ["os_get_random;eap_mschapv2_change_password",
+ "generate_nt_response;eap_mschapv2_change_password",
+ "get_master_key;eap_mschapv2_change_password",
+ "nt_password_hash;eap_mschapv2_change_password",
+ "old_nt_password_hash_encrypted_with_new_nt_password_hash"]
for func in tests:
with fail_test(dev[0], 1, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected(timeout=1)
- tests = [ "encrypt_pw_block_with_password_hash;eap_mschapv2_change_password",
- "nt_password_hash;eap_mschapv2_change_password",
- "nt_password_hash;eap_mschapv2_success" ]
+ tests = ["encrypt_pw_block_with_password_hash;eap_mschapv2_change_password",
+ "nt_password_hash;eap_mschapv2_change_password",
+ "nt_password_hash;eap_mschapv2_success"]
for func in tests:
with fail_test(dev[0], 1, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected(timeout=1)
- tests = [ "eap_msg_alloc;eap_mschapv2_change_password" ]
+ tests = ["eap_msg_alloc;eap_mschapv2_change_password"]
for func in tests:
with alloc_fail(dev[0], 1, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- funcs = [ "eap_pwd_getkey", "eap_pwd_get_emsk" ]
+ funcs = ["eap_pwd_getkey", "eap_pwd_get_emsk"]
for func in funcs:
with alloc_fail(dev[0], 1, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- params = { "ssid": "eap-test2", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
- "rsn_pairwise": "CCMP", "ieee8021x": "1",
- "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
- "pwd_group": "19", "fragment_size": "40" }
+ params = {"ssid": "eap-test2", "wpa": "2", "wpa_key_mgmt": "WPA-EAP",
+ "rsn_pairwise": "CCMP", "ieee8021x": "1",
+ "eap_server": "1", "eap_user_file": "auth_serv/eap_user.conf",
+ "pwd_group": "19", "fragment_size": "40"}
hapd2 = hostapd.add_ap(apdev[1], params)
dev[0].scan_for_bss(hapd2.own_addr(), freq=2412)
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "wpabuf_alloc;eap_fast_tlv_eap_payload"),
- (1, "eap_fast_derive_key;eap_fast_derive_key_auth"),
- (1, "eap_msg_alloc;eap_peer_tls_phase2_nak"),
- (1, "wpabuf_alloc;eap_fast_tlv_result"),
- (1, "wpabuf_alloc;eap_fast_tlv_pac_ack"),
- (1, "=eap_peer_tls_derive_session_id;eap_fast_process_crypto_binding"),
- (1, "eap_peer_tls_decrypt;eap_fast_decrypt"),
- (1, "eap_fast_getKey"),
- (1, "eap_fast_get_session_id"),
- (1, "eap_fast_get_emsk") ]
+ tests = [(1, "wpabuf_alloc;eap_fast_tlv_eap_payload"),
+ (1, "eap_fast_derive_key;eap_fast_derive_key_auth"),
+ (1, "eap_msg_alloc;eap_peer_tls_phase2_nak"),
+ (1, "wpabuf_alloc;eap_fast_tlv_result"),
+ (1, "wpabuf_alloc;eap_fast_tlv_pac_ack"),
+ (1, "=eap_peer_tls_derive_session_id;eap_fast_process_crypto_binding"),
+ (1, "eap_peer_tls_decrypt;eap_fast_decrypt"),
+ (1, "eap_fast_getKey"),
+ (1, "eap_fast_get_session_id"),
+ (1, "eap_fast_get_emsk")]
for count, func in tests:
dev[0].request("SET blob fast_pac_auth_errors ")
with alloc_fail(dev[0], count, func):
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "eap_fast_derive_key;eap_fast_derive_key_provisioning"),
- (1, "eap_mschapv2_getKey;eap_fast_get_phase2_key"),
- (1, "=eap_fast_use_pac_opaque"),
- (1, "eap_fast_copy_buf"),
- (1, "=eap_fast_add_pac"),
- (1, "=eap_fast_init_pac_data"),
- (1, "=eap_fast_write_pac"),
- (2, "=eap_fast_write_pac") ]
+ tests = [(1, "eap_fast_derive_key;eap_fast_derive_key_provisioning"),
+ (1, "eap_mschapv2_getKey;eap_fast_get_phase2_key"),
+ (1, "=eap_fast_use_pac_opaque"),
+ (1, "eap_fast_copy_buf"),
+ (1, "=eap_fast_add_pac"),
+ (1, "=eap_fast_init_pac_data"),
+ (1, "=eap_fast_write_pac"),
+ (2, "=eap_fast_write_pac")]
for count, func in tests:
dev[0].request("SET blob fast_pac_errors ")
with alloc_fail(dev[0], count, func):
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "eap_fast_get_cmk;eap_fast_process_crypto_binding"),
- (1, "eap_fast_derive_eap_msk;eap_fast_process_crypto_binding"),
- (1, "eap_fast_derive_eap_emsk;eap_fast_process_crypto_binding") ]
+ tests = [(1, "eap_fast_get_cmk;eap_fast_process_crypto_binding"),
+ (1, "eap_fast_derive_eap_msk;eap_fast_process_crypto_binding"),
+ (1, "eap_fast_derive_eap_emsk;eap_fast_process_crypto_binding")]
for count, func in tests:
dev[0].request("SET blob fast_pac_auth_errors ")
with fail_test(dev[0], count, func):
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ "FOOBAR\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nFOOBAR\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nSTART\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nEND\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Type=12345\nEND\n"
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Key=12\nEND\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Key=1\nEND\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Key=1q\nEND\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Opaque=1\nEND\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nA-ID=1\nEND\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nI-ID=1\nEND\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nA-ID-Info=1\nEND\n" ]
+ tests = ["FOOBAR\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nFOOBAR\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nSTART\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nEND\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Type=12345\nEND\n"
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Key=12\nEND\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Key=1\nEND\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Key=1q\nEND\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nPAC-Opaque=1\nEND\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nA-ID=1\nEND\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nI-ID=1\nEND\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nA-ID-Info=1\nEND\n"]
for pac in tests:
blob = binascii.hexlify(pac.encode()).decode()
dev[0].request("SET blob fast_pac_errors " + blob)
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nEND\n",
- "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nEND\nSTART\nEND\nSTART\nEND\n" ]
+ tests = ["wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nEND\n",
+ "wpa_supplicant EAP-FAST PAC file - version 1\nSTART\nEND\nSTART\nEND\nSTART\nEND\n"]
for pac in tests:
blob = binascii.hexlify(pac.encode()).decode()
dev[0].request("SET blob fast_pac_errors " + blob)
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "eap_mschapv2_getKey;eap_peap_get_isk;eap_peap_derive_cmk"),
- (1, "eap_msg_alloc;eap_tlv_build_result"),
- (1, "eap_mschapv2_init;eap_peap_phase2_request"),
- (1, "eap_peer_tls_decrypt;eap_peap_decrypt"),
- (1, "wpabuf_alloc;=eap_peap_decrypt"),
- (1, "eap_peer_tls_encrypt;eap_peap_decrypt"),
- (1, "eap_peer_tls_process_helper;eap_peap_process"),
- (1, "eap_peer_tls_derive_key;eap_peap_process"),
- (1, "eap_peer_tls_derive_session_id;eap_peap_process"),
- (1, "eap_peap_getKey"),
- (1, "eap_peap_get_session_id") ]
+ tests = [(1, "eap_mschapv2_getKey;eap_peap_get_isk;eap_peap_derive_cmk"),
+ (1, "eap_msg_alloc;eap_tlv_build_result"),
+ (1, "eap_mschapv2_init;eap_peap_phase2_request"),
+ (1, "eap_peer_tls_decrypt;eap_peap_decrypt"),
+ (1, "wpabuf_alloc;=eap_peap_decrypt"),
+ (1, "eap_peer_tls_encrypt;eap_peap_decrypt"),
+ (1, "eap_peer_tls_process_helper;eap_peap_process"),
+ (1, "eap_peer_tls_derive_key;eap_peap_process"),
+ (1, "eap_peer_tls_derive_session_id;eap_peap_process"),
+ (1, "eap_peap_getKey"),
+ (1, "eap_peap_get_session_id")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "peap_prfplus;eap_peap_derive_cmk"),
- (1, "eap_tlv_add_cryptobinding;eap_tlv_build_result"),
- (1, "peap_prfplus;eap_peap_getKey") ]
+ tests = [(1, "peap_prfplus;eap_peap_derive_cmk"),
+ (1, "eap_tlv_add_cryptobinding;eap_tlv_build_result"),
+ (1, "peap_prfplus;eap_peap_getKey")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "eap_peer_tls_derive_key;eap_ttls_v0_derive_key",
- "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
- (1, "eap_peer_tls_derive_session_id;eap_ttls_v0_derive_key",
- "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
- (1, "wpabuf_alloc;eap_ttls_phase2_request_mschapv2",
- "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
- (1, "eap_peer_tls_derive_key;eap_ttls_phase2_request_mschapv2",
- "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
- (1, "eap_peer_tls_encrypt;eap_ttls_encrypt_response;eap_ttls_implicit_identity_request",
- "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
- (1, "eap_peer_tls_decrypt;eap_ttls_decrypt",
- "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
- (1, "eap_ttls_getKey",
- "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
- (1, "eap_ttls_get_session_id",
- "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
- (1, "eap_ttls_get_emsk",
- "mschapv2 user@domain", "auth=MSCHAPV2"),
- (1, "wpabuf_alloc;eap_ttls_phase2_request_mschap",
- "mschap user", "auth=MSCHAP"),
- (1, "eap_peer_tls_derive_key;eap_ttls_phase2_request_mschap",
- "mschap user", "auth=MSCHAP"),
- (1, "wpabuf_alloc;eap_ttls_phase2_request_chap",
- "chap user", "auth=CHAP"),
- (1, "eap_peer_tls_derive_key;eap_ttls_phase2_request_chap",
- "chap user", "auth=CHAP"),
- (1, "wpabuf_alloc;eap_ttls_phase2_request_pap",
- "pap user", "auth=PAP"),
- (1, "wpabuf_alloc;eap_ttls_avp_encapsulate",
- "user", "autheap=MSCHAPV2"),
- (1, "eap_mschapv2_init;eap_ttls_phase2_request_eap_method",
- "user", "autheap=MSCHAPV2"),
- (1, "eap_sm_buildIdentity;eap_ttls_phase2_request_eap",
- "user", "autheap=MSCHAPV2"),
- (1, "eap_ttls_avp_encapsulate;eap_ttls_phase2_request_eap",
- "user", "autheap=MSCHAPV2"),
- (1, "eap_ttls_parse_attr_eap",
- "user", "autheap=MSCHAPV2"),
- (1, "eap_peer_tls_encrypt;eap_ttls_encrypt_response;eap_ttls_process_decrypted",
- "user", "autheap=MSCHAPV2"),
- (1, "eap_ttls_fake_identity_request",
- "user", "autheap=MSCHAPV2"),
- (1, "eap_msg_alloc;eap_tls_process_output",
- "user", "autheap=MSCHAPV2"),
- (1, "eap_msg_alloc;eap_peer_tls_build_ack",
- "user", "autheap=MSCHAPV2"),
- (1, "tls_connection_decrypt;eap_peer_tls_decrypt",
- "user", "autheap=MSCHAPV2"),
- (1, "eap_peer_tls_phase2_nak;eap_ttls_phase2_request_eap_method",
- "cert user", "autheap=MSCHAPV2") ]
+ tests = [(1, "eap_peer_tls_derive_key;eap_ttls_v0_derive_key",
+ "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
+ (1, "eap_peer_tls_derive_session_id;eap_ttls_v0_derive_key",
+ "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
+ (1, "wpabuf_alloc;eap_ttls_phase2_request_mschapv2",
+ "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
+ (1, "eap_peer_tls_derive_key;eap_ttls_phase2_request_mschapv2",
+ "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
+ (1, "eap_peer_tls_encrypt;eap_ttls_encrypt_response;eap_ttls_implicit_identity_request",
+ "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
+ (1, "eap_peer_tls_decrypt;eap_ttls_decrypt",
+ "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
+ (1, "eap_ttls_getKey",
+ "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
+ (1, "eap_ttls_get_session_id",
+ "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
+ (1, "eap_ttls_get_emsk",
+ "mschapv2 user@domain", "auth=MSCHAPV2"),
+ (1, "wpabuf_alloc;eap_ttls_phase2_request_mschap",
+ "mschap user", "auth=MSCHAP"),
+ (1, "eap_peer_tls_derive_key;eap_ttls_phase2_request_mschap",
+ "mschap user", "auth=MSCHAP"),
+ (1, "wpabuf_alloc;eap_ttls_phase2_request_chap",
+ "chap user", "auth=CHAP"),
+ (1, "eap_peer_tls_derive_key;eap_ttls_phase2_request_chap",
+ "chap user", "auth=CHAP"),
+ (1, "wpabuf_alloc;eap_ttls_phase2_request_pap",
+ "pap user", "auth=PAP"),
+ (1, "wpabuf_alloc;eap_ttls_avp_encapsulate",
+ "user", "autheap=MSCHAPV2"),
+ (1, "eap_mschapv2_init;eap_ttls_phase2_request_eap_method",
+ "user", "autheap=MSCHAPV2"),
+ (1, "eap_sm_buildIdentity;eap_ttls_phase2_request_eap",
+ "user", "autheap=MSCHAPV2"),
+ (1, "eap_ttls_avp_encapsulate;eap_ttls_phase2_request_eap",
+ "user", "autheap=MSCHAPV2"),
+ (1, "eap_ttls_parse_attr_eap",
+ "user", "autheap=MSCHAPV2"),
+ (1, "eap_peer_tls_encrypt;eap_ttls_encrypt_response;eap_ttls_process_decrypted",
+ "user", "autheap=MSCHAPV2"),
+ (1, "eap_ttls_fake_identity_request",
+ "user", "autheap=MSCHAPV2"),
+ (1, "eap_msg_alloc;eap_tls_process_output",
+ "user", "autheap=MSCHAPV2"),
+ (1, "eap_msg_alloc;eap_peer_tls_build_ack",
+ "user", "autheap=MSCHAPV2"),
+ (1, "tls_connection_decrypt;eap_peer_tls_decrypt",
+ "user", "autheap=MSCHAPV2"),
+ (1, "eap_peer_tls_phase2_nak;eap_ttls_phase2_request_eap_method",
+ "cert user", "autheap=MSCHAPV2")]
for count, func, identity, phase2 in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "os_get_random;eap_ttls_phase2_request_mschapv2"),
- (1, "mschapv2_derive_response;eap_ttls_phase2_request_mschapv2") ]
+ tests = [(1, "os_get_random;eap_ttls_phase2_request_mschapv2"),
+ (1, "mschapv2_derive_response;eap_ttls_phase2_request_mschapv2")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
- tests = [ (1, "nt_challenge_response;eap_ttls_phase2_request_mschap") ]
+ tests = [(1, "nt_challenge_response;eap_ttls_phase2_request_mschap")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
ev = dev[0].wait_event(["CTRL-EVENT-EAP-STARTED"], timeout=5)
if ev is None:
raise Exception("Timeout on EAP start")
- if i in [ 1 ]:
+ if i in [1]:
ev = dev[0].wait_event(["CTRL-EVENT-EAP-METHOD"], timeout=5)
if ev is None:
raise Exception("Timeout on EAP method start")
ev = dev[0].wait_event(["CTRL-EVENT-EAP-FAILURE"], timeout=5)
if ev is None:
raise Exception("Timeout on EAP failure")
- elif i in [ 2, 3 ]:
+ elif i in [2, 3]:
ev = dev[0].wait_event(["CTRL-EVENT-EAP-PROPOSED-METHOD"],
timeout=5)
if ev is None:
hapd = start_ap(apdev[0])
dev[0].scan_for_bss(hapd.own_addr(), freq=2412)
- tests = [ ("Too short Phase 2 TLV frame (len=3)",
- "ABC",
- False),
- ("EAP-FAST: TLV overflow",
- struct.pack(">HHB", 0, 2, 0xff),
- False),
- ("EAP-FAST: Unknown TLV (optional and mandatory)",
- struct.pack(">HHB", 0, 1, 0xff) +
- struct.pack(">HHB", EAP_TLV_TYPE_MANDATORY, 1, 0xff),
- True),
- ("EAP-FAST: More than one EAP-Payload TLV in the message",
- struct.pack(">HHBHHB",
- EAP_TLV_EAP_PAYLOAD_TLV, 1, 0xff,
- EAP_TLV_EAP_PAYLOAD_TLV, 1, 0xff),
- True),
- ("EAP-FAST: Unknown Result 255 and More than one Result TLV in the message",
- struct.pack(">HHHHHH",
- EAP_TLV_RESULT_TLV, 2, 0xff,
- EAP_TLV_RESULT_TLV, 2, 0xff),
- True),
- ("EAP-FAST: Too short Result TLV",
- struct.pack(">HHB", EAP_TLV_RESULT_TLV, 1, 0xff),
- True),
- ("EAP-FAST: Unknown Intermediate Result 255 and More than one Intermediate-Result TLV in the message",
- struct.pack(">HHHHHH",
- EAP_TLV_INTERMEDIATE_RESULT_TLV, 2, 0xff,
- EAP_TLV_INTERMEDIATE_RESULT_TLV, 2, 0xff),
- True),
- ("EAP-FAST: Too short Intermediate-Result TLV",
- struct.pack(">HHB", EAP_TLV_INTERMEDIATE_RESULT_TLV, 1, 0xff),
- True),
- ("EAP-FAST: More than one Crypto-Binding TLV in the message",
- struct.pack(">HH", EAP_TLV_CRYPTO_BINDING_TLV, 60) + 60*b'A' +
- struct.pack(">HH", EAP_TLV_CRYPTO_BINDING_TLV, 60) + 60*b'A',
- True),
- ("EAP-FAST: Too short Crypto-Binding TLV",
- struct.pack(">HHB", EAP_TLV_CRYPTO_BINDING_TLV, 1, 0xff),
- True),
- ("EAP-FAST: More than one Request-Action TLV in the message",
- struct.pack(">HHBBHHBB",
- EAP_TLV_REQUEST_ACTION_TLV, 2, 0xff, 0xff,
- EAP_TLV_REQUEST_ACTION_TLV, 2, 0xff, 0xff),
- True),
- ("EAP-FAST: Too short Request-Action TLV",
- struct.pack(">HHB", EAP_TLV_REQUEST_ACTION_TLV, 1, 0xff),
- True),
- ("EAP-FAST: More than one PAC TLV in the message",
- struct.pack(">HHBHHB",
- EAP_TLV_PAC_TLV, 1, 0xff,
- EAP_TLV_PAC_TLV, 1, 0xff),
- True),
- ("EAP-FAST: Too short EAP Payload TLV (Len=3)",
- struct.pack(">HH3B",
- EAP_TLV_EAP_PAYLOAD_TLV, 3, 0, 0, 0),
- False),
- ("EAP-FAST: Too short Phase 2 request (Len=0)",
- struct.pack(">HHBBH",
- EAP_TLV_EAP_PAYLOAD_TLV, 4,
- EAP_CODE_REQUEST, 0, 0),
- False),
- ("EAP-FAST: EAP packet overflow in EAP Payload TLV",
- struct.pack(">HHBBH",
- EAP_TLV_EAP_PAYLOAD_TLV, 4,
- EAP_CODE_REQUEST, 0, 4 + 1),
- False),
- ("EAP-FAST: Unexpected code=0 in Phase 2 EAP header",
- struct.pack(">HHBBH",
- EAP_TLV_EAP_PAYLOAD_TLV, 4,
- 0, 0, 0),
- False),
- ("EAP-FAST: PAC TLV without Result TLV acknowledging success",
- struct.pack(">HHB", EAP_TLV_PAC_TLV, 1, 0xff),
- True),
- ("EAP-FAST: PAC TLV does not include all the required fields",
- struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
- EAP_TLV_RESULT_SUCCESS) +
- struct.pack(">HHB", EAP_TLV_PAC_TLV, 1, 0xff),
- True),
- ("EAP-FAST: Invalid PAC-Key length 0, Ignored unknown PAC type 0, and PAC TLV overrun (type=0 len=2 left=1)",
- struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
- EAP_TLV_RESULT_SUCCESS) +
- struct.pack(">HHHHHHHHB", EAP_TLV_PAC_TLV, 4 + 4 + 5,
- PAC_TYPE_PAC_KEY, 0, 0, 0, 0, 2, 0),
- True),
- ("EAP-FAST: PAC-Info does not include all the required fields",
- struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
- EAP_TLV_RESULT_SUCCESS) +
- struct.pack(">HHHHHHHH", EAP_TLV_PAC_TLV, 4 + 4 + 4 + 32,
- PAC_TYPE_PAC_OPAQUE, 0,
- PAC_TYPE_PAC_INFO, 0,
- PAC_TYPE_PAC_KEY, 32) + 32*b'A',
- True),
- ("EAP-FAST: Invalid CRED_LIFETIME length, Ignored unknown PAC-Info type 0, and Invalid PAC-Type length 1",
- struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
- EAP_TLV_RESULT_SUCCESS) +
- struct.pack(">HHHHHHHHHHHHBHH", EAP_TLV_PAC_TLV, 4 + 4 + 13 + 4 + 32,
- PAC_TYPE_PAC_OPAQUE, 0,
- PAC_TYPE_PAC_INFO, 13, PAC_TYPE_CRED_LIFETIME, 0,
- 0, 0, PAC_TYPE_PAC_TYPE, 1, 0,
- PAC_TYPE_PAC_KEY, 32) + 32*b'A',
- True),
- ("EAP-FAST: Unsupported PAC-Type 0",
- struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
- EAP_TLV_RESULT_SUCCESS) +
- struct.pack(">HHHHHHHHHHH", EAP_TLV_PAC_TLV, 4 + 4 + 6 + 4 + 32,
- PAC_TYPE_PAC_OPAQUE, 0,
- PAC_TYPE_PAC_INFO, 6, PAC_TYPE_PAC_TYPE, 2, 0,
- PAC_TYPE_PAC_KEY, 32) + 32*b'A',
- True),
- ("EAP-FAST: PAC-Info overrun (type=0 len=2 left=1)",
- struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
- EAP_TLV_RESULT_SUCCESS) +
- struct.pack(">HHHHHHHHBHH", EAP_TLV_PAC_TLV, 4 + 4 + 5 + 4 + 32,
- PAC_TYPE_PAC_OPAQUE, 0,
- PAC_TYPE_PAC_INFO, 5, 0, 2, 1,
- PAC_TYPE_PAC_KEY, 32) + 32*b'A',
- True),
- ("EAP-FAST: Valid PAC",
- struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
- EAP_TLV_RESULT_SUCCESS) +
- struct.pack(">HHHHHHHHBHHBHH", EAP_TLV_PAC_TLV,
- 4 + 4 + 10 + 4 + 32,
- PAC_TYPE_PAC_OPAQUE, 0,
- PAC_TYPE_PAC_INFO, 10, PAC_TYPE_A_ID, 1, 0x41,
- PAC_TYPE_A_ID_INFO, 1, 0x42,
- PAC_TYPE_PAC_KEY, 32) + 32*b'A',
- True),
- ("EAP-FAST: Invalid version/subtype in Crypto-Binding TLV",
- struct.pack(">HH", EAP_TLV_CRYPTO_BINDING_TLV, 60) + 60*b'A',
- True) ]
+ tests = [("Too short Phase 2 TLV frame (len=3)",
+ "ABC",
+ False),
+ ("EAP-FAST: TLV overflow",
+ struct.pack(">HHB", 0, 2, 0xff),
+ False),
+ ("EAP-FAST: Unknown TLV (optional and mandatory)",
+ struct.pack(">HHB", 0, 1, 0xff) +
+ struct.pack(">HHB", EAP_TLV_TYPE_MANDATORY, 1, 0xff),
+ True),
+ ("EAP-FAST: More than one EAP-Payload TLV in the message",
+ struct.pack(">HHBHHB",
+ EAP_TLV_EAP_PAYLOAD_TLV, 1, 0xff,
+ EAP_TLV_EAP_PAYLOAD_TLV, 1, 0xff),
+ True),
+ ("EAP-FAST: Unknown Result 255 and More than one Result TLV in the message",
+ struct.pack(">HHHHHH",
+ EAP_TLV_RESULT_TLV, 2, 0xff,
+ EAP_TLV_RESULT_TLV, 2, 0xff),
+ True),
+ ("EAP-FAST: Too short Result TLV",
+ struct.pack(">HHB", EAP_TLV_RESULT_TLV, 1, 0xff),
+ True),
+ ("EAP-FAST: Unknown Intermediate Result 255 and More than one Intermediate-Result TLV in the message",
+ struct.pack(">HHHHHH",
+ EAP_TLV_INTERMEDIATE_RESULT_TLV, 2, 0xff,
+ EAP_TLV_INTERMEDIATE_RESULT_TLV, 2, 0xff),
+ True),
+ ("EAP-FAST: Too short Intermediate-Result TLV",
+ struct.pack(">HHB", EAP_TLV_INTERMEDIATE_RESULT_TLV, 1, 0xff),
+ True),
+ ("EAP-FAST: More than one Crypto-Binding TLV in the message",
+ struct.pack(">HH", EAP_TLV_CRYPTO_BINDING_TLV, 60) + 60*b'A' +
+ struct.pack(">HH", EAP_TLV_CRYPTO_BINDING_TLV, 60) + 60*b'A',
+ True),
+ ("EAP-FAST: Too short Crypto-Binding TLV",
+ struct.pack(">HHB", EAP_TLV_CRYPTO_BINDING_TLV, 1, 0xff),
+ True),
+ ("EAP-FAST: More than one Request-Action TLV in the message",
+ struct.pack(">HHBBHHBB",
+ EAP_TLV_REQUEST_ACTION_TLV, 2, 0xff, 0xff,
+ EAP_TLV_REQUEST_ACTION_TLV, 2, 0xff, 0xff),
+ True),
+ ("EAP-FAST: Too short Request-Action TLV",
+ struct.pack(">HHB", EAP_TLV_REQUEST_ACTION_TLV, 1, 0xff),
+ True),
+ ("EAP-FAST: More than one PAC TLV in the message",
+ struct.pack(">HHBHHB",
+ EAP_TLV_PAC_TLV, 1, 0xff,
+ EAP_TLV_PAC_TLV, 1, 0xff),
+ True),
+ ("EAP-FAST: Too short EAP Payload TLV (Len=3)",
+ struct.pack(">HH3B",
+ EAP_TLV_EAP_PAYLOAD_TLV, 3, 0, 0, 0),
+ False),
+ ("EAP-FAST: Too short Phase 2 request (Len=0)",
+ struct.pack(">HHBBH",
+ EAP_TLV_EAP_PAYLOAD_TLV, 4,
+ EAP_CODE_REQUEST, 0, 0),
+ False),
+ ("EAP-FAST: EAP packet overflow in EAP Payload TLV",
+ struct.pack(">HHBBH",
+ EAP_TLV_EAP_PAYLOAD_TLV, 4,
+ EAP_CODE_REQUEST, 0, 4 + 1),
+ False),
+ ("EAP-FAST: Unexpected code=0 in Phase 2 EAP header",
+ struct.pack(">HHBBH",
+ EAP_TLV_EAP_PAYLOAD_TLV, 4,
+ 0, 0, 0),
+ False),
+ ("EAP-FAST: PAC TLV without Result TLV acknowledging success",
+ struct.pack(">HHB", EAP_TLV_PAC_TLV, 1, 0xff),
+ True),
+ ("EAP-FAST: PAC TLV does not include all the required fields",
+ struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
+ EAP_TLV_RESULT_SUCCESS) +
+ struct.pack(">HHB", EAP_TLV_PAC_TLV, 1, 0xff),
+ True),
+ ("EAP-FAST: Invalid PAC-Key length 0, Ignored unknown PAC type 0, and PAC TLV overrun (type=0 len=2 left=1)",
+ struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
+ EAP_TLV_RESULT_SUCCESS) +
+ struct.pack(">HHHHHHHHB", EAP_TLV_PAC_TLV, 4 + 4 + 5,
+ PAC_TYPE_PAC_KEY, 0, 0, 0, 0, 2, 0),
+ True),
+ ("EAP-FAST: PAC-Info does not include all the required fields",
+ struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
+ EAP_TLV_RESULT_SUCCESS) +
+ struct.pack(">HHHHHHHH", EAP_TLV_PAC_TLV, 4 + 4 + 4 + 32,
+ PAC_TYPE_PAC_OPAQUE, 0,
+ PAC_TYPE_PAC_INFO, 0,
+ PAC_TYPE_PAC_KEY, 32) + 32*b'A',
+ True),
+ ("EAP-FAST: Invalid CRED_LIFETIME length, Ignored unknown PAC-Info type 0, and Invalid PAC-Type length 1",
+ struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
+ EAP_TLV_RESULT_SUCCESS) +
+ struct.pack(">HHHHHHHHHHHHBHH", EAP_TLV_PAC_TLV, 4 + 4 + 13 + 4 + 32,
+ PAC_TYPE_PAC_OPAQUE, 0,
+ PAC_TYPE_PAC_INFO, 13, PAC_TYPE_CRED_LIFETIME, 0,
+ 0, 0, PAC_TYPE_PAC_TYPE, 1, 0,
+ PAC_TYPE_PAC_KEY, 32) + 32*b'A',
+ True),
+ ("EAP-FAST: Unsupported PAC-Type 0",
+ struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
+ EAP_TLV_RESULT_SUCCESS) +
+ struct.pack(">HHHHHHHHHHH", EAP_TLV_PAC_TLV, 4 + 4 + 6 + 4 + 32,
+ PAC_TYPE_PAC_OPAQUE, 0,
+ PAC_TYPE_PAC_INFO, 6, PAC_TYPE_PAC_TYPE, 2, 0,
+ PAC_TYPE_PAC_KEY, 32) + 32*b'A',
+ True),
+ ("EAP-FAST: PAC-Info overrun (type=0 len=2 left=1)",
+ struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
+ EAP_TLV_RESULT_SUCCESS) +
+ struct.pack(">HHHHHHHHBHH", EAP_TLV_PAC_TLV, 4 + 4 + 5 + 4 + 32,
+ PAC_TYPE_PAC_OPAQUE, 0,
+ PAC_TYPE_PAC_INFO, 5, 0, 2, 1,
+ PAC_TYPE_PAC_KEY, 32) + 32*b'A',
+ True),
+ ("EAP-FAST: Valid PAC",
+ struct.pack(">HHH", EAP_TLV_RESULT_TLV, 2,
+ EAP_TLV_RESULT_SUCCESS) +
+ struct.pack(">HHHHHHHHBHHBHH", EAP_TLV_PAC_TLV,
+ 4 + 4 + 10 + 4 + 32,
+ PAC_TYPE_PAC_OPAQUE, 0,
+ PAC_TYPE_PAC_INFO, 10, PAC_TYPE_A_ID, 1, 0x41,
+ PAC_TYPE_A_ID_INFO, 1, 0x42,
+ PAC_TYPE_PAC_KEY, 32) + 32*b'A',
+ True),
+ ("EAP-FAST: Invalid version/subtype in Crypto-Binding TLV",
+ struct.pack(">HH", EAP_TLV_CRYPTO_BINDING_TLV, 60) + 60*b'A',
+ True)]
for title, payload, failure in tests:
logger.info("Phase 2 test: " + title)
run_eap_fast_phase2(dev, payload, failure)
dev[0].wait_connected(timeout=15, error="Reconnection timed out")
def start_erp_as(apdev, erp_domain="example.com", msk_dump=None, tls13=False):
- params = { "ssid": "as", "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18128',
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key",
- "eap_sim_db": "unix:/tmp/hlr_auc_gw.sock",
- "dh_file": "auth_serv/dh.conf",
- "pac_opaque_encr_key": "000102030405060708090a0b0c0d0e0f",
- "eap_fast_a_id": "101112131415161718191a1b1c1d1e1f",
- "eap_fast_a_id_info": "test server",
- "eap_server_erp": "1",
- "erp_domain": erp_domain }
+ params = {"ssid": "as", "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18128',
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key",
+ "eap_sim_db": "unix:/tmp/hlr_auc_gw.sock",
+ "dh_file": "auth_serv/dh.conf",
+ "pac_opaque_encr_key": "000102030405060708090a0b0c0d0e0f",
+ "eap_fast_a_id": "101112131415161718191a1b1c1d1e1f",
+ "eap_fast_a_id_info": "test server",
+ "eap_server_erp": "1",
+ "erp_domain": erp_domain}
if msk_dump:
params["dump_msk_file"] = msk_dump
if tls13:
if "EAP re-authentication completed successfully" not in ev:
raise Exception("Did not use ERP")
dev.wait_connected(timeout=15, error="Reconnection timed out")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
dev.request("DISCONNECT")
dev[0].hs20_enable()
dev[0].request("SET ext_password_backend test:pw1=password")
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test"})
dev[0].set_cred(id, "password", "ext:pw1")
interworking_select(dev[0], bssid, freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
params['wpa_key_mgmt'] = "FILS-SHA256"
params['auth_server_port'] = "18128"
params['erp_domain'] = 'example.com'
- fils_realms = [ 'r1.example.org', 'r2.EXAMPLE.org', 'r3.example.org',
- 'r4.example.org', 'r5.example.org', 'r6.example.org',
- 'r7.example.org', 'r8.example.org',
- 'example.com',
- 'r9.example.org', 'r10.example.org', 'r11.example.org',
- 'r12.example.org', 'r13.example.org', 'r14.example.org',
- 'r15.example.org', 'r16.example.org' ]
+ fils_realms = ['r1.example.org', 'r2.EXAMPLE.org', 'r3.example.org',
+ 'r4.example.org', 'r5.example.org', 'r6.example.org',
+ 'r7.example.org', 'r8.example.org',
+ 'example.com',
+ 'r9.example.org', 'r10.example.org', 'r11.example.org',
+ 'r12.example.org', 'r13.example.org', 'r14.example.org',
+ 'r15.example.org', 'r16.example.org']
params['fils_realm'] = fils_realms
params['fils_cache_id'] = "1234"
params['hessid'] = bssid
hwsim_utils.test_connectivity(dev[0], hapd)
# DHCP message op codes
-BOOTREQUEST=1
-BOOTREPLY=2
-
-OPT_PAD=0
-OPT_DHCP_MESSAGE_TYPE=53
-OPT_RAPID_COMMIT=80
-OPT_END=255
-
-DHCPDISCOVER=1
-DHCPOFFER=2
-DHCPREQUEST=3
-DHCPDECLINE=4
-DHCPACK=5
-DHCPNAK=6
-DHCPRELEASE=7
-DHCPINFORM=8
+BOOTREQUEST = 1
+BOOTREPLY = 2
+
+OPT_PAD = 0
+OPT_DHCP_MESSAGE_TYPE = 53
+OPT_RAPID_COMMIT = 80
+OPT_END = 255
+
+DHCPDISCOVER = 1
+DHCPOFFER = 2
+DHCPREQUEST = 3
+DHCPDECLINE = 4
+DHCPACK = 5
+DHCPNAK = 6
+DHCPRELEASE = 7
+DHCPINFORM = 8
def build_dhcp(req, dhcp_msg, chaddr, giaddr="0.0.0.0",
ip_src="0.0.0.0", ip_dst="255.255.255.255",
_yiaddr = b'\x00\x00\x00\x00'
_siaddr = b'\x00\x00\x00\x00'
_giaddr = socket.inet_pton(socket.AF_INET, giaddr)
- _chaddr = binascii.unhexlify(chaddr.replace(':','')) + 10 * b'\x00'
+ _chaddr = binascii.unhexlify(chaddr.replace(':', '')) + 10 * b'\x00'
htype = 1 # Hardware address type; 1 = Ethernet
hlen = 6 # Hardware address length
hops = 0
dev[0].request("ERP_FLUSH")
if "OK" not in dev[0].request("FILS_HLP_REQ_FLUSH"):
raise Exception("Failed to flush pending FILS HLP requests")
- tests = [ "",
- "q",
- "ff:ff:ff:ff:ff:ff",
- "ff:ff:ff:ff:ff:ff q" ]
+ tests = ["",
+ "q",
+ "ff:ff:ff:ff:ff:ff",
+ "ff:ff:ff:ff:ff:ff q"]
for t in tests:
if "FAIL" not in dev[0].request("FILS_HLP_REQ_ADD " + t):
raise Exception("Invalid FILS_HLP_REQ_ADD accepted: " + t)
dhcpdisc = build_dhcp(req=True, dhcp_msg=DHCPDISCOVER,
chaddr=dev[0].own_addr())
- tests = [ "ff:ff:ff:ff:ff:ff aabb",
- "ff:ff:ff:ff:ff:ff " + 255*'cc',
- hapd.own_addr() + " ddee010203040506070809",
- "ff:ff:ff:ff:ff:ff " + binascii.hexlify(dhcpdisc).decode() ]
+ tests = ["ff:ff:ff:ff:ff:ff aabb",
+ "ff:ff:ff:ff:ff:ff " + 255*'cc',
+ hapd.own_addr() + " ddee010203040506070809",
+ "ff:ff:ff:ff:ff:ff " + binascii.hexlify(dhcpdisc).decode()]
for t in tests:
if "OK" not in dev[0].request("FILS_HLP_REQ_ADD " + t):
raise Exception("FILS_HLP_REQ_ADD failed: " + t)
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
if rapid_commit_server:
# TODO: Proper rapid commit response
dhcpdisc = build_dhcp(req=False, dhcp_msg=DHCPOFFER, rapid_commit=False,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3")
sock.sendto(dhcpdisc[2+20+8:], addr)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpdisc = build_dhcp(req=False, dhcp_msg=DHCPACK, rapid_commit=False,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3")
raise Exception("Unexpected UDP port in HLP response")
dhcp = frame[0:28]
frame = frame[28:]
- op,htype,hlen,hops,xid,secs,flags,ciaddr,yiaddr,siaddr,giaddr = struct.unpack('>4BL2H4L', dhcp)
+ op, htype, hlen, hops, xid, secs, flags, ciaddr, yiaddr, siaddr, giaddr = struct.unpack('>4BL2H4L', dhcp)
chaddr = frame[0:16]
frame = frame[16:]
sname = frame[0:64]
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
# Wait for HLP wait timeout to hit
# FILS: HLP response timeout - continue with association response
dev[0].dump_monitor()
with alloc_fail(hapd, 1, "wpabuf_alloc;fils_dhcp_handler"):
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpdisc = build_dhcp(req=False, dhcp_msg=DHCPACK,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3")
dev[0].dump_monitor()
with alloc_fail(hapd, 1, "wpabuf_resize;fils_dhcp_handler"):
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpdisc = build_dhcp(req=False, dhcp_msg=DHCPACK,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3")
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpoffer = build_dhcp(req=False, dhcp_msg=DHCPOFFER, rapid_commit=False,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3")
dhcp_valid = build_dhcp(req=True, dhcp_msg=DHCPDISCOVER,
chaddr=dev[0].own_addr())
- tests = [ "ff",
- "0800",
- "0800" + 20*"00",
- "0800" + binascii.hexlify(ipv4_overflow).decode(),
- "0800" + binascii.hexlify(ipv4_unknown_proto).decode(),
- "0800" + binascii.hexlify(ipv4_missing_udp_hdr).decode(),
- "0800" + binascii.hexlify(udp_overflow).decode(),
- "0800" + binascii.hexlify(udp_underflow).decode(),
- "0800" + binascii.hexlify(udp_unknown_port).decode(),
- "0800" + binascii.hexlify(dhcp_missing_data).decode(),
- binascii.hexlify(dhcp_not_req).decode(),
- binascii.hexlify(dhcp_no_magic).decode(),
- binascii.hexlify(dhcp_unknown_magic).decode() ]
+ tests = ["ff",
+ "0800",
+ "0800" + 20*"00",
+ "0800" + binascii.hexlify(ipv4_overflow).decode(),
+ "0800" + binascii.hexlify(ipv4_unknown_proto).decode(),
+ "0800" + binascii.hexlify(ipv4_missing_udp_hdr).decode(),
+ "0800" + binascii.hexlify(udp_overflow).decode(),
+ "0800" + binascii.hexlify(udp_underflow).decode(),
+ "0800" + binascii.hexlify(udp_unknown_port).decode(),
+ "0800" + binascii.hexlify(dhcp_missing_data).decode(),
+ binascii.hexlify(dhcp_not_req).decode(),
+ binascii.hexlify(dhcp_no_magic).decode(),
+ binascii.hexlify(dhcp_unknown_magic).decode()]
for t in tests:
if "OK" not in dev[0].request("FILS_HLP_REQ_ADD ff:ff:ff:ff:ff:ff " + t):
raise Exception("FILS_HLP_REQ_ADD failed: " + t)
dev[0].wait_disconnected()
dev[0].request("FILS_HLP_REQ_FLUSH")
- tests = [ binascii.hexlify(dhcp_opts).decode(),
- binascii.hexlify(dhcp_opts2).decode() ]
+ tests = [binascii.hexlify(dhcp_opts).decode(),
+ binascii.hexlify(dhcp_opts2).decode()]
for t in tests:
if "OK" not in dev[0].request("FILS_HLP_REQ_ADD ff:ff:ff:ff:ff:ff " + t):
raise Exception("FILS_HLP_REQ_ADD failed: " + t)
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpdisc = build_dhcp(req=False, dhcp_msg=DHCPACK,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3")
#sock.sendto(dhcpdisc[2+20+8:], addr)
- chaddr = binascii.unhexlify(dev[0].own_addr().replace(':','')) + 10*b'\x00'
- tests = [ b"\x00",
- b"\x02" + 500 * b"\x00",
- b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + 500*b"\x00",
- b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + 16*b"\x00" + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63",
- b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + 16*b"\x00" + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63" + b"\x00\x11",
- b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + 16*b"\x00" + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63" + b"\x11\x01",
- b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + chaddr + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63" + b"\x35\x00\xff",
- b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + chaddr + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63" + b"\x35\x01\x00\xff",
- 1501 * b"\x00" ]
+ chaddr = binascii.unhexlify(dev[0].own_addr().replace(':', '')) + 10*b'\x00'
+ tests = [b"\x00",
+ b"\x02" + 500 * b"\x00",
+ b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + 500*b"\x00",
+ b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + 16*b"\x00" + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63",
+ b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + 16*b"\x00" + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63" + b"\x00\x11",
+ b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + 16*b"\x00" + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63" + b"\x11\x01",
+ b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + chaddr + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63" + b"\x35\x00\xff",
+ b"\x02\x00\x00\x00" + 20*b"\x00" + b"\x7f\x00\x00\x03" + chaddr + 64*b"\x00" + 128*b"\x00" + b"\x63\x82\x53\x63" + b"\x35\x01\x00\xff",
+ 1501 * b"\x00"]
for t in tests:
sock.sendto(t, addr)
dev[0].wait_connected()
# FILS: DHCP sendto failed: Invalid argument for second DHCP TX in proxy
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
hapd.set("dhcp_server_port", "0")
dhcpoffer = build_dhcp(req=False, dhcp_msg=DHCPOFFER, rapid_commit=False,
# Options in DHCPOFFER
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpoffer = build_dhcp(req=False, dhcp_msg=DHCPOFFER, rapid_commit=False,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3",
extra_op=b"\x00\x11", opt_end=False)
sock.sendto(dhcpoffer[2+20+8:], addr)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dev[0].wait_connected()
dev[0].request("DISCONNECT")
# Options in DHCPOFFER (2)
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpoffer = build_dhcp(req=False, dhcp_msg=DHCPOFFER, rapid_commit=False,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3",
extra_op=b"\x11\x01", opt_end=False)
sock.sendto(dhcpoffer[2+20+8:], addr)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dev[0].wait_connected()
dev[0].request("DISCONNECT")
# Server ID in DHCPOFFER
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpoffer = build_dhcp(req=False, dhcp_msg=DHCPOFFER, rapid_commit=False,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3",
extra_op=b"\x36\x01\x30")
sock.sendto(dhcpoffer[2+20+8:], addr)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dev[0].wait_connected()
dev[0].request("DISCONNECT")
raise Exception("FILS_HLP_REQ_ADD failed")
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpoffer = build_dhcp(req=False, dhcp_msg=DHCPOFFER, rapid_commit=False,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3",
raise Exception("FILS_HLP_REQ_ADD failed")
dev[0].dump_monitor()
dev[0].select_network(id, freq=2412)
- (msg,addr) = sock.recvfrom(1000)
+ (msg, addr) = sock.recvfrom(1000)
logger.debug("Received DHCP message from %s" % str(addr))
dhcpoffer = build_dhcp(req=False, dhcp_msg=DHCPOFFER, rapid_commit=False,
chaddr=dev[0].own_addr(), giaddr="127.0.0.3",
check_fils_capa(dev[0])
check_erp_capa(dev[0])
- realm='wlan.mnc001.mcc232.3gppnetwork.org'
+ realm = 'wlan.mnc001.mcc232.3gppnetwork.org'
start_erp_as(apdev[1], erp_domain=realm,
msk_dump=os.path.join(params['logdir'], "msk.lst"))
check_erp_capa(dev[0])
tls = dev[0].request("GET tls_library")
- if int(group) in [ 25 ]:
+ if int(group) in [25]:
if not (tls.startswith("OpenSSL") and ("build=OpenSSL 1.0.2" in tls or "build=OpenSSL 1.1" in tls) and ("run=OpenSSL 1.0.2" in tls or "run=OpenSSL 1.1" in tls)):
raise HwsimSkip("EC group not supported")
- if int(group) in [ 27, 28, 29, 30 ]:
+ if int(group) in [27, 28, 29, 30]:
if not (tls.startswith("OpenSSL") and ("build=OpenSSL 1.0.2" in tls or "build=OpenSSL 1.1" in tls) and ("run=OpenSSL 1.0.2" in tls or "run=OpenSSL 1.1" in tls)):
raise HwsimSkip("Brainpool EC group not supported")
params["reassociation_deadline"] = "1000"
params['nas_identifier'] = "nas1.w1.fi"
params['r1_key_holder'] = "000102030405"
- params['r0kh'] = [ "02:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["02:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "02:00:00:00:04:00 00:01:02:03:04:06 200102030405060708090a0b0c0d0e0f"
params['ieee80211w'] = "1"
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
params['wpa_key_mgmt'] = "FT-EAP"
params['nas_identifier'] = "nas2.w1.fi"
params['r1_key_holder'] = "000102030406"
- params['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "02:00:00:00:03:00 00:01:02:03:04:05 300102030405060708090a0b0c0d0e0f"
hapd2 = hostapd.add_ap(apdev[1]['ifname'], params)
params["reassociation_deadline"] = "1000"
params['nas_identifier'] = "nas1.w1.fi"
params['r1_key_holder'] = "000102030405"
- params['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
- "02:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["02:00:00:00:03:00 nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
+ "02:00:00:00:04:00 nas2.w1.fi 300102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "02:00:00:00:04:00 00:01:02:03:04:06 200102030405060708090a0b0c0d0e0f"
params['ieee80211w'] = "2"
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
params['wpa_key_mgmt'] = key_mgmt
params['nas_identifier'] = "nas2.w1.fi"
params['r1_key_holder'] = "000102030406"
- params['r0kh'] = [ "02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f",
- "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f" ]
+ params['r0kh'] = ["02:00:00:00:03:00 nas1.w1.fi 200102030405060708090a0b0c0d0e0f",
+ "02:00:00:00:04:00 nas2.w1.fi 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f"]
params['r1kh'] = "02:00:00:00:03:00 00:01:02:03:04:05 300102030405060708090a0b0c0d0e0f"
hapd2 = hostapd.add_ap(apdev[1]['ifname'], params)
filt = "wlan.fc.type == 2 && " + \
"wlan.da == " + sta + " && " + \
"wlan.sa == " + ap + " && wlan.ccmp.extiv"
- fields = [ "wlan.ccmp.extiv" ]
+ fields = ["wlan.ccmp.extiv"]
res = run_tshark(capfile, filt, fields)
vals = res.splitlines()
logger.info("CCMP PN: " + str(vals))
'alt-hostapd/hostapd/hostapd')
if not os.path.exists(prg):
prg = '../../hostapd/hostapd'
- cmd = [ prg, '-B', '-dddt',
- '-P', pidfile, '-f', mylogfile, '-g', self.hapd_fst_global]
+ cmd = [prg, '-B', '-dddt',
+ '-P', pidfile, '-f', mylogfile, '-g', self.hapd_fst_global]
for i in range(0, len(self.cfgs_to_run)):
cfg = self.cfgs_to_run[i]
if cfg.is_ap() == True:
'alt-wpa_supplicant/wpa_supplicant/wpa_supplicant')
if not os.path.exists(prg):
prg = '../../wpa_supplicant/wpa_supplicant'
- cmd = [ prg, '-B', '-dddt',
- '-P' + pidfile, '-f', mylogfile, '-g', self.wsup_fst_global ]
+ cmd = [prg, '-B', '-dddt',
+ '-P' + pidfile, '-f', mylogfile, '-g', self.wsup_fst_global]
sta_no = 0
for i in range(0, len(self.cfgs_to_run)):
cfg = self.cfgs_to_run[i]
# AP configuration tests
def run_test_ap_configuration(apdev, test_params,
- fst_group = fst_test_common.fst_test_def_group,
- fst_pri = fst_test_common.fst_test_def_prio_high,
- fst_llt = fst_test_common.fst_test_def_llt):
+ fst_group=fst_test_common.fst_test_def_group,
+ fst_pri=fst_test_common.fst_test_def_prio_high,
+ fst_llt=fst_test_common.fst_test_def_llt):
"""Runs FST hostapd where the 1st AP configuration is fixed, the 2nd fst
configuration is provided by the parameters. Returns the result of the run:
0 - no errors discovered, an error otherwise. The function is used for
return res
def run_test_sta_configuration(test_params,
- fst_group = fst_test_common.fst_test_def_group,
- fst_pri = fst_test_common.fst_test_def_prio_high,
- fst_llt = fst_test_common.fst_test_def_llt):
+ fst_group=fst_test_common.fst_test_def_group,
+ fst_pri=fst_test_common.fst_test_def_prio_high,
+ fst_llt=fst_test_common.fst_test_def_llt):
"""Runs FST wpa_supplicant where the 1st STA configuration is fixed, the
2nd fst configuration is provided by the parameters. Returns the result of
the run: 0 - no errors discovered, an error otherwise. The function is used
def test_fst_ap_config_llt_neg(dev, apdev, test_params):
"""FST AP configuration negative LLT"""
- res = run_test_ap_configuration(apdev, test_params, fst_llt = '-1')
+ res = run_test_ap_configuration(apdev, test_params, fst_llt='-1')
if res == 0:
raise Exception("hostapd started with a negative llt")
def test_fst_ap_config_llt_zero(dev, apdev, test_params):
"""FST AP configuration zero LLT"""
- res = run_test_ap_configuration(apdev, test_params, fst_llt = '0')
+ res = run_test_ap_configuration(apdev, test_params, fst_llt='0')
if res == 0:
raise Exception("hostapd started with a zero llt")
def test_fst_ap_config_llt_too_big(dev, apdev, test_params):
"""FST AP configuration LLT is too big"""
res = run_test_ap_configuration(apdev, test_params,
- fst_llt = '4294967296') #0x100000000
+ fst_llt='4294967296') #0x100000000
if res == 0:
raise Exception("hostapd started with llt that is too big")
def test_fst_ap_config_llt_nan(dev, apdev, test_params):
"""FST AP configuration LLT is not a number"""
- res = run_test_ap_configuration(apdev, test_params, fst_llt = 'nan')
+ res = run_test_ap_configuration(apdev, test_params, fst_llt='nan')
if res == 0:
raise Exception("hostapd started with llt not a number")
def test_fst_ap_config_pri_neg(dev, apdev, test_params):
"""FST AP configuration Priority negative"""
- res = run_test_ap_configuration(apdev, test_params, fst_pri = '-1')
+ res = run_test_ap_configuration(apdev, test_params, fst_pri='-1')
if res == 0:
raise Exception("hostapd started with a negative fst priority")
def test_fst_ap_config_pri_zero(dev, apdev, test_params):
"""FST AP configuration Priority zero"""
- res = run_test_ap_configuration(apdev, test_params, fst_pri = '0')
+ res = run_test_ap_configuration(apdev, test_params, fst_pri='0')
if res == 0:
raise Exception("hostapd started with a zero fst priority")
def test_fst_ap_config_pri_large(dev, apdev, test_params):
"""FST AP configuration Priority too large"""
- res = run_test_ap_configuration(apdev, test_params, fst_pri = '256')
+ res = run_test_ap_configuration(apdev, test_params, fst_pri='256')
if res == 0:
raise Exception("hostapd started with too large fst priority")
def test_fst_ap_config_pri_nan(dev, apdev, test_params):
"""FST AP configuration Priority not a number"""
- res = run_test_ap_configuration(apdev, test_params, fst_pri = 'nan')
+ res = run_test_ap_configuration(apdev, test_params, fst_pri='nan')
if res == 0:
raise Exception("hostapd started with fst priority not a number")
def test_fst_ap_config_group_len(dev, apdev, test_params):
"""FST AP configuration Group max length"""
res = run_test_ap_configuration(apdev, test_params,
- fst_group = 'fstg5678abcd34567')
+ fst_group='fstg5678abcd34567')
if res == 0:
raise Exception("hostapd started with fst_group length too big")
def test_fst_ap_config_default(dev, apdev, test_params):
"""FST AP configuration default parameters"""
- res = run_test_ap_configuration(apdev, test_params, fst_llt = None)
+ res = run_test_ap_configuration(apdev, test_params, fst_llt=None)
if res != 0:
raise Exception("hostapd didn't start with valid config parameters")
def test_fst_sta_config_llt_neg(dev, apdev, test_params):
"""FST STA configuration negative LLT"""
- res = run_test_sta_configuration(test_params, fst_llt = '-1')
+ res = run_test_sta_configuration(test_params, fst_llt='-1')
if res == 0:
raise Exception("wpa_supplicant started with a negative llt")
def test_fst_sta_config_llt_zero(dev, apdev, test_params):
"""FST STA configuration zero LLT"""
- res = run_test_sta_configuration(test_params, fst_llt = '0')
+ res = run_test_sta_configuration(test_params, fst_llt='0')
if res == 0:
raise Exception("wpa_supplicant started with a zero llt")
def test_fst_sta_config_llt_large(dev, apdev, test_params):
"""FST STA configuration LLT is too large"""
res = run_test_sta_configuration(test_params,
- fst_llt = '4294967296') #0x100000000
+ fst_llt='4294967296') #0x100000000
if res == 0:
raise Exception("wpa_supplicant started with llt that is too large")
def test_fst_sta_config_llt_nan(dev, apdev, test_params):
"""FST STA configuration LLT is not a number"""
- res = run_test_sta_configuration(test_params, fst_llt = 'nan')
+ res = run_test_sta_configuration(test_params, fst_llt='nan')
if res == 0:
raise Exception("wpa_supplicant started with llt not a number")
def test_fst_sta_config_pri_neg(dev, apdev, test_params):
"""FST STA configuration Priority negative"""
- res = run_test_sta_configuration(test_params, fst_pri = '-1')
+ res = run_test_sta_configuration(test_params, fst_pri='-1')
if res == 0:
raise Exception("wpa_supplicant started with a negative fst priority")
def test_fst_sta_config_pri_zero(dev, apdev, test_params):
"""FST STA configuration Priority zero"""
- res = run_test_sta_configuration(test_params, fst_pri = '0')
+ res = run_test_sta_configuration(test_params, fst_pri='0')
if res == 0:
raise Exception("wpa_supplicant started with a zero fst priority")
def test_fst_sta_config_pri_big(dev, apdev, test_params):
"""FST STA configuration Priority too large"""
- res = run_test_sta_configuration(test_params, fst_pri = '256')
+ res = run_test_sta_configuration(test_params, fst_pri='256')
if res == 0:
raise Exception("wpa_supplicant started with too large fst priority")
def test_fst_sta_config_pri_nan(dev, apdev, test_params):
"""FST STA configuration Priority not a number"""
- res = run_test_sta_configuration(test_params, fst_pri = 'nan')
+ res = run_test_sta_configuration(test_params, fst_pri='nan')
if res == 0:
raise Exception("wpa_supplicant started with fst priority not a number")
def test_fst_sta_config_group_len(dev, apdev, test_params):
"""FST STA configuration Group max length"""
res = run_test_sta_configuration(test_params,
- fst_group = 'fstg5678abcd34567')
+ fst_group='fstg5678abcd34567')
if res == 0:
raise Exception("wpa_supplicant started with fst_group length too big")
def test_fst_sta_config_default(dev, apdev, test_params):
"""FST STA configuration default parameters"""
- res = run_test_sta_configuration(test_params, fst_llt = None)
+ res = run_test_sta_configuration(test_params, fst_llt=None)
if res != 0:
raise Exception("wpa_supplicant didn't start with valid config parameters")
if res != 0:
raise Exception("hostapd didn't start properly")
try:
- mbie1=[]
+ mbie1 = []
flags1 = ''
- mbie2=[]
+ mbie2 = []
flags2 = ''
# Scan 1st AP
vals1 = scan_and_get_bss(dev[0], fst_test_common.fst_test_def_freq_a)
vals2 = scan_and_get_bss(dev[2], fst_test_common.fst_test_def_freq_g)
if vals2 != None:
if 'ie' in vals2:
- mbie2 = parse_ies(vals2['ie'],0x9e)
+ mbie2 = parse_ies(vals2['ie'], 0x9e)
if 'flags' in vals2:
flags2 = vals2['flags']
finally:
raise Exception("Hostapd didn't start properly")
try:
time.sleep(2)
- mbie1=[]
+ mbie1 = []
flags1 = ''
vals1 = scan_and_get_bss(dev[0], fst_test_common.fst_test_def_freq_a)
if vals1 != None:
"Bad fsts_id")
def fst_start_session(apdev, test_params, bad_param_type, start_on_ap,
- peer_addr = None):
+ peer_addr=None):
"""This function makes the necessary preparations and the adds and sets a
session using either correct or incorrect parameters depending on the value
of bad_param_type. If the call ends as expected (with session being
responder = ap1
new_iface = sta2.ifname()
new_peer_addr = sta2.get_actual_peer_addr()
- initiator.add_peer(responder, new_peer_addr = new_peer_addr)
+ initiator.add_peer(responder, new_peer_addr=new_peer_addr)
sid = initiator.add_session()
initiator.configure_session(sid, new_iface)
if bad_param_type != bad_param_session_transfer_setup_skipped:
responder = ap1
new_iface = sta2.ifname()
new_peer_addr = sta2.get_actual_peer_addr()
- initiator.add_peer(responder, new_peer_addr = new_peer_addr)
+ initiator.add_peer(responder, new_peer_addr=new_peer_addr)
sid = initiator.add_session()
initiator.configure_session(sid, new_iface)
if bad_param_type != bad_param_session_teardown_setup_skipped:
responder = ap1
new_iface = sta2.ifname()
new_peer_addr = sta2.get_actual_peer_addr()
- initiator.add_peer(responder, new_peer_addr = new_peer_addr)
+ initiator.add_peer(responder, new_peer_addr=new_peer_addr)
sid = initiator.add_session()
initiator.configure_session(sid, new_iface)
if remove_session_scenario != remove_scenario_no_params:
"Ack response",
"Tear down")
-def fst_send_unexpected_frame(apdev, test_params, frame_type, send_from_ap, additional_param = ''):
+def fst_send_unexpected_frame(apdev, test_params, frame_type, send_from_ap, additional_param=''):
"""This function creates two pairs of APs and stations, makes them connect
and then causes one side to send an unexpected FST frame of the specified
type to the other. The other side should then identify and ignore the
receiver = ap1
new_iface = sta2.ifname()
new_peer_addr = sta2.get_actual_peer_addr()
- sender.add_peer(receiver, new_peer_addr = new_peer_addr)
- sid=sender.add_session()
+ sender.add_peer(receiver, new_peer_addr=new_peer_addr)
+ sid = sender.add_session()
sender.configure_session(sid, new_iface)
if frame_type == frame_type_session_request:
sender.send_session_setup_request(sid)
responder = ap1
new_iface = sta2.ifname()
new_peer_addr = sta2.get_actual_peer_addr()
- initiator.add_peer(responder, new_peer_addr = new_peer_addr)
+ initiator.add_peer(responder, new_peer_addr=new_peer_addr)
sid = initiator.add_session()
initiator.configure_session(sid, new_iface)
if (bad_scenario_type != bad_scenario_ack_req_session_not_set_up and
bad_scenario_type != bad_scenario_ack_resp_session_not_established_init_side and
bad_scenario_type != bad_scenario_ack_req_session_not_established_resp_side and
bad_scenario_type != bad_scenario_ack_resp_session_not_established_resp_side):
- response = "accept"
+ response = "accept"
else:
response = ''
initiator.initiate_session(sid, response)
"""FST STA connecting to non-FST AP"""
ap1, ap2, sta1, sta2 = fst_module_aux.start_two_ap_sta_pairs(apdev)
with HWSimRadio() as (radio, iface):
- non_fst_ap = hostapd.add_ap(iface, { "ssid": "non_fst_11g" })
+ non_fst_ap = hostapd.add_ap(iface, {"ssid": "non_fst_11g"})
try:
orig_sta1_mbies = sta1.get_local_mbies()
orig_sta2_mbies = sta2.get_local_mbies()
"""FST STA 2nd connecting to non-FST AP"""
fst_ap1, fst_ap2, sta1, sta2 = fst_module_aux.start_two_ap_sta_pairs(apdev)
with HWSimRadio() as (radio, iface):
- non_fst_ap = hostapd.add_ap(iface, { "ssid": "non_fst_11g" })
+ non_fst_ap = hostapd.add_ap(iface, {"ssid": "non_fst_11g"})
try:
vals = sta1.scan(freq=fst_test_common.fst_test_def_freq_a)
sta1.connect(fst_ap1, key_mgmt="NONE", scan_freq=fst_test_common.fst_test_def_freq_a)
"""FST STA 2nd connecting to FST AP"""
fst_ap1, fst_ap2, sta1, sta2 = fst_module_aux.start_two_ap_sta_pairs(apdev)
with HWSimRadio() as (radio, iface):
- non_fst_ap = hostapd.add_ap(iface, { "ssid": "non_fst_11g" })
+ non_fst_ap = hostapd.add_ap(iface, {"ssid": "non_fst_11g"})
try:
sta2.connect_to_external_ap(non_fst_ap, ssid="non_fst_11g",
key_mgmt="NONE", scan_freq='2412')
"""FST disconnect 1 of 2 STAs from non-FST AP"""
fst_ap1, fst_ap2, sta1, sta2 = fst_module_aux.start_two_ap_sta_pairs(apdev)
with HWSimRadio() as (radio, iface):
- non_fst_ap = hostapd.add_ap(iface, { "ssid": "non_fst_11g" })
+ non_fst_ap = hostapd.add_ap(iface, {"ssid": "non_fst_11g"})
try:
vals = sta1.scan(freq=fst_test_common.fst_test_def_freq_a)
sta1.connect(fst_ap1, key_mgmt="NONE", scan_freq=fst_test_common.fst_test_def_freq_a)
"""FST disconnect 1 of 2 STAs from FST AP"""
fst_ap1, fst_ap2, sta1, sta2 = fst_module_aux.start_two_ap_sta_pairs(apdev)
with HWSimRadio() as (radio, iface):
- non_fst_ap = hostapd.add_ap(iface, { "ssid": "non_fst_11g" })
+ non_fst_ap = hostapd.add_ap(iface, {"ssid": "non_fst_11g"})
try:
vals = sta1.scan(freq=fst_test_common.fst_test_def_freq_a)
sta1.connect(fst_ap1, key_mgmt="NONE", scan_freq=fst_test_common.fst_test_def_freq_a)
"""FST disconnect 2 of 2 STAs from non-FST AP"""
fst_ap1, fst_ap2, sta1, sta2 = fst_module_aux.start_two_ap_sta_pairs(apdev)
with HWSimRadio() as (radio, iface):
- non_fst_ap = hostapd.add_ap(iface, { "ssid": "non_fst_11g" })
+ non_fst_ap = hostapd.add_ap(iface, {"ssid": "non_fst_11g"})
try:
vals = sta1.scan(freq=fst_test_common.fst_test_def_freq_a)
sta1.connect(fst_ap1, key_mgmt="NONE", scan_freq=fst_test_common.fst_test_def_freq_a)
"""FST disconnect 2 of 2 STAs from FST AP"""
fst_ap1, fst_ap2, sta1, sta2 = fst_module_aux.start_two_ap_sta_pairs(apdev)
with HWSimRadio() as (radio, iface):
- non_fst_ap = hostapd.add_ap(iface, { "ssid": "non_fst_11g"})
+ non_fst_ap = hostapd.add_ap(iface, {"ssid": "non_fst_11g"})
try:
vals = sta1.scan(freq=fst_test_common.fst_test_def_freq_a)
sta1.connect(fst_ap1, key_mgmt="NONE", scan_freq=fst_test_common.fst_test_def_freq_a)
if len(res) != 1 + start_num_groups:
raise Exception("Unexpected number of groups")
- tests = [ "LIST_IFACES unknown",
- "LIST_IFACES unknown2",
- "SESSION_GET 12345678",
- "SESSION_SET " + sid + " unknown=foo",
- "SESSION_RESPOND 12345678 foo",
- "SESSION_RESPOND " + sid,
- "SESSION_RESPOND " + sid + " foo",
- "TEST_REQUEST foo",
- "TEST_REQUEST SEND_SETUP_REQUEST",
- "TEST_REQUEST SEND_SETUP_REQUEST foo",
- "TEST_REQUEST SEND_SETUP_RESPONSE",
- "TEST_REQUEST SEND_SETUP_RESPONSE foo",
- "TEST_REQUEST SEND_ACK_REQUEST",
- "TEST_REQUEST SEND_ACK_REQUEST foo",
- "TEST_REQUEST SEND_ACK_RESPONSE",
- "TEST_REQUEST SEND_ACK_RESPONSE foo",
- "TEST_REQUEST SEND_TEAR_DOWN",
- "TEST_REQUEST SEND_TEAR_DOWN foo",
- "TEST_REQUEST GET_FSTS_ID",
- "TEST_REQUEST GET_FSTS_ID foo",
- "TEST_REQUEST GET_LOCAL_MBIES",
- "TEST_REQUEST GET_LOCAL_MBIES foo",
- "GET_PEER_MBIES",
- "GET_PEER_MBIES ",
- "GET_PEER_MBIES unknown",
- "GET_PEER_MBIES unknown unknown",
- "GET_PEER_MBIES unknown " + initiator.get_new_peer_addr(),
- "GET_PEER_MBIES " + initiator.ifname() + " 01:ff:ff:ff:ff:ff",
- "GET_PEER_MBIES " + initiator.ifname() + " 00:ff:ff:ff:ff:ff",
- "GET_PEER_MBIES " + initiator.ifname() + " 00:00:00:00:00:00",
- "IFACE_PEERS",
- "IFACE_PEERS ",
- "IFACE_PEERS unknown",
- "IFACE_PEERS unknown unknown",
- "IFACE_PEERS " + initiator.fst_group,
- "IFACE_PEERS " + initiator.fst_group + " unknown" ]
+ tests = ["LIST_IFACES unknown",
+ "LIST_IFACES unknown2",
+ "SESSION_GET 12345678",
+ "SESSION_SET " + sid + " unknown=foo",
+ "SESSION_RESPOND 12345678 foo",
+ "SESSION_RESPOND " + sid,
+ "SESSION_RESPOND " + sid + " foo",
+ "TEST_REQUEST foo",
+ "TEST_REQUEST SEND_SETUP_REQUEST",
+ "TEST_REQUEST SEND_SETUP_REQUEST foo",
+ "TEST_REQUEST SEND_SETUP_RESPONSE",
+ "TEST_REQUEST SEND_SETUP_RESPONSE foo",
+ "TEST_REQUEST SEND_ACK_REQUEST",
+ "TEST_REQUEST SEND_ACK_REQUEST foo",
+ "TEST_REQUEST SEND_ACK_RESPONSE",
+ "TEST_REQUEST SEND_ACK_RESPONSE foo",
+ "TEST_REQUEST SEND_TEAR_DOWN",
+ "TEST_REQUEST SEND_TEAR_DOWN foo",
+ "TEST_REQUEST GET_FSTS_ID",
+ "TEST_REQUEST GET_FSTS_ID foo",
+ "TEST_REQUEST GET_LOCAL_MBIES",
+ "TEST_REQUEST GET_LOCAL_MBIES foo",
+ "GET_PEER_MBIES",
+ "GET_PEER_MBIES ",
+ "GET_PEER_MBIES unknown",
+ "GET_PEER_MBIES unknown unknown",
+ "GET_PEER_MBIES unknown " + initiator.get_new_peer_addr(),
+ "GET_PEER_MBIES " + initiator.ifname() + " 01:ff:ff:ff:ff:ff",
+ "GET_PEER_MBIES " + initiator.ifname() + " 00:ff:ff:ff:ff:ff",
+ "GET_PEER_MBIES " + initiator.ifname() + " 00:00:00:00:00:00",
+ "IFACE_PEERS",
+ "IFACE_PEERS ",
+ "IFACE_PEERS unknown",
+ "IFACE_PEERS unknown unknown",
+ "IFACE_PEERS " + initiator.fst_group,
+ "IFACE_PEERS " + initiator.fst_group + " unknown"]
for t in tests:
if "FAIL" not in initiator.grequest("FST-MANAGER " + t):
raise Exception("Unexpected response for invalid FST-MANAGER command " + t)
if "UNKNOWN FST COMMAND" not in initiator.grequest("FST-MANAGER unknown"):
raise Exception("Unexpected response for unknown FST-MANAGER command")
- tests = [ "FST-DETACH", "FST-DETACH ", "FST-DETACH unknown",
- "FST-ATTACH", "FST-ATTACH ", "FST-ATTACH unknown",
- "FST-ATTACH unknown unknown" ]
+ tests = ["FST-DETACH", "FST-DETACH ", "FST-DETACH unknown",
+ "FST-ATTACH", "FST-ATTACH ", "FST-ATTACH unknown",
+ "FST-ATTACH unknown unknown"]
for t in tests:
if "FAIL" not in initiator.grequest(t):
raise Exception("Unexpected response for invalid command " + t)
def hostapd_tx_and_status(hapd, msg):
hapd.set("ext_mgmt_frame_handling", "1")
hapd.mgmt_tx(msg)
- ev = hapd.wait_event([ "MGMT-TX-STATUS" ], timeout=1)
+ ev = hapd.wait_event(["MGMT-TX-STATUS"], timeout=1)
if ev is None or "ok=1" not in ev:
raise Exception("No ACK")
hapd.set("ext_mgmt_frame_handling", "0")
s = sta1.grequest("FST-MANAGER SESSION_INITIATE "+ sid)
if not s.startswith('OK'):
raise Exception("Cannot initiate fst session: %s" % s)
- ev = sta1.peer_obj.wait_gevent([ "FST-EVENT-SESSION" ], timeout=5)
+ ev = sta1.peer_obj.wait_gevent(["FST-EVENT-SESSION"], timeout=5)
if ev is None:
raise Exception("No FST-EVENT-SESSION received")
event = fst_module_aux.parse_fst_session_event(ev)
msg['payload'] = struct.pack("<BB", ACTION_CATEG_FST,
FST_ACTION_ACK_RESPONSE)
hapd.mgmt_tx(msg)
- ev = hapd.wait_event([ "MGMT-TX-STATUS" ], timeout=1)
+ ev = hapd.wait_event(["MGMT-TX-STATUS"], timeout=1)
if ev is None or "ok=1" not in ev:
raise Exception("No ACK")
if not res.startswith("OK"):
raise Exception("SESSION_INITIATE failed")
- tests = [ "", "foo", sid, sid + " foo", sid + " foo=bar" ]
+ tests = ["", "foo", sid, sid + " foo", sid + " foo=bar"]
for t in tests:
res = initiator.grequest("FST-MANAGER SESSION_SET " + t)
if not res.startswith("FAIL"):
ev = dev.wait_event(['FST-EVENT-IFACE'], timeout=5)
if ev is None:
raise Exception("No FST-EVENT-IFACE attached (AP)")
- for t in [ "attached", "ifname=" + ifname, "group=" + group ]:
+ for t in ["attached", "ifname=" + ifname, "group=" + group]:
if t not in ev:
raise Exception("Unexpected FST-EVENT-IFACE data (AP): " + ev)
ev = dev.wait_global_event(['FST-EVENT-IFACE'], timeout=5)
if ev is None:
raise Exception("No FST-EVENT-IFACE attached (STA)")
- for t in [ "attached", "ifname=" + ifname, "group=" + group ]:
+ for t in ["attached", "ifname=" + ifname, "group=" + group]:
if t not in ev:
raise Exception("Unexpected FST-EVENT-IFACE data (STA): " + ev)
ev = dev.wait_event(['FST-EVENT-IFACE'], timeout=5)
if ev is None:
raise Exception("No FST-EVENT-IFACE detached (AP) for " + ifname)
- for t in [ "detached", "ifname=" + ifname, "group=" + group ]:
+ for t in ["detached", "ifname=" + ifname, "group=" + group]:
if t not in ev:
raise Exception("Unexpected FST-EVENT-IFACE data (AP): " + ev)
ev = dev.wait_global_event(['FST-EVENT-IFACE'], timeout=5)
if ev is None:
raise Exception("No FST-EVENT-IFACE detached (STA) for " + ifname)
- for t in [ "detached", "ifname=" + ifname, "group=" + group ]:
+ for t in ["detached", "ifname=" + ifname, "group=" + group]:
if t not in ev:
raise Exception("Unexpected FST-EVENT-IFACE data (STA): " + ev)
ev = dev.wait_event(['FST-EVENT-PEER'], timeout=5)
if ev is None:
raise Exception("No FST-EVENT-PEER connected (AP)")
- for t in [ " " + event + " ", "ifname=" + ifname, "peer_addr=" + addr ]:
+ for t in [" " + event + " ", "ifname=" + ifname, "peer_addr=" + addr]:
if t not in ev:
raise Exception("Unexpected FST-EVENT-PEER data (AP): " + ev)
ev = dev.wait_global_event(['FST-EVENT-PEER'], timeout=5)
if ev is None:
raise Exception("No FST-EVENT-PEER connected (STA)")
- for t in [ " " + event + " ", "ifname=" + ifname, "peer_addr=" + addr ]:
+ for t in [" " + event + " ", "ifname=" + ifname, "peer_addr=" + addr]:
if t not in ev:
raise Exception("Unexpected FST-EVENT-PEER data (STA): " + ev)
if "OK" not in hglobal.request("FST-MANAGER TEST_REQUEST IS_SUPPORTED"):
raise HwsimSkip("No FST testing support")
- params = { "ssid": "fst_11a", "hw_mode": "a", "channel": "36",
- "country_code": "US" }
+ params = {"ssid": "fst_11a", "hw_mode": "a", "channel": "36",
+ "country_code": "US"}
hapd = hostapd.add_ap(apdev[0], params)
fst_attach_ap(hglobal, apdev[0]['ifname'], group)
if "FAIL" not in hglobal.request(cmd):
raise Exception("Duplicated FST-ATTACH (AP) accepted")
- params = { "ssid": "fst_11g", "hw_mode": "g", "channel": "1",
- "country_code": "US" }
+ params = {"ssid": "fst_11g", "hw_mode": "g", "channel": "1",
+ "country_code": "US"}
hapd2 = hostapd.add_ap(apdev[1], params)
fst_attach_ap(hglobal, apdev[1]['ifname'], group)
params['uesa'] = "0"
params['venue_group'] = "7"
params['venue_type'] = "1"
- params['venue_name'] = [ "eng:Example venue", "fin:Esimerkkipaikka" ]
- params['roaming_consortium'] = [ "112233", "1020304050", "010203040506",
- "fedcba" ]
+ params['venue_name'] = ["eng:Example venue", "fin:Esimerkkipaikka"]
+ params['roaming_consortium'] = ["112233", "1020304050", "010203040506",
+ "fedcba"]
params['domain_name'] = "example.com,another.example.com"
- params['nai_realm'] = [ "0,example.com,13[5:6],21[2:4][5:7]",
- "0,another.example.com" ]
+ params['nai_realm'] = ["0,example.com,13[5:6],21[2:4][5:7]",
+ "0,another.example.com"]
params['anqp_3gpp_cell_net'] = "244,91"
params['network_auth_type'] = "02http://www.example.com/redirect/me/here/"
params['ipaddr_type_availability'] = "14"
params['hs20'] = "1"
- params['hs20_oper_friendly_name'] = [ "eng:Example operator", "fin:Esimerkkioperaattori" ]
+ params['hs20_oper_friendly_name'] = ["eng:Example operator", "fin:Esimerkkioperaattori"]
params['hs20_wan_metrics'] = "01:8000:1000:80:240:3000"
- params['hs20_conn_capab'] = [ "1:0:2", "6:22:1", "17:5060:0" ]
+ params['hs20_conn_capab'] = ["1:0:2", "6:22:1", "17:5060:0"]
params['hs20_operating_class'] = "5173"
return params
params['hessid'] = bssid
hostapd.add_ap(apdev[0], params)
- cmds = [ "foo",
- "00:11:22:33:44:55",
- "00:11:22:33:44:55 ",
- "00:11:22:33:44:55 ",
- "00:11:22:33:44:55 1",
- "00:11:22:33:44:55 1 1234",
- "00:11:22:33:44:55 qq",
- "00:11:22:33:44:55 qq 1234",
- "00:11:22:33:44:55 00 1",
- "00:11:22:33:44:55 00 123",
- "00:11:22:33:44:55 00 ",
- "00:11:22:33:44:55 00 qq" ]
+ cmds = ["foo",
+ "00:11:22:33:44:55",
+ "00:11:22:33:44:55 ",
+ "00:11:22:33:44:55 ",
+ "00:11:22:33:44:55 1",
+ "00:11:22:33:44:55 1 1234",
+ "00:11:22:33:44:55 qq",
+ "00:11:22:33:44:55 qq 1234",
+ "00:11:22:33:44:55 00 1",
+ "00:11:22:33:44:55 00 123",
+ "00:11:22:33:44:55 00 ",
+ "00:11:22:33:44:55 00 qq"]
for cmd in cmds:
if "FAIL" not in dev[0].request("GAS_REQUEST " + cmd):
raise Exception("Invalid GAS_REQUEST accepted: " + cmd)
if ev is None:
raise Exception("GAS query timed out (2)")
- cmds = [ "",
- "foo",
- "00:11:22:33:44:55 258,hs20:-1",
- "00:11:22:33:44:55 258,hs20:0",
- "00:11:22:33:44:55 258,hs20:32",
- "00:11:22:33:44:55 hs20:-1",
- "00:11:22:33:44:55 hs20:0",
- "00:11:22:33:44:55 hs20:32",
- "00:11:22:33:44:55 mbo:-1",
- "00:11:22:33:44:55 mbo:0",
- "00:11:22:33:44:55 mbo:999",
- "00:11:22:33:44:55 mbo:1,258,mbo:2,mbo:3,259",
- "00:11:22:33:44:55",
- "00:11:22:33:44:55 ",
- "00:11:22:33:44:55 0",
- "00:11:22:33:44:55 1" ]
+ cmds = ["",
+ "foo",
+ "00:11:22:33:44:55 258,hs20:-1",
+ "00:11:22:33:44:55 258,hs20:0",
+ "00:11:22:33:44:55 258,hs20:32",
+ "00:11:22:33:44:55 hs20:-1",
+ "00:11:22:33:44:55 hs20:0",
+ "00:11:22:33:44:55 hs20:32",
+ "00:11:22:33:44:55 mbo:-1",
+ "00:11:22:33:44:55 mbo:0",
+ "00:11:22:33:44:55 mbo:999",
+ "00:11:22:33:44:55 mbo:1,258,mbo:2,mbo:3,259",
+ "00:11:22:33:44:55",
+ "00:11:22:33:44:55 ",
+ "00:11:22:33:44:55 0",
+ "00:11:22:33:44:55 1"]
for cmd in cmds:
if "FAIL" not in dev[0].request("ANQP_GET " + cmd):
raise Exception("Invalid ANQP_GET accepted")
- cmds = [ "",
- "foo",
- "00:11:22:33:44:55 -1",
- "00:11:22:33:44:55 0",
- "00:11:22:33:44:55 32",
- "00:11:22:33:44:55",
- "00:11:22:33:44:55 ",
- "00:11:22:33:44:55 0",
- "00:11:22:33:44:55 1" ]
+ cmds = ["",
+ "foo",
+ "00:11:22:33:44:55 -1",
+ "00:11:22:33:44:55 0",
+ "00:11:22:33:44:55 32",
+ "00:11:22:33:44:55",
+ "00:11:22:33:44:55 ",
+ "00:11:22:33:44:55 0",
+ "00:11:22:33:44:55 1"]
for cmd in cmds:
if "FAIL" not in dev[0].request("HS20_ANQP_GET " + cmd):
raise Exception("Invalid HS20_ANQP_GET accepted")
dev[0].scan_for_bss(bssid, freq="2412", force_scan=True)
hapd.set("ext_mgmt_frame_handling", "1")
- tests = [ '010000', '01000000', '00000000', '00030000', '00020000',
- '00000100', '0001ff0100ee', '0001ff0200ee' ]
+ tests = ['010000', '01000000', '00000000', '00030000', '00020000',
+ '00000100', '0001ff0100ee', '0001ff0200ee']
for test in tests:
dev[0].request("HS20_ICON_REQUEST " + bssid + " w1fi_logo")
query = gas_rx(hapd)
dev[0].scan_for_bss(bssid, freq="2412", force_scan=True)
hapd.set("ext_mgmt_frame_handling", "1")
- tests = [ '00', '0100', '0201', '0300', '0400', '0500', '0600', '0700',
- '0800', '0900', '0a00', '0b0000000000' ]
+ tests = ['00', '0100', '0201', '0300', '0400', '0500', '0600', '0700',
+ '0800', '0900', '0a00', '0b0000000000']
for test in tests:
dev[0].request("HS20_ANQP_GET " + bssid + " 3,4")
query = gas_rx(hapd)
GAS_INITIAL_RESPONSE = 11
GAS_COMEBACK_REQUEST = 12
GAS_COMEBACK_RESPONSE = 13
-GAS_ACTIONS = [ GAS_INITIAL_REQUEST, GAS_INITIAL_RESPONSE,
- GAS_COMEBACK_REQUEST, GAS_COMEBACK_RESPONSE ]
+GAS_ACTIONS = [GAS_INITIAL_REQUEST, GAS_INITIAL_RESPONSE,
+ GAS_COMEBACK_REQUEST, GAS_COMEBACK_RESPONSE]
def anqp_adv_proto():
return struct.pack('BBBB', 108, 2, 127, 0)
supl_fqdn = "supl.example.com"
supl = struct.pack('BBB', 0, 1 + len(supl_fqdn), 1) + supl_fqdn.encode()
public_id = binascii.hexlify(held + supl).decode()
- params = { "ssid": "gas/anqp",
- "interworking": "1",
- "anqp_elem": [ "265:" + geo_loc,
- "266:" + civic_loc,
- "262:1122334455",
- "267:" + public_id,
- "279:01020304",
- "60000:01",
- "299:0102" ] }
+ params = {"ssid": "gas/anqp",
+ "interworking": "1",
+ "anqp_elem": ["265:" + geo_loc,
+ "266:" + civic_loc,
+ "262:1122334455",
+ "267:" + public_id,
+ "279:01020304",
+ "60000:01",
+ "299:0102"]}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
dev[0].scan_for_bss(bssid, freq="2412", force_scan=True)
dev[0].scan_for_bss(bssid2, freq="2412")
- tests = [ (bssid, "gas_build_req;gas_query_tx_comeback_req"),
- (bssid, "gas_query_tx;gas_query_tx_comeback_req"),
- (bssid, "gas_query_append;gas_query_rx_comeback"),
- (bssid2, "gas_query_append;gas_query_rx_initial"),
- (bssid2, "wpabuf_alloc_copy;gas_query_rx_initial"),
- (bssid, "gas_query_tx;gas_query_tx_initial_req") ]
- for addr,func in tests:
+ tests = [(bssid, "gas_build_req;gas_query_tx_comeback_req"),
+ (bssid, "gas_query_tx;gas_query_tx_comeback_req"),
+ (bssid, "gas_query_append;gas_query_rx_comeback"),
+ (bssid2, "gas_query_append;gas_query_rx_initial"),
+ (bssid2, "wpabuf_alloc_copy;gas_query_rx_initial"),
+ (bssid, "gas_query_tx;gas_query_tx_initial_req")]
+ for addr, func in tests:
with alloc_fail(dev[0], 1, func):
dev[0].request("ANQP_GET " + addr + " 258")
ev = dev[0].wait_event(["GAS-QUERY-DONE"], timeout=5)
raise Exception("Unexpected result code: " + ev)
dev[0].dump_monitor()
- tests = [ "=gas_query_req", "radio_add_work;gas_query_req" ]
+ tests = ["=gas_query_req", "radio_add_work;gas_query_req"]
for func in tests:
with alloc_fail(dev[0], 1, func):
if "FAIL" not in dev[0].request("ANQP_GET " + bssid + " 258"):
venue_type = 13
venue_info = struct.pack('BB', venue_group, venue_type)
lang1 = "eng"
- name1= "Example venue"
+ name1 = "Example venue"
lang2 = "fin"
name2 = "Esimerkkipaikka"
venue1 = struct.pack('B', len(lang1 + name1)) + lang1.encode() + name1.encode()
duple2 = struct.pack('BB', 1 + len(url2), 2) + url2
venue_url = binascii.hexlify(duple1 + duple2).decode()
- params = { "ssid": "gas/anqp",
- "interworking": "1",
- "venue_group": str(venue_group),
- "venue_type": str(venue_type),
- "venue_name": [ lang1 + ":" + name1, lang2 + ":" + name2 ],
- "anqp_elem": [ "277:" + venue_url ] }
+ params = {"ssid": "gas/anqp",
+ "interworking": "1",
+ "venue_group": str(venue_group),
+ "venue_type": str(venue_type),
+ "venue_name": [lang1 + ":" + name1, lang2 + ":" + name2],
+ "anqp_elem": ["277:" + venue_url]}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
venue_type = 13
venue_info = struct.pack('BB', venue_group, venue_type)
lang1 = "eng"
- name1= "Example venue"
+ name1 = "Example venue"
lang2 = "fin"
name2 = "Esimerkkipaikka"
venue1 = struct.pack('B', len(lang1 + name1)) + lang1.encode() + name1.encode()
duple2 = struct.pack('BB', 1 + len(url2.encode()), 2) + url2.encode()
venue_url = binascii.hexlify(duple1 + duple2).decode()
- params = { "ssid": "gas/anqp",
- "interworking": "1",
- "venue_group": str(venue_group),
- "venue_type": str(venue_type),
- "venue_name": [ lang1 + ":" + name1, lang2 + ":" + name2 ],
- "venue_url": [ "1:" + url1, "2:" + url2 ] }
+ params = {"ssid": "gas/anqp",
+ "interworking": "1",
+ "venue_group": str(venue_group),
+ "venue_type": str(venue_type),
+ "venue_name": [lang1 + ":" + name1, lang2 + ":" + name2],
+ "venue_url": ["1:" + url1, "2:" + url2]}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
venue_type = 13
venue_info = struct.pack('BB', venue_group, venue_type)
lang1 = "eng"
- name1= "Example venue"
+ name1 = "Example venue"
lang2 = "fin"
name2 = "Esimerkkipaikka"
venue1 = struct.pack('B', len(lang1 + name1)) + lang1.encode() + name1.encode()
url1 = "http://example.com/venue"
url2 = "https://example.org/venue-info/"
- params = { "ssid": "gas/anqp/pmf",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "CCMP",
- "wpa_passphrase": "12345678",
- "ieee80211w": "2",
- "interworking": "1",
- "venue_group": str(venue_group),
- "venue_type": str(venue_type),
- "venue_name": [ lang1 + ":" + name1, lang2 + ":" + name2 ],
- "venue_url": [ "1:" + url1, "2:" + url2 ] }
+ params = {"ssid": "gas/anqp/pmf",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "CCMP",
+ "wpa_passphrase": "12345678",
+ "ieee80211w": "2",
+ "interworking": "1",
+ "venue_group": str(venue_group),
+ "venue_type": str(venue_type),
+ "venue_name": [lang1 + ":" + name1, lang2 + ":" + name2],
+ "venue_url": ["1:" + url1, "2:" + url2]}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
def test_gas_anqp_capab_list(dev, apdev):
"""GAS/ANQP and Capability List ANQP-element"""
- params = { "ssid": "gas/anqp",
- "interworking": "1" }
+ params = {"ssid": "gas/anqp",
+ "interworking": "1"}
params["anqp_elem"] = []
for i in range(0, 400):
- if i not in [ 257 ]:
- params["anqp_elem"] += [ "%d:010203" % i ]
+ if i not in [257]:
+ params["anqp_elem"] += ["%d:010203" % i]
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
val = val[4:]
logger.info("InfoIDs: " + str(ids))
for i in range(257, 300):
- if i in [ 273, 274 ]:
+ if i in [273, 274]:
continue
if i not in ids:
raise Exception("Unexpected Capability List ANQP-element value (missing %d): %s" % (i, bss['anqp_capability_list']))
dev[0].scan_for_bss(bssid, freq="2412", force_scan=True)
- tests = [ "ap_sta_add;gas_dialog_create",
- "=gas_dialog_create",
- "wpabuf_alloc_copy;gas_serv_rx_gas_comeback_req" ]
+ tests = ["ap_sta_add;gas_dialog_create",
+ "=gas_dialog_create",
+ "wpabuf_alloc_copy;gas_serv_rx_gas_comeback_req"]
for t in tests:
with alloc_fail(hapd, 1, t):
if "OK" not in dev[0].request("ANQP_GET " + bssid + " 258"):
hapd.set("gas_comeback_delay", "0")
- tests = [ "gas_serv_build_gas_resp_payload" ]
+ tests = ["gas_serv_build_gas_resp_payload"]
for t in tests:
with alloc_fail(hapd, 1, t):
if "OK" not in dev[0].request("ANQP_GET " + bssid + " 258"):
def test_gas_anqp_overrides(dev, apdev):
"""GAS and ANQP overrides"""
- params = { "ssid": "gas/anqp",
- "interworking": "1",
- "anqp_elem": [ "257:111111",
- "258:222222",
- "260:333333",
- "261:444444",
- "262:555555",
- "263:666666",
- "264:777777",
- "268:888888",
- "275:999999" ] }
+ params = {"ssid": "gas/anqp",
+ "interworking": "1",
+ "anqp_elem": ["257:111111",
+ "258:222222",
+ "260:333333",
+ "261:444444",
+ "262:555555",
+ "263:666666",
+ "264:777777",
+ "268:888888",
+ "275:999999"]}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(bssid, freq="2412", force_scan=True)
- tests = [ "00 12340000",
- "00 dddd0300506fff",
- "00 dddd0400506fffff",
- "00 dddd0400506f9aff",
- "00 dddd0400506f9a11",
- "00 dddd0600506f9a11ff00",
- "00 dddd0600506f9a110600",
- "00 dddd0600506f9a110600",
- "00 dddd0700506f9a11060000",
- "00 dddd0700506f9a110600ff",
- "00 dddd0800506f9a110600ff00",
- "00 dddd0900506f9a110600ff0000",
- "00 dddd0900506f9a110600ff0001",
- "00 dddd0900506f9a110600ffff00",
- "00 dddd0a00506f9a110600ff00013b",
- "00 dddd0700506f9a110100ff",
- "00 dddd0700506f9a11010008",
- "00 dddd14",
- "00 dddd1400506f9a11" ]
+ tests = ["00 12340000",
+ "00 dddd0300506fff",
+ "00 dddd0400506fffff",
+ "00 dddd0400506f9aff",
+ "00 dddd0400506f9a11",
+ "00 dddd0600506f9a11ff00",
+ "00 dddd0600506f9a110600",
+ "00 dddd0600506f9a110600",
+ "00 dddd0700506f9a11060000",
+ "00 dddd0700506f9a110600ff",
+ "00 dddd0800506f9a110600ff00",
+ "00 dddd0900506f9a110600ff0000",
+ "00 dddd0900506f9a110600ff0001",
+ "00 dddd0900506f9a110600ffff00",
+ "00 dddd0a00506f9a110600ff00013b",
+ "00 dddd0700506f9a110100ff",
+ "00 dddd0700506f9a11010008",
+ "00 dddd14",
+ "00 dddd1400506f9a11"]
for t in tests:
req = dev[0].request("GAS_REQUEST " + bssid + " " + t)
if "FAIL" in req:
msg5 = struct.pack('<BBB', ACTION_CATEG_PUBLIC, GAS_INITIAL_REQUEST,
dialog_token) + anqp_adv_proto() + struct.pack('<H', 1)
msg6 = struct.pack('<BB', ACTION_CATEG_PUBLIC, GAS_COMEBACK_REQUEST)
- tests = [ msg, msg2, msg3, msg4, msg5, msg6 ]
+ tests = [msg, msg2, msg3, msg4, msg5, msg6]
for t in tests:
req = "MGMT_TX {} {} freq=2412 wait_time=10 action={}".format(bssid, bssid, binascii.hexlify(t).decode())
if "OK" not in wpas.request(req):
def test_hapd_ctrl_chan_switch(dev, apdev):
"""hostapd and CHAN_SWITCH ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" not in hapd.request("CHAN_SWITCH "):
raise Exception("Unexpected CHAN_SWITCH success")
def test_hapd_ctrl_level(dev, apdev):
"""hostapd and LEVEL ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" not in hapd.request("LEVEL 0"):
raise Exception("Unexpected LEVEL success on non-monitor interface")
def test_hapd_ctrl_new_sta(dev, apdev):
"""hostapd and NEW_STA ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" not in hapd.request("NEW_STA 00:11:22:33:44"):
raise Exception("Unexpected NEW_STA success")
def test_hapd_ctrl_get(dev, apdev):
"""hostapd and GET ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" not in hapd.request("GET foo"):
raise Exception("Unexpected GET success")
def test_hapd_ctrl_unknown(dev, apdev):
"""hostapd and unknown ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "UNKNOWN COMMAND" not in hapd.request("FOO"):
raise Exception("Unexpected response")
def test_hapd_ctrl_hs20_wnm_notif(dev, apdev):
"""hostapd and HS20_WNM_NOTIF ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" not in hapd.request("HS20_WNM_NOTIF 00:11:22:33:44 http://example.com/"):
raise Exception("Unexpected HS20_WNM_NOTIF success")
def test_hapd_ctrl_hs20_deauth_req(dev, apdev):
"""hostapd and HS20_DEAUTH_REQ ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" not in hapd.request("HS20_DEAUTH_REQ 00:11:22:33:44 1 120 http://example.com/"):
raise Exception("Unexpected HS20_DEAUTH_REQ success")
def test_hapd_ctrl_disassoc_imminent(dev, apdev):
"""hostapd and DISASSOC_IMMINENT ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" not in hapd.request("DISASSOC_IMMINENT 00:11:22:33:44"):
raise Exception("Unexpected DISASSOC_IMMINENT success")
def test_hapd_ctrl_ess_disassoc(dev, apdev):
"""hostapd and ESS_DISASSOC ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "FAIL" not in hapd.request("ESS_DISASSOC 00:11:22:33:44"):
raise Exception("Unexpected ESS_DISASSOCT success")
def test_hapd_ctrl_set_deny_mac_file(dev, apdev):
"""hostapd and SET deny_mac_file ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
dev[1].connect(ssid, key_mgmt="NONE", scan_freq="2412")
def test_hapd_ctrl_set_accept_mac_file(dev, apdev):
"""hostapd and SET accept_mac_file ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
dev[1].connect(ssid, key_mgmt="NONE", scan_freq="2412")
def test_hapd_ctrl_set_accept_mac_file_vlan(dev, apdev):
"""hostapd and SET accept_mac_file ctrl_iface command (VLAN ID)"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
dev[1].connect(ssid, key_mgmt="NONE", scan_freq="2412")
def test_hapd_ctrl_set_error_cases(dev, apdev):
"""hostapd and SET error cases"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
- errors = [ "wpa_key_mgmt FOO",
- "wpa_key_mgmt WPA-PSK \t FOO",
- "wpa_key_mgmt \t ",
- "wpa_pairwise FOO",
- "wpa_pairwise \t ",
- 'wep_key0 "',
- 'wep_key0 "abcde',
- "wep_key0 1",
- "wep_key0 12q3456789",
- "wep_key_len_broadcast 20",
- "wep_rekey_period -1",
- "wep_default_key 4",
- "r0kh 02:00:00:00:03:0q nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
- "r0kh 02:00:00:00:03:00 12345678901234567890123456789012345678901234567890.nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
- "r0kh 02:00:00:00:03:00 nas1.w1.fi 100q02030405060708090a0b0c0d0e0f100q02030405060708090a0b0c0d0e0f",
- "r1kh 02:00:00:00:04:q0 00:01:02:03:04:06 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f",
- "r1kh 02:00:00:00:04:00 00:01:02:03:04:q6 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f",
- "r1kh 02:00:00:00:04:00 00:01:02:03:04:06 2q0102030405060708090a0b0c0d0e0f2q0102030405060708090a0b0c0d0e0f",
- "roaming_consortium 1",
- "roaming_consortium 12",
- "roaming_consortium 112233445566778899aabbccddeeff00",
- 'venue_name P"engExample venue"',
- 'venue_name P"engExample venue',
- "venue_name engExample venue",
- "venue_name e:Example venue",
- "venue_name eng1:Example venue",
- "venue_name eng:Example venue 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
- "anqp_3gpp_cell_net abc",
- "anqp_3gpp_cell_net ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
- "anqp_3gpp_cell_net 244",
- "anqp_3gpp_cell_net 24,123",
- "anqp_3gpp_cell_net 244,1",
- "anqp_3gpp_cell_net 244,1234",
- "nai_realm 0",
- "nai_realm 0,1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.nas1.w1.fi",
- "nai_realm 0,example.org,1,2,3,4,5,6,7,8",
- "nai_realm 0,example.org,1[1:1][2:2][3:3][4:4][5:5]",
- "nai_realm 0,example.org,1[1]",
- "nai_realm 0,example.org,1[1:1",
- "nai_realm 0,a.example.org;b.example.org;c.example.org;d.example.org;e.example.org;f.example.org;g.example.org;h.example.org;i.example.org;j.example.org;k.example.org",
- "qos_map_set 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60",
- "qos_map_set 53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,255,300",
- "qos_map_set 53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,255,-1",
- "qos_map_set 53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,255,255,1",
- "qos_map_set 1",
- "qos_map_set 1,2",
- "hs20_conn_capab 1",
- "hs20_conn_capab 6:22",
- "hs20_wan_metrics 0q:8000:1000:80:240:3000",
- "hs20_wan_metrics 01",
- "hs20_wan_metrics 01:8000",
- "hs20_wan_metrics 01:8000:1000",
- "hs20_wan_metrics 01:8000:1000:80",
- "hs20_wan_metrics 01:8000:1000:80:240",
- "hs20_oper_friendly_name eng1:Example",
- "hs20_icon 32",
- "hs20_icon 32:32",
- "hs20_icon 32:32:eng",
- "hs20_icon 32:32:eng:image/png",
- "hs20_icon 32:32:eng:image/png:icon32",
- "hs20_icon 32:32:eng:image/png:123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:/tmp/icon32.png",
- "hs20_icon 32:32:eng:image/png:name:/tmp/123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.png",
- "osu_ssid ",
- "osu_ssid P",
- 'osu_ssid P"abc',
- 'osu_ssid "1234567890123456789012345678901234567890"',
- "osu_friendly_name eng:Example",
- "osu_nai anonymous@example.com",
- "osu_nai2 anonymous@example.com",
- "osu_method_list 1 0",
- "osu_icon foo",
- "osu_service_desc eng:Example services",
- "ssid 1234567890123456789012345678901234567890",
- "pac_opaque_encr_key 123456",
- "eap_fast_a_id 12345",
- "eap_fast_a_id 12345q",
- "own_ip_addr foo",
- "auth_server_addr foo2",
- "auth_server_shared_secret ",
- "acct_server_addr foo3",
- "acct_server_shared_secret ",
- "radius_auth_req_attr 123::",
- "radius_acct_req_attr 123::",
- "radius_das_client 192.168.1.123",
- "radius_das_client 192.168.1.1a foo",
- "auth_algs 0",
- "max_num_sta -1",
- "max_num_sta 1000000",
- "wpa_passphrase 1234567",
- "wpa_passphrase 1234567890123456789012345678901234567890123456789012345678901234",
- "wpa_psk 1234567890123456789012345678901234567890123456789012345678901234a",
- "wpa_psk 12345678901234567890123456789012345678901234567890123456789012",
- "wpa_psk_radius 123",
- "wpa_pairwise NONE",
- "wpa_pairwise WEP40",
- "wpa_pairwise WEP104",
- "rsn_pairwise NONE",
- "rsn_pairwise WEP40",
- "rsn_pairwise WEP104",
- "mobility_domain 01",
- "r1_key_holder 0011223344",
- "ctrl_interface_group nosuchgrouphere",
- "hw_mode foo",
- "wps_rf_bands foo",
- "beacon_int 0",
- "beacon_int 65536",
- "acs_num_scans 0",
- "acs_num_scans 101",
- "rts_threshold -2",
- "rts_threshold 65536",
- "fragm_threshold -2",
- "fragm_threshold 2347",
- "send_probe_response -1",
- "send_probe_response 2",
- "vlan_naming -1",
- "vlan_naming 10000000",
- "group_mgmt_cipher FOO",
- "assoc_sa_query_max_timeout 0",
- "assoc_sa_query_retry_timeout 0",
- "wps_state -1",
- "wps_state 3",
- "uuid FOO",
- "device_name 1234567890123456789012345678901234567890",
- "manufacturer 1234567890123456789012345678901234567890123456789012345678901234567890",
- "model_name 1234567890123456789012345678901234567890",
- "model_number 1234567890123456789012345678901234567890",
- "serial_number 1234567890123456789012345678901234567890",
- "device_type FOO",
- "os_version 1",
- "ap_settings /tmp/does/not/exist/ap-settings.foo",
- "wps_nfc_dev_pw_id 4",
- "wps_nfc_dev_pw_id 100000",
- "time_zone A",
- "access_network_type -1",
- "access_network_type 16",
- "hessid 00:11:22:33:44",
- "network_auth_type 0q",
- "ipaddr_type_availability 1q",
- "hs20_operating_class 0",
- "hs20_operating_class 0q",
- "bss_load_test ",
- "bss_load_test 12",
- "bss_load_test 12:80",
- "vendor_elements 0",
- "vendor_elements 0q",
- "assocresp_elements 0",
- "assocresp_elements 0q",
- "local_pwr_constraint -1",
- "local_pwr_constraint 256",
- "wmm_ac_bk_cwmin -1",
- "wmm_ac_be_cwmin 16",
- "wmm_ac_vi_cwmax -1",
- "wmm_ac_vo_cwmax 16",
- "wmm_ac_foo_cwmax 6",
- "wmm_ac_bk_aifs 0",
- "wmm_ac_bk_aifs 256",
- "wmm_ac_bk_txop_limit -1",
- "wmm_ac_bk_txop_limit 65536",
- "wmm_ac_bk_acm -1",
- "wmm_ac_bk_acm 2",
- "wmm_ac_bk_foo 2",
- "tx_queue_foo_aifs 3",
- "tx_queue_data3_cwmin 4",
- "tx_queue_data3_cwmax 4",
- "tx_queue_data3_aifs -4",
- "tx_queue_data3_foo 1" ]
+ errors = ["wpa_key_mgmt FOO",
+ "wpa_key_mgmt WPA-PSK \t FOO",
+ "wpa_key_mgmt \t ",
+ "wpa_pairwise FOO",
+ "wpa_pairwise \t ",
+ 'wep_key0 "',
+ 'wep_key0 "abcde',
+ "wep_key0 1",
+ "wep_key0 12q3456789",
+ "wep_key_len_broadcast 20",
+ "wep_rekey_period -1",
+ "wep_default_key 4",
+ "r0kh 02:00:00:00:03:0q nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
+ "r0kh 02:00:00:00:03:00 12345678901234567890123456789012345678901234567890.nas1.w1.fi 100102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f",
+ "r0kh 02:00:00:00:03:00 nas1.w1.fi 100q02030405060708090a0b0c0d0e0f100q02030405060708090a0b0c0d0e0f",
+ "r1kh 02:00:00:00:04:q0 00:01:02:03:04:06 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f",
+ "r1kh 02:00:00:00:04:00 00:01:02:03:04:q6 200102030405060708090a0b0c0d0e0f200102030405060708090a0b0c0d0e0f",
+ "r1kh 02:00:00:00:04:00 00:01:02:03:04:06 2q0102030405060708090a0b0c0d0e0f2q0102030405060708090a0b0c0d0e0f",
+ "roaming_consortium 1",
+ "roaming_consortium 12",
+ "roaming_consortium 112233445566778899aabbccddeeff00",
+ 'venue_name P"engExample venue"',
+ 'venue_name P"engExample venue',
+ "venue_name engExample venue",
+ "venue_name e:Example venue",
+ "venue_name eng1:Example venue",
+ "venue_name eng:Example venue 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
+ "anqp_3gpp_cell_net abc",
+ "anqp_3gpp_cell_net ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
+ "anqp_3gpp_cell_net 244",
+ "anqp_3gpp_cell_net 24,123",
+ "anqp_3gpp_cell_net 244,1",
+ "anqp_3gpp_cell_net 244,1234",
+ "nai_realm 0",
+ "nai_realm 0,1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.nas1.w1.fi",
+ "nai_realm 0,example.org,1,2,3,4,5,6,7,8",
+ "nai_realm 0,example.org,1[1:1][2:2][3:3][4:4][5:5]",
+ "nai_realm 0,example.org,1[1]",
+ "nai_realm 0,example.org,1[1:1",
+ "nai_realm 0,a.example.org;b.example.org;c.example.org;d.example.org;e.example.org;f.example.org;g.example.org;h.example.org;i.example.org;j.example.org;k.example.org",
+ "qos_map_set 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60",
+ "qos_map_set 53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,255,300",
+ "qos_map_set 53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,255,-1",
+ "qos_map_set 53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,255,255,1",
+ "qos_map_set 1",
+ "qos_map_set 1,2",
+ "hs20_conn_capab 1",
+ "hs20_conn_capab 6:22",
+ "hs20_wan_metrics 0q:8000:1000:80:240:3000",
+ "hs20_wan_metrics 01",
+ "hs20_wan_metrics 01:8000",
+ "hs20_wan_metrics 01:8000:1000",
+ "hs20_wan_metrics 01:8000:1000:80",
+ "hs20_wan_metrics 01:8000:1000:80:240",
+ "hs20_oper_friendly_name eng1:Example",
+ "hs20_icon 32",
+ "hs20_icon 32:32",
+ "hs20_icon 32:32:eng",
+ "hs20_icon 32:32:eng:image/png",
+ "hs20_icon 32:32:eng:image/png:icon32",
+ "hs20_icon 32:32:eng:image/png:123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:/tmp/icon32.png",
+ "hs20_icon 32:32:eng:image/png:name:/tmp/123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.png",
+ "osu_ssid ",
+ "osu_ssid P",
+ 'osu_ssid P"abc',
+ 'osu_ssid "1234567890123456789012345678901234567890"',
+ "osu_friendly_name eng:Example",
+ "osu_nai anonymous@example.com",
+ "osu_nai2 anonymous@example.com",
+ "osu_method_list 1 0",
+ "osu_icon foo",
+ "osu_service_desc eng:Example services",
+ "ssid 1234567890123456789012345678901234567890",
+ "pac_opaque_encr_key 123456",
+ "eap_fast_a_id 12345",
+ "eap_fast_a_id 12345q",
+ "own_ip_addr foo",
+ "auth_server_addr foo2",
+ "auth_server_shared_secret ",
+ "acct_server_addr foo3",
+ "acct_server_shared_secret ",
+ "radius_auth_req_attr 123::",
+ "radius_acct_req_attr 123::",
+ "radius_das_client 192.168.1.123",
+ "radius_das_client 192.168.1.1a foo",
+ "auth_algs 0",
+ "max_num_sta -1",
+ "max_num_sta 1000000",
+ "wpa_passphrase 1234567",
+ "wpa_passphrase 1234567890123456789012345678901234567890123456789012345678901234",
+ "wpa_psk 1234567890123456789012345678901234567890123456789012345678901234a",
+ "wpa_psk 12345678901234567890123456789012345678901234567890123456789012",
+ "wpa_psk_radius 123",
+ "wpa_pairwise NONE",
+ "wpa_pairwise WEP40",
+ "wpa_pairwise WEP104",
+ "rsn_pairwise NONE",
+ "rsn_pairwise WEP40",
+ "rsn_pairwise WEP104",
+ "mobility_domain 01",
+ "r1_key_holder 0011223344",
+ "ctrl_interface_group nosuchgrouphere",
+ "hw_mode foo",
+ "wps_rf_bands foo",
+ "beacon_int 0",
+ "beacon_int 65536",
+ "acs_num_scans 0",
+ "acs_num_scans 101",
+ "rts_threshold -2",
+ "rts_threshold 65536",
+ "fragm_threshold -2",
+ "fragm_threshold 2347",
+ "send_probe_response -1",
+ "send_probe_response 2",
+ "vlan_naming -1",
+ "vlan_naming 10000000",
+ "group_mgmt_cipher FOO",
+ "assoc_sa_query_max_timeout 0",
+ "assoc_sa_query_retry_timeout 0",
+ "wps_state -1",
+ "wps_state 3",
+ "uuid FOO",
+ "device_name 1234567890123456789012345678901234567890",
+ "manufacturer 1234567890123456789012345678901234567890123456789012345678901234567890",
+ "model_name 1234567890123456789012345678901234567890",
+ "model_number 1234567890123456789012345678901234567890",
+ "serial_number 1234567890123456789012345678901234567890",
+ "device_type FOO",
+ "os_version 1",
+ "ap_settings /tmp/does/not/exist/ap-settings.foo",
+ "wps_nfc_dev_pw_id 4",
+ "wps_nfc_dev_pw_id 100000",
+ "time_zone A",
+ "access_network_type -1",
+ "access_network_type 16",
+ "hessid 00:11:22:33:44",
+ "network_auth_type 0q",
+ "ipaddr_type_availability 1q",
+ "hs20_operating_class 0",
+ "hs20_operating_class 0q",
+ "bss_load_test ",
+ "bss_load_test 12",
+ "bss_load_test 12:80",
+ "vendor_elements 0",
+ "vendor_elements 0q",
+ "assocresp_elements 0",
+ "assocresp_elements 0q",
+ "local_pwr_constraint -1",
+ "local_pwr_constraint 256",
+ "wmm_ac_bk_cwmin -1",
+ "wmm_ac_be_cwmin 16",
+ "wmm_ac_vi_cwmax -1",
+ "wmm_ac_vo_cwmax 16",
+ "wmm_ac_foo_cwmax 6",
+ "wmm_ac_bk_aifs 0",
+ "wmm_ac_bk_aifs 256",
+ "wmm_ac_bk_txop_limit -1",
+ "wmm_ac_bk_txop_limit 65536",
+ "wmm_ac_bk_acm -1",
+ "wmm_ac_bk_acm 2",
+ "wmm_ac_bk_foo 2",
+ "tx_queue_foo_aifs 3",
+ "tx_queue_data3_cwmin 4",
+ "tx_queue_data3_cwmax 4",
+ "tx_queue_data3_aifs -4",
+ "tx_queue_data3_foo 1"]
for e in errors:
if "FAIL" not in hapd.request("SET " + e):
raise Exception("Unexpected SET success: '%s'" % e)
if "OK" not in hapd.request("SET osu_friendly_name eng:Example"):
raise Exception("Unexpected SET osu_friendly_name failure")
- errors = [ "osu_friendly_name eng1:Example",
- "osu_service_desc eng1:Example services" ]
+ errors = ["osu_friendly_name eng1:Example",
+ "osu_service_desc eng1:Example services"]
for e in errors:
if "FAIL" not in hapd.request("SET " + e):
raise Exception("Unexpected SET success: '%s'" % e)
- no_err = [ "wps_nfc_dh_pubkey 0",
- "wps_nfc_dh_privkey 0q",
- "wps_nfc_dev_pw 012",
- "manage_p2p 0",
- "disassoc_low_ack 0",
- "network_auth_type 01",
- "tdls_prohibit 0",
- "tdls_prohibit_chan_switch 0" ]
+ no_err = ["wps_nfc_dh_pubkey 0",
+ "wps_nfc_dh_privkey 0q",
+ "wps_nfc_dev_pw 012",
+ "manage_p2p 0",
+ "disassoc_low_ack 0",
+ "network_auth_type 01",
+ "tdls_prohibit 0",
+ "tdls_prohibit_chan_switch 0"]
for e in no_err:
if "OK" not in hapd.request("SET " + e):
raise Exception("Unexpected SET failure: '%s'" % e)
def test_hapd_ctrl_global(dev, apdev):
"""hostapd and GET ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
ifname = apdev[0]['ifname']
hapd = hostapd.add_ap(apdev[0], params)
hapd_global = hostapd.HostapdGlobal(apdev[0])
def test_hapd_dup_network_global_wpa2(dev, apdev):
"""hostapd and DUP_NETWORK command (WPA2)"""
- passphrase="12345678"
+ passphrase = "12345678"
src_ssid = "hapd-ctrl-src"
dst_ssid = "hapd-ctrl-dst"
src_ifname = apdev[0]['ifname']
src_hapd = hostapd.add_ap(apdev[0], src_params)
- dst_params = { "ssid": dst_ssid }
+ dst_params = {"ssid": dst_ssid}
dst_ifname = apdev[1]['ifname']
dst_hapd = hostapd.add_ap(apdev[1], dst_params, no_enable=True)
hapd_global = hostapd.HostapdGlobal()
- for param in [ "wpa", "wpa_passphrase", "wpa_key_mgmt", "rsn_pairwise" ]:
+ for param in ["wpa", "wpa_passphrase", "wpa_key_mgmt", "rsn_pairwise"]:
dup_network(hapd_global, src_ifname, dst_ifname, param)
dst_hapd.enable()
if "FAIL" in dst_hapd.request("STA " + addr):
raise Exception("Could not connect using duplicated wpa params")
- tests = [ "a",
- "no-such-ifname no-such-ifname",
- src_ifname + " no-such-ifname",
- src_ifname + " no-such-ifname no-such-param",
- src_ifname + " " + dst_ifname + " no-such-param" ]
+ tests = ["a",
+ "no-such-ifname no-such-ifname",
+ src_ifname + " no-such-ifname",
+ src_ifname + " no-such-ifname no-such-param",
+ src_ifname + " " + dst_ifname + " no-such-param"]
for t in tests:
if "FAIL" not in hapd_global.request("DUP_NETWORK " + t):
raise Exception("Invalid DUP_NETWORK accepted: " + t)
src_ifname = apdev[0]['ifname']
src_hapd = hostapd.add_ap(apdev[0], src_params)
- dst_params = { "ssid": dst_ssid }
+ dst_params = {"ssid": dst_ssid}
dst_ifname = apdev[1]['ifname']
dst_hapd = hostapd.add_ap(apdev[1], dst_params, no_enable=True)
hapd_global = hostapd.HostapdGlobal()
- for param in [ "wpa", "wpa_psk", "wpa_key_mgmt", "wpa_pairwise" ]:
+ for param in ["wpa", "wpa_psk", "wpa_key_mgmt", "wpa_pairwise"]:
dup_network(hapd_global, src_ifname, dst_ifname, param)
dst_hapd.enable()
@remote_compatible
def test_hapd_ctrl_log_level(dev, apdev):
"""hostapd ctrl_iface LOG_LEVEL"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
level = hapd.request("LOG_LEVEL")
if "Current level: MSGDUMP" not in level:
raise Exception("Unexpected debug level(1): " + level)
if "FAIL" not in hapd.request("LOG_LEVEL FOO"):
raise Exception("Invalid LOG_LEVEL accepted")
- for lev in [ "EXCESSIVE", "MSGDUMP", "DEBUG", "INFO", "WARNING", "ERROR" ]:
+ for lev in ["EXCESSIVE", "MSGDUMP", "DEBUG", "INFO", "WARNING", "ERROR"]:
if "OK" not in hapd.request("LOG_LEVEL " + lev):
raise Exception("LOG_LEVEL failed for " + lev)
level = hapd.request("LOG_LEVEL")
def test_hapd_ctrl_mib(dev, apdev):
"""hostapd and MIB ctrl_iface command with open network"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
mib = hapd.request("MIB")
def test_hapd_ctrl_not_yet_fully_enabled(dev, apdev):
"""hostapd and ctrl_iface commands when BSS not yet fully enabled"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
if not hapd.ping():
raise Exception("Unexpected response to STA-FIRST")
if "FAIL" not in hapd.request("STA ff:ff:ff:ff:ff:ff"):
raise Exception("Unexpected response to STA")
- cmds = [ "NEW_STA 02:ff:ff:ff:ff:ff",
- "DEAUTHENTICATE 02:ff:ff:ff:ff:ff",
- "DEAUTHENTICATE 02:ff:ff:ff:ff:ff test=0",
- "DEAUTHENTICATE 02:ff:ff:ff:ff:ff p2p=0",
- "DEAUTHENTICATE 02:ff:ff:ff:ff:ff tx=0",
- "DISASSOCIATE 02:ff:ff:ff:ff:ff",
- "DISASSOCIATE 02:ff:ff:ff:ff:ff test=0",
- "DISASSOCIATE 02:ff:ff:ff:ff:ff p2p=0",
- "DISASSOCIATE 02:ff:ff:ff:ff:ff tx=0",
- "SA_QUERY 02:ff:ff:ff:ff:ff",
- "WPS_PIN any 12345670",
- "WPS_PBC",
- "WPS_CANCEL",
- "WPS_AP_PIN random",
- "WPS_AP_PIN disable",
- "WPS_CHECK_PIN 123456789",
- "WPS_GET_STATUS",
- "WPS_NFC_TAG_READ 00",
- "WPS_NFC_CONFIG_TOKEN NDEF",
- "WPS_NFC_TOKEN WPS",
- "NFC_GET_HANDOVER_SEL NDEF WPS-CR",
- "NFC_REPORT_HANDOVER RESP WPS 00 00",
- "SET_QOS_MAP_SET 22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55",
- "SEND_QOS_MAP_CONF 02:ff:ff:ff:ff:ff",
- "HS20_WNM_NOTIF 02:ff:ff:ff:ff:ff https://example.com/",
- "HS20_DEAUTH_REQ 02:ff:ff:ff:ff:ff 1 120 https://example.com/",
- "DISASSOC_IMMINENT 02:ff:ff:ff:ff:ff 10",
- "ESS_DISASSOC 02:ff:ff:ff:ff:ff 10 https://example.com/",
- "BSS_TM_REQ 02:ff:ff:ff:ff:ff",
- "GET_CONFIG",
- "RADAR DETECTED freq=5260 ht_enabled=1 chan_width=1",
- "CHAN_SWITCH 5 5200 ht sec_channel_offset=-1 bandwidth=40",
- "TRACK_STA_LIST",
- "PMKSA",
- "PMKSA_FLUSH",
- "SET_NEIGHBOR 00:11:22:33:44:55 ssid=\"test1\"",
- "REMOVE_NEIGHBOR 00:11:22:33:44:55 ssid=\"test1\"",
- "REQ_LCI 00:11:22:33:44:55",
- "REQ_RANGE 00:11:22:33:44:55",
- "DRIVER_FLAGS",
- "STOP_AP" ]
+ cmds = ["NEW_STA 02:ff:ff:ff:ff:ff",
+ "DEAUTHENTICATE 02:ff:ff:ff:ff:ff",
+ "DEAUTHENTICATE 02:ff:ff:ff:ff:ff test=0",
+ "DEAUTHENTICATE 02:ff:ff:ff:ff:ff p2p=0",
+ "DEAUTHENTICATE 02:ff:ff:ff:ff:ff tx=0",
+ "DISASSOCIATE 02:ff:ff:ff:ff:ff",
+ "DISASSOCIATE 02:ff:ff:ff:ff:ff test=0",
+ "DISASSOCIATE 02:ff:ff:ff:ff:ff p2p=0",
+ "DISASSOCIATE 02:ff:ff:ff:ff:ff tx=0",
+ "SA_QUERY 02:ff:ff:ff:ff:ff",
+ "WPS_PIN any 12345670",
+ "WPS_PBC",
+ "WPS_CANCEL",
+ "WPS_AP_PIN random",
+ "WPS_AP_PIN disable",
+ "WPS_CHECK_PIN 123456789",
+ "WPS_GET_STATUS",
+ "WPS_NFC_TAG_READ 00",
+ "WPS_NFC_CONFIG_TOKEN NDEF",
+ "WPS_NFC_TOKEN WPS",
+ "NFC_GET_HANDOVER_SEL NDEF WPS-CR",
+ "NFC_REPORT_HANDOVER RESP WPS 00 00",
+ "SET_QOS_MAP_SET 22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55",
+ "SEND_QOS_MAP_CONF 02:ff:ff:ff:ff:ff",
+ "HS20_WNM_NOTIF 02:ff:ff:ff:ff:ff https://example.com/",
+ "HS20_DEAUTH_REQ 02:ff:ff:ff:ff:ff 1 120 https://example.com/",
+ "DISASSOC_IMMINENT 02:ff:ff:ff:ff:ff 10",
+ "ESS_DISASSOC 02:ff:ff:ff:ff:ff 10 https://example.com/",
+ "BSS_TM_REQ 02:ff:ff:ff:ff:ff",
+ "GET_CONFIG",
+ "RADAR DETECTED freq=5260 ht_enabled=1 chan_width=1",
+ "CHAN_SWITCH 5 5200 ht sec_channel_offset=-1 bandwidth=40",
+ "TRACK_STA_LIST",
+ "PMKSA",
+ "PMKSA_FLUSH",
+ "SET_NEIGHBOR 00:11:22:33:44:55 ssid=\"test1\"",
+ "REMOVE_NEIGHBOR 00:11:22:33:44:55 ssid=\"test1\"",
+ "REQ_LCI 00:11:22:33:44:55",
+ "REQ_RANGE 00:11:22:33:44:55",
+ "DRIVER_FLAGS",
+ "STOP_AP"]
for cmd in cmds:
hapd.request(cmd)
def test_hapd_ctrl_set(dev, apdev):
"""hostapd and SET ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "foo",
- "wps_version_number 300",
- "gas_frag_limit 0",
- "mbo_assoc_disallow 0" ]
+ tests = ["foo",
+ "wps_version_number 300",
+ "gas_frag_limit 0",
+ "mbo_assoc_disallow 0"]
for t in tests:
if "FAIL" not in hapd.request("SET " + t):
raise Exception("Invalid SET command accepted: " + t)
def test_hapd_ctrl_radar(dev, apdev):
"""hostapd and RADAR ctrl_iface command"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "foo", "foo bar" ]
+ tests = ["foo", "foo bar"]
for t in tests:
if "FAIL" not in hapd.request("RADAR " + t):
raise Exception("Invalid RADAR command accepted: " + t)
- tests = [ "DETECTED freq=2412 chan_offset=12 cf1=1234 cf2=2345",
- "CAC-FINISHED freq=2412",
- "CAC-ABORTED freq=2412",
- "NOP-FINISHED freq=2412" ]
+ tests = ["DETECTED freq=2412 chan_offset=12 cf1=1234 cf2=2345",
+ "CAC-FINISHED freq=2412",
+ "CAC-ABORTED freq=2412",
+ "NOP-FINISHED freq=2412"]
for t in tests:
hapd.request("RADAR " + t)
def test_hapd_ctrl_ext_io_errors(dev, apdev):
"""hostapd and external I/O errors"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "MGMT_TX 1",
- "MGMT_TX 1q",
- "MGMT_RX_PROCESS freq=2412",
- "EAPOL_RX foo",
- "EAPOL_RX 00:11:22:33:44:55 1",
- "EAPOL_RX 00:11:22:33:44:55 1q" ]
+ tests = ["MGMT_TX 1",
+ "MGMT_TX 1q",
+ "MGMT_RX_PROCESS freq=2412",
+ "EAPOL_RX foo",
+ "EAPOL_RX 00:11:22:33:44:55 1",
+ "EAPOL_RX 00:11:22:33:44:55 1q"]
for t in tests:
if "FAIL" not in hapd.request(t):
raise Exception("Invalid command accepted: " + t)
raise Exception("EAPOL_RX accepted during OOM")
hapd.set("ext_mgmt_frame_handling", "1")
- tests = [ "MGMT_RX_PROCESS freq=2412",
- "MGMT_RX_PROCESS freq=2412 ssi_signal=0",
- "MGMT_RX_PROCESS freq=2412 frame=1",
- "MGMT_RX_PROCESS freq=2412 frame=1q" ]
+ tests = ["MGMT_RX_PROCESS freq=2412",
+ "MGMT_RX_PROCESS freq=2412 ssi_signal=0",
+ "MGMT_RX_PROCESS freq=2412 frame=1",
+ "MGMT_RX_PROCESS freq=2412 frame=1q"]
for t in tests:
if "FAIL" not in hapd.request(t):
raise Exception("Invalid command accepted: " + t)
raise Exception("Failed to enable l2_test")
if "OK" not in hapd.request("DATA_TEST_CONFIG 1"):
raise Exception("Failed to enable l2_test(2)")
- tests = [ "DATA_TEST_TX foo",
- "DATA_TEST_TX 00:11:22:33:44:55 foo",
- "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 -1",
- "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 256" ]
+ tests = ["DATA_TEST_TX foo",
+ "DATA_TEST_TX 00:11:22:33:44:55 foo",
+ "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 -1",
+ "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 256"]
for t in tests:
if "FAIL" not in hapd.request(t):
raise Exception("Invalid command accepted: " + t)
if "OK" not in hapd.request("DATA_TEST_CONFIG 0"):
raise Exception("Failed to disable l2_test")
- tests = [ "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 0",
- "DATA_TEST_FRAME ifname=foo",
- "DATA_TEST_FRAME 1",
- "DATA_TEST_FRAME 11",
- "DATA_TEST_FRAME 112233445566778899aabbccddeefq" ]
+ tests = ["DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 0",
+ "DATA_TEST_FRAME ifname=foo",
+ "DATA_TEST_FRAME 1",
+ "DATA_TEST_FRAME 11",
+ "DATA_TEST_FRAME 112233445566778899aabbccddeefq"]
for t in tests:
if "FAIL" not in hapd.request(t):
raise Exception("Invalid command accepted: " + t)
def test_hapd_ctrl_vendor_errors(dev, apdev):
"""hostapd and VENDOR errors"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "q",
- "10q",
- "10 10q",
- "10 10 123q",
- "10 10" ]
+ tests = ["q",
+ "10q",
+ "10 10q",
+ "10 10 123q",
+ "10 10"]
for t in tests:
if "FAIL" not in hapd.request("VENDOR " + t):
raise Exception("Invalid VENDOR command accepted: " + t)
def test_hapd_ctrl_eapol_reauth_errors(dev, apdev):
"""hostapd and EAPOL_REAUTH errors"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "foo",
- "11:22:33:44:55:66" ]
+ tests = ["foo",
+ "11:22:33:44:55:66"]
for t in tests:
if "FAIL" not in hapd.request("EAPOL_REAUTH " + t):
raise Exception("Invalid EAPOL_REAUTH command accepted: " + t)
def test_hapd_ctrl_eapol_relog(dev, apdev):
"""hostapd and RELOG"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "OK" not in hapd.request("RELOG"):
raise Exception("RELOG failed")
def test_hapd_ctrl_poll_sta_errors(dev, apdev):
"""hostapd and POLL_STA errors"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
- tests = [ "foo",
- "11:22:33:44:55:66" ]
+ tests = ["foo",
+ "11:22:33:44:55:66"]
for t in tests:
if "FAIL" not in hapd.request("POLL_STA " + t):
raise Exception("Invalid POLL_STA command accepted: " + t)
def test_hapd_ctrl_update_beacon(dev, apdev):
"""hostapd and UPDATE_BEACON"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "OK" not in hapd.request("UPDATE_BEACON"):
raise Exception("UPDATE_BEACON failed")
def test_hapd_ctrl_test_fail(dev, apdev):
"""hostapd and TEST_ALLOC_FAIL/TEST_FAIL"""
ssid = "hapd-ctrl"
- params = { "ssid": ssid }
+ params = {"ssid": ssid}
hapd = hostapd.add_ap(apdev[0], params)
if "OK" not in hapd.request("TEST_ALLOC_FAIL 1:unknownfunc"):
raise HwsimSkip("TEST_ALLOC_FAIL not supported")
from utils import HwsimSkip
def hostapd_oom_loop(apdev, params, start_func="main"):
- hapd = hostapd.add_ap(apdev[0], { "ssid": "ctrl" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "ctrl"})
count = 0
for i in range(1, 1000):
@remote_compatible
def test_hostapd_oom_open(dev, apdev):
"""hostapd failing to setup open mode due to OOM"""
- params = { "ssid": "open" }
+ params = {"ssid": "open"}
hostapd_oom_loop(apdev, params)
def test_hostapd_oom_wpa2_psk(dev, apdev):
params['wpa_psk_file'] = 'hostapd.wpa_psk'
hostapd_oom_loop(apdev, params)
- tests = [ "hostapd_config_read_wpa_psk", "hostapd_derive_psk" ]
+ tests = ["hostapd_config_read_wpa_psk", "hostapd_derive_psk"]
for t in tests:
- hapd = hostapd.add_ap(apdev[0], { "ssid": "ctrl" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "ctrl"})
hapd.request("TEST_ALLOC_FAIL 1:%s" % t)
try:
hostapd.add_ap(apdev[1], params, timeout=2.5)
dev[0].hs20_enable()
- id = dev[0].add_cred_values({ 'realm': "example.com",
- 'username': "hs20-test",
- 'password': "password",
- 'ca_cert': "auth_serv/ca.pem",
- 'domain': "example.com",
- 'update_identifier': "1234" })
+ id = dev[0].add_cred_values({'realm': "example.com",
+ 'username': "hs20-test",
+ 'password': "password",
+ 'ca_cert': "auth_serv/ca.pem",
+ 'domain': "example.com",
+ 'update_identifier': "1234"})
interworking_select(dev[0], bssid, "home", freq="2412")
interworking_connect(dev[0], bssid, "TTLS")
raise Exception("DATA_TEST_FRAME failed")
try:
logger.info(s.recvfrom(1024))
- logger.info("procfile=" + procfile + " val=" + open(procfile,'r').read().rstrip())
+ logger.info("procfile=" + procfile + " val=" + open(procfile, 'r').read().rstrip())
raise Exception("erroneously received frame!")
except socket.timeout:
# this is the expected behaviour
raise Exception("DATA_TEST_FRAME failed")
try:
logger.info(s.recvfrom(1024))
- logger.info("procfile=" + procfile + " val=" + open(procfile,'r').read().rstrip())
+ logger.info("procfile=" + procfile + " val=" + open(procfile, 'r').read().rstrip())
raise Exception("erroneously received frame!")
except socket.timeout:
# this is the expected behaviour
bssid = apdev[0]['bssid']
params = hs20_ap_params()
params['hessid'] = bssid
- params['nai_realm'] = [ "0,w1.fi,13[5:6],21[2:4][5:7]",
- "0,another.example.com" ]
+ params['nai_realm'] = ["0,w1.fi,13[5:6],21[2:4][5:7]",
+ "0,another.example.com"]
params['domain_name'] = "w1.fi"
hapd = hostapd.add_ap(apdev[0], params)
def test_ibss_rsn(dev):
"""IBSS RSN"""
- ssid="ibss-rsn"
+ ssid = "ibss-rsn"
logger.info("Start IBSS on the first STA")
id = add_ibss_rsn(dev[0], ssid)
def test_ibss_rsn_group_rekey(dev):
"""IBSS RSN group rekeying"""
- ssid="ibss-rsn"
+ ssid = "ibss-rsn"
logger.info("Start IBSS on the first STA")
id = add_ibss_rsn(dev[0], ssid, group_rekey=4, scan_freq=2412)
def test_ibss_wpa_none(dev):
"""IBSS WPA-None"""
- ssid="ibss-wpa-none"
+ ssid = "ibss-wpa-none"
logger.info("Start IBSS on the first STA")
id = add_ibss_wpa_none(dev[0], ssid)
def test_ibss_wpa_none_ccmp(dev):
"""IBSS WPA-None/CCMP"""
- ssid="ibss-wpa-none"
+ ssid = "ibss-wpa-none"
logger.info("Start IBSS on the first STA")
id = add_ibss_wpa_none(dev[0], ssid)
def test_ibss_open(dev):
"""IBSS open (no security)"""
- ssid="ibss"
+ ssid = "ibss"
id = add_ibss(dev[0], ssid, key_mgmt="NONE", beacon_int="150")
connect_ibss_cmd(dev[0], id)
bssid0 = wait_ibss_connection(dev[0])
def test_ibss_open_fixed_bssid(dev):
"""IBSS open (no security) and fixed BSSID"""
- ssid="ibss"
- bssid="02:11:22:33:44:55"
+ ssid = "ibss"
+ bssid = "02:11:22:33:44:55"
try:
dev[0].request("AP_SCAN 2")
add_ibss(dev[0], ssid, key_mgmt="NONE", bssid=bssid, beacon_int="150")
subprocess.check_call(['iw', 'dev', dev[0].ifname, 'ibss', 'join',
'ibss-test', '2412', 'HT20', 'fixed-freq',
'02:22:33:44:55:66'])
- ssid="ibss"
+ ssid = "ibss"
try:
dev[0].request("AP_SCAN 2")
id = add_ibss(dev[0], ssid, key_mgmt="NONE", beacon_int="150",
def test_ibss_rsn_tkip(dev):
"""IBSS RSN with TKIP as the cipher"""
- ssid="ibss-rsn-tkip"
+ ssid = "ibss-rsn-tkip"
id = add_ibss_rsn_tkip(dev[0], ssid)
connect_ibss_cmd(dev[0], id)
def test_ibss_wep(dev):
"""IBSS with WEP"""
- ssid="ibss-wep"
+ ssid = "ibss-wep"
id = add_ibss(dev[0], ssid, key_mgmt="NONE", wep_key0='"hello"')
connect_ibss_cmd(dev[0], id)
break
dev[i].dump_monitor()
- ssid="ibss"
+ ssid = "ibss"
id = add_ibss(dev[0], ssid, key_mgmt="NONE", beacon_int="150", freq=5180)
connect_ibss_cmd(dev[0], id, freq=5180)
bssid0 = wait_ibss_connection(dev[0])
break
dev[i].dump_monitor()
- ssid="ibss"
+ ssid = "ibss"
id = add_ibss(dev[0], ssid, key_mgmt="NONE", freq=5180, chwidth=3)
connect_ibss_cmd(dev[0], id, freq=5180)
bssid0 = wait_ibss_connection(dev[0])
def test_ibss_rsn_oom(dev):
"""IBSS RSN OOM during wpa_init"""
with alloc_fail(dev[0], 1, "wpa_init"):
- ssid="ibss-rsn"
+ ssid = "ibss-rsn"
id = add_ibss_rsn(dev[0], ssid, scan_freq=2412)
connect_ibss_cmd(dev[0], id)
bssid0 = wait_ibss_connection(dev[0])
dev[0].dump_monitor()
with alloc_fail(dev[0], 1, "=ibss_rsn_init"):
- ssid="ibss-rsn"
+ ssid = "ibss-rsn"
id = add_ibss_rsn(dev[0], ssid, scan_freq=2412)
connect_ibss_cmd(dev[0], id)
bssid0 = wait_ibss_connection(dev[0])
def test_ibss_rsn_eapol_trigger(dev):
"""IBSS RSN and EAPOL trigger for a new peer"""
- ssid="ibss-rsn"
+ ssid = "ibss-rsn"
id = add_ibss_rsn(dev[0], ssid, scan_freq=2412)
connect_ibss_cmd(dev[0], id)
start = dev[0].get_mib()
- tests = [ "11",
- "11223344",
- "020000050a93000501",
- "020300050a93000501",
- "0203002c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "0203002c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "0203002c0100050000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "02aa00050a93000501" ]
+ tests = ["11",
+ "11223344",
+ "020000050a93000501",
+ "020300050a93000501",
+ "0203002c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0203002c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0203002c0100050000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "02aa00050a93000501"]
for frame in tests:
res = dev[0].request("EAPOL_RX " + bssid + " " + frame)
if "OK" not in res:
logger.info("MIB before test frames: " + str(start))
logger.info("MIB after test frames: " + str(stop))
- vals = [ 'dot1xSuppInvalidEapolFramesRx',
- 'dot1xSuppEapLengthErrorFramesRx' ]
+ vals = ['dot1xSuppInvalidEapolFramesRx',
+ 'dot1xSuppEapLengthErrorFramesRx']
for val in vals:
if int(stop[val]) <= int(start[val]):
raise Exception(val + " did not increase")
time.sleep(0.25)
if held:
raise Exception("PAE state HELD not left")
- ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
- "CTRL-EVENT-DISCONNECTED" ], timeout=10)
+ ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
+ "CTRL-EVENT-DISCONNECTED"], timeout=10)
if ev is None:
raise Exception("Connection timed out")
if "CTRL-EVENT-DISCONNECTED" in ev:
scan_freq="2412")
addr0 = dev[0].own_addr()
- tests = [ "EAPOL_SET 1",
- "EAPOL_SET %sfoo bar" % addr0,
- "EAPOL_SET %s foo" % addr0,
- "EAPOL_SET %s foo bar" % addr0,
- "EAPOL_SET %s AdminControlledDirections bar" % addr0,
- "EAPOL_SET %s AdminControlledPortControl bar" % addr0,
- "EAPOL_SET %s reAuthEnabled bar" % addr0,
- "EAPOL_SET %s KeyTransmissionEnabled bar" % addr0,
- "EAPOL_SET 11:22:33:44:55:66 AdminControlledDirections Both" ]
+ tests = ["EAPOL_SET 1",
+ "EAPOL_SET %sfoo bar" % addr0,
+ "EAPOL_SET %s foo" % addr0,
+ "EAPOL_SET %s foo bar" % addr0,
+ "EAPOL_SET %s AdminControlledDirections bar" % addr0,
+ "EAPOL_SET %s AdminControlledPortControl bar" % addr0,
+ "EAPOL_SET %s reAuthEnabled bar" % addr0,
+ "EAPOL_SET %s KeyTransmissionEnabled bar" % addr0,
+ "EAPOL_SET 11:22:33:44:55:66 AdminControlledDirections Both"]
for t in tests:
if "FAIL" not in hapd.request(t):
raise Exception("Invalid EAPOL_SET command accepted: " + t)
- tests = [ ("AdminControlledDirections", "adminControlledDirections", "In"),
- ("AdminControlledDirections", "adminControlledDirections",
- "Both"),
- ("quietPeriod", "quietPeriod", "13"),
- ("serverTimeout", "serverTimeout", "7"),
- ("reAuthPeriod", "reAuthPeriod", "1234"),
- ("reAuthEnabled", "reAuthEnabled", "FALSE"),
- ("reAuthEnabled", "reAuthEnabled", "TRUE"),
- ("KeyTransmissionEnabled", "keyTxEnabled", "TRUE"),
- ("KeyTransmissionEnabled", "keyTxEnabled", "FALSE"),
- ("AdminControlledPortControl", "portControl", "ForceAuthorized"),
- ("AdminControlledPortControl", "portControl",
- "ForceUnauthorized"),
- ("AdminControlledPortControl", "portControl", "Auto") ]
- for param,mibparam,val in tests:
+ tests = [("AdminControlledDirections", "adminControlledDirections", "In"),
+ ("AdminControlledDirections", "adminControlledDirections",
+ "Both"),
+ ("quietPeriod", "quietPeriod", "13"),
+ ("serverTimeout", "serverTimeout", "7"),
+ ("reAuthPeriod", "reAuthPeriod", "1234"),
+ ("reAuthEnabled", "reAuthEnabled", "FALSE"),
+ ("reAuthEnabled", "reAuthEnabled", "TRUE"),
+ ("KeyTransmissionEnabled", "keyTxEnabled", "TRUE"),
+ ("KeyTransmissionEnabled", "keyTxEnabled", "FALSE"),
+ ("AdminControlledPortControl", "portControl", "ForceAuthorized"),
+ ("AdminControlledPortControl", "portControl",
+ "ForceUnauthorized"),
+ ("AdminControlledPortControl", "portControl", "Auto")]
+ for param, mibparam, val in tests:
if "OK" not in hapd.request("EAPOL_SET %s %s %s" % (addr0, param, val)):
raise Exception("Failed to set %s %s" % (param, val))
mib = hapd.get_sta(addr0, info="eapol")
def test_kernel_unknown_action_frame_rejection_sta(dev, apdev, params):
"""mac80211 and unknown Action frame rejection in STA mode"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unknown-action" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unknown-action"})
dev[0].connect("unknown-action", key_mgmt="NONE", scan_freq="2412")
bssid = hapd.own_addr()
addr = dev[0].own_addr()
"wlan.sa == %s && wlan.fc.type_subtype == 0x0d" % addr,
display=["wlan_mgt.fixed.category_code"])
res = out.splitlines()
- categ = [ int(x) for x in res ]
+ categ = [int(x) for x in res]
if 0xf2 in categ or 0xf3 in categ:
raise Exception("Unexpected Action frame rejection: " + str(categ))
dev.select_network(id)
def log_ip_macsec():
- cmd = subprocess.Popen([ "ip", "macsec", "show" ],
+ cmd = subprocess.Popen(["ip", "macsec", "show"],
stdout=subprocess.PIPE,
stderr=open('/dev/null', 'w'))
res = cmd.stdout.read().decode()
logger.info("ip macsec:\n" + res)
def log_ip_link():
- cmd = subprocess.Popen([ "ip", "link", "show" ],
+ cmd = subprocess.Popen(["ip", "link", "show"],
stdout=subprocess.PIPE)
res = cmd.stdout.read().decode()
cmd.stdout.close()
def add_veth():
try:
- subprocess.check_call([ "ip", "link", "add", "veth0", "type", "veth",
- "peer", "name", "veth1" ])
+ subprocess.check_call(["ip", "link", "add", "veth0", "type", "veth",
+ "peer", "name", "veth1"])
except subprocess.CalledProcessError:
raise HwsimSkip("veth not supported (kernel CONFIG_VETH)")
cap_macsec1 = os.path.join(params['logdir'], prefix + ".macsec1.pcap")
for i in range(2):
- subprocess.check_call([ "ip", "link", "set", "dev", "veth%d" % i,
- "up" ])
+ subprocess.check_call(["ip", "link", "set", "dev", "veth%d" % i, "up"])
cmd = {}
cmd[0] = subprocess.Popen(['tcpdump', '-p', '-U', '-i', 'veth0',
try:
for i in range(count):
- subprocess.check_call([ "ip", "link", "add", "veth%d" % i,
- "type", "veth",
- "peer", "name", "vethbr%d" % i ])
+ subprocess.check_call(["ip", "link", "add", "veth%d" % i,
+ "type", "veth",
+ "peer", "name", "vethbr%d" % i])
subprocess.check_call(["ip", "link", "set", "vethbr%d" % i, "up"])
- subprocess.check_call([ "brctl", "addif", "brveth",
- "vethbr%d" % i ])
+ subprocess.check_call(["brctl", "addif", "brveth",
+ "vethbr%d" % i])
except subprocess.CalledProcessError:
raise HwsimSkip("veth not supported (kernel CONFIG_VETH)")
stderr=open('/dev/null', 'w'))
def log_ip_macsec_ns():
- cmd = subprocess.Popen([ "ip", "macsec", "show" ],
+ cmd = subprocess.Popen(["ip", "macsec", "show"],
stdout=subprocess.PIPE,
stderr=open('/dev/null', 'w'))
res = cmd.stdout.read().decode()
cmd.stdout.close()
logger.info("ip macsec show:\n" + res)
- cmd = subprocess.Popen([ "ip", "netns", "exec", "ns0",
- "ip", "macsec", "show" ],
+ cmd = subprocess.Popen(["ip", "netns", "exec", "ns0",
+ "ip", "macsec", "show"],
stdout=subprocess.PIPE,
stderr=open('/dev/null', 'w'))
res = cmd.stdout.read().decode()
cmd.stdout.close()
logger.info("ip macsec show (ns0):\n" + res)
- cmd = subprocess.Popen([ "ip", "netns", "exec", "ns1",
- "ip", "macsec", "show" ],
+ cmd = subprocess.Popen(["ip", "netns", "exec", "ns1",
+ "ip", "macsec", "show"],
stdout=subprocess.PIPE,
stderr=open('/dev/null', 'w'))
res = cmd.stdout.read().decode()
logger.info("ip macsec show (ns1):\n" + res)
def log_ip_link_ns():
- cmd = subprocess.Popen([ "ip", "link", "show" ],
+ cmd = subprocess.Popen(["ip", "link", "show"],
stdout=subprocess.PIPE)
res = cmd.stdout.read().decode()
cmd.stdout.close()
logger.info("ip link:\n" + res)
- cmd = subprocess.Popen([ "ip", "netns", "exec", "ns0",
- "ip", "link", "show" ],
+ cmd = subprocess.Popen(["ip", "netns", "exec", "ns0",
+ "ip", "link", "show"],
stdout=subprocess.PIPE,
stderr=open('/dev/null', 'w'))
res = cmd.stdout.read().decode()
cmd.stdout.close()
logger.info("ip link show (ns0):\n" + res)
- cmd = subprocess.Popen([ "ip", "netns", "exec", "ns1",
- "ip", "link", "show" ],
+ cmd = subprocess.Popen(["ip", "netns", "exec", "ns1",
+ "ip", "link", "show"],
stdout=subprocess.PIPE,
stderr=open('/dev/null', 'w'))
res = cmd.stdout.read().decode()
def run_macsec_psk_ns(dev, apdev, params):
try:
- subprocess.check_call([ "ip", "link", "add", "veth0", "type", "veth",
- "peer", "name", "veth1" ])
+ subprocess.check_call(["ip", "link", "add", "veth0", "type", "veth",
+ "peer", "name", "veth1"])
except subprocess.CalledProcessError:
raise HwsimSkip("veth not supported (kernel CONFIG_VETH)")
for i in range(2):
try:
- subprocess.check_call([ "ip", "netns", "add", "ns%d" % i ])
+ subprocess.check_call(["ip", "netns", "add", "ns%d" % i])
except subprocess.CalledProcessError:
raise HwsimSkip("network namespace not supported (kernel CONFIG_NAMESPACES, CONFIG_NET_NS)")
- subprocess.check_call([ "ip", "link", "set", "veth%d" % i,
- "netns", "ns%d" %i ])
- subprocess.check_call([ "ip", "netns", "exec", "ns%d" % i,
- "ip", "link", "set", "dev", "veth%d" % i,
- "up" ])
+ subprocess.check_call(["ip", "link", "set", "veth%d" % i,
+ "netns", "ns%d" %i])
+ subprocess.check_call(["ip", "netns", "exec", "ns%d" % i,
+ "ip", "link", "set", "dev", "veth%d" % i,
+ "up"])
cmd = {}
cmd[0] = subprocess.Popen(['ip', 'netns', 'exec', 'ns0',
if not os.path.exists(prg):
prg = '../../wpa_supplicant/wpa_supplicant'
- arg = [ "ip", "netns", "exec", "ns0",
- prg, '-BdddtKW', '-P', pidfile + '0', '-f', logfile0,
- '-g', '/tmp/wpas-veth0',
- '-Dmacsec_linux', '-c', conffile + '0', '-i', "veth0" ]
+ arg = ["ip", "netns", "exec", "ns0",
+ prg, '-BdddtKW', '-P', pidfile + '0', '-f', logfile0,
+ '-g', '/tmp/wpas-veth0',
+ '-Dmacsec_linux', '-c', conffile + '0', '-i', "veth0"]
logger.info("Start wpa_supplicant: " + str(arg))
try:
subprocess.check_call(arg)
logger.info("Use alternative wpa_supplicant binary for one of the macsec devices")
prg = "wpa_supplicant-macsec2"
- arg = [ "ip", "netns", "exec", "ns1",
- prg, '-BdddtKW', '-P', pidfile + '1', '-f', logfile1,
- '-g', '/tmp/wpas-veth1',
- '-Dmacsec_linux', '-c', conffile + '1', '-i', "veth1" ]
+ arg = ["ip", "netns", "exec", "ns1",
+ prg, '-BdddtKW', '-P', pidfile + '1', '-f', logfile1,
+ '-g', '/tmp/wpas-veth1',
+ '-Dmacsec_linux', '-c', conffile + '1', '-i', "veth1"]
logger.info("Start wpa_supplicant: " + str(arg))
subprocess.check_call(arg)
freq_list=None, disable_ht=False,
disable_vht=False):
if inc5:
- params = { 'ssid': "test-wnm-mbo",
- 'mbo': '1',
- "country_code": "US",
- 'ieee80211d': '1',
- "ieee80211n": "1",
- "hw_mode": "a",
- "channel": "36" }
+ params = {'ssid': "test-wnm-mbo",
+ 'mbo': '1',
+ "country_code": "US",
+ 'ieee80211d': '1',
+ "ieee80211n": "1",
+ "hw_mode": "a",
+ "channel": "36"}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
else:
hapd = None
- params = { 'ssid': "test-wnm-mbo-2",
- 'mbo': '1',
- "country_code": "US",
- 'ieee80211d': '1',
- "ieee80211n": "1",
- "hw_mode": "g",
- "channel": "1" }
+ params = {'ssid': "test-wnm-mbo-2",
+ 'mbo': '1',
+ "country_code": "US",
+ 'ieee80211d': '1',
+ "ieee80211n": "1",
+ "hw_mode": "g",
+ "channel": "1"}
hapd2 = hostapd.add_ap(apdev[1], params, no_enable=True)
try:
def test_mbo_assoc_disallow(dev, apdev, params):
"""MBO and association disallowed"""
- hapd1 = hostapd.add_ap(apdev[0], { "ssid": "MBO", "mbo": "1" })
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "MBO", "mbo": "1" })
+ hapd1 = hostapd.add_ap(apdev[0], {"ssid": "MBO", "mbo": "1"})
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "MBO", "mbo": "1"})
logger.debug("Set mbo_assoc_disallow with invalid value")
if "FAIL" not in hapd1.request("SET mbo_assoc_disallow 2"):
dev[0].request("SCAN_INTERVAL 5")
def _test_mbo_assoc_disallow_ignore(dev, apdev):
- hapd1 = hostapd.add_ap(apdev[0], { "ssid": "MBO", "mbo": "1" })
+ hapd1 = hostapd.add_ap(apdev[0], {"ssid": "MBO", "mbo": "1"})
if "OK" not in hapd1.request("SET mbo_assoc_disallow 1"):
raise Exception("Failed to set mbo_assoc_disallow for AP1")
def test_mbo_cell_capa_update(dev, apdev):
"""MBO cellular data capability update"""
ssid = "test-wnm-mbo"
- params = { 'ssid': ssid, 'mbo': '1' }
+ params = {'ssid': ssid, 'mbo': '1'}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
if "OK" not in dev[0].request("SET mbo_cell_capa 1"):
def test_mbo_wnm_token_wrap(dev, apdev):
"""MBO WNM token wrap around"""
ssid = "test-wnm-mbo"
- params = { 'ssid': ssid, 'mbo': '1' }
+ params = {'ssid': ssid, 'mbo': '1'}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
def test_mbo_non_pref_chan(dev, apdev):
"""MBO non-preferred channel list"""
ssid = "test-wnm-mbo"
- params = { 'ssid': ssid, 'mbo': '1' }
+ params = {'ssid': ssid, 'mbo': '1'}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
if "FAIL" not in dev[0].request("SET non_pref_chan 81:7:200:99"):
def test_mbo_sta_supp_op_classes(dev, apdev):
"""MBO STA supported operating classes"""
ssid = "test-wnm-mbo"
- params = { 'ssid': ssid, 'mbo': '1' }
+ params = {'ssid': ssid, 'mbo': '1'}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
def test_mbo_failures(dev, apdev):
"""MBO failure cases"""
ssid = "test-wnm-mbo"
- params = { 'ssid': ssid, 'mbo': '1' }
+ params = {'ssid': ssid, 'mbo': '1'}
hapd = hostapd.add_ap(apdev[0], params)
with alloc_fail(dev[0], 1, "wpas_mbo_ie"):
hdr = "d0003a01" + addr.replace(':', '') + bssid.replace(':', '') + bssid.replace(':', '') + "3000"
btm_hdr = "0a070100030001"
- tests = [ ("Truncated attribute in MBO IE", "dd06506f9a160101"),
- ("Unexpected cell data capa attribute length in MBO IE",
- "dd09506f9a160501030500"),
- ("Unexpected transition reason attribute length in MBO IE",
- "dd06506f9a160600"),
- ("Unexpected assoc retry delay attribute length in MBO IE",
- "dd0c506f9a160100080200000800"),
- ("Unknown attribute id 255 in MBO IE",
- "dd06506f9a16ff00") ]
+ tests = [("Truncated attribute in MBO IE", "dd06506f9a160101"),
+ ("Unexpected cell data capa attribute length in MBO IE",
+ "dd09506f9a160501030500"),
+ ("Unexpected transition reason attribute length in MBO IE",
+ "dd06506f9a160600"),
+ ("Unexpected assoc retry delay attribute length in MBO IE",
+ "dd0c506f9a160100080200000800"),
+ ("Unknown attribute id 255 in MBO IE",
+ "dd06506f9a16ff00")]
for test, mbo_ie in tests:
logger.info(test)
def test_mbo_without_pmf(dev, apdev):
"""MBO and WPA2 without PMF"""
ssid = "test-wnm-mbo"
- params = { 'ssid': ssid, 'mbo': '1', "wpa": '2',
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "wpa_passphrase": "12345678" }
+ params = {'ssid': ssid, 'mbo': '1', "wpa": '2',
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "wpa_passphrase": "12345678"}
try:
# "MBO: PMF needs to be enabled whenever using WPA2 with MBO"
hostapd.add_ap(apdev[0], params)
def test_mbo_anqp(dev, apdev):
"""MBO ANQP"""
- params = { 'ssid': "test-wnm-mbo",
- 'mbo': '1',
- 'interworking': '1',
- 'mbo_cell_data_conn_pref': '1' }
+ params = {'ssid': "test-wnm-mbo",
+ 'mbo': '1',
+ 'interworking': '1',
+ 'mbo_cell_data_conn_pref': '1'}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
def test_monitor_iface_multi_bss(dev, apdev):
"""AP mode mmonitor interface with hostapd multi-BSS setup"""
- params = { "ssid": "monitor-iface", "driver_params": "use_monitor=1" }
+ params = {"ssid": "monitor-iface", "driver_params": "use_monitor=1"}
hapd = hostapd.add_ap(apdev[0], params)
hostapd.add_bss(apdev[0], apdev[0]['ifname'] + '-2', 'bss-2.conf')
dev[0].connect("monitor-iface", key_mgmt="NONE", scan_freq="2412")
run_multi_ap_association(dev, apdev, 1)
dev[1].connect("multi-ap", psk="12345678", scan_freq="2412",
wait_connect=False)
- ev = dev[1].wait_event([ "CTRL-EVENT-DISCONNECTED",
- "CTRL-EVENT-CONNECTED",
- "CTRL-EVENT-ASSOC-REJECT" ],
+ ev = dev[1].wait_event(["CTRL-EVENT-DISCONNECTED",
+ "CTRL-EVENT-CONNECTED",
+ "CTRL-EVENT-ASSOC-REJECT"],
timeout=5)
dev[1].request("DISCONNECT")
if ev is None:
def test_multi_ap_disabled_on_ap(dev, apdev):
"""Multi-AP association attempt when disabled on AP"""
run_multi_ap_association(dev, apdev, 0, wait_connect=False)
- ev = dev[0].wait_event([ "CTRL-EVENT-DISCONNECTED",
- "CTRL-EVENT-CONNECTED" ],
+ ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED",
+ "CTRL-EVENT-CONNECTED"],
timeout=5)
dev[0].request("DISCONNECT")
if ev is None:
def test_multi_ap_fronthaul_on_ap(dev, apdev):
"""Multi-AP association attempt when only fronthaul BSS on AP"""
run_multi_ap_association(dev, apdev, 2, wait_connect=False)
- ev = dev[0].wait_event([ "CTRL-EVENT-DISCONNECTED",
- "CTRL-EVENT-CONNECTED",
- "CTRL-EVENT-ASSOC-REJECT" ],
+ ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED",
+ "CTRL-EVENT-CONNECTED",
+ "CTRL-EVENT-ASSOC-REJECT"],
timeout=5)
dev[0].request("DISCONNECT")
if ev is None:
if multi_ap_bssid is None:
multi_ap_bssid = apdev[0]['bssid']
- params.update({ "wps_state": "2", "eap_server": "1" })
+ params.update({"wps_state": "2", "eap_server": "1"})
# WPS with multi-ap station dev[0]
hapd = hostapd.add_ap(apdev[0], params)
ssid = "multi-ap-wps"
passphrase = "12345678"
params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
- params.update({ "multi_ap": "3",
- "multi_ap_backhaul_ssid": '"%s"' % ssid,
- "multi_ap_backhaul_wpa_passphrase": passphrase })
+ params.update({"multi_ap": "3",
+ "multi_ap_backhaul_ssid": '"%s"' % ssid,
+ "multi_ap_backhaul_wpa_passphrase": passphrase})
run_multi_ap_wps(dev, apdev, params)
def test_multi_ap_wps_shared_psk(dev, apdev):
ssid = "multi-ap-wps"
psk = "1234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
params = hostapd.wpa2_params(ssid=ssid)
- params.update({ "wpa_psk": psk,
- "multi_ap": "3",
- "multi_ap_backhaul_ssid": '"%s"' % ssid,
- "multi_ap_backhaul_wpa_psk": psk })
+ params.update({"wpa_psk": psk,
+ "multi_ap": "3",
+ "multi_ap_backhaul_ssid": '"%s"' % ssid,
+ "multi_ap_backhaul_wpa_psk": psk})
run_multi_ap_wps(dev, apdev, params)
def test_multi_ap_wps_split(dev, apdev):
backhaul_passphrase = "87654321"
params = hostapd.wpa2_params(ssid="multi-ap-fronthaul-wps",
passphrase="12345678")
- params.update({ "multi_ap": "2",
- "multi_ap_backhaul_ssid": '"%s"' % backhaul_ssid,
- "multi_ap_backhaul_wpa_passphrase": backhaul_passphrase })
+ params.update({"multi_ap": "2",
+ "multi_ap_backhaul_ssid": '"%s"' % backhaul_ssid,
+ "multi_ap_backhaul_wpa_passphrase": backhaul_passphrase})
params_backhaul = hostapd.wpa2_params(ssid=backhaul_ssid,
passphrase=backhaul_passphrase)
- params_backhaul.update({ "multi_ap": "1" })
+ params_backhaul.update({"multi_ap": "1"})
hapd_backhaul = hostapd.add_ap(apdev[1], params_backhaul)
run_multi_ap_wps(dev, apdev, params, hapd_backhaul.own_addr())
backhaul_psk = "1234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
params = hostapd.wpa2_params(ssid="multi-ap-fronthaul-wps",
passphrase="12345678")
- params.update({ "multi_ap": "2",
- "multi_ap_backhaul_ssid": '"%s"' % backhaul_ssid,
- "multi_ap_backhaul_wpa_psk": backhaul_psk })
+ params.update({"multi_ap": "2",
+ "multi_ap_backhaul_ssid": '"%s"' % backhaul_ssid,
+ "multi_ap_backhaul_wpa_psk": backhaul_psk})
params_backhaul = hostapd.wpa2_params(ssid=backhaul_ssid)
- params_backhaul.update({ "multi_ap": "1", "wpa_psk": backhaul_psk })
+ params_backhaul.update({"multi_ap": "1", "wpa_psk": backhaul_psk})
hapd_backhaul = hostapd.add_ap(apdev[1], params_backhaul)
run_multi_ap_wps(dev, apdev, params, hapd_backhaul.own_addr())
backhaul_passphrase = "87654321"
params = hostapd.wpa_mixed_params(ssid="multi-ap-fronthaul-wps",
passphrase="12345678")
- params.update({ "multi_ap": "2",
- "multi_ap_backhaul_ssid": '"%s"' % backhaul_ssid,
- "multi_ap_backhaul_wpa_passphrase": backhaul_passphrase })
+ params.update({"multi_ap": "2",
+ "multi_ap_backhaul_ssid": '"%s"' % backhaul_ssid,
+ "multi_ap_backhaul_wpa_passphrase": backhaul_passphrase})
params_backhaul = hostapd.wpa2_params(ssid=backhaul_ssid,
passphrase=backhaul_passphrase)
- params_backhaul.update({ "multi_ap": "1" })
+ params_backhaul.update({"multi_ap": "1"})
hapd_backhaul = hostapd.add_ap(apdev[1], params_backhaul)
run_multi_ap_wps(dev, apdev, params, hapd_backhaul.own_addr())
"""WPS on split fronthaul and backhaul AP with open fronthaul"""
backhaul_ssid = "multi-ap-backhaul-wps"
backhaul_passphrase = "87654321"
- params = { "ssid": "multi-ap-wps-fronthaul", "multi_ap": "2",
- "multi_ap_backhaul_ssid": '"%s"' % backhaul_ssid,
- "multi_ap_backhaul_wpa_passphrase": backhaul_passphrase }
+ params = {"ssid": "multi-ap-wps-fronthaul", "multi_ap": "2",
+ "multi_ap_backhaul_ssid": '"%s"' % backhaul_ssid,
+ "multi_ap_backhaul_wpa_passphrase": backhaul_passphrase}
params_backhaul = hostapd.wpa2_params(ssid=backhaul_ssid,
passphrase=backhaul_passphrase)
- params_backhaul.update({ "multi_ap": "1" })
+ params_backhaul.update({"multi_ap": "1"})
hapd_backhaul = hostapd.add_ap(apdev[1], params_backhaul)
run_multi_ap_wps(dev, apdev, params, hapd_backhaul.own_addr())
"""Multi-AP WPS on non-WPS AP fails"""
params = hostapd.wpa2_params(ssid="non-multi-ap-wps", passphrase="12345678")
- params.update({ "wps_state": "2", "eap_server": "1" })
+ params.update({"wps_state": "2", "eap_server": "1"})
hapd = hostapd.add_ap(apdev[0], params)
hapd.request("WPS_PBC")
# to change the timeout from 2 minutes. Instead of waiting for the timeout,
# just check that WPS doesn't finish within reasonable time.
for i in range(2):
- ev = dev[0].wait_event([ "WPS-SUCCESS", "WPS-FAIL",
- "CTRL-EVENT-DISCONNECTED"], timeout=10)
+ ev = dev[0].wait_event(["WPS-SUCCESS", "WPS-FAIL",
+ "CTRL-EVENT-DISCONNECTED"], timeout=10)
if ev and "WPS-" in ev:
raise Exception("WPS operation completed: " + ev)
dev[0].request("WPS_CANCEL")
hwsim_utils.test_connectivity(sta, hapd)
def ap_wps_params(ssid):
- return { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"}
+ return {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"}
@remote_compatible
def test_nfc_wps_password_token_sta(dev, apdev):
"""NFC tag with configuration token from AP with auto configuration"""
ssid = "test-wps-nfc-conf-token-init"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1"})
logger.info("NFC configuration token from AP to station")
conf = hapd.request("WPS_NFC_CONFIG_TOKEN NDEF").rstrip()
if "FAIL" in conf:
"""Initial AP configuration with first WPS NFC Enrollee"""
ssid = "test-wps-nfc-pw-token-init"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1"})
logger.info("WPS provisioning step using password token from station")
pw = dev[0].request("WPS_NFC_TOKEN NDEF").rstrip()
if "FAIL" in pw:
"""WPS registrar configuring an AP using AP password token"""
ssid = "test-wps-nfc-pw-token-init"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1"})
logger.info("WPS configuration step")
pw = hapd.request("WPS_NFC_TOKEN NDEF").rstrip()
if "FAIL" in pw:
dev[0].request("SET ignore_old_scan_res 1")
ssid = "test-wps-nfc-handover-init"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1"})
logger.info("NFC connection handover")
req = dev[0].request("NFC_GET_HANDOVER_REQ NDEF WPS-CR").rstrip()
if "FAIL" in req:
"""WPS AP NFC handover report error cases"""
ssid = "test-wps-nfc-handover"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": ssid, "eap_server": "1", "wps_state": "1" })
+ {"ssid": ssid, "eap_server": "1", "wps_state": "1"})
sel = hapd.request("NFC_GET_HANDOVER_SEL NDEF WPS-CR").rstrip()
if "FAIL" in sel:
raise Exception("Failed to generate NFC connection handover select")
def start_ap_er(er, ap, ssid):
ap_pin = "12345670"
ap_uuid = "27ea801a-9e5c-4e73-bd82-f89cbcd10d7e"
- params = { "ssid": ssid, "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
- "device_name": "Wireless AP", "manufacturer": "Company",
- "model_name": "WAP", "model_number": "123",
- "serial_number": "12345", "device_type": "6-0050F204-1",
- "os_version": "01020300",
- "config_methods": "label push_button",
- "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
+ params = {"ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP",
+ "device_name": "Wireless AP", "manufacturer": "Company",
+ "model_name": "WAP", "model_number": "123",
+ "serial_number": "12345", "device_type": "6-0050F204-1",
+ "os_version": "01020300",
+ "config_methods": "label push_button",
+ "ap_pin": ap_pin, "uuid": ap_uuid, "upnp_iface": "lo"}
hapd = hostapd.add_ap(ap, params)
logger.info("Learn AP configuration")
er.dump_monitor()
@remote_compatible
def test_nfc_invalid_ndef_record(dev, apdev):
"""Invalid NFC NDEF record handling"""
- tests = [ "11223344",
- "00112233",
- "0000112233445566",
- "0800112233445566",
- "080011223344",
- "18000000",
- "18010000",
- "90000050",
- "9000005000",
- "9001013344",
- "98010101334455",
- "0017ffffffe3",
- "0017ffffffe4",
- "0017ffffffe9",
- "0000fffffffa",
- "0017ffffffe46170706c69636174696f6e2f766e642e7766612e777363",
- "0017ffffffff6170706c69636174696f6e2f766e642e7766612e777363",
- "0017000000006170706c69636174696f6e2f766e642e7766612e7773ff",
- "080000000000" ]
+ tests = ["11223344",
+ "00112233",
+ "0000112233445566",
+ "0800112233445566",
+ "080011223344",
+ "18000000",
+ "18010000",
+ "90000050",
+ "9000005000",
+ "9001013344",
+ "98010101334455",
+ "0017ffffffe3",
+ "0017ffffffe4",
+ "0017ffffffe9",
+ "0000fffffffa",
+ "0017ffffffe46170706c69636174696f6e2f766e642e7766612e777363",
+ "0017ffffffff6170706c69636174696f6e2f766e642e7766612e777363",
+ "0017000000006170706c69636174696f6e2f766e642e7766612e7773ff",
+ "080000000000"]
for test in tests:
if "FAIL" not in dev[0].request("WPS_NFC_TAG_READ " + test):
raise Exception("Invalid tag accepted: " + test)
from utils import HwsimSkip
def check_set_tx_power(dev, apdev):
- hapd = hostapd.add_ap(apdev[0], {'ssid' : 'check_tx_power'})
+ hapd = hostapd.add_ap(apdev[0], {'ssid': 'check_tx_power'})
set_rx_rssi(hapd, -50)
dev[0].scan(freq=2412)
def run_rssi_based_assoc_rej_timeout(dev, apdev, params):
rssi_retry_to = 5
- ap_params = { 'ssid': "test-RSSI-ar-to",
- 'rssi_reject_assoc_rssi': '-45',
- 'rssi_reject_assoc_timeout': str(rssi_retry_to) }
+ ap_params = {'ssid': "test-RSSI-ar-to",
+ 'rssi_reject_assoc_rssi': '-45',
+ 'rssi_reject_assoc_timeout': str(rssi_retry_to)}
logger.info("Set APs RSSI rejection threshold to -45 dBm, retry timeout: " +
str(rssi_retry_to))
dev[0].request("SCAN_INTERVAL 5")
def run_rssi_based_assoc_rej_good_rssi(dev, apdev):
- ap_params = { 'ssid': "test-RSSI-ar-to",
- 'rssi_reject_assoc_rssi': '-45',
- 'rssi_reject_assoc_timeout': '60' }
+ ap_params = {'ssid': "test-RSSI-ar-to",
+ 'rssi_reject_assoc_rssi': '-45',
+ 'rssi_reject_assoc_timeout': '60'}
logger.info("Set APs RSSI rejection threshold to -45 dBm")
hapd = hostapd.add_ap(apdev[0], ap_params)
"""RSSI-based association rejection: connect after improving RSSI"""
check_set_tx_power(dev, apdev)
try:
- ap_params = { 'ssid': "test-RSSI-ar-to",
- 'rssi_reject_assoc_rssi': '-45',
- 'rssi_reject_assoc_timeout': '60' }
+ ap_params = {'ssid': "test-RSSI-ar-to",
+ 'rssi_reject_assoc_rssi': '-45',
+ 'rssi_reject_assoc_timeout': '60'}
logger.info("Set APs RSSI rejection threshold to -45 dBm, retry timeout: 60")
hapd = hostapd.add_ap(apdev[0], ap_params)
@remote_compatible
def test_wpa2_ocv(dev, apdev):
"""OCV on 2.4 GHz"""
- params = { "channel": "1",
- "ieee80211w": "2",
- "ocv": "1" }
+ params = {"channel": "1",
+ "ieee80211w": "2",
+ "ocv": "1"}
hapd, ssid, passphrase = ocv_setup_ap(apdev[0], params)
for ocv in range(2):
dev[0].connect(ssid, psk=passphrase, scan_freq="2412", ocv=str(ocv),
dev[0].flush_scan_cache()
def run_wpa2_ocv_5ghz(dev, apdev):
- params = { "hw_mode": "a",
- "channel": "40",
- "ieee80211w": "2",
- "country_code": "US",
- "ocv": "1" }
+ params = {"hw_mode": "a",
+ "channel": "40",
+ "ieee80211w": "2",
+ "country_code": "US",
+ "ocv": "1"}
hapd, ssid, passphrase = ocv_setup_ap(apdev[0], params)
for ocv in range(2):
dev[0].connect(ssid, psk=passphrase, scan_freq="5200", ocv=str(ocv),
@remote_compatible
def test_wpa2_ocv_ht20(dev, apdev):
"""OCV with HT20 channel"""
- params = { "channel": "6",
- "ieee80211n": "1",
- "ieee80211w": "1",
- "ocv": "1" }
+ params = {"channel": "6",
+ "ieee80211n": "1",
+ "ieee80211w": "1",
+ "ocv": "1"}
hapd, ssid, passphrase = ocv_setup_ap(apdev[0], params)
for ocv in range(2):
dev[0].connect(ssid, psk=passphrase, scan_freq="2437", ocv=str(ocv),
dev[1].flush_scan_cache()
def run_wpa2_ocv_ht40(dev, apdev):
- for channel, capab, freq, mode in [( "6", "[HT40-]", "2437", "g"),
- ( "6", "[HT40+]", "2437", "g"),
+ for channel, capab, freq, mode in [("6", "[HT40-]", "2437", "g"),
+ ("6", "[HT40+]", "2437", "g"),
("40", "[HT40-]", "5200", "a"),
("36", "[HT40+]", "5180", "a")]:
- params = { "hw_mode": mode,
- "channel": channel,
- "country_code": "US",
- "ieee80211n": "1",
- "ht_capab": capab,
- "ieee80211w": "1",
- "ocv": "1" }
+ params = {"hw_mode": mode,
+ "channel": channel,
+ "country_code": "US",
+ "ieee80211n": "1",
+ "ht_capab": capab,
+ "ieee80211w": "1",
+ "ocv": "1"}
hapd, ssid, passphrase = ocv_setup_ap(apdev[0], params)
dev[0].flush_scan_cache()
dev[1].flush_scan_cache()
def run_wpa2_ocv_vht40(dev, apdev):
for channel, capab, freq in [("40", "[HT40-]", "5200"),
("36", "[HT40+]", "5180")]:
- params = { "hw_mode": "a",
- "channel": channel,
- "country_code": "US",
- "ht_capab": capab,
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "38",
- "ieee80211w": "1",
- "ocv": "1" }
+ params = {"hw_mode": "a",
+ "channel": channel,
+ "country_code": "US",
+ "ht_capab": capab,
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "38",
+ "ieee80211w": "1",
+ "ocv": "1"}
hapd, ssid, passphrase = ocv_setup_ap(apdev[0], params)
dev[0].flush_scan_cache()
dev[1].flush_scan_cache()
def run_wpa2_ocv_vht80(dev, apdev):
for channel, capab, freq in [("40", "[HT40-]", "5200"),
("36", "[HT40+]", "5180")]:
- params = { "hw_mode": "a",
- "channel": channel,
- "country_code": "US",
- "ht_capab": capab,
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42",
- "ieee80211w": "1",
- "ocv": "1" }
+ params = {"hw_mode": "a",
+ "channel": channel,
+ "country_code": "US",
+ "ht_capab": capab,
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "ieee80211w": "1",
+ "ocv": "1"}
hapd, ssid, passphrase = ocv_setup_ap(apdev[0], params)
for ocv in range(2):
dev[0].connect(ssid, psk=passphrase, scan_freq=freq, ocv=str(ocv),
def run_wpa2_ocv_vht160(dev, apdev):
for channel, capab, freq in [("100", "[HT40+]", "5500"),
("104", "[HT40-]", "5520")]:
- params = { "hw_mode": "a",
- "channel": channel,
- "country_code": "ZA",
- "ht_capab": capab,
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "2",
- "vht_oper_centr_freq_seg0_idx": "114",
- "ieee80211w": "1",
- "ocv": "1" }
+ params = {"hw_mode": "a",
+ "channel": channel,
+ "country_code": "ZA",
+ "ht_capab": capab,
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "2",
+ "vht_oper_centr_freq_seg0_idx": "114",
+ "ieee80211w": "1",
+ "ocv": "1"}
hapd, ssid, passphrase = ocv_setup_ap(apdev[0], params)
for ocv in range(2):
dev[0].connect(ssid, psk=passphrase, scan_freq=freq, ocv=str(ocv),
def run_wpa2_ocv_vht80plus80(dev, apdev):
for channel, capab, freq in [("36", "[HT40+]", "5180"),
("40", "[HT40-]", "5200")]:
- params = { "hw_mode": "a",
- "channel": channel,
- "country_code": "US",
- "ht_capab": capab,
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "3",
- "vht_oper_centr_freq_seg0_idx": "42",
- "vht_oper_centr_freq_seg1_idx": "155",
- "ieee80211w": "1",
- "ieee80211d": "1",
- "ieee80211h": "1",
- "ocv": "1" }
+ params = {"hw_mode": "a",
+ "channel": channel,
+ "country_code": "US",
+ "ht_capab": capab,
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "3",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "vht_oper_centr_freq_seg1_idx": "155",
+ "ieee80211w": "1",
+ "ieee80211d": "1",
+ "ieee80211h": "1",
+ "ocv": "1"}
hapd, ssid, passphrase = ocv_setup_ap(apdev[0], params)
for ocv in range(2):
dev[0].connect(ssid, psk=passphrase, scan_freq=freq, ocv=str(ocv),
self.hapd = None
self.addr = None
self.rsne = None
- self.kck = None
- self.kek = None
- self.msg = None
- self.bssid = None
+ self.kck = None
+ self.kek = None
+ self.msg = None
+ self.bssid = None
self.anonce = None
self.snonce = None
self.msg = recv_eapol(self.hapd)
self.anonce = self.msg['rsn_key_nonce']
(ptk, self.kck, self.kek) = pmk_to_ptk(pmk, self.addr, self.bssid,
- self.snonce,self.anonce)
+ self.snonce, self.anonce)
# hapd, addr, rsne, kck, msg, anonce, snonce
def test_bad_oci(self, logmsg, op_class, channel, seg1_idx):
@remote_compatible
def test_wpa2_ocv_ap_mismatch(dev, apdev):
"""OCV AP mismatch"""
- params = { "channel": "1",
- "ieee80211w": "1",
- "freq": "2412" }
+ params = {"channel": "1",
+ "ieee80211w": "1",
+ "freq": "2412"}
conn = APConnection(apdev[0], dev[0], params)
conn.test_bad_oci("element missing", None, 0, 0)
conn.test_bad_oci("wrong channel number", 81, 6, 0)
@remote_compatible
def test_wpa2_ocv_ap_ht_mismatch(dev, apdev):
"""OCV AP mismatch (HT)"""
- params = { "channel": "6",
- "ht_capab": "[HT40-]",
- "ieee80211w": "1",
- "freq": "2437" }
+ params = {"channel": "6",
+ "ht_capab": "[HT40-]",
+ "ieee80211w": "1",
+ "freq": "2437"}
conn = APConnection(apdev[0], dev[0], params)
conn.test_bad_oci("wrong primary channel", 84, 5, 0)
conn.test_bad_oci("lower bandwidth than negotiated", 81, 6, 0)
dev[0].flush_scan_cache()
def run_wpa2_ocv_ap_vht80_mismatch(dev, apdev):
- params = { "hw_mode": "a",
- "channel": "36",
- "country_code": "US",
- "ht_capab": "[HT40+]",
- "ieee80211w": "1",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "freq": "5180",
- "vht_oper_centr_freq_seg0_idx": "42" }
+ params = {"hw_mode": "a",
+ "channel": "36",
+ "country_code": "US",
+ "ht_capab": "[HT40+]",
+ "ieee80211w": "1",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "freq": "5180",
+ "vht_oper_centr_freq_seg0_idx": "42"}
conn = APConnection(apdev[0], dev[0], params)
conn.test_bad_oci("wrong primary channel", 128, 38, 0)
conn.test_bad_oci("wrong primary channel", 128, 32, 0)
dev[0].flush_scan_cache()
def run_wpa2_ocv_ap_vht160_mismatch(dev, apdev):
- params = { "hw_mode": "a",
- "channel": "100",
- "country_code": "ZA",
- "ht_capab": "[HT40+]",
- "ieee80211w": "1",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "2",
- "freq": "5500",
- "vht_oper_centr_freq_seg0_idx": "114",
- "ieee80211d": "1",
- "ieee80211h": "1" }
+ params = {"hw_mode": "a",
+ "channel": "100",
+ "country_code": "ZA",
+ "ht_capab": "[HT40+]",
+ "ieee80211w": "1",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "2",
+ "freq": "5500",
+ "vht_oper_centr_freq_seg0_idx": "114",
+ "ieee80211d": "1",
+ "ieee80211h": "1"}
conn = APConnection(apdev[0], dev[0], params)
conn.test_bad_oci("wrong primary channel", 129, 36, 0)
conn.test_bad_oci("wrong primary channel", 129, 114, 0)
dev[0].flush_scan_cache()
def run_wpa2_ocv_ap_vht80plus80_mismatch(dev, apdev):
- params = { "hw_mode": "a",
- "channel": "36",
- "country_code": "US",
- "ht_capab": "[HT40+]",
- "ieee80211w": "1",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "3",
- "freq": "5180",
- "vht_oper_centr_freq_seg0_idx": "42",
- "ieee80211d": "1",
- "vht_oper_centr_freq_seg1_idx": "155",
- "ieee80211h": "1" }
+ params = {"hw_mode": "a",
+ "channel": "36",
+ "country_code": "US",
+ "ht_capab": "[HT40+]",
+ "ieee80211w": "1",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "3",
+ "freq": "5180",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "ieee80211d": "1",
+ "vht_oper_centr_freq_seg1_idx": "155",
+ "ieee80211h": "1"}
conn = APConnection(apdev[0], dev[0], params)
conn.test_bad_oci("using 80 MHz operating class", 128, 36, 155)
conn.test_bad_oci("wrong frequency segment 1", 130, 36, 138)
@remote_compatible
def test_wpa2_ocv_ap_unexpected1(dev, apdev):
"""OCV and unexpected OCI KDE from station"""
- params = { "channel": "1",
- "ieee80211w": "1",
- "ap_ocv": "0",
- "sta_ocv": "1",
- "freq": "2412" }
+ params = {"channel": "1",
+ "ieee80211w": "1",
+ "ap_ocv": "0",
+ "sta_ocv": "1",
+ "freq": "2412"}
conn = APConnection(apdev[0], dev[0], params)
logger.debug("Client will send OCI KDE even if it was not negotiated")
conn.confirm_valid_oci(81, 1, 0)
@remote_compatible
def test_wpa2_ocv_ap_unexpected2(dev, apdev):
"""OCV and unexpected OCI KDE from station"""
- params = { "channel": "1",
- "ieee80211w": "1",
- "ap_ocv": "1",
- "sta_ocv": "0",
- "freq": "2412" }
+ params = {"channel": "1",
+ "ieee80211w": "1",
+ "ap_ocv": "1",
+ "sta_ocv": "0",
+ "freq": "2412"}
conn = APConnection(apdev[0], dev[0], params)
logger.debug("Client will send OCI KDE even if it was not negotiated")
conn.confirm_valid_oci(81, 1, 0)
def test_wpa2_ocv_ap_group_hs(dev, apdev):
"""OCV group handshake (AP)"""
- params = { "channel": "1",
- "ieee80211w": "1",
- "freq": "2412",
- "wpa_strict_rekey": "1" }
+ params = {"channel": "1",
+ "ieee80211w": "1",
+ "freq": "2412",
+ "wpa_strict_rekey": "1"}
conn = APConnection(apdev[0], dev[0], params)
conn.confirm_valid_oci(81, 1, 0)
self.msg = recv_eapol(dev)
self.snonce = self.msg['rsn_key_nonce']
(ptk, self.kck, self.kek) = pmk_to_ptk(pmk, self.addr, self.bssid,
- self.snonce,self.anonce)
+ self.snonce, self.anonce)
self.counter = struct.unpack('>Q',
self.msg['rsn_replay_counter'])[0] + 1
@remote_compatible
def test_wpa2_ocv_mismatch_client(dev, apdev):
"""OCV client mismatch"""
- params = { "channel": "1",
- "ieee80211w": "1",
- "ocv": "1",
- "freq": "2412" }
+ params = {"channel": "1",
+ "ieee80211w": "1",
+ "ocv": "1",
+ "freq": "2412"}
conn = STAConnection(apdev[0], dev[0], params)
conn.test_bad_oci("element missing", None, 0, 0,
"did not receive mandatory OCI")
dev[0].flush_scan_cache()
def run_wpa2_ocv_vht160_mismatch_client(dev, apdev):
- params = { "hw_mode": "a",
- "channel": "100",
- "country_code": "ZA",
- "ht_capab": "[HT40+]",
- "ieee80211w": "1",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "2",
- "ocv": "1",
- "vht_oper_centr_freq_seg0_idx": "114",
- "freq": "5500",
- "ieee80211d": "1",
- "ieee80211h": "1" }
- sta_params = { "disable_vht": "1" }
+ params = {"hw_mode": "a",
+ "channel": "100",
+ "country_code": "ZA",
+ "ht_capab": "[HT40+]",
+ "ieee80211w": "1",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "2",
+ "ocv": "1",
+ "vht_oper_centr_freq_seg0_idx": "114",
+ "freq": "5500",
+ "ieee80211d": "1",
+ "ieee80211h": "1"}
+ sta_params = {"disable_vht": "1"}
conn = STAConnection(apdev[0], dev[0], params, sta_params)
conn.test_bad_oci("smaller bandwidth (20 Mhz) than negotiated",
121, 100, 0, "channel bandwidth mismatch")
def test_wpa2_ocv_sta_group_hs(dev, apdev):
"""OCV group handshake (STA)"""
- params = { "channel": "1",
- "ieee80211w": "1",
- "ocv": "1",
- "freq": "2412",
- "wpa_strict_rekey": "1" }
+ params = {"channel": "1",
+ "ieee80211w": "1",
+ "ocv": "1",
+ "freq": "2412",
+ "wpa_strict_rekey": "1"}
conn = STAConnection(apdev[0], dev[0], params.copy())
conn.confirm_valid_oci(81, 1, 0)
"""Opportunistic Wireless Encryption"""
if "OWE" not in dev[0].get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
- params = { "ssid": "owe",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP" }
+ params = {"ssid": "owe",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
"""Opportunistic Wireless Encryption - DH groups"""
if "OWE" not in dev[0].get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
- params = { "ssid": "owe",
- "wpa": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP" }
+ params = {"ssid": "owe",
+ "wpa": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[0].scan_for_bss(bssid, freq="2412")
- for group in [ 19, 20, 21 ]:
+ for group in [19, 20, 21]:
dev[0].connect("owe", key_mgmt="OWE", owe_group=str(group))
hwsim_utils.test_connectivity(dev[0], hapd)
dev[0].request("REMOVE_NETWORK all")
"""Opportunistic Wireless Encryption and PMKSA caching using cfg80211 connect command"""
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
- run_owe_pmksa_caching([ wpas ], apdev)
+ run_owe_pmksa_caching([wpas], apdev)
def run_owe_pmksa_caching(dev, apdev):
if "OWE" not in dev[0].get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
- params = { "ssid": "owe",
- "wpa": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP" }
+ params = {"ssid": "owe",
+ "wpa": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
"""Opportunistic Wireless Encryption and WPA2-PSK enabled"""
if "OWE" not in dev[0].get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
- params = { "ssid": "owe+psk",
- "wpa": "2",
- "wpa_key_mgmt": "OWE WPA-PSK",
- "rsn_pairwise": "CCMP",
- "wpa_passphrase": "12345678" }
+ params = {"ssid": "owe+psk",
+ "wpa": "2",
+ "wpa_key_mgmt": "OWE WPA-PSK",
+ "rsn_pairwise": "CCMP",
+ "wpa_passphrase": "12345678"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
"""Opportunistic Wireless Encryption transition mode using cfg80211 connect command"""
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
- run_owe_transition_mode([ wpas ], apdev)
+ run_owe_transition_mode([wpas], apdev)
def run_owe_transition_mode(dev, apdev):
if "OWE" not in dev[0].get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
dev[0].flush_scan_cache()
- params = { "ssid": "owe-random",
- "wpa": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP",
- "ieee80211w": "2",
- "owe_transition_bssid": apdev[1]['bssid'],
- "owe_transition_ssid": '"owe-test"',
- "ignore_broadcast_ssid": "1" }
+ params = {"ssid": "owe-random",
+ "wpa": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP",
+ "ieee80211w": "2",
+ "owe_transition_bssid": apdev[1]['bssid'],
+ "owe_transition_ssid": '"owe-test"',
+ "ignore_broadcast_ssid": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
- params = { "ssid": "owe-test",
- "owe_transition_bssid": apdev[0]['bssid'],
- "owe_transition_ssid": '"owe-random"' }
+ params = {"ssid": "owe-test",
+ "owe_transition_bssid": apdev[0]['bssid'],
+ "owe_transition_ssid": '"owe-random"'}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = hapd2.own_addr()
if "OWE" not in dev[0].get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
dev[0].flush_scan_cache()
- params = { "ssid": "owe-test-open" }
+ params = {"ssid": "owe-test-open"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
if "OWE" not in dev[0].get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
dev[0].flush_scan_cache()
- params = { "ssid": "owe-test",
- "owe_transition_bssid": apdev[0]['bssid'],
- "owe_transition_ssid": '"owe-random"' }
+ params = {"ssid": "owe-test",
+ "owe_transition_bssid": apdev[0]['bssid'],
+ "owe_transition_ssid": '"owe-random"'}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = hapd2.own_addr()
scan_freq="2412", wait_connect=False)
ev = dev[0].wait_event(["CTRL-EVENT-SCAN-RESULTS"], timeout=1)
- params = { "ssid": "owe-random",
- "wpa": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP",
- "ieee80211w": "2",
- "owe_transition_bssid": apdev[1]['bssid'],
- "owe_transition_ssid": '"owe-test"',
- "ignore_broadcast_ssid": "1" }
+ params = {"ssid": "owe-random",
+ "wpa": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP",
+ "ieee80211w": "2",
+ "owe_transition_bssid": apdev[1]['bssid'],
+ "owe_transition_ssid": '"owe-test"',
+ "ignore_broadcast_ssid": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
wpas = None
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
- run_owe_unsupported_group([ wpas ], apdev)
+ run_owe_unsupported_group([wpas], apdev)
finally:
if wpas:
wpas.request("VENDOR_ELEM_REMOVE 13 *")
# status code 77.
dev[0].request("VENDOR_ELEM_ADD 13 ff23200000783590fb7440e03d5b3b33911f86affdcc6b4411b707846ac4ff08ddc8831ccd")
- params = { "ssid": "owe",
- "wpa": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP" }
+ params = {"ssid": "owe",
+ "wpa": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
"""Opportunistic Wireless Encryption and limited group set"""
if "OWE" not in dev[0].get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
- params = { "ssid": "owe",
- "wpa": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP",
- "owe_groups": "20 21" }
+ params = {"ssid": "owe",
+ "wpa": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP",
+ "owe_groups": "20 21"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
raise Exception("Unexpected rejection reason: " + ev)
dev[0].dump_monitor()
- for group in [ 20, 21 ]:
+ for group in [20, 21]:
dev[0].connect("owe", key_mgmt="OWE", owe_group=str(group))
dev[0].request("REMOVE_NETWORK all")
dev[0].wait_disconnected()
raise HwsimSkip("OWE not supported")
pcapng = os.path.join(params['logdir'], "hwsim0.pcapng")
- params = { "ssid": "owe",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP",
- "owe_groups": "21" }
+ params = {"ssid": "owe",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP",
+ "owe_groups": "21"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
def run_owe_group_negotiation(dev, apdev):
if "OWE" not in dev.get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
- params = { "ssid": "owe",
- "wpa": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP",
- "owe_groups": "21" }
+ params = {"ssid": "owe",
+ "wpa": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP",
+ "owe_groups": "21"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
"""Opportunistic Wireless Encryption association rejection handling"""
if "OWE" not in dev[0].get_capability("key_mgmt"):
raise HwsimSkip("OWE not supported")
- params = { "ssid": "owe",
- "require_ht": "1",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "OWE",
- "rsn_pairwise": "CCMP",
- "owe_groups": "19" }
+ params = {"ssid": "owe",
+ "require_ht": "1",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "OWE",
+ "rsn_pairwise": "CCMP",
+ "owe_groups": "19"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[0].scan_for_bss(bssid, freq="2412")
dev[0].connect("owe", key_mgmt="OWE", ieee80211w="2",
disable_ht="1", scan_freq="2412", wait_connect=False)
- for i in range(0,2):
+ for i in range(0, 2):
ev = dev[0].wait_event(["CTRL-EVENT-ASSOC-REJECT"], timeout=10)
if ev is None:
raise Exception("Association rejection not reported")
# Then, verify that STA tries OWE with the default group (19) on the next
# attempt instead of having moved to testing another group.
hapd.set("require_ht", "0")
- for i in range(0,2):
+ for i in range(0, 2):
ev = dev[0].wait_event(["CTRL-EVENT-ASSOC-REJECT",
"CTRL-EVENT-CONNECTED"], timeout=10)
if ev is None:
raise Exception("Could not find peer (3)")
dev[1].p2p_stop_find()
- for i in [ name0, name2, name3 ]:
+ for i in [name0, name2, name3]:
if i not in ev1 and i not in ev2 and i not in ev3:
raise Exception('name "%s" not found' % i)
test_data=False)
check_grpform_results(i_res, r_res)
freq = int(i_res['freq'])
- if freq not in [ 2412, 2437, 2462 ]:
+ if freq not in [2412, 2437, 2462]:
raise Exception("Unexpected channel %d MHz - did not pick random social channel" % freq)
remove_group(dev[0], dev[1])
finally:
test_data=False)
check_grpform_results(i_res, r_res)
freq = int(i_res['freq'])
- if freq > 2500 or freq in [ 2412, 2437, 2462 ]:
+ if freq > 2500 or freq in [2412, 2437, 2462]:
raise Exception("Unexpected channel %d MHz" % freq)
remove_group(dev[0], dev[1])
finally:
test_data=False)
check_grpform_results(i_res, r_res)
freq = int(i_res['freq'])
- if freq not in [ 2412, 2437, 2462 ]:
+ if freq not in [2412, 2437, 2462]:
raise Exception("Unexpected channel %d MHz - did not pick random social channel" % freq)
remove_group(dev[0], dev[1])
test_data=False)
check_grpform_results(i_res, r_res)
freq = int(i_res['freq'])
- if freq > 2500 or freq in [ 2412, 2437, 2462 ]:
+ if freq > 2500 or freq in [2412, 2437, 2462]:
raise Exception("Unexpected channel %d MHz" % freq)
if "OK" not in dev[0].request("DRIVER_EVENT AVOID_FREQUENCIES"):
dev[0].global_request("SET p2p_no_group_iface 0")
- channels = { 3 : "2422", 5 : "2432", 9 : "2452" }
+ channels = {3: "2422", 5: "2432", 9: "2452"}
for key in channels:
- hapd = hostapd.add_ap(apdev[0], { "ssid" : 'ap-test',
- "channel" : str(key) })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'ap-test',
+ "channel": str(key)})
dev[0].connect("ap-test", key_mgmt="NONE",
scan_freq=str(channels[key]))
res_go = autogo(dev[0])
dev[0].global_request("SET p2p_no_group_iface 0")
hapd = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-2.4ghz', "channel": '5' })
+ {"ssid": 'bss-2.4ghz', "channel": '5'})
dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2432")
#dev[0] as GO
[i_res, r_res] = go_neg_pbc(i_dev=dev[0], i_intent=10, r_dev=dev[1],
raise Exception("New radio does not support MCC")
try:
- hapd = hostapd.add_ap(apdev[0], { "ssid": 'bss-2.4ghz',
- "channel": '1' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'bss-2.4ghz',
+ "channel": '1'})
wpas.global_request("P2P_SET disallow_freq 2412")
wpas.connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412")
res = autogo(wpas)
try:
hapd = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-2.4ghz', "channel": '1' })
+ {"ssid": 'bss-2.4ghz', "channel": '1'})
# make sure PBC overlap from old test cases is not maintained
dev[1].flush_scan_cache()
wpas.connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412")
wpas.global_request("SET p2p_no_group_iface 0")
hapd = hostapd.add_ap(apdev[0],
- {"ssid" : 'ap-test', "channel" : '1'})
- wpas.connect("ap-test", key_mgmt = "NONE", scan_freq = "2412")
+ {"ssid": 'ap-test', "channel": '1'})
+ wpas.connect("ap-test", key_mgmt="NONE", scan_freq="2412")
wpas.dump_monitor()
- channels = { 2 : 2417, 5 : 2432, 9 : 2452 }
+ channels = {2: 2417, 5: 2432, 9: 2452}
for key in channels:
res_go = autogo(wpas, channels[key])
wpas.dump_monitor()
wpas.global_request("SET p2p_no_group_iface 0")
hapd = hostapd.add_ap(apdev[0],
- { "country_code": 'US',
- "ssid": 'bss-5ghz', "hw_mode": 'a',
- "channel": '40' })
+ {"country_code": 'US',
+ "ssid": 'bss-5ghz', "hw_mode": 'a',
+ "channel": '40'})
wpas.connect("bss-5ghz", key_mgmt="NONE", scan_freq="5200")
# GO and peer force the same freq, different than BSS freq,
dev[0].global_request("SET p2p_no_group_iface 0")
try:
- hapd = hostapd.add_ap(apdev[0], { "ssid": 'bss-2.4ghz',
- "channel": '1' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'bss-2.4ghz',
+ "channel": '1'})
dev[0].global_request("SET p2p_pref_chan 81:2")
dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412")
res = autogo(dev[0])
wpas.global_request("SET p2p_no_group_iface 0")
try:
- hapd = hostapd.add_ap(apdev[0], { "ssid": 'bss-2.4ghz',
- "channel": '1' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'bss-2.4ghz',
+ "channel": '1'})
wpas.global_request("P2P_SET disallow_freq 2412")
wpas.global_request("SET p2p_pref_chan 81:2")
wpas.connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412")
dev[0].global_request("P2P_SET disallow_freq 2412,2422,2437,2452,2462")
for i in range(0, 5):
res = autogo(dev[0])
- if res['freq'] in [ "2412", "2422", "2437", "2452", "2462" ]:
+ if res['freq'] in ["2412", "2422", "2437", "2452", "2462"]:
raise Exception("GO channel is disallowed")
dev[0].remove_group(res['ifname'])
finally:
channel = "1" if lfreq != '2412' else "6"
freq = "2412" if lfreq != '2412' else "2437"
- params = { "ssid": "test-open", "channel": channel }
+ params = {"ssid": "test-open", "channel": channel}
hapd = hostapd.add_ap(apdev[0], params)
id = wpas.connect("test-open", key_mgmt="NONE", scan_freq=freq)
if wpas.get_mcc() < 2:
raise Exception("New radio does not support MCC")
- ndev = [ wpas, dev[1] ]
+ ndev = [wpas, dev[1]]
_test_p2p_go_move_active(ndev, apdev)
def _test_p2p_go_move_active(dev, apdev):
dev[0].global_request("SET p2p_no_group_iface 0")
try:
dev[0].global_request("P2P_SET disallow_freq 2430-6000")
- hapd = hostapd.add_ap(apdev[0], { "ssid" : 'ap-test',
- "channel" : '11' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'ap-test',
+ "channel": '11'})
dev[0].connect("ap-test", key_mgmt="NONE",
scan_freq="2462")
if wpas.get_mcc() < 2:
raise Exception("New radio does not support MCC")
- ndev = [ wpas, dev[1] ]
+ ndev = [wpas, dev[1]]
_test_p2p_go_move_scm(ndev, apdev)
def _test_p2p_go_move_scm(dev, apdev):
dev[0].global_request("SET p2p_no_group_iface 0")
try:
dev[0].global_request("P2P_SET disallow_freq 2430-6000")
- hapd = hostapd.add_ap(apdev[0], { "ssid" : 'ap-test',
- "channel" : '11' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'ap-test',
+ "channel": '11'})
dev[0].connect("ap-test", key_mgmt="NONE",
scan_freq="2462")
if wpas.get_mcc() < 2:
raise Exception("New radio does not support MCC")
- ndev = [ wpas, dev[1] ]
+ ndev = [wpas, dev[1]]
_test_p2p_go_move_scm_peer_supports(ndev, apdev)
def _test_p2p_go_move_scm_peer_supports(dev, apdev):
if freq < 5000:
raise Exception("Unexpected channel %d MHz - did not follow 5 GHz preference" % freq)
- hapd = hostapd.add_ap(apdev[0], { "ssid" : 'ap-test',
- "channel" : '11' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'ap-test',
+ "channel": '11'})
logger.info('Connecting client to to an AP on channel 11')
dev[0].connect("ap-test", key_mgmt="NONE",
scan_freq="2462")
if wpas.get_mcc() < 2:
raise Exception("New radio does not support MCC")
- ndev = [ wpas, dev[1] ]
+ ndev = [wpas, dev[1]]
_test_p2p_go_move_scm_peer_does_not_support(ndev, apdev)
def _test_p2p_go_move_scm_peer_does_not_support(dev, apdev):
if freq < 5000:
raise Exception("Unexpected channel %d MHz - did not follow 5 GHz preference" % freq)
- hapd = hostapd.add_ap(apdev[0], { "ssid" : 'ap-test',
- "channel" : '11' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'ap-test',
+ "channel": '11'})
logger.info('Connecting client to to an AP on channel 11')
dev[0].connect("ap-test", key_mgmt="NONE",
scan_freq="2462")
if wpas.get_mcc() < 2:
raise Exception("New radio does not support MCC")
- ndev = [ wpas, dev[1] ]
+ ndev = [wpas, dev[1]]
_test_p2p_go_move_scm_multi(ndev, apdev)
def _test_p2p_go_move_scm_multi(dev, apdev):
dev[0].request("SET p2p_no_group_iface 0")
try:
dev[0].global_request("P2P_SET disallow_freq 2430-6000")
- hapd = hostapd.add_ap(apdev[0], { "ssid" : 'ap-test-1',
- "channel" : '11' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'ap-test-1',
+ "channel": '11'})
dev[0].connect("ap-test-1", key_mgmt="NONE",
scan_freq="2462")
if freq != '2462':
raise Exception("Unexpected freq after group reform=" + freq)
- hapd = hostapd.add_ap(apdev[0], { "ssid" : 'ap-test-2',
- "channel" : '6' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'ap-test-2',
+ "channel": '6'})
dev[0].connect("ap-test-2", key_mgmt="NONE",
scan_freq="2437")
raise Exception("Peer " + addr1 + " not found")
wpas.p2p_stop_find()
- hapd = hostapd.add_ap(apdev[0], { "ssid": 'bss-2.4ghz',
- "channel": '1' })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'bss-2.4ghz',
+ "channel": '1'})
wpas.connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412")
"""Concurrent P2P autonomous GO"""
logger.info("Connect to an infrastructure AP")
dev[0].request("P2P_SET cross_connect 0")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], hapd)
try:
hapd = None
hapd2 = None
- params = { "ssid": "ht40",
- "hw_mode": "a",
- "channel": "153",
- "country_code": "US",
- "ht_capab": "[HT40-]" }
+ params = {"ssid": "ht40",
+ "hw_mode": "a",
+ "channel": "153",
+ "country_code": "US",
+ "ht_capab": "[HT40-]"}
hapd2 = hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-open-5",
- "hw_mode": "a",
- "channel": "149",
- "country_code": "US" }
+ params = {"ssid": "test-open-5",
+ "hw_mode": "a",
+ "channel": "149",
+ "country_code": "US"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].request("P2P_SET cross_connect 0")
def test_concurrent_autogo_crossconnect(dev, apdev):
"""Concurrent P2P autonomous GO"""
dev[0].global_request("P2P_SET cross_connect 1")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
dev[0].global_request("SET p2p_no_group_iface 0")
def test_concurrent_p2pcli(dev, apdev):
"""Concurrent P2P client join"""
logger.info("Connect to an infrastructure AP")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], hapd)
def test_concurrent_grpform_go(dev, apdev):
"""Concurrent P2P group formation to become GO"""
logger.info("Connect to an infrastructure AP")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], hapd)
def test_concurrent_grpform_cli(dev, apdev):
"""Concurrent P2P group formation to become P2P Client"""
logger.info("Connect to an infrastructure AP")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], hapd)
def test_concurrent_grpform_while_connecting(dev, apdev):
"""Concurrent P2P group formation while connecting to an AP"""
logger.info("Start connection to an infrastructure AP")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", wait_connect=False)
logger.info("Form a P2P group while connecting to an AP")
def test_concurrent_grpform_while_connecting2(dev, apdev):
"""Concurrent P2P group formation while connecting to an AP (2)"""
logger.info("Start connection to an infrastructure AP")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", wait_connect=False)
dev[1].flush_scan_cache()
def test_concurrent_grpform_while_connecting3(dev, apdev):
"""Concurrent P2P group formation while connecting to an AP (3)"""
logger.info("Start connection to an infrastructure AP")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-open"})
dev[0].connect("test-open", key_mgmt="NONE", wait_connect=False)
logger.info("Form a P2P group while connecting to an AP")
def test_concurrent_persistent_group(dev, apdev):
"""Concurrent P2P persistent group"""
logger.info("Connect to an infrastructure AP")
- hostapd.add_ap(apdev[0], { "ssid": "test-open", "channel": "2" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-open", "channel": "2"})
dev[0].global_request("SET p2p_no_group_iface 0")
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2417")
dev[1].dump_monitor()
logger.info("Connect to an infrastructure AP")
- hostapd.add_ap(apdev[0], { "ssid": "test-open", "channel": "2" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-open", "channel": "2"})
dev[0].global_request("SET p2p_no_group_iface 0")
dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2417")
invite(dev[1], dev[0], extra="freq=2412")
found = False
for l in lines:
try:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
if name == "wdev_id":
found = True
break
def test_p2p_device_misuses(dev, apdev):
"""cfg80211 P2P Device misuses"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
with HWSimRadio(use_p2p_device=True) as (radio, iface):
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add(iface)
time.sleep(1)
hwsim_utils.test_connectivity(wpas, hapd)
- ev = hapd.wait_event([ "AP-STA-DISCONNECTED" ], timeout=0.1)
+ ev = hapd.wait_event(["AP-STA-DISCONNECTED"], timeout=0.1)
if ev is not None:
raise Exception("Unexpected disconnection event received from hostapd")
ev = wpas.wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=0.1)
res0 = dev[0].request("P2P_PEER FIRST")
peer = res0.splitlines()[0]
- if peer not in [ addr1, addr2 ]:
+ if peer not in [addr1, addr2]:
raise Exception("Unexpected P2P_PEER FIRST address")
res1 = dev[0].request("P2P_PEER NEXT-" + peer)
peer2 = res1.splitlines()[0]
- if peer2 not in [ addr1, addr2 ] or peer == peer2:
+ if peer2 not in [addr1, addr2] or peer == peer2:
raise Exception("Unexpected P2P_PEER NEXT address")
if "FAIL" not in dev[0].request("P2P_PEER NEXT-foo"):
terminate_group(wpas, dev[1])
out = run_tshark(os.path.join(params['logdir'], "hwsim0.pcapng"),
- "wifi_p2p.public_action.subtype == 8", [ "wlan.da" ])
+ "wifi_p2p.public_action.subtype == 8", ["wlan.da"])
da = out.splitlines()
logger.info("PD Response DAs: " + str(da))
if len(da) != 3:
terminate_group(dev[1], wpas)
out = run_tshark(os.path.join(params['logdir'], "hwsim0.pcapng"),
- "wifi_p2p.public_action.subtype == 8", [ "wlan.da" ])
+ "wifi_p2p.public_action.subtype == 8", ["wlan.da"])
da = out.splitlines()
logger.info("PD Response DAs: " + str(da))
if len(da) != 3:
@remote_compatible
def test_grpform_pbc_overlap(dev, apdev):
"""P2P group formation during PBC overlap"""
- params = { "ssid": "wps", "eap_server": "1", "wps_state": "1" }
+ params = {"ssid": "wps", "eap_server": "1", "wps_state": "1"}
hapd = hostapd.add_ap(apdev[0], params)
hapd.request("WPS_PBC")
time.sleep(0.1)
"""P2P group formation during PBC overlap using group interfaces"""
# Note: Need to include P2P IE from the AP to get the P2P interface BSS
# update use this information.
- params = { "ssid": "wps", "eap_server": "1", "wps_state": "1",
- "beacon_int": "15", 'manage_p2p': '1' }
+ params = {"ssid": "wps", "eap_server": "1", "wps_state": "1",
+ "beacon_int": "15", 'manage_p2p': '1'}
hapd = hostapd.add_ap(apdev[0], params)
hapd.request("WPS_PBC")
def test_invalid_p2p_connect_command(dev):
"""P2P_CONNECT error cases"""
id = dev[0].add_network()
- for cmd in [ "foo",
- "00:11:22:33:44:55",
- "00:11:22:33:44:55 pbc persistent=123",
- "00:11:22:33:44:55 pbc persistent=%d" % id,
- "00:11:22:33:44:55 pbc go_intent=-1",
- "00:11:22:33:44:55 pbc go_intent=16",
- "00:11:22:33:44:55 pin",
- "00:11:22:33:44:55 pbc freq=0" ]:
+ for cmd in ["foo",
+ "00:11:22:33:44:55",
+ "00:11:22:33:44:55 pbc persistent=123",
+ "00:11:22:33:44:55 pbc persistent=%d" % id,
+ "00:11:22:33:44:55 pbc go_intent=-1",
+ "00:11:22:33:44:55 pbc go_intent=16",
+ "00:11:22:33:44:55 pin",
+ "00:11:22:33:44:55 pbc freq=0"]:
if "FAIL" not in dev[0].request("P2P_CONNECT " + cmd):
raise Exception("Invalid P2P_CONNECT command accepted: " + cmd)
def test_p2p_invite_invalid(dev):
"""Invalid parameters to P2P_INVITE"""
id = dev[0].add_network()
- for cmd in [ "foo=bar",
- "persistent=123 peer=foo",
- "persistent=123",
- "persistent=%d" % id,
- "group=foo",
- "group=foo peer=foo",
- "group=foo peer=00:11:22:33:44:55 go_dev_addr=foo" ]:
+ for cmd in ["foo=bar",
+ "persistent=123 peer=foo",
+ "persistent=123",
+ "persistent=%d" % id,
+ "group=foo",
+ "group=foo peer=foo",
+ "group=foo peer=00:11:22:33:44:55 go_dev_addr=foo"]:
if "FAIL" not in dev[0].request("P2P_INVITE " + cmd):
raise Exception("Invalid P2P_INVITE accepted: " + cmd)
return struct.pack("<BHBB", P2P_ATTR_CAPABILITY, 2, dev_capab, group_capab)
def p2p_attr_device_id(addr):
- val = struct.unpack('6B', binascii.unhexlify(addr.replace(':','')))
+ val = struct.unpack('6B', binascii.unhexlify(addr.replace(':', '')))
t = (P2P_ATTR_DEVICE_ID, 6) + val
return struct.pack('<BH6B', *t)
0x58, 0x58, 0x04, op_class, chan)
def p2p_attr_group_bssid(addr):
- val = struct.unpack('6B', binascii.unhexlify(addr.replace(':','')))
+ val = struct.unpack('6B', binascii.unhexlify(addr.replace(':', '')))
t = (P2P_ATTR_GROUP_BSSID, 6) + val
return struct.pack('<BH6B', *t)
return struct.pack("<BHHH", P2P_ATTR_EXT_LISTEN_TIMING, 4, period, interval)
def p2p_attr_intended_interface_addr(addr):
- val = struct.unpack('6B', binascii.unhexlify(addr.replace(':','')))
+ val = struct.unpack('6B', binascii.unhexlify(addr.replace(':', '')))
t = (P2P_ATTR_INTENDED_INTERFACE_ADDR, 6) + val
return struct.pack('<BH6B', *t)
81, 11, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
def p2p_attr_device_info(addr, name="Test", config_methods=0, dev_type="00010050F2040001"):
- val = struct.unpack('6B', binascii.unhexlify(addr.replace(':','')))
+ val = struct.unpack('6B', binascii.unhexlify(addr.replace(':', '')))
val2 = struct.unpack('8B', binascii.unhexlify(dev_type))
t = (P2P_ATTR_DEVICE_INFO, 6 + 2 + 8 + 1 + 4 + len(name)) + val
t2 = val2 + (0,)
return struct.pack("<BH6B", *t) + struct.pack(">H", config_methods) + struct.pack("8BB", *t2) + struct.pack('>HH', 0x1011, len(name)) + name.encode()
def p2p_attr_group_id(addr, ssid):
- val = struct.unpack('6B', binascii.unhexlify(addr.replace(':','')))
+ val = struct.unpack('6B', binascii.unhexlify(addr.replace(':', '')))
t = (P2P_ATTR_GROUP_ID, 6 + len(ssid)) + val
return struct.pack('<BH6B', *t) + ssid.encode()
peer = dev[1].get_peer(addr0)
bssid = apdev[0]['bssid']
- params = { 'ssid': "test", 'beacon_int': "2000" }
+ params = {'ssid': "test", 'beacon_int': "2000"}
if peer['listen_freq'] == "2412":
params['channel'] = '1'
elif peer['listen_freq'] == "2437":
if action != 9:
return None
pos = pos[2:]
- (oui1,oui2,oui3,subtype) = struct.unpack('BBBB', pos[0:4])
+ (oui1, oui2, oui3, subtype) = struct.unpack('BBBB', pos[0:4])
if oui1 != 0x50 or oui2 != 0x6f or oui3 != 0x9a or subtype != 9:
return None
pos = pos[4:]
- (subtype,dialog_token) = struct.unpack('BB', pos[0:2])
+ (subtype, dialog_token) = struct.unpack('BB', pos[0:2])
p2p = {}
p2p['subtype'] = subtype
p2p['dialog_token'] = dialog_token
pos = pos[2:]
p2p['elements'] = pos
while len(pos) > 2:
- (id,elen) = struct.unpack('BB', pos[0:2])
+ (id, elen) = struct.unpack('BB', pos[0:2])
pos = pos[2:]
if elen > len(pos):
raise Exception("Truncated IE in P2P Public Action frame (elen=%d left=%d)" % (elen, len(pos)))
if id == WLAN_EID_VENDOR_SPECIFIC:
if elen < 4:
raise Exception("Too short vendor specific IE in P2P Public Action frame (elen=%d)" % elen)
- (oui1,oui2,oui3,subtype) = struct.unpack('BBBB', pos[0:4])
+ (oui1, oui2, oui3, subtype) = struct.unpack('BBBB', pos[0:4])
if oui1 == 0x50 and oui2 == 0x6f and oui3 == 0x9a and subtype == 9:
if 'p2p' in p2p:
p2p['p2p'] += pos[4:elen]
p2p['p2p_attrs'] = {}
pos = p2p['p2p']
while len(pos) >= 3:
- (id,alen) = struct.unpack('<BH', pos[0:3])
+ (id, alen) = struct.unpack('<BH', pos[0:3])
pos = pos[3:]
if alen > len(pos):
logger.info("P2P payload: " + binascii.hexlify(p2p['p2p']))
p2p['wsc_attrs'] = {}
pos = p2p['wsc']
while len(pos) >= 4:
- (id,alen) = struct.unpack('>HH', pos[0:4])
+ (id, alen) = struct.unpack('>HH', pos[0:4])
pos = pos[4:]
if alen > len(pos):
logger.info("WSC payload: " + binascii.hexlify(p2p['wsc']))
dev[0].request("VENDOR_ELEM_REMOVE 2 *")
def _test_p2p_msg_group_info(dev):
- tests = [ "dd08506f9a090e010001",
- "dd08506f9a090e010000",
- "dd20506f9a090e190018" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "ff",
- "dd20506f9a090e190018" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "00",
- "dd24506f9a090e1d001c" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "00" + "00000000",
- "dd24506f9a090e1d001c" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "00" + "10110001",
- "dd24506f9a090e1d001c" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "00" + "1011ffff" ]
+ tests = ["dd08506f9a090e010001",
+ "dd08506f9a090e010000",
+ "dd20506f9a090e190018" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "ff",
+ "dd20506f9a090e190018" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "00",
+ "dd24506f9a090e1d001c" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "00" + "00000000",
+ "dd24506f9a090e1d001c" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "00" + "10110001",
+ "dd24506f9a090e1d001c" + "112233445566" + "aabbccddeeff" + "00" + "0000" + "0000000000000000" + "00" + "1011ffff"]
for t in tests:
dev[0].request("VENDOR_ELEM_REMOVE 2 *")
if "OK" not in dev[0].request("VENDOR_ELEM_ADD 2 " + t):
logger.info("Join another client to the group")
pin = dev[2].wps_read_pin()
dev[0].p2p_go_authorize_client(pin)
- social = int(i_res['freq']) in [ 2412, 2437, 2462 ]
+ social = int(i_res['freq']) in [2412, 2437, 2462]
c_res = dev[2].p2p_connect_group(addr0, pin, timeout=60, social=social,
freq=i_res['freq'])
if not c_res['persistent']:
dev[2].dump_monitor()
peer = dev[2].get_peer(addr0)
dev[2].global_request("P2P_GROUP_ADD persistent=" + peer['persistent'] + " freq=2412")
- ev = dev[2].wait_global_event(["P2P-GROUP-STARTED","WPA: 4-Way Handshake failed"], timeout=30)
+ ev = dev[2].wait_global_event(["P2P-GROUP-STARTED",
+ "WPA: 4-Way Handshake failed"], timeout=30)
if ev is None:
raise Exception("Timeout on group restart (on client)")
if "P2P-GROUP-STARTED" not in ev:
dev[2].dump_monitor()
peer = dev[2].get_peer(addr0)
dev[2].global_request("P2P_GROUP_ADD persistent=" + peer['persistent'] + " freq=2412")
- ev = dev[2].wait_global_event(["P2P-GROUP-STARTED","WPA: 4-Way Handshake failed"], timeout=30)
+ ev = dev[2].wait_global_event(["P2P-GROUP-STARTED",
+ "WPA: 4-Way Handshake failed"], timeout=30)
if ev is None:
raise Exception("Timeout on group restart (on client)")
if "P2P-GROUP-STARTED" in ev:
dev[1].global_request("P2P_INVITE persistent=" + peer['persistent'] + " peer=" + addr0)
ev = dev[0].wait_global_event(["P2P-GROUP-STARTED"], timeout=30)
dev[0].group_form_result(ev)
- ev = dev[1].wait_global_event(["P2P-GROUP-STARTED","WPA: 4-Way Handshake failed"], timeout=30)
+ ev = dev[1].wait_global_event(["P2P-GROUP-STARTED",
+ "WPA: 4-Way Handshake failed"], timeout=30)
if ev is None:
raise Exception("Timeout on group restart (on client)")
if "P2P-GROUP-STARTED" in ev:
raise Exception("Timeout on invitation")
if "sa=" + addr0 + " persistent=" not in ev:
raise Exception("Unexpected invitation event")
- [event,addr,persistent] = ev.split(' ', 2)
+ [event, addr, persistent] = ev.split(' ', 2)
dev[1].global_request("P2P_GROUP_ADD " + persistent)
ev = dev[1].wait_global_event(["P2P-PERSISTENT-PSK-FAIL"], timeout=30)
if ev is None:
raise Exception("Did not receive PSK failure report")
- [tmp,id] = ev.split('=', 1)
+ [tmp, id] = ev.split('=', 1)
ev = dev[1].wait_global_event(["P2P-GROUP-REMOVED"], timeout=10)
if ev is None:
raise Exception("Group removal event timed out")
dev[1].p2p_stop_find()
# Verify that group re-invocation goes through
- ev = dev[1].wait_global_event([ "P2P-GROUP-STARTED",
- "P2P-GROUP-FORMATION-FAILURE" ],
+ ev = dev[1].wait_global_event(["P2P-GROUP-STARTED",
+ "P2P-GROUP-FORMATION-FAILURE"],
timeout=20)
if ev is None:
raise Exception("Group start event timed out")
raise Exception("Group re-invocation failed")
dev[0].group_form_result(ev)
- ev = dev[0].wait_global_event([ "P2P-GROUP-STARTED" ], timeout=5)
+ ev = dev[0].wait_global_event(["P2P-GROUP-STARTED"], timeout=5)
if ev is None:
raise Exception("Group start event timed out on GO")
dev[0].group_form_result(ev)
@remote_compatible
def test_persistent_group_profile_add(dev):
"""Create a P2P persistent group with ADD_NETWORK"""
- passphrase="passphrase here"
+ passphrase = "passphrase here"
id = dev[0].p2pdev_add_network()
dev[0].p2pdev_set_network_quoted(id, "ssid", "DIRECT-ab")
dev[0].p2pdev_set_network_quoted(id, "psk", passphrase)
def test_p2p_service_discovery(dev):
"""P2P service discovery"""
addr0 = dev[0].p2p_dev_addr()
- for dst in [ "00:00:00:00:00:00", addr0 ]:
+ for dst in ["00:00:00:00:00:00", addr0]:
ev = run_sd(dev, dst, "02000001")
if "0b5f6166706f766572746370c00c000c01" not in ev:
raise Exception("Unexpected service discovery response contents (Bonjour)")
if "496e7465726e6574" not in ev:
raise Exception("Unexpected service discovery response contents (UPnP)")
- for req in [ "foo 02000001",
- addr0,
- addr0 + " upnp qq urn:schemas-upnp-org:device:InternetGatewayDevice:1",
- addr0 + " upnp 10",
- addr0 + " 123",
- addr0 + " qq" ]:
+ for req in ["foo 02000001",
+ addr0,
+ addr0 + " upnp qq urn:schemas-upnp-org:device:InternetGatewayDevice:1",
+ addr0 + " upnp 10",
+ addr0 + " 123",
+ addr0 + " qq"]:
if "FAIL" not in dev[1].global_request("P2P_SERV_DISC_REQ " + req):
raise Exception("Invalid P2P_SERV_DISC_REQ accepted: " + req)
def test_p2p_service_discovery2(dev):
"""P2P service discovery with one peer having no services"""
dev[2].p2p_listen()
- for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]:
+ for dst in ["00:00:00:00:00:00", dev[0].p2p_dev_addr()]:
ev = run_sd(dev, dst, "02000001")
if "0b5f6166706f766572746370c00c000c01" not in ev:
raise Exception("Unexpected service discovery response contents (Bonjour)")
def test_p2p_service_discovery3(dev):
"""P2P service discovery for Bonjour with one peer having no services"""
dev[2].p2p_listen()
- for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]:
+ for dst in ["00:00:00:00:00:00", dev[0].p2p_dev_addr()]:
ev = run_sd(dev, dst, "02000101")
if "0b5f6166706f766572746370c00c000c01" not in ev:
raise Exception("Unexpected service discovery response contents (Bonjour)")
def test_p2p_service_discovery4(dev):
"""P2P service discovery for UPnP with one peer having no services"""
dev[2].p2p_listen()
- for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]:
+ for dst in ["00:00:00:00:00:00", dev[0].p2p_dev_addr()]:
ev = run_sd(dev, dst, "02000201")
if "496e7465726e6574" not in ev:
raise Exception("Unexpected service discovery response contents (UPnP)")
@remote_compatible
def test_p2p_service_discovery_multiple_queries(dev):
"""P2P service discovery with multiple queries"""
- for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]:
+ for dst in ["00:00:00:00:00:00", dev[0].p2p_dev_addr()]:
ev = run_sd(dev, dst, "02000201", query2="02000101")
if "0b5f6166706f766572746370c00c000c01" not in ev[0] + ev[1]:
raise Exception("Unexpected service discovery response contents (Bonjour)")
def test_p2p_service_discovery_multiple_queries2(dev):
"""P2P service discovery with multiple queries with one peer having no services"""
dev[2].p2p_listen()
- for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]:
+ for dst in ["00:00:00:00:00:00", dev[0].p2p_dev_addr()]:
ev = run_sd(dev, dst, "02000201", query2="02000101")
if "0b5f6166706f766572746370c00c000c01" not in ev[0] + ev[1]:
raise Exception("Unexpected service discovery response contents (Bonjour)")
def test_p2p_service_discovery_fragmentation(dev):
"""P2P service discovery with fragmentation"""
- for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]:
+ for dst in ["00:00:00:00:00:00", dev[0].p2p_dev_addr()]:
ev = run_sd(dev, dst, "02000001", fragment=True)
if "long response" not in ev:
if "0b5f6166706f766572746370c00c000c01" not in ev:
if ver == ver2:
raise Exception("Service list version did not change")
- for cmd in [ "%s%s%s%s" % (arg[2], arg[3], arg[4], resp),
- "%s %s %s %s" % ("0", arg[3], arg[4], resp),
- "%s %s %s %s" % (arg[2], "foo", arg[4], resp),
- "%s %s%s%s" % (arg[2], arg[3], arg[4], resp),
- "%s %s %s%s" % (arg[2], arg[3], arg[4], resp),
- "%s %s %s %s" % (arg[2], arg[3], arg[4], "12345"),
- "%s %s %s %s" % (arg[2], arg[3], arg[4], "qq") ]:
+ for cmd in ["%s%s%s%s" % (arg[2], arg[3], arg[4], resp),
+ "%s %s %s %s" % ("0", arg[3], arg[4], resp),
+ "%s %s %s %s" % (arg[2], "foo", arg[4], resp),
+ "%s %s%s%s" % (arg[2], arg[3], arg[4], resp),
+ "%s %s %s%s" % (arg[2], arg[3], arg[4], resp),
+ "%s %s %s %s" % (arg[2], arg[3], arg[4], "12345"),
+ "%s %s %s %s" % (arg[2], arg[3], arg[4], "qq")]:
if "FAIL" not in dev[0].global_request("P2P_SERV_DISC_RESP " + cmd):
raise Exception("Invalid P2P_SERV_DISC_RESP accepted: " + cmd)
@remote_compatible
def test_p2p_service_discovery_invalid_commands(dev):
"""P2P service discovery invalid commands"""
- for cmd in [ "bonjour",
- "bonjour 12",
- "bonjour 123 12",
- "bonjour qq 12",
- "bonjour 12 123",
- "bonjour 12 qq",
- "upnp 10",
- "upnp qq uuid:",
- "foo bar" ]:
+ for cmd in ["bonjour",
+ "bonjour 12",
+ "bonjour 123 12",
+ "bonjour qq 12",
+ "bonjour 12 123",
+ "bonjour 12 qq",
+ "upnp 10",
+ "upnp qq uuid:",
+ "foo bar"]:
if "FAIL" not in dev[0].global_request("P2P_SERVICE_ADD " + cmd):
raise Exception("Invalid P2P_SERVICE_ADD accepted: " + cmd)
- for cmd in [ "bonjour",
- "bonjour 123",
- "bonjour qq",
- "upnp 10",
- "upnp ",
- "upnp qq uuid:",
- "foo bar" ]:
+ for cmd in ["bonjour",
+ "bonjour 123",
+ "bonjour qq",
+ "upnp 10",
+ "upnp ",
+ "upnp qq uuid:",
+ "foo bar"]:
if "FAIL" not in dev[0].global_request("P2P_SERVICE_DEL " + cmd):
raise Exception("Invalid P2P_SERVICE_DEL accepted: " + cmd)
def test_p2p_set(dev):
"""P2P_SET commands"""
- for cmd in [ "",
- "foo bar",
- "noa 1",
- "noa 1,2",
- "noa 1,2,3",
- "noa -1,0,0",
- "noa 256,0,0",
- "noa 0,-1,0",
- "noa 0,0,-1",
- "noa 0,0,1",
- "noa 255,10,20",
- "ps 2",
- "oppps 1",
- "ctwindow 1",
- "conc_pref foo",
- "peer_filter foo",
- "client_apsd 0",
- "client_apsd 0,0",
- "client_apsd 0,0,0",
- "disc_int 1",
- "disc_int 1 2",
- "disc_int 2 1 10",
- "disc_int -1 0 10",
- "disc_int 0 -1 10",
- "ssid_postfix 123456789012345678901234" ]:
+ for cmd in ["",
+ "foo bar",
+ "noa 1",
+ "noa 1,2",
+ "noa 1,2,3",
+ "noa -1,0,0",
+ "noa 256,0,0",
+ "noa 0,-1,0",
+ "noa 0,0,-1",
+ "noa 0,0,1",
+ "noa 255,10,20",
+ "ps 2",
+ "oppps 1",
+ "ctwindow 1",
+ "conc_pref foo",
+ "peer_filter foo",
+ "client_apsd 0",
+ "client_apsd 0,0",
+ "client_apsd 0,0,0",
+ "disc_int 1",
+ "disc_int 1 2",
+ "disc_int 2 1 10",
+ "disc_int -1 0 10",
+ "disc_int 0 -1 10",
+ "ssid_postfix 123456789012345678901234"]:
if "FAIL" not in dev[0].request("P2P_SET " + cmd):
raise Exception("Invalid P2P_SET accepted: " + cmd)
dev[0].request("P2P_SET ps 1")
if r_dev.p2p_dev_addr() not in ev1:
raise Exception("Unexpected peer")
ev_list = []
- for i in range (0, adv_num):
+ for i in range(0, adv_num):
ev1 = i_dev.wait_global_event(["P2P-SERV-ASP-RESP"], timeout=10)
if ev1 is None:
raise Exception("Failed to receive Service Discovery Response")
break
dev[1].p2p_stop_find()
- for test in [ ("seek=org.wi-fi.wfds.display.TX",
- "asp_svc=org.wi-fi.wfds.display.tx"),
- ("seek=foo seek=org.wi-fi.wfds.display.tx seek=bar",
- "asp_svc=org.wi-fi.wfds.display.tx"),
- ("seek=1 seek=2 seek=3 seek=org.wi-fi.wfds.display.tx seek=4 seek=5 seek=6",
- "asp_svc=org.wi-fi.wfds.display.tx"),
- ("seek=not-found", None),
- ("seek=org.wi-fi.wfds", "asp_svc=org.wi-fi.wfds")]:
+ for test in [("seek=org.wi-fi.wfds.display.TX",
+ "asp_svc=org.wi-fi.wfds.display.tx"),
+ ("seek=foo seek=org.wi-fi.wfds.display.tx seek=bar",
+ "asp_svc=org.wi-fi.wfds.display.tx"),
+ ("seek=1 seek=2 seek=3 seek=org.wi-fi.wfds.display.tx seek=4 seek=5 seek=6",
+ "asp_svc=org.wi-fi.wfds.display.tx"),
+ ("seek=not-found", None),
+ ("seek=org.wi-fi.wfds", "asp_svc=org.wi-fi.wfds")]:
dev[2].global_request("P2P_FIND 10 type=social " + test[0])
if test[1] is None:
ev = dev[2].wait_global_event(["P2P-DEVICE-FOUND"], timeout=1)
long3 = 'org.example.0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.c'
long4 = 'org.example.0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.d'
long5 = 'org.example.0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.e'
- for name in [ long1, long2, long3, long4, long5 ]:
+ for name in [long1, long2, long3, long4, long5]:
p2ps_advertise(r_dev=dev[0], r_role='1',
svc_name=name,
srv_info='I can do stuff')
events = events + ev
dev[1].p2p_stop_find()
dev[1].dump_monitor()
- for name in [ long2, long3, long4, long5 ]:
+ for name in [long2, long3, long4, long5]:
if name not in events:
raise Exception("Service missing from peer events")
try:
hapd = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-2.4ghz', "channel": '7' })
+ {"ssid": 'bss-2.4ghz', "channel": '7'})
dev[1].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2442")
(grp_ifname0, grp_ifname1, ifnames) = p2ps_connect_p2ps_method(dev, keep_group=True, join_extra=" freq=2442")
try:
hapd = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-2.4ghz', "channel": '6' })
+ {"ssid": 'bss-2.4ghz', "channel": '6'})
dev[2].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2437")
dev[1].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2437")
- tmpdev = [ dev[2], dev[1] ]
+ tmpdev = [dev[2], dev[1]]
(grp_ifname0, grp_ifname1, ifnames) = p2ps_connect_p2ps_method(tmpdev, keep_group=True, join_extra=" freq=2437", flush=False)
freq = dev[2].get_group_status_field('freq')
try:
hapd1 = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-channel-3', "channel": '3' })
+ {"ssid": 'bss-channel-3', "channel": '3'})
hapd2 = hostapd.add_ap(apdev[1],
- { "ssid": 'bss-channel-10', "channel": '10' })
+ {"ssid": 'bss-channel-10', "channel": '10'})
dev[0].connect("bss-channel-3", key_mgmt="NONE", scan_freq="2422")
dev[1].connect("bss-channel-10", key_mgmt="NONE", scan_freq="2457")
try:
hapd1 = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-channel-3', "channel": '3' })
+ {"ssid": 'bss-channel-3', "channel": '3'})
hapd2 = hostapd.add_ap(apdev[1],
- { "ssid": 'bss-channel-10', "channel": '10' })
+ {"ssid": 'bss-channel-10', "channel": '10'})
wpas.connect("bss-channel-3", key_mgmt="NONE", scan_freq="2422")
dev[1].connect("bss-channel-10", key_mgmt="NONE", scan_freq="2457")
- (grp_ifname0, grp_ifname1, ifnames) = p2ps_connect_p2ps_method([ wpas, dev[1] ], keep_group=True)
+ (grp_ifname0, grp_ifname1, ifnames) = p2ps_connect_p2ps_method([wpas, dev[1]], keep_group=True)
freq = wpas.get_group_status_field('freq')
if freq != '2422' and freq != '2457':
try:
dev[0].global_request("P2P_SET disallow_freq 2437")
hapd = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-channel-6', "channel": '6' })
+ {"ssid": 'bss-channel-6', "channel": '6'})
dev[1].connect("bss-channel-6", key_mgmt="NONE", scan_freq="2437")
try:
dev[0].global_request("P2P_SET disallow_freq 2437")
hapd1 = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-channel-6', "channel": '6' })
+ {"ssid": 'bss-channel-6', "channel": '6'})
wpas.connect("bss-channel-6", key_mgmt="NONE", scan_freq="2437")
- tmpdev = [ dev[0], wpas ]
+ tmpdev = [dev[0], wpas]
(grp_ifname0, grp_ifname1, ifnames) = p2ps_connect_p2ps_method(tmpdev, keep_group=True)
freq = dev[0].get_group_status_field('freq')
dev[1].global_request("P2P_SET listen_channel 11")
try:
hapd = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-channel-11', "channel": '11' })
+ {"ssid": 'bss-channel-11', "channel": '11'})
dev[2].connect("bss-channel-11", key_mgmt="NONE", scan_freq="2462")
try:
hapd = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-channel-2', "channel": '2' })
+ {"ssid": 'bss-channel-2', "channel": '2'})
dev[0].connect("bss-channel-2", key_mgmt="NONE", scan_freq="2417")
try:
hapd = hostapd.add_ap(apdev[0],
- { "ssid": 'bss-channel-6', "channel": '6' })
+ {"ssid": 'bss-channel-6', "channel": '6'})
wpas.global_request("P2P_SET listen_channel 1")
wpas.connect("bss-channel-6", key_mgmt="NONE", scan_freq="2437")
pmksa = dev[0].get_pmksa(bssid)
if pmksa is None:
raise Exception("No PMKSA cache entry created")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
eap="GPSK", identity="gpsk-user-session-timeout",
password="abcdefghijklmnop0123456789abcdef",
scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
dev[0].request("DISCONNECT")
bssid2 = apdev[1]['bssid']
logger.info("Roam to AP2")
- for sta in [ dev[1], dev[0], dev[2], wpas ]:
+ for sta in [dev[1], dev[0], dev[2], wpas]:
sta.dump_monitor()
sta.scan_for_bss(bssid2, freq="2412")
if "OK" not in sta.request("ROAM " + bssid2):
sta.dump_monitor()
logger.info("Roam back to AP1")
- for sta in [ dev[1], wpas, dev[0], dev[2] ]:
+ for sta in [dev[1], wpas, dev[0], dev[2]]:
sta.dump_monitor()
sta.scan(freq="2412")
sta.dump_monitor()
time.sleep(4)
logger.info("Roam back to AP2")
- for sta in [ dev[1], wpas, dev[0], dev[2] ]:
+ for sta in [dev[1], wpas, dev[0], dev[2]]:
sta.dump_monitor()
sta.scan(freq="2412")
sta.dump_monitor()
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add("wlan5")
wpas.flush_scan_cache()
- for sta in [ dev[0], dev[1], dev[2], wpas ]:
+ for sta in [dev[0], dev[1], dev[2], wpas]:
sta.connect("test-pmksa-cache", proto="RSN", key_mgmt="WPA-EAP",
eap="GPSK", identity="gpsk user",
password="abcdefghijklmnop0123456789abcdef", okc=True,
bssid2 = apdev[1]['bssid']
logger.info("Roam to AP2")
- for sta in [ dev[2], dev[0], wpas, dev[1] ]:
+ for sta in [dev[2], dev[0], wpas, dev[1]]:
sta.dump_monitor()
sta.scan_for_bss(bssid2, freq="2412")
if "OK" not in sta.request("ROAM " + bssid2):
sta.dump_monitor()
logger.info("Roam back to AP1")
- for sta in [ dev[0], dev[1], dev[2], wpas ]:
+ for sta in [dev[0], dev[1], dev[2], wpas]:
sta.dump_monitor()
sta.scan_for_bss(bssid, freq="2412")
sta.request("ROAM " + bssid)
hapd = hostapd.add_ap(apdev[1], params)
bssid1 = apdev[1]['bssid']
- tests = [ (1, "rsn_preauth_receive"),
- (2, "rsn_preauth_receive"),
- (1, "rsn_preauth_send"),
- (1, "wpa_auth_pmksa_add_preauth;rsn_preauth_finished") ]
+ tests = [(1, "rsn_preauth_receive"),
+ (2, "rsn_preauth_receive"),
+ (1, "rsn_preauth_send"),
+ (1, "wpa_auth_pmksa_add_preauth;rsn_preauth_finished")]
for test in tests:
hapd.request("DEAUTHENTICATE ff:ff:ff:ff:ff:ff")
with alloc_fail(hapd, test[0], test[1]):
proto = b"\x88\xc7"
tests = []
# RSN: too short pre-auth packet (len=14)
- tests += [ _bssid + foreign + proto ]
+ tests += [_bssid + foreign + proto]
# Not EAPOL-Start
- tests += [ _bssid + foreign + proto + struct.pack('>BBH', 0, 0, 0) ]
+ tests += [_bssid + foreign + proto + struct.pack('>BBH', 0, 0, 0)]
# RSN: pre-auth for foreign address 02:03:04:05:06:07
- tests += [ foreign + foreign + proto + struct.pack('>BBH', 0, 0, 0) ]
+ tests += [foreign + foreign + proto + struct.pack('>BBH', 0, 0, 0)]
# RSN: pre-auth for already association STA 02:00:00:00:00:00
- tests += [ _bssid + _addr + proto + struct.pack('>BBH', 0, 0, 0) ]
+ tests += [_bssid + _addr + proto + struct.pack('>BBH', 0, 0, 0)]
# New STA
- tests += [ _bssid + foreign + proto + struct.pack('>BBH', 0, 1, 1) ]
+ tests += [_bssid + foreign + proto + struct.pack('>BBH', 0, 1, 1)]
# IEEE 802.1X: received EAPOL-Start from STA
- tests += [ _bssid + foreign + proto + struct.pack('>BBH', 0, 1, 0) ]
+ tests += [_bssid + foreign + proto + struct.pack('>BBH', 0, 1, 0)]
# frame too short for this IEEE 802.1X packet
- tests += [ _bssid + foreign + proto + struct.pack('>BBH', 0, 1, 1) ]
+ tests += [_bssid + foreign + proto + struct.pack('>BBH', 0, 1, 1)]
# EAPOL-Key - Dropped key data from unauthorized Supplicant
- tests += [ _bssid + foreign + proto + struct.pack('>BBH', 2, 3, 0) ]
+ tests += [_bssid + foreign + proto + struct.pack('>BBH', 2, 3, 0)]
# EAPOL-Encapsulated-ASF-Alert
- tests += [ _bssid + foreign + proto + struct.pack('>BBH', 2, 4, 0) ]
+ tests += [_bssid + foreign + proto + struct.pack('>BBH', 2, 4, 0)]
# unknown IEEE 802.1X packet type
- tests += [ _bssid + foreign + proto + struct.pack('>BBH', 2, 255, 0) ]
+ tests += [_bssid + foreign + proto + struct.pack('>BBH', 2, 255, 0)]
for t in tests:
sock.send(t)
sock.send(_bssid + foreign2 + proto + struct.pack('>BBH', 2, 1, 0))
hapd.request("DISABLE")
- tests = [ (1, "=rsn_preauth_iface_add"),
- (2, "=rsn_preauth_iface_add"),
- (1, "l2_packet_init;rsn_preauth_iface_add"),
- (1, "rsn_preauth_iface_init"),
- (1, "rsn_preauth_iface_init") ]
- for count,func in tests:
+ tests = [(1, "=rsn_preauth_iface_add"),
+ (2, "=rsn_preauth_iface_add"),
+ (1, "l2_packet_init;rsn_preauth_iface_add"),
+ (1, "rsn_preauth_iface_init"),
+ (1, "rsn_preauth_iface_init")]
+ for count, func in tests:
with alloc_fail(hapd, count, func):
if "FAIL" not in hapd.request("ENABLE"):
raise Exception("ENABLE succeeded unexpectedly")
def test_ext_radio_work_disconnect_connect(dev, apdev):
"""External radio work and DISCONNECT clearing connection attempt"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].scan_for_bss(hapd.own_addr(), freq=2412)
# Start a radio work to block connection attempt
params['acct_server_addr'] = "127.0.0.1"
params['acct_server_port'] = "1813"
params['acct_server_shared_secret'] = "radius"
- params['radius_auth_req_attr'] = [ "126:s:Operator", "77:s:testing",
- "62:d:1" ]
- params['radius_acct_req_attr'] = [ "126:s:Operator", "62:d:1",
- "77:s:testing" ]
+ params['radius_auth_req_attr'] = ["126:s:Operator", "77:s:testing",
+ "62:d:1"]
+ params['radius_acct_req_attr'] = ["126:s:Operator", "62:d:1",
+ "77:s:testing"]
hapd = hostapd.add_ap(apdev[0], params)
connect(dev[0], "radius-acct")
dev[1].connect("radius-acct", key_mgmt="WPA-EAP", scan_freq="2412",
dev[1].connect("radius-acct", key_mgmt="WPA-EAP", scan_freq="2412",
eap="PAX", identity="test-class",
password_hex="0123456789abcdef0123456789abcdef")
- for d in [ dev[0], dev[1] ]:
+ for d in [dev[0], dev[1]]:
d.request("REASSOCIATE")
d.wait_connected(timeout=15, error="Reassociation timed out")
stderr=open('/dev/null', 'w'))
def _test_radius_acct_ipaddr(dev, apdev):
- params = { "ssid": "radius-acct-open",
- 'acct_server_addr': "127.0.0.1",
- 'acct_server_port': "1813",
- 'acct_server_shared_secret': "radius",
- 'proxy_arp': '1',
- 'ap_isolate': '1',
- 'bridge': 'ap-br0' }
+ params = {"ssid": "radius-acct-open",
+ 'acct_server_addr': "127.0.0.1",
+ 'acct_server_port': "1813",
+ 'acct_server_shared_secret': "radius",
+ 'proxy_arp': '1',
+ 'ap_isolate': '1',
+ 'bridge': 'ap-br0'}
hapd = hostapd.add_ap(apdev[0], params, no_enable=True)
try:
hapd.enable()
# request attributes
req.AddAttribute("Message-Authenticator", 16*b"\x00")
attrs = b''
- for code,datalst in sorted(req.items()):
+ for code, datalst in sorted(req.items()):
for data in datalst:
attrs += req._PktEncodeAttribute(code, data)
def test_radius_mppe_failure(dev, apdev):
"""RADIUS failure when adding MPPE keys"""
- params = { "ssid": "as", "beacon_int": "2000",
- "radius_server_clients": "auth_serv/radius_clients.conf",
- "radius_server_auth_port": '18127',
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/ca.pem",
- "server_cert": "auth_serv/server.pem",
- "private_key": "auth_serv/server.key" }
+ params = {"ssid": "as", "beacon_int": "2000",
+ "radius_server_clients": "auth_serv/radius_clients.conf",
+ "radius_server_auth_port": '18127',
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/ca.pem",
+ "server_cert": "auth_serv/server.pem",
+ "private_key": "auth_serv/server.key"}
authsrv = hostapd.add_ap(apdev[1], params)
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
"""RADIUS Accounting and failure to add attributes"""
# Connection goes through, but Accounting-Request cannot be sent out due to
# NAS-Identifier being too long to fit into a RADIUS attribute.
- params = { "ssid": "radius-acct-open",
- 'acct_server_addr': "127.0.0.1",
- 'acct_server_port': "1813",
- 'acct_server_shared_secret': "radius",
- 'nas_identifier': 255*'A' }
+ params = {"ssid": "radius-acct-open",
+ 'acct_server_addr': "127.0.0.1",
+ 'acct_server_port': "1813",
+ 'acct_server_shared_secret': "radius",
+ 'nas_identifier': 255*'A'}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("radius-acct-open", key_mgmt="NONE", scan_freq="2412")
def test_radius_acct_failure_oom(dev, apdev):
"""RADIUS Accounting and failure to add attributes due to OOM"""
- params = { "ssid": "radius-acct-open",
- 'acct_server_addr': "127.0.0.1",
- 'acct_server_port': "1813",
- 'acct_server_shared_secret': "radius",
- 'radius_acct_interim_interval': "1",
- 'nas_identifier': 250*'A',
- 'radius_acct_req_attr': [ "126:s:" + 250*'B',
- "77:s:" + 250*'C',
- "127:s:" + 250*'D',
- "181:s:" + 250*'E' ] }
+ params = {"ssid": "radius-acct-open",
+ 'acct_server_addr': "127.0.0.1",
+ 'acct_server_port': "1813",
+ 'acct_server_shared_secret': "radius",
+ 'radius_acct_interim_interval': "1",
+ 'nas_identifier': 250*'A',
+ 'radius_acct_req_attr': ["126:s:" + 250*'B',
+ "77:s:" + 250*'C',
+ "127:s:" + 250*'D',
+ "181:s:" + 250*'E']}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[1].request("REMOVE_NETWORK all")
dev[1].wait_disconnected()
- tests = [ (1, "radius_msg_add_attr;?radius_msg_add_attr_int32;=accounting_msg"),
- (2, "radius_msg_add_attr;accounting_msg"),
- (3, "radius_msg_add_attr;accounting_msg") ]
+ tests = [(1, "radius_msg_add_attr;?radius_msg_add_attr_int32;=accounting_msg"),
+ (2, "radius_msg_add_attr;accounting_msg"),
+ (3, "radius_msg_add_attr;accounting_msg")]
for count, func in tests:
with fail_test(hapd, count, func):
dev[0].connect("radius-acct-open", key_mgmt="NONE",
params['acct_server_port'] = "1813"
params['acct_server_shared_secret'] = "radius"
params['radius_acct_interim_interval'] = "1"
- params['nas_identifier'] = 250*'A'
- params['radius_acct_req_attr'] = [ "126:s:" + 250*'B',
- "77:s:" + 250*'C',
- "127:s:" + 250*'D',
- "181:s:" + 250*'E' ]
+ params['nas_identifier'] = 250*'A'
+ params['radius_acct_req_attr'] = ["126:s:" + 250*'B',
+ "77:s:" + 250*'C',
+ "127:s:" + 250*'D',
+ "181:s:" + 250*'E']
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
def test_radius_acct_failure_sta_data(dev, apdev):
"""RADIUS Accounting and failure to get STA data"""
- params = { "ssid": "radius-acct-open",
- 'acct_server_addr': "127.0.0.1",
- 'acct_server_port': "1813",
- 'acct_server_shared_secret': "radius" }
+ params = {"ssid": "radius-acct-open",
+ 'acct_server_addr': "127.0.0.1",
+ 'acct_server_port': "1813",
+ 'acct_server_shared_secret': "radius"}
hapd = hostapd.add_ap(apdev[0], params)
with fail_test(hapd, 1, "accounting_sta_update_stats"):
"""rfkill block/unblock during open mode connection"""
rfk = get_rfkill(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
try:
logger.info("rfkill block")
def test_rfkill_hostapd(dev, apdev):
"""rfkill block/unblock during and prior to hostapd operations"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
rfk = get_rfkill(hapd)
hglobal.flush()
hglobal.remove(apdev[0]['ifname'])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open2" },
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open2"},
no_enable=True)
if "FAIL" not in hapd.request("ENABLE"):
raise Exception("ENABLE succeeded unexpectedly (rfkill)")
if rrm & 0x8 != 0x8:
raise HwsimSkip("Required RRM capabilities are not supported")
-nr="00112233445500000000510107"
-lci="01000800101298c0b512926666f6c2f1001c00004104050000c00012"
-civic="01000b0011223344556677889900998877665544332211aabbccddeeff"
+nr = "00112233445500000000510107"
+lci = "01000800101298c0b512926666f6c2f1001c00004104050000c00012"
+civic = "01000b0011223344556677889900998877665544332211aabbccddeeff"
def check_nr_results(dev, bssids=None, lci=False, civic=False):
if bssids is None:
- ev = dev.wait_event(["RRM-NEIGHBOR-REP-REQUEST-FAILED" ], timeout=10)
+ ev = dev.wait_event(["RRM-NEIGHBOR-REP-REQUEST-FAILED"], timeout=10)
if ev is None:
raise Exception("RRM neighbor report failure not received")
return
def test_rrm_neighbor_db(dev, apdev):
"""hostapd ctrl_iface SET_NEIGHBOR"""
- params = { "ssid": "test", "rrm_neighbor_report": "1" }
+ params = {"ssid": "test", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
# Bad BSSID
"""wpa_supplicant ctrl_iface NEIGHBOR_REP_REQUEST"""
check_rrm_support(dev[0])
- nr1="00112233445500000000510107"
- nr2="00112233445600000000510107"
- nr3="dd112233445500000000510107"
+ nr1 = "00112233445500000000510107"
+ nr2 = "00112233445600000000510107"
+ nr3 = "dd112233445500000000510107"
- params = { "ssid": "test" }
+ params = {"ssid": "test"}
hostapd.add_ap(apdev[0]['ifname'], params)
- params = { "ssid": "test2", "rrm_neighbor_report": "1" }
+ params = {"ssid": "test2", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[1]['ifname'], params)
bssid1 = apdev[1]['bssid']
"""hostapd neighbor report OOM"""
check_rrm_support(dev[0])
- nr1="00112233445500000000510107"
- nr2="00112233445600000000510107"
- nr3="dd112233445500000000510107"
+ nr1 = "00112233445500000000510107"
+ nr2 = "00112233445600000000510107"
+ nr3 = "dd112233445500000000510107"
- params = { "ssid": "test", "rrm_neighbor_report": "1" }
+ params = {"ssid": "test", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
dev[0].connect("test", key_mgmt="NONE", scan_freq="2412")
"""hostapd lci request"""
check_rrm_support(dev[0])
- params = { "ssid": "rrm", "rrm_neighbor_report": "1" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
# station not specified
"""hostapd lci request timeout"""
check_rrm_support(dev[0])
- params = { "ssid": "rrm", "rrm_neighbor_report": "1" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
dev[0].request("SET LCI " + lci)
"""LCI report generation OOM"""
check_rrm_support(dev[0])
- params = { "ssid": "rrm", "rrm_neighbor_report": "1" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
dev[0].request("SET LCI " + lci)
"""LCI report generation AP OOM and failure"""
check_rrm_support(dev[0])
- params = { "ssid": "rrm", "rrm_neighbor_report": "1" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
dev[0].request("SET LCI " + lci)
"""LCI report generation and os_get_reltime() failure"""
check_rrm_support(dev[0])
- params = { "ssid": "rrm", "rrm_neighbor_report": "1" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
dev[0].request("SET LCI " + lci)
"""wpa_supplicant ctrl_iface NEIGHBOR_REP_REQUEST and hostapd config"""
check_rrm_support(dev[0])
- params = { "ssid": "test2", "rrm_neighbor_report": "1",
- "stationary_ap": "1", "lci": lci, "civic": civic }
+ params = {"ssid": "test2", "rrm_neighbor_report": "1",
+ "stationary_ap": "1", "lci": lci, "civic": civic}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = apdev[0]['bssid']
"""wpa_supplicant behavior on NEIGHBOR_REP_REQUEST response timeout"""
check_rrm_support(dev[0])
- params = { "ssid": "test2", "rrm_neighbor_report": "1",
- "stationary_ap": "1", "lci": lci, "civic": civic }
+ params = {"ssid": "test2", "rrm_neighbor_report": "1",
+ "stationary_ap": "1", "lci": lci, "civic": civic}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
dev[0].connect("test2", key_mgmt="NONE", scan_freq="2412")
"""wpa_supplicant ctrl_iface NEIGHBOR_REP_REQUEST OOM"""
check_rrm_support(dev[0])
- params = { "ssid": "test2", "rrm_neighbor_report": "1",
- "stationary_ap": "1", "lci": lci, "civic": civic }
+ params = {"ssid": "test2", "rrm_neighbor_report": "1",
+ "stationary_ap": "1", "lci": lci, "civic": civic}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
dev[0].connect("test2", key_mgmt="NONE", scan_freq="2412")
"""wpa_supplicant behavior on disconnection during NEIGHBOR_REP_REQUEST"""
check_rrm_support(dev[0])
- params = { "ssid": "test2", "rrm_neighbor_report": "1",
- "stationary_ap": "1", "lci": lci, "civic": civic }
+ params = {"ssid": "test2", "rrm_neighbor_report": "1",
+ "stationary_ap": "1", "lci": lci, "civic": civic}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
if "FAIL" not in dev[0].request("NEIGHBOR_REP_REQUEST"):
"""NEIGHBOR_REP_REQUEST for AP not supporting neighbor report"""
check_rrm_support(dev[0])
- params = { "ssid": "test2", "rrm_beacon_report": "1" }
+ params = {"ssid": "test2", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
dev[0].connect("test2", key_mgmt="NONE", scan_freq="2412")
"""wpa_supplicant and concurrent NEIGHBOR_REP_REQUEST commands"""
check_rrm_support(dev[0])
- params = { "ssid": "test2", "rrm_neighbor_report": "1",
- "stationary_ap": "1", "lci": lci, "civic": civic }
+ params = {"ssid": "test2", "rrm_neighbor_report": "1",
+ "stationary_ap": "1", "lci": lci, "civic": civic}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
dev[0].connect("test2", key_mgmt="NONE", scan_freq="2412")
dev[1].request("VENDOR_ELEM_REMOVE 13 *")
def run_rrm_ftm_range_req(dev, apdev):
- params = { "ssid": "rrm", "rrm_neighbor_report": "1" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
dev[1].request("VENDOR_ELEM_REMOVE 13 *")
def run_rrm_ftm_range_req_timeout(dev, apdev):
- params = { "ssid": "rrm", "rrm_neighbor_report": "1" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
dev[1].request("VENDOR_ELEM_REMOVE 13 *")
def run_rrm_ftm_range_req_failure(dev, apdev):
- params = { "ssid": "rrm", "rrm_neighbor_report": "1" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
dev[0].request("SET ftm_responder 0")
def _test_rrm_ftm_capa_indication(dev, apdev):
- params = { "ssid": "ftm",
- "ftm_responder": "1",
- "ftm_initiator": "1", }
+ params = {"ssid": "ftm",
+ "ftm_responder": "1",
+ "ftm_initiator": "1",}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
if "OK" not in dev[0].request("SET ftm_initiator 1"):
self.frame_body_fragment_id = None
self.last_indication = None
while len(report) >= 2:
- eid,elen = struct.unpack('BB', report[0:2])
+ eid, elen = struct.unpack('BB', report[0:2])
report = report[2:]
if len(report) < elen:
raise Exception("Invalid subelement in beacon report")
@remote_compatible
def test_rrm_beacon_req_table(dev, apdev):
"""Beacon request - beacon table mode"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another"})
- tests = [ "REQ_BEACON ",
- "REQ_BEACON q",
- "REQ_BEACON 11:22:33:44:55:66 1",
- "REQ_BEACON 11:22:33:44:55:66 1q",
- "REQ_BEACON 11:22:33:44:55:66 11223344556677889900aabbccddeeff" ]
+ tests = ["REQ_BEACON ",
+ "REQ_BEACON q",
+ "REQ_BEACON 11:22:33:44:55:66 1",
+ "REQ_BEACON 11:22:33:44:55:66 1q",
+ "REQ_BEACON 11:22:33:44:55:66 11223344556677889900aabbccddeeff"]
for t in tests:
if "FAIL" not in hapd.request(t):
raise Exception("Invalid command accepted: " + t)
def test_rrm_beacon_req_frame_body_fragmentation(dev, apdev):
"""Beacon request - beacon table mode - frame body fragmentation"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
hapd.set('vendor_elements', ("dd051122330203dd0400137400dd04001374ffdd0511"
def test_rrm_beacon_req_last_frame_indication(dev, apdev):
"""Beacon request - beacon table mode - last frame indication"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_table_detail(dev, apdev):
"""Beacon request - beacon table mode - reporting detail"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_rrm_beacon_req_table_request(dev, apdev):
"""Beacon request - beacon table mode - request element"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_rrm_beacon_req_table_request_oom(dev, apdev):
"""Beacon request - beacon table mode - request element OOM"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_rrm_beacon_req_table_bssid(dev, apdev):
"""Beacon request - beacon table mode - specific BSSID"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_table_ssid(dev, apdev):
"""Beacon request - beacon table mode - specific SSID"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_table_info(dev, apdev):
"""Beacon request - beacon table mode - Reporting Information subelement"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_rrm_beacon_req_table_unknown_subelem(dev, apdev):
"""Beacon request - beacon table mode - unknown subelement"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_rrm_beacon_req_table_truncated_subelem(dev, apdev):
"""Beacon request - beacon table mode - Truncated subelement"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
clear_scan_cache(apdev[0])
try:
hapd = None
- params = { "ssid": "rrm-vht",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42",
- "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm-vht",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "test-vht40",
- "country_code": "FI",
- "hw_mode": "a",
- "channel": "48",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "ht_capab": "[HT40-]",
- "vht_capab": "",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "0",
- }
+ params = {"ssid": "test-vht40",
+ "country_code": "FI",
+ "hw_mode": "a",
+ "channel": "48",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "ht_capab": "[HT40-]",
+ "vht_capab": "",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "0",
+ }
hapd2 = hostapd.add_ap(apdev[1], params)
dev[0].scan_for_bss(apdev[1]['bssid'], freq=5240)
@remote_compatible
def test_rrm_beacon_req_active(dev, apdev):
"""Beacon request - active scan mode"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another", "channel": "11" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another", "channel": "11"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_active_ignore_old_result(dev, apdev):
"""Beacon request - active scan mode and old scan result"""
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another"})
dev[0].scan_for_bss(apdev[1]['bssid'], freq=2412)
hapd2.disable()
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
start_ap(dev[1])
start_ap(dev[2])
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
params['vendor_elements'] = "dd50" + 80*'aa'
hapd = hostapd.add_ap(apdev[1]['ifname'], params)
@remote_compatible
def test_rrm_beacon_req_active_ap_channels(dev, apdev):
"""Beacon request - active scan mode with AP Channel Report subelement"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another", "channel": "11" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another", "channel": "11"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_passive_ap_channels(dev, apdev):
"""Beacon request - passive scan mode with AP Channel Report subelement"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another", "channel": "11" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another", "channel": "11"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_active_single_channel(dev, apdev):
"""Beacon request - active scan mode with single channel"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another", "channel": "11" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another", "channel": "11"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_active_ap_channels_unknown_opclass(dev, apdev):
"""Beacon request - active scan mode with AP Channel Report subelement and unknown opclass"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another", "channel": "11" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another", "channel": "11"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_active_ap_channel_oom(dev, apdev):
"""Beacon request - AP Channel Report subelement and OOM"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another", "channel": "11" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another", "channel": "11"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_active_scan_fail(dev, apdev):
"""Beacon request - Active scan failure"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_rrm_beacon_req_active_zero_duration(dev, apdev):
"""Beacon request - Action scan and zero duration"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another", "channel": "11" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another", "channel": "11"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_active_fail_random(dev, apdev):
"""Beacon request - active scan mode os_get_random failure"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_passive(dev, apdev):
"""Beacon request - passive scan mode"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "another", "channel": "11" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "another", "channel": "11"})
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_rrm_beacon_req_passive_no_match(dev, apdev):
"""Beacon request - passive scan mode and no matching BSS"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_rrm_beacon_req_passive_no_match_oom(dev, apdev):
"""Beacon request - passive scan mode and no matching BSS (OOM)"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_rrm_beacon_req_active_duration_mandatory(dev, apdev):
"""Beacon request - Action scan and duration mandatory"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("rrm", key_mgmt="NONE", scan_freq="2412")
clear_scan_cache(apdev[0])
try:
hapd = None
- params = { "ssid": "rrm-vht",
- "country_code": "FI",
- 'ieee80211d': '1',
- "hw_mode": "a",
- "channel": "36",
- "ht_capab": "[HT40+]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "1",
- "vht_oper_centr_freq_seg0_idx": "42",
- "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm-vht",
+ "country_code": "FI",
+ 'ieee80211d': '1',
+ "hw_mode": "a",
+ "channel": "36",
+ "ht_capab": "[HT40+]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "1",
+ "vht_oper_centr_freq_seg0_idx": "42",
+ "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=5180)
clear_scan_cache(apdev[0])
try:
hapd = None
- params = { "ssid": "rrm-vht",
- "country_code": "ZA",
- 'ieee80211d': '1',
- "hw_mode": "a",
- "channel": "104",
- "ht_capab": "[HT40-]",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "vht_oper_chwidth": "2",
- "vht_oper_centr_freq_seg0_idx": "114",
- "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm-vht",
+ "country_code": "ZA",
+ 'ieee80211d': '1',
+ "hw_mode": "a",
+ "channel": "104",
+ "ht_capab": "[HT40-]",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "vht_oper_chwidth": "2",
+ "vht_oper_centr_freq_seg0_idx": "114",
+ "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], freq=5520)
dev[1].request("VENDOR_ELEM_REMOVE 13 *")
def run_rrm_beacon_req_ap_errors(dev, apdev):
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
dev[0].scan_for_bss(bssid, freq=2412)
def test_rrm_req_reject_oom(dev, apdev):
"""Radio measurement request - OOM while rejecting a request"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
def test_rrm_req_when_rrm_not_used(dev, apdev):
"""Radio/link measurement request for non-RRM association"""
- params = { "ssid": "rrm" }
+ params = {"ssid": "rrm"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
@remote_compatible
def test_rrm_req_proto(dev, apdev):
"""Radio measurement request - protocol testing"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
tests = []
# "RRM: Ignoring too short radio measurement request"
- tests += [ "0500", "050001", "05000100" ]
+ tests += ["0500", "050001", "05000100"]
# No measurement request element at all
- tests += [ "0500010000" ]
+ tests += ["0500010000"]
# "RRM: Truncated element"
- tests += [ "050001000026" ]
+ tests += ["050001000026"]
# "RRM: Element length too short"
- tests += [ "05000100002600", "0500010000260111", "050001000026021122" ]
+ tests += ["05000100002600", "0500010000260111", "050001000026021122"]
# "RRM: Element length too long"
- tests += [ "05000100002603", "0500010000260311", "050001000026031122" ]
+ tests += ["05000100002603", "0500010000260311", "050001000026031122"]
# "RRM: Enable bit not supported, ignore"
- tests += [ "05000100002603010200" ]
+ tests += ["05000100002603010200"]
# "RRM: Measurement report failed. TX power insertion not supported"
# OR
# "RRM: Link measurement report failed. Request too short"
- tests += [ "0502" ]
+ tests += ["0502"]
# Too short LCI request
- tests += [ "05000100002603010008" ]
+ tests += ["05000100002603010008"]
# Too short neighbor report response
- tests += [ "0505" ]
+ tests += ["0505"]
# Unexpected neighbor report response
- tests += [ "050500", "050501", "050502", "050503", "050504", "050505" ]
+ tests += ["050500", "050501", "050502", "050503", "050504", "050505"]
# Too short beacon request
- tests += [ "05000100002603010005",
- "0500010000260f010005112233445566778899aabbcc" ]
+ tests += ["05000100002603010005",
+ "0500010000260f010005112233445566778899aabbcc"]
# Unknown beacon report mode
- tests += [ "05000100002610010005112233445566778899aabbccdd" ]
+ tests += ["05000100002610010005112233445566778899aabbccdd"]
# "RRM: Expected Measurement Request element, but EID is 0"
- tests += [ "05000100000000" ]
+ tests += ["05000100000000"]
for t in tests:
if "OK" not in dev[0].request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + t):
raise Exception("MGMT_RX_PROCESS failed")
tests = []
# "RRM: Parallel measurements are not supported, reject"
- tests += [ "05000100002603010105" ]
+ tests += ["05000100002603010105"]
# "RRM: Unsupported radio measurement type 254"
- tests += [ "050001000026030100fe" ]
+ tests += ["050001000026030100fe"]
# Reject LCI request
- tests += [ "0500010000260701000811223344" ]
+ tests += ["0500010000260701000811223344"]
# Beacon report info subelement; no valid channels
- tests += [ "05000100002614010005112233445566008899aabbccdd01020000" ]
+ tests += ["05000100002614010005112233445566008899aabbccdd01020000"]
for t in tests:
if "OK" not in dev[0].request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + t):
raise Exception("MGMT_RX_PROCESS failed")
dev[0].request("SET LCI " + lci)
tests = []
# "Not building LCI report - bad location subject"
- tests += [ "0500010000260701000811223344" ]
+ tests += ["0500010000260701000811223344"]
for t in tests:
if "OK" not in dev[0].request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + t):
raise Exception("MGMT_RX_PROCESS failed")
tests = []
# LCI report or reject
- tests += [ "0500010000260701000801223344",
- "05000100002607010008010402ff",
- "05000100002608010008010402ffff" ]
+ tests += ["0500010000260701000801223344",
+ "05000100002607010008010402ff",
+ "05000100002608010008010402ffff"]
for t in tests:
if "OK" not in dev[0].request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + t):
raise Exception("MGMT_RX_PROCESS failed")
def test_rrm_link_measurement(dev, apdev):
"""Radio measurement request - link measurement"""
check_tx_power_support(dev[0])
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
def test_rrm_link_measurement_oom(dev, apdev):
"""Radio measurement request - link measurement OOM"""
check_tx_power_support(dev[0])
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
"""hostapd rrm report parsing protocol testing"""
check_rrm_support(dev[0])
- params = { "ssid": "rrm", "rrm_neighbor_report": "1" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
hdr = "d0003a01" + bssid.replace(':', '') + addr.replace(':', '') + bssid.replace(':', '') + "1000"
hapd.set("ext_mgmt_frame_handling", "1")
- tests = [ "0501",
- "05ff01",
- "0501012703fffffe2700",
- "0501012703ffff05",
- "05010127ffffff05" + 252*"00",
- "0504012603ffffff2600",
- "0504012603ffff08",
- "0504012608ffff08ffffffffff",
- "0504012608ffff08ff04021234",
- "0504012608ffff08ff04020100",
- "0504012608ffff08ff0402ffff" ]
+ tests = ["0501",
+ "05ff01",
+ "0501012703fffffe2700",
+ "0501012703ffff05",
+ "05010127ffffff05" + 252*"00",
+ "0504012603ffffff2600",
+ "0504012603ffff08",
+ "0504012608ffff08ffffffffff",
+ "0504012608ffff08ff04021234",
+ "0504012608ffff08ff04020100",
+ "0504012608ffff08ff0402ffff"]
for t in tests:
if "OK" not in hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + t):
raise Exception("MGMT_RX_PROCESS failed for " + t)
"""hostapd unexpected rrm"""
check_rrm_support(dev[0])
- params = { "ssid": "rrm", "rrm_neighbor_report": "0" }
+ params = {"ssid": "rrm", "rrm_neighbor_report": "0"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
hdr = "d0003a01" + bssid.replace(':', '') + addr.replace(':', '') + bssid.replace(':', '') + "1000"
hapd.set("ext_mgmt_frame_handling", "1")
- tests = [ "050401" ]
+ tests = ["050401"]
for t in tests:
if "OK" not in hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + t):
raise Exception("MGMT_RX_PROCESS failed for " + t)
def test_rrm_reassociation(dev, apdev):
"""Radio measurement request - reassociation"""
- params = { "ssid": "rrm", "rrm_beacon_report": "1" }
+ params = {"ssid": "rrm", "rrm_beacon_report": "1"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
dev[0].request("SET sae_groups ")
dev[0].connect("test-sae", psk="12345678", key_mgmt="SAE",
scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
dev[0].request("DISCONNECT")
dev[0].request("SET sae_groups ")
dev[0].connect("test-sae", psk="12345678", key_mgmt="SAE",
scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
dev[0].request("DISCONNECT")
# MODP) and group 21 (521-bit random ECP group) are a bit too slow on some
# VMs and can result in hitting the mac80211 authentication timeout, so
# allow them to fail and just report such failures in the debug log.
- sae_groups = [ 19, 25, 26, 20, 21, 1, 2, 5, 14, 15, 16, 22, 23, 24 ]
+ sae_groups = [19, 25, 26, 20, 21, 1, 2, 5, 14, 15, 16, 22, 23, 24]
tls = dev[0].request("GET tls_library")
if tls.startswith("OpenSSL") and "run=OpenSSL 1." in tls:
logger.info("Add Brainpool EC groups since OpenSSL is new enough")
- sae_groups += [ 27, 28, 29, 30 ]
- heavy_groups = [ 14, 15, 16 ]
+ sae_groups += [27, 28, 29, 30]
+ heavy_groups = [14, 15, 16]
groups = [str(g) for g in sae_groups]
params = hostapd.wpa2_params(ssid="test-sae-groups",
passphrase="12345678")
else:
ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=10)
if ev is None:
- if "BoringSSL" in tls and int(g) in [ 25 ]:
+ if "BoringSSL" in tls and int(g) in [25]:
logger.info("Ignore connection failure with group " + g + " with BoringSSL")
dev[0].remove_network(id)
dev[0].dump_monitor()
dev[0].request("SET sae_groups ")
dev[0].connect("test-sae-group-nego", psk="12345678", key_mgmt="SAE",
scan_freq="2412", wait_connect=False)
- ev = dev[0].wait_event([ "CTRL-EVENT-SSID-TEMP-DISABLED" ], timeout=10)
+ ev = dev[0].wait_event(["CTRL-EVENT-SSID-TEMP-DISABLED"], timeout=10)
dev[0].request("REMOVE_NETWORK all")
if ev is None:
raise Exception("Network profile disabling not reported")
dev[0].request("SET sae_groups 19")
- tests = [ ("Confirm mismatch",
- "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
- "0000800edebc3f260dc1fe7e0b20888af2b8a3316252ec37388a8504e25b73dc4240"),
- ("Commit without even full cyclic group field",
- "13",
- None),
- ("Too short commit",
- "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02",
- None),
- ("Invalid commit scalar (0)",
- "1300" + "0000000000000000000000000000000000000000000000000000000000000000" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
- None),
- ("Invalid commit scalar (1)",
- "1300" + "0000000000000000000000000000000000000000000000000000000000000001" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
- None),
- ("Invalid commit scalar (> r)",
- "1300" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
- None),
- ("Commit element not on curve",
- "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728d0000000000000000000000000000000000000000000000000000000000000000",
- None),
- ("Invalid commit element (y coordinate > P)",
- "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
- None),
- ("Invalid commit element (x coordinate > P)",
- "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
- None),
- ("Different group in commit",
- "1400" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
- None),
- ("Too short confirm",
- "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
- "0000800edebc3f260dc1fe7e0b20888af2b8a3316252ec37388a8504e25b73dc42")]
+ tests = [("Confirm mismatch",
+ "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
+ "0000800edebc3f260dc1fe7e0b20888af2b8a3316252ec37388a8504e25b73dc4240"),
+ ("Commit without even full cyclic group field",
+ "13",
+ None),
+ ("Too short commit",
+ "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02",
+ None),
+ ("Invalid commit scalar (0)",
+ "1300" + "0000000000000000000000000000000000000000000000000000000000000000" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
+ None),
+ ("Invalid commit scalar (1)",
+ "1300" + "0000000000000000000000000000000000000000000000000000000000000001" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
+ None),
+ ("Invalid commit scalar (> r)",
+ "1300" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
+ None),
+ ("Commit element not on curve",
+ "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728d0000000000000000000000000000000000000000000000000000000000000000",
+ None),
+ ("Invalid commit element (y coordinate > P)",
+ "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+ None),
+ ("Invalid commit element (x coordinate > P)",
+ "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
+ None),
+ ("Different group in commit",
+ "1400" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
+ None),
+ ("Too short confirm",
+ "1300" + "033d3635b39666ed427fd4a3e7d37acec2810afeaf1687f746a14163ff0e6d03" + "559cb8928db4ce4e3cbd6555e837591995e5ebe503ef36b503d9ca519d63728dd3c7c676b8e8081831b6bc3a64bdf136061a7de175e17d1965bfa41983ed02f8",
+ "0000800edebc3f260dc1fe7e0b20888af2b8a3316252ec37388a8504e25b73dc42")]
for (note, commit, confirm) in tests:
logger.info(note)
dev[0].scan_for_bss(bssid, freq=2412)
dev[0].request("SET sae_groups 2")
- tests = [ ("Confirm mismatch",
- "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "a8c00117493cdffa5dd671e934bc9cb1a69f39e25e9dd9cd9afd3aea2441a0f5491211c7ba50a753563f9ce943b043557cb71193b28e86ed9544f4289c471bf91b70af5c018cf4663e004165b0fd0bc1d8f3f78adf42eee92bcbc55246fd3ee9f107ab965dc7d4986f23eb71d616ebfe6bfe0a6c1ac5dc1718acee17c9a17486",
- "0000f3116a9731f1259622e3eb55d4b3b50ba16f8c5f5565b28e609b180c51460251"),
- ("Too short commit",
- "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "a8c00117493cdffa5dd671e934bc9cb1a69f39e25e9dd9cd9afd3aea2441a0f5491211c7ba50a753563f9ce943b043557cb71193b28e86ed9544f4289c471bf91b70af5c018cf4663e004165b0fd0bc1d8f3f78adf42eee92bcbc55246fd3ee9f107ab965dc7d4986f23eb71d616ebfe6bfe0a6c1ac5dc1718acee17c9a174",
- None),
- ("Invalid element (0) in commit",
- "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- None),
- ("Invalid element (1) in commit",
- "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
- None),
- ("Invalid element (> P) in commit",
- "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
- None) ]
+ tests = [("Confirm mismatch",
+ "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "a8c00117493cdffa5dd671e934bc9cb1a69f39e25e9dd9cd9afd3aea2441a0f5491211c7ba50a753563f9ce943b043557cb71193b28e86ed9544f4289c471bf91b70af5c018cf4663e004165b0fd0bc1d8f3f78adf42eee92bcbc55246fd3ee9f107ab965dc7d4986f23eb71d616ebfe6bfe0a6c1ac5dc1718acee17c9a17486",
+ "0000f3116a9731f1259622e3eb55d4b3b50ba16f8c5f5565b28e609b180c51460251"),
+ ("Too short commit",
+ "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "a8c00117493cdffa5dd671e934bc9cb1a69f39e25e9dd9cd9afd3aea2441a0f5491211c7ba50a753563f9ce943b043557cb71193b28e86ed9544f4289c471bf91b70af5c018cf4663e004165b0fd0bc1d8f3f78adf42eee92bcbc55246fd3ee9f107ab965dc7d4986f23eb71d616ebfe6bfe0a6c1ac5dc1718acee17c9a174",
+ None),
+ ("Invalid element (0) in commit",
+ "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ None),
+ ("Invalid element (1) in commit",
+ "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
+ None),
+ ("Invalid element (> P) in commit",
+ "0200" + "0c70519d874e3e4930a917cc5e17ea7a26028211159f217bab28b8d6c56691805e49f03249b2c6e22c7c9f86b30e04ccad2deedd5e5108ae07b737c00001c59cd0eb08b1dfc7f1b06a1542e2b6601a963c066e0c65940983a03917ae57a101ce84b5cbbc76ff33ebb990aac2e54aa0f0ab6ec0a58113d927683502b2cb2347d2" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+ None)]
for (note, commit, confirm) in tests:
logger.info(note)
dev[0].scan_for_bss(bssid, freq=2412)
hapd = hostapd.add_ap(apdev[0], params)
dev[0].request("SET sae_groups ")
- tests = [ (1, "os_get_random;sae_get_rand"),
- (1, "os_get_random;get_rand_1_to_p_1"),
- (1, "os_get_random;get_random_qr_qnr"),
- (1, "os_get_random;sae_derive_pwe_ecc") ]
+ tests = [(1, "os_get_random;sae_get_rand"),
+ (1, "os_get_random;get_rand_1_to_p_1"),
+ (1, "os_get_random;get_random_qr_qnr"),
+ (1, "os_get_random;sae_derive_pwe_ecc")]
for count, func in tests:
with fail_test(dev[0], count, func):
dev[0].connect("test-sae", psk="12345678", key_mgmt="SAE",
hapd = hostapd.add_ap(apdev[0], params)
dev[0].request("SET sae_groups 19")
- tests = [ (1, "crypto_bignum_init_set;get_rand_1_to_p_1"),
- (1, "crypto_bignum_init;is_quadratic_residue_blind"),
- (1, "crypto_bignum_mulmod;is_quadratic_residue_blind"),
- (2, "crypto_bignum_mulmod;is_quadratic_residue_blind"),
- (3, "crypto_bignum_mulmod;is_quadratic_residue_blind"),
- (1, "crypto_bignum_legendre;is_quadratic_residue_blind"),
- (1, "crypto_bignum_init_set;sae_test_pwd_seed_ecc"),
- (1, "crypto_ec_point_compute_y_sqr;sae_test_pwd_seed_ecc"),
- (1, "crypto_bignum_init_set;get_random_qr_qnr"),
- (1, "crypto_bignum_to_bin;sae_derive_pwe_ecc"),
- (1, "crypto_ec_point_init;sae_derive_pwe_ecc"),
- (1, "crypto_ec_point_solve_y_coord;sae_derive_pwe_ecc"),
- (1, "crypto_ec_point_init;sae_derive_commit_element_ecc"),
- (1, "crypto_ec_point_mul;sae_derive_commit_element_ecc"),
- (1, "crypto_ec_point_invert;sae_derive_commit_element_ecc"),
- (1, "crypto_bignum_init;=sae_derive_commit"),
- (1, "crypto_ec_point_init;sae_derive_k_ecc"),
- (1, "crypto_ec_point_mul;sae_derive_k_ecc"),
- (1, "crypto_ec_point_add;sae_derive_k_ecc"),
- (2, "crypto_ec_point_mul;sae_derive_k_ecc"),
- (1, "crypto_ec_point_to_bin;sae_derive_k_ecc"),
- (1, "crypto_bignum_legendre;get_random_qr_qnr"),
- (1, "sha256_prf;sae_derive_keys"),
- (1, "crypto_bignum_init;sae_derive_keys"),
- (1, "crypto_bignum_init_set;sae_parse_commit_scalar"),
- (1, "crypto_bignum_to_bin;sae_parse_commit_element_ecc"),
- (1, "crypto_ec_point_from_bin;sae_parse_commit_element_ecc") ]
+ tests = [(1, "crypto_bignum_init_set;get_rand_1_to_p_1"),
+ (1, "crypto_bignum_init;is_quadratic_residue_blind"),
+ (1, "crypto_bignum_mulmod;is_quadratic_residue_blind"),
+ (2, "crypto_bignum_mulmod;is_quadratic_residue_blind"),
+ (3, "crypto_bignum_mulmod;is_quadratic_residue_blind"),
+ (1, "crypto_bignum_legendre;is_quadratic_residue_blind"),
+ (1, "crypto_bignum_init_set;sae_test_pwd_seed_ecc"),
+ (1, "crypto_ec_point_compute_y_sqr;sae_test_pwd_seed_ecc"),
+ (1, "crypto_bignum_init_set;get_random_qr_qnr"),
+ (1, "crypto_bignum_to_bin;sae_derive_pwe_ecc"),
+ (1, "crypto_ec_point_init;sae_derive_pwe_ecc"),
+ (1, "crypto_ec_point_solve_y_coord;sae_derive_pwe_ecc"),
+ (1, "crypto_ec_point_init;sae_derive_commit_element_ecc"),
+ (1, "crypto_ec_point_mul;sae_derive_commit_element_ecc"),
+ (1, "crypto_ec_point_invert;sae_derive_commit_element_ecc"),
+ (1, "crypto_bignum_init;=sae_derive_commit"),
+ (1, "crypto_ec_point_init;sae_derive_k_ecc"),
+ (1, "crypto_ec_point_mul;sae_derive_k_ecc"),
+ (1, "crypto_ec_point_add;sae_derive_k_ecc"),
+ (2, "crypto_ec_point_mul;sae_derive_k_ecc"),
+ (1, "crypto_ec_point_to_bin;sae_derive_k_ecc"),
+ (1, "crypto_bignum_legendre;get_random_qr_qnr"),
+ (1, "sha256_prf;sae_derive_keys"),
+ (1, "crypto_bignum_init;sae_derive_keys"),
+ (1, "crypto_bignum_init_set;sae_parse_commit_scalar"),
+ (1, "crypto_bignum_to_bin;sae_parse_commit_element_ecc"),
+ (1, "crypto_ec_point_from_bin;sae_parse_commit_element_ecc")]
for count, func in tests:
with fail_test(dev[0], count, func):
hapd.request("NOTE STA failure testing %d:%s" % (count, func))
hapd.dump_monitor()
dev[0].request("SET sae_groups 5")
- tests = [ (1, "crypto_bignum_init_set;sae_set_group"),
- (2, "crypto_bignum_init_set;sae_set_group"),
- (1, "crypto_bignum_init_set;sae_get_rand"),
- (1, "crypto_bignum_init_set;sae_test_pwd_seed_ffc"),
- (1, "crypto_bignum_exptmod;sae_test_pwd_seed_ffc"),
- (1, "crypto_bignum_init;sae_derive_pwe_ffc"),
- (1, "crypto_bignum_init;sae_derive_commit_element_ffc"),
- (1, "crypto_bignum_exptmod;sae_derive_commit_element_ffc"),
- (1, "crypto_bignum_inverse;sae_derive_commit_element_ffc"),
- (1, "crypto_bignum_init;sae_derive_k_ffc"),
- (1, "crypto_bignum_exptmod;sae_derive_k_ffc"),
- (1, "crypto_bignum_mulmod;sae_derive_k_ffc"),
- (2, "crypto_bignum_exptmod;sae_derive_k_ffc"),
- (1, "crypto_bignum_to_bin;sae_derive_k_ffc"),
- (1, "crypto_bignum_init_set;sae_parse_commit_element_ffc"),
- (1, "crypto_bignum_init;sae_parse_commit_element_ffc"),
- (2, "crypto_bignum_init_set;sae_parse_commit_element_ffc"),
- (1, "crypto_bignum_exptmod;sae_parse_commit_element_ffc") ]
+ tests = [(1, "crypto_bignum_init_set;sae_set_group"),
+ (2, "crypto_bignum_init_set;sae_set_group"),
+ (1, "crypto_bignum_init_set;sae_get_rand"),
+ (1, "crypto_bignum_init_set;sae_test_pwd_seed_ffc"),
+ (1, "crypto_bignum_exptmod;sae_test_pwd_seed_ffc"),
+ (1, "crypto_bignum_init;sae_derive_pwe_ffc"),
+ (1, "crypto_bignum_init;sae_derive_commit_element_ffc"),
+ (1, "crypto_bignum_exptmod;sae_derive_commit_element_ffc"),
+ (1, "crypto_bignum_inverse;sae_derive_commit_element_ffc"),
+ (1, "crypto_bignum_init;sae_derive_k_ffc"),
+ (1, "crypto_bignum_exptmod;sae_derive_k_ffc"),
+ (1, "crypto_bignum_mulmod;sae_derive_k_ffc"),
+ (2, "crypto_bignum_exptmod;sae_derive_k_ffc"),
+ (1, "crypto_bignum_to_bin;sae_derive_k_ffc"),
+ (1, "crypto_bignum_init_set;sae_parse_commit_element_ffc"),
+ (1, "crypto_bignum_init;sae_parse_commit_element_ffc"),
+ (2, "crypto_bignum_init_set;sae_parse_commit_element_ffc"),
+ (1, "crypto_bignum_exptmod;sae_parse_commit_element_ffc")]
for count, func in tests:
with fail_test(dev[0], count, func):
hapd.request("NOTE STA failure testing %d:%s" % (count, func))
hapd.dump_monitor()
dev[0].request("SET sae_groups 22")
- tests = [ (1, "crypto_bignum_init_set;sae_test_pwd_seed_ffc"),
- (1, "crypto_bignum_sub;sae_test_pwd_seed_ffc"),
- (1, "crypto_bignum_div;sae_test_pwd_seed_ffc") ]
+ tests = [(1, "crypto_bignum_init_set;sae_test_pwd_seed_ffc"),
+ (1, "crypto_bignum_sub;sae_test_pwd_seed_ffc"),
+ (1, "crypto_bignum_div;sae_test_pwd_seed_ffc")]
for count, func in tests:
with fail_test(dev[0], count, func):
hapd.request("NOTE STA failure testing %d:%s" % (count, func))
params['sae_groups'] = groups
else:
groups = ""
- params['sae_password'] = [ 'secret|mac=ff:ff:ff:ff:ff:ff|id=pw id',
- 'foo|mac=02:02:02:02:02:02',
- 'another secret|mac=ff:ff:ff:ff:ff:ff|id=' + 29*'A' ]
+ params['sae_password'] = ['secret|mac=ff:ff:ff:ff:ff:ff|id=pw id',
+ 'foo|mac=02:02:02:02:02:02',
+ 'another secret|mac=ff:ff:ff:ff:ff:ff|id=' + 29*'A']
hapd = hostapd.add_ap(apdev[0], params)
dev[0].request("SET sae_groups " + groups)
def sae_rx_commit_token_req(sock, radiotap, send_two=False):
msg = sock.recv(1500)
- ver,pad,len,present = struct.unpack('<BBHL', msg[0:8])
+ ver, pad, len, present = struct.unpack('<BBHL', msg[0:8])
frame = msg[len:]
- fc,duration = struct.unpack('<HH', frame[0:4])
+ fc, duration = struct.unpack('<HH', frame[0:4])
if fc != 0xb0:
return False
frame = frame[4:]
bssid = frame[12:18]
body = frame[20:]
- alg,seq,status,group = struct.unpack('<HHHH', body[0:8])
+ alg, seq, status, group = struct.unpack('<HHHH', body[0:8])
if alg != 3 or seq != 1 or status != 76:
return False
token = body[8:]
@remote_compatible
def test_scan(dev, apdev):
"""Control interface behavior on scan parameters"""
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
logger.info("Full scan")
@remote_compatible
def test_scan_tsf(dev, apdev):
"""Scan and TSF updates from Beacon/Probe Response frames"""
- hostapd.add_ap(apdev[0], { "ssid": "test-scan",
- 'beacon_int': "100" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan",
+ 'beacon_int': "100"})
bssid = apdev[0]['bssid']
tsf = []
- for passive in [ 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1 ]:
+ for passive in [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1]:
check_scan(dev[0], "freq=2412 passive=%d use_id=1" % passive)
bss = dev[0].get_bss(bssid)
if bss:
@remote_compatible
def test_scan_only(dev, apdev):
"""Control interface behavior on scan parameters with type=only"""
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
logger.info("Full scan")
@remote_compatible
def test_scan_external_trigger(dev, apdev):
"""Avoid operations during externally triggered scan"""
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
dev[0].cmd_execute(['iw', dev[0].ifname, 'scan', 'trigger'])
check_scan(dev[0], "use_id=1", other_started=True)
raise Exception("Invalid BSS_EXPIRE_COUNT accepted")
if "OK" not in dev[0].request("BSS_EXPIRE_COUNT 2"):
raise Exception("BSS_EXPIRE_COUNT failed")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
dev[0].scan(freq="2412", only_new=True)
if bssid not in dev[0].request("SCAN_RESULTS"):
raise Exception("Invalid BSS_EXPIRE_AGE accepted")
if "OK" not in dev[0].request("BSS_EXPIRE_AGE 10"):
raise Exception("BSS_EXPIRE_AGE failed")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
# Allow couple more retries to avoid reporting errors during heavy load
for i in range(5):
if "OK" not in dev[0].request("SET filter_ssids 1"):
raise Exception("SET failed")
id = dev[0].connect("test-scan", key_mgmt="NONE", only_add_network=True)
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
- hostapd.add_ap(apdev[1], { "ssid": "test-scan2" })
+ hostapd.add_ap(apdev[1], {"ssid": "test-scan2"})
bssid2 = apdev[1]['bssid']
dev[0].scan(freq="2412", only_new=True)
if bssid not in dev[0].request("SCAN_RESULTS"):
def test_scan_bss_operations(dev, apdev):
"""Control interface behavior on BSS parameters"""
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
- hostapd.add_ap(apdev[1], { "ssid": "test2-scan" })
+ hostapd.add_ap(apdev[1], {"ssid": "test2-scan"})
bssid2 = apdev[1]['bssid']
dev[0].scan(freq="2412")
@remote_compatible
def test_scan_for_auth(dev, apdev):
"""cfg80211 workaround with scan-for-auth"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
# Block sme-connect radio work with an external radio work item, so that
# SELECT_NETWORK can decide to use fast associate without a new scan while
@remote_compatible
def test_scan_for_auth_fail(dev, apdev):
"""cfg80211 workaround with scan-for-auth failing"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
# Block sme-connect radio work with an external radio work item, so that
# SELECT_NETWORK can decide to use fast associate without a new scan while
"""cfg80211 scan-for-auth workaround with WEP keys"""
dev[0].flush_scan_cache()
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wep", "wep_key0": '"abcde"',
- "auth_algs": "2" })
+ {"ssid": "wep", "wep_key0": '"abcde"',
+ "auth_algs": "2"})
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
# Block sme-connect radio work with an external radio work item, so that
# SELECT_NETWORK can decide to use fast associate without a new scan while
@remote_compatible
def test_scan_hidden(dev, apdev):
"""Control interface behavior on scan parameters"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan",
- "ignore_broadcast_ssid": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan",
+ "ignore_broadcast_ssid": "1"})
bssid = apdev[0]['bssid']
check_scan(dev[0], "freq=2412 use_id=1")
def test_scan_and_bss_entry_removed(dev, apdev):
"""Last scan result and connect work processing on BSS entry update"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open",
- "eap_server": "1",
- "wps_state": "2" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open",
+ "eap_server": "1",
+ "wps_state": "2"})
bssid = apdev[0]['bssid']
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
try:
hapd = None
hapd2 = None
- params = { "ssid": "test-setband",
- "hw_mode": "a",
- "channel": "36",
- "country_code": "US" }
+ params = {"ssid": "test-setband",
+ "hw_mode": "a",
+ "channel": "36",
+ "country_code": "US"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- params = { "ssid": "test-setband",
- "hw_mode": "g",
- "channel": "1" }
+ params = {"ssid": "test-setband",
+ "hw_mode": "g",
+ "channel": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
bssid2 = apdev[1]['bssid']
dev[0].request("SCAN_INTERVAL 5")
def _test_scan_hidden_many(dev, apdev):
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan-ssid",
- "ignore_broadcast_ssid": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan-ssid",
+ "ignore_broadcast_ssid": "1"})
bssid = apdev[0]['bssid']
dev[0].request("SCAN_INTERVAL 1")
dev[0].request("MAC_RAND_SCAN all enable=0")
def _test_scan_random_mac(dev, apdev, params):
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
- tests = [ "",
- "addr=foo",
- "mask=foo",
- "enable=1",
- "all enable=1 mask=00:11:22:33:44:55",
- "all enable=1 addr=00:11:22:33:44:55",
- "all enable=1 addr=01:11:22:33:44:55 mask=ff:ff:ff:ff:ff:ff",
- "all enable=1 addr=00:11:22:33:44:55 mask=fe:ff:ff:ff:ff:ff",
- "enable=2 scan sched pno all",
- "pno enable=1",
- "all enable=2",
- "foo" ]
+ tests = ["",
+ "addr=foo",
+ "mask=foo",
+ "enable=1",
+ "all enable=1 mask=00:11:22:33:44:55",
+ "all enable=1 addr=00:11:22:33:44:55",
+ "all enable=1 addr=01:11:22:33:44:55 mask=ff:ff:ff:ff:ff:ff",
+ "all enable=1 addr=00:11:22:33:44:55 mask=fe:ff:ff:ff:ff:ff",
+ "enable=2 scan sched pno all",
+ "pno enable=1",
+ "all enable=2",
+ "foo"]
for args in tests:
if "FAIL" not in dev[0].request("MAC_RAND_SCAN " + args):
raise Exception("Invalid MAC_RAND_SCAN accepted: " + args)
if dev[0].get_driver_status_field('capa.mac_addr_rand_scan_supported') != '1':
raise HwsimSkip("Driver does not support random MAC address for scanning")
- tests = [ "all enable=1",
- "all enable=1 addr=f2:11:22:33:44:55 mask=ff:ff:ff:ff:ff:ff",
- "all enable=1 addr=f2:11:33:00:00:00 mask=ff:ff:ff:00:00:00" ]
+ tests = ["all enable=1",
+ "all enable=1 addr=f2:11:22:33:44:55 mask=ff:ff:ff:ff:ff:ff",
+ "all enable=1 addr=f2:11:33:00:00:00 mask=ff:ff:ff:00:00:00"]
for args in tests:
dev[0].request("MAC_RAND_SCAN " + args)
dev[0].scan_for_bss(bssid, freq=2412, force_scan=True)
out = run_tshark(os.path.join(params['logdir'], "hwsim0.pcapng"),
- "wlan.fc.type_subtype == 4", ["wlan.ta" ])
+ "wlan.fc.type_subtype == 4", ["wlan.ta"])
if out is not None:
addr = out.splitlines()
logger.info("Probe Request frames seen from: " + str(addr))
dev[0].request("MAC_RAND_SCAN all enable=0")
def _test_scan_random_mac_connected(dev, apdev, params):
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
if dev[0].get_driver_status_field('capa.mac_addr_rand_scan_supported') != '1':
raise HwsimSkip("Driver does not support random MAC address for scanning")
dev[0].connect("test-scan", key_mgmt="NONE", scan_freq="2412")
- hostapd.add_ap(apdev[1], { "ssid": "test-scan-2", "channel": "11" })
+ hostapd.add_ap(apdev[1], {"ssid": "test-scan-2", "channel": "11"})
bssid1 = apdev[1]['bssid']
# Verify that scanning can be completed while connected even if that means
if dev[0].get_status_field('wpa_state') == "SCANNING":
raise Exception("wpa_state was already SCANNING")
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
if "OK" not in dev[0].request("SET test_failure 1"):
def test_scan_specify_ssid(dev, apdev):
"""Control interface behavior on scan SSID parameter"""
dev[0].flush_scan_cache()
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-hidden",
- "ignore_broadcast_ssid": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-hidden",
+ "ignore_broadcast_ssid": "1"})
bssid = apdev[0]['bssid']
check_scan(dev[0], "freq=2412 use_id=1 ssid 414243")
bss = dev[0].get_bss(bssid)
def test_scan_bss_expiration_on_ssid_change(dev, apdev):
"""BSS entry expiration when AP changes SSID"""
dev[0].flush_scan_cache()
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
hapd.request("DISABLE")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
if "OK" not in dev[0].request("BSS_EXPIRE_COUNT 3"):
raise Exception("BSS_EXPIRE_COUNT failed")
dev[0].scan(freq="2412")
raise Exception("Scan did not complete")
out = run_tshark(os.path.join(params['logdir'], "hwsim0.pcapng"),
- "wlan.fc.type_subtype == 4", [ "radiotap.channel.freq" ])
+ "wlan.fc.type_subtype == 4", ["radiotap.channel.freq"])
if out is not None:
freq = out.splitlines()
freq = [int(f) for f in freq]
for f in freq:
if (f >= 5260 and f <= 5320) or (f >= 5500 and f <= 5700):
raise Exception("Active scan on DFS channel: %d" % f)
- if f in [ 2467, 2472 ]:
+ if f in [2467, 2472]:
raise Exception("Active scan on US-disallowed channel: %d" % f)
@remote_compatible
@remote_compatible
def test_scan_abort_on_connect(dev, apdev):
"""Aborting a full scan on connection request"""
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
@remote_compatible
def test_scan_ext(dev, apdev):
"""Custom IE in Probe Request frame"""
- hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
bssid = apdev[0]['bssid']
try:
wpas.request("SET preassoc_mac_addr 0")
wpas.dump_monitor()
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
with alloc_fail(dev[0], 1, "wpa_bss_add"):
dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
raise Exception("Scan trigger failure not reported")
# Verify that scan_only_handler() does not get left set as the
# wpa_s->scan_res_handler in failure case.
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
finally:
dev[0].request("SET freq_list ")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
dev[0].connect("test-scan", key_mgmt="NONE", scan_freq="2412")
try:
if "OK" not in dev[0].request("SET scan_cur_freq 1"):
# count to one so that the second AP would not fit in the BSS list and the
# first AP cannot be removed from the list since it is still in use.
dev[0].request("SET bss_max_count 1")
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
dev[0].connect("test-scan", key_mgmt="NONE", scan_freq="2412")
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "test-scan-2",
- "channel": "6" })
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "test-scan-2",
+ "channel": "6"})
dev[0].scan_for_bss(apdev[1]['bssid'], freq=2437, force_scan=True)
def run_scan(dev, bssid, exp_freq):
# has multiple (one for each frequency) BSS entries for the same BSS.
csa_supported(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan", "channel": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan", "channel": "1"})
csa_supported(hapd)
bssid = hapd.own_addr()
dev[0].set("ignore_old_scan_res", "0")
def _test_scan_new_only(dev, apdev):
dev[0].flush_scan_cache()
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
dev[0].set("ignore_old_scan_res", "1")
# Get the BSS added to cfg80211 BSS list
bssid = hapd.own_addr()
def test_scan_flush(dev, apdev):
"""Ongoing scan and FLUSH"""
dev[0].flush_scan_cache()
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan"})
dev[0].dump_monitor()
dev[0].request("SCAN TYPE=ONLY freq=2412-2472 passive=1")
ev = dev[0].wait_event(["CTRL-EVENT-SCAN-STARTED"], timeout=10)
def test_scan_ies(dev, apdev):
"""Scan and both Beacon and Probe Response frame IEs"""
dev[0].flush_scan_cache()
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan",
- "beacon_int": "20" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan",
+ "beacon_int": "20"})
bssid = hapd.own_addr()
dev[0].dump_monitor()
if "FAIL" not in dev[0].request("DRIVER_EVENT SCAN_RES foo "):
raise Exception("Invalid DRIVER_EVENT SCAN_RES accepted")
- tests = [ "",
- "flags=ffffffff",
- "bssid=02:03:04:05:06:07",
- "freq=1234",
- "beacon_int=102",
- "caps=1234",
- "qual=10",
- "noise=10",
- "level=10",
- "tsf=1122334455667788",
- "age=123",
- "est_throughput=100",
- "snr=10",
- "parent_tsf=1122334455667788",
- "tsf_bssid=02:03:04:05:06:07",
- "ie=00",
- "beacon_ie=00",
- # Too long SSID
- "bssid=02:ff:00:00:00:01 ie=0033" + 33*'FF',
- # All parameters
- "flags=ffffffff bssid=02:ff:00:00:00:02 freq=1234 beacon_int=102 caps=1234 qual=10 noise=10 level=10 tsf=1122334455667788 age=123456 est_throughput=100 snr=10 parent_tsf=1122334455667788 tsf_bssid=02:03:04:05:06:07 ie=000474657374 beacon_ie=000474657374",
- # Beacon IEs truncated
- "bssid=02:ff:00:00:00:03 ie=0000 beacon_ie=0003ffff",
- # Probe Response IEs truncated
- "bssid=02:ff:00:00:00:04 ie=00000101 beacon_ie=0000",
- # DMG (invalid caps)
- "bssid=02:ff:00:00:00:05 freq=58320 ie=0003646d67",
- # DMG (IBSS)
- "bssid=02:ff:00:00:00:06 freq=60480 caps=0001 ie=0003646d67",
- # DMG (PBSS)
- "bssid=02:ff:00:00:00:07 freq=62640 caps=0002 ie=0003646d67",
- # DMG (AP)
- "bssid=02:ff:00:00:00:08 freq=64800 caps=0003 ie=0003646d67",
- # Test BSS for updates
- "bssid=02:ff:00:00:00:09 freq=2412 caps=0011 level=1 ie=0003757064010182",
- # Minimal BSS data
- "bssid=02:ff:00:00:00:00 ie=0000" ]
+ tests = ["",
+ "flags=ffffffff",
+ "bssid=02:03:04:05:06:07",
+ "freq=1234",
+ "beacon_int=102",
+ "caps=1234",
+ "qual=10",
+ "noise=10",
+ "level=10",
+ "tsf=1122334455667788",
+ "age=123",
+ "est_throughput=100",
+ "snr=10",
+ "parent_tsf=1122334455667788",
+ "tsf_bssid=02:03:04:05:06:07",
+ "ie=00",
+ "beacon_ie=00",
+ # Too long SSID
+ "bssid=02:ff:00:00:00:01 ie=0033" + 33*'FF',
+ # All parameters
+ "flags=ffffffff bssid=02:ff:00:00:00:02 freq=1234 beacon_int=102 caps=1234 qual=10 noise=10 level=10 tsf=1122334455667788 age=123456 est_throughput=100 snr=10 parent_tsf=1122334455667788 tsf_bssid=02:03:04:05:06:07 ie=000474657374 beacon_ie=000474657374",
+ # Beacon IEs truncated
+ "bssid=02:ff:00:00:00:03 ie=0000 beacon_ie=0003ffff",
+ # Probe Response IEs truncated
+ "bssid=02:ff:00:00:00:04 ie=00000101 beacon_ie=0000",
+ # DMG (invalid caps)
+ "bssid=02:ff:00:00:00:05 freq=58320 ie=0003646d67",
+ # DMG (IBSS)
+ "bssid=02:ff:00:00:00:06 freq=60480 caps=0001 ie=0003646d67",
+ # DMG (PBSS)
+ "bssid=02:ff:00:00:00:07 freq=62640 caps=0002 ie=0003646d67",
+ # DMG (AP)
+ "bssid=02:ff:00:00:00:08 freq=64800 caps=0003 ie=0003646d67",
+ # Test BSS for updates
+ "bssid=02:ff:00:00:00:09 freq=2412 caps=0011 level=1 ie=0003757064010182",
+ # Minimal BSS data
+ "bssid=02:ff:00:00:00:00 ie=0000"]
for t in tests:
if "OK" not in dev[0].request("DRIVER_EVENT SCAN_RES BSS " + t):
raise Exception("DRIVER_EVENT SCAN_RES BSS failed")
res = dev[0].request("BSS NEXT-" + id)
logger.info("Discovered BSSs: " + str(bss))
- invalid_bss = [ "02:03:04:05:06:07", "02:ff:00:00:00:01" ]
- valid_bss = [ "02:ff:00:00:00:00", "02:ff:00:00:00:02",
- "02:ff:00:00:00:03", "02:ff:00:00:00:04",
- "02:ff:00:00:00:05", "02:ff:00:00:00:06",
- "02:ff:00:00:00:07", "02:ff:00:00:00:08",
- "02:ff:00:00:00:09" ]
+ invalid_bss = ["02:03:04:05:06:07", "02:ff:00:00:00:01"]
+ valid_bss = ["02:ff:00:00:00:00", "02:ff:00:00:00:02",
+ "02:ff:00:00:00:03", "02:ff:00:00:00:04",
+ "02:ff:00:00:00:05", "02:ff:00:00:00:06",
+ "02:ff:00:00:00:07", "02:ff:00:00:00:08",
+ "02:ff:00:00:00:09"]
for bssid in invalid_bss:
if bssid in bss:
raise Exception("Invalid BSS included: " + bssid)
def test_scan_specific_bssid(dev, apdev):
"""Scan for a specific BSSID"""
dev[0].flush_scan_cache()
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan",
- "beacon_int": "1000" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan",
+ "beacon_int": "1000"})
bssid = hapd.own_addr()
time.sleep(0.1)
def test_scan_probe_req_events(dev, apdev):
"""Probe Request frame RX events from hostapd"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
hapd2 = hostapd.Hostapd(apdev[0]['ifname'])
if "OK" not in hapd2.mon.request("ATTACH probe_rx_events=1"):
raise Exception("Failed to register for events")
if ev is not None:
raise Exception("Unexpected RX-PROBE-REQUEST")
- tests = [ "probe_rx_events", "probe_rx_events=-1", "probe_rx_events=2" ]
+ tests = ["probe_rx_events", "probe_rx_events=-1", "probe_rx_events=2"]
for val in tests:
if "FAIL" not in hapd2.mon.request("ATTACH " + val):
raise Exception("Invalid ATTACH command accepted")
check_multibss_sta_capa(dev[0])
dev[0].flush_scan_cache()
- params = { "ssid": "test-scan" }
+ params = {"ssid": "test-scan"}
# Max BSSID Indicator 0 (max 1 BSSID) and no subelements
params['vendor_elements'] = elem_multibssid(b'', 0)
hostapd.add_ap(apdev[0], params)
- params = { "ssid": "test-scan" }
+ params = {"ssid": "test-scan"}
elems = elem_capab(0x0401) + elem_ssid("1") + elem_bssid_index(1)
profile1 = struct.pack('BB', 0, len(elems)) + elems
params['vendor_elements'] = elem_multibssid(profile1, 1)
bssid0 = apdev[0]['bssid']
bssid1 = apdev[1]['bssid']
- check = [ (bssid0, 'test-scan', 0x401),
- (bssid1, 'test-scan', 0x401),
- (bssid1[0:16] + '1', '1', 0x401) ]
+ check = [(bssid0, 'test-scan', 0x401),
+ (bssid1, 'test-scan', 0x401),
+ (bssid1[0:16] + '1', '1', 0x401)]
run_scans(dev[0], check)
def test_scan_multi_bssid_2(dev, apdev):
check_multibss_sta_capa(dev[0])
dev[0].flush_scan_cache()
- params = { "ssid": "transmitted" }
+ params = {"ssid": "transmitted"}
# Duplicated entry for the transmitted BSS (not a normal use case)
elems = elem_capab(1) + elem_ssid("transmitted") + elem_bssid_index(0)
hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- check = [ (bssid, 'transmitted', 0x401),
- (bssid[0:16] + '1', 'nontransmitted', 0x1),
- (bssid[0:16] + '2', 'nontransmitted_2', 0x1) ]
+ check = [(bssid, 'transmitted', 0x401),
+ (bssid[0:16] + '1', 'nontransmitted', 0x1),
+ (bssid[0:16] + '2', 'nontransmitted_2', 0x1)]
run_scans(dev[0], check)
def test_scan_multi_bssid_3(dev, apdev):
check_multibss_sta_capa(dev[0])
dev[0].flush_scan_cache()
- params = { "ssid": "transmitted" }
+ params = {"ssid": "transmitted"}
# Duplicated nontransmitted BSS (not a normal use case)
elems = elem_capab(1) + elem_ssid("nontransmitted") + elem_bssid_index(1)
hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
- check = [ (bssid, 'transmitted', 0x401),
- (bssid[0:16] + '1', 'nontransmitted', 0x1) ]
+ check = [(bssid, 'transmitted', 0x401),
+ (bssid[0:16] + '1', 'nontransmitted', 0x1)]
run_scans(dev[0], check)
def test_scan_multi_bssid_4(dev, apdev):
bssid = apdev[0]['bssid']
hapd = None
try:
- params = { "ssid": "transmitted",
- "bssid": bssid[0:16] + '1'}
+ params = {"ssid": "transmitted",
+ "bssid": bssid[0:16] + '1'}
elems = elem_capab(1) + elem_ssid("1") + elem_bssid_index(1)
profile1 = struct.pack('BB', 0, len(elems)) + elems
params['vendor_elements'] = elem_multibssid(profiles, 2)
hapd = hostapd.add_ap(apdev[0], params)
- check = [ (bssid[0:16] + '1', 'transmitted', 0x401),
- (bssid[0:16] + '2', '1', 0x1),
- (bssid[0:16] + '3', '2', 0x1),
- (bssid[0:16] + '0', '3', 0x1) ]
+ check = [(bssid[0:16] + '1', 'transmitted', 0x401),
+ (bssid[0:16] + '2', '1', 0x1),
+ (bssid[0:16] + '3', '2', 0x1),
+ (bssid[0:16] + '0', '3', 0x1)]
run_scans(dev[0], check)
finally:
if hapd:
check_multibss_sta_capa(dev[0])
dev[0].flush_scan_cache()
- params = { "ssid": "transmitted" }
+ params = {"ssid": "transmitted"}
# Duplicated entry for the transmitted BSS (not a normal use case)
elems = elem_capab(1) + elem_ssid("transmitted") + elem_bssid_index(0)
check_multibss_sta_capa(dev[0])
dev[0].flush_scan_cache()
- params = { "ssid": "transmitted" }
+ params = {"ssid": "transmitted"}
# construct transmitting BSS Beacon with FMS IE
elems = elem_capab(1) + elem_ssid("transmitted") + elem_bssid_index(0) + elem_fms1()
hapd = None
# construct 2 MBSSID IEs, each MBSSID IE contains 1 profile
- params = { "ssid": "transmitted",
- "bssid": bssid }
+ params = {"ssid": "transmitted",
+ "bssid": bssid}
elems = elem_capab(1) + elem_ssid("1") + elem_bssid_index(1)
profile1 = struct.pack('BB', 0, len(elems)) + elems
elems = elem_capab(2) + elem_ssid("2") + elem_bssid_index(2)
profile2 = struct.pack('BB', 0, len(elems)) + elems
- params['vendor_elements'] = elem_multibssid(profile1, 2) + elem_multibssid(profile2,2)
+ params['vendor_elements'] = elem_multibssid(profile1, 2) + elem_multibssid(profile2, 2)
hapd = hostapd.add_ap(apdev[0], params)
- check = [ (bssid, 'transmitted', 0x401),
- (bssid[0:16] + '1', '1', 0x1),
- (bssid[0:16] + '2', '2', 0x2) ]
+ check = [(bssid, 'transmitted', 0x401),
+ (bssid[0:16] + '1', '1', 0x1),
+ (bssid[0:16] + '2', '2', 0x2)]
run_scans(dev[0], check)
def test_scan_mbssid_hidden_ssid(dev, apdev):
hapd = None
# construct 2 MBSSID IEs, each MBSSID IE contains 1 profile
- params = { "ssid": "transmitted",
- "bssid": bssid }
+ params = {"ssid": "transmitted",
+ "bssid": bssid}
elems = elem_capab(1) + elem_ssid("") + elem_bssid_index(1)
profile1 = struct.pack('BB', 0, len(elems)) + elems
params['vendor_elements'] = elem_multibssid(profiles, 2)
hapd = hostapd.add_ap(apdev[0], params)
- check = [ (bssid, 'transmitted', 0x401),
- (bssid[0:16] + '1', '', 0x1),
- (bssid[0:16] + '2', '2', 0x2) ]
+ check = [(bssid, 'transmitted', 0x401),
+ (bssid[0:16] + '1', '', 0x1),
+ (bssid[0:16] + '2', '2', 0x2)]
run_scans(dev[0], check)
def test_connect_mbssid_open_1(dev, apdev):
dev[0].flush_scan_cache()
bssid = apdev[0]['bssid']
- params = { "ssid": "transmitted" }
+ params = {"ssid": "transmitted"}
elems = elem_capab(1) + elem_ssid("nontransmitted") + elem_bssid_index(1)
profile1 = struct.pack('BB', 0, len(elems)) + elems
def start_sigma_dut(ifname, debug=False, hostapd_logdir=None, cert_path=None,
bridge=None):
check_sigma_dut()
- cmd = [ './sigma_dut',
- '-M', ifname,
- '-S', ifname,
- '-F', '../../hostapd/hostapd',
- '-G',
- '-w', '/var/run/wpa_supplicant/',
- '-j', ifname ]
+ cmd = ['./sigma_dut',
+ '-M', ifname,
+ '-S', ifname,
+ '-F', '../../hostapd/hostapd',
+ '-G',
+ '-w', '/var/run/wpa_supplicant/',
+ '-j', ifname]
if debug:
- cmd += [ '-d' ]
+ cmd += ['-d']
if hostapd_logdir:
- cmd += [ '-H', hostapd_logdir ]
+ cmd += ['-H', hostapd_logdir]
if cert_path:
- cmd += [ '-C', cert_path ]
+ cmd += ['-C', cert_path]
if bridge:
- cmd += [ '-b', bridge ]
+ cmd += ['-b', bridge]
sigma = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
for i in range(20):
if "status,INVALID,errorCode,Unknown command" not in res:
raise Exception("Unexpected sigma_dut response to unknown command")
- tests = [ ("ca_get_version", "status,COMPLETE,version,1.0"),
- ("device_get_info", "status,COMPLETE,vendor"),
- ("device_list_interfaces,interfaceType,foo", "status,ERROR"),
- ("device_list_interfaces,interfaceType,802.11",
- "status,COMPLETE,interfaceType,802.11,interfaceID," + dev[0].ifname) ]
+ tests = [("ca_get_version", "status,COMPLETE,version,1.0"),
+ ("device_get_info", "status,COMPLETE,vendor"),
+ ("device_list_interfaces,interfaceType,foo", "status,ERROR"),
+ ("device_list_interfaces,interfaceType,802.11",
+ "status,COMPLETE,interfaceType,802.11,interfaceID," + dev[0].ifname)]
for cmd, response in tests:
res = sigma_dut_cmd(cmd)
if response not in res:
ifname = dev[0].ifname
sigma = start_sigma_dut(ifname)
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
sigma_dut_cmd_check("sta_set_ip_config,interface,%s,dhcp,0,ip,127.0.0.11,mask,255.255.255.0" % ifname)
sigma_dut_cmd_check("sta_set_encryption,interface,%s,ssid,%s,encpType,none" % (ifname, "open"))
sigma_dut_cmd_check("sta_set_ip_config,interface,%s,dhcp,0,ip,127.0.0.11,mask,255.255.255.0" % ifname)
- tests = [ "30120100000fac040100000fac040100000fac02",
- "30140100000fac040100000fac040100000fac02ffff" ]
+ tests = ["30120100000fac040100000fac040100000fac02",
+ "30140100000fac040100000fac040100000fac02ffff"]
for test in tests:
sigma_dut_cmd_check("sta_set_security,interface,%s,ssid,%s,type,PSK,passphrase,%s,EncpType,aes-ccmp,KeyMgmtType,wpa2" % (ifname, "test-psk", "12345678"))
sigma_dut_cmd_check("dev_configure_ie,interface,%s,IE_Name,RSNE,Contents,%s" % (ifname, test))
params['openssl_ciphers'] = 'SUITEB192'
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-suite-b",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
- "rsn_pairwise": "GCMP-256",
- "group_mgmt_cipher": "BIP-GMAC-256",
- "ieee80211w": "2",
- "ieee8021x": "1",
- 'auth_server_addr': "127.0.0.1",
- 'auth_server_port': "18129",
- 'auth_server_shared_secret': "radius",
- 'nas_identifier': "nas.w1.fi" }
+ params = {"ssid": "test-suite-b",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
+ "rsn_pairwise": "GCMP-256",
+ "group_mgmt_cipher": "BIP-GMAC-256",
+ "ieee80211w": "2",
+ "ieee8021x": "1",
+ 'auth_server_addr': "127.0.0.1",
+ 'auth_server_port': "18129",
+ 'auth_server_shared_secret': "radius",
+ 'nas_identifier': "nas.w1.fi"}
hapd = hostapd.add_ap(apdev[0], params)
ifname = dev[0].ifname
cmd = "sta_set_security,type,eaptls,interface,%s,ssid,%s,PairwiseCipher,AES-GCMP-256,GroupCipher,AES-GCMP-256,GroupMgntCipher,BIP-GMAC-256,keymgmttype,SuiteB,clientCertificate,suite_b_rsa.pem,trustedRootCA,suite_b_ca_rsa.pem,CertType,RSA" % (ifname, "test-suite-b")
- tests = [ "",
- ",TLSCipher,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
- ",TLSCipher,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" ]
+ tests = ["",
+ ",TLSCipher,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
+ ",TLSCipher,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384"]
for extra in tests:
sigma_dut_cmd_check("sta_reset_default,interface,%s,prog,PMF" % ifname)
sigma_dut_cmd_check("sta_set_ip_config,interface,%s,dhcp,0,ip,127.0.0.11,mask,255.255.255.0" % ifname)
sigma = start_sigma_dut(ifname)
try:
- params = { "ssid": "owe",
- "wpa": "2",
- "wpa_key_mgmt": "OWE",
- "ieee80211w": "2",
- "rsn_pairwise": "CCMP" }
+ params = {"ssid": "owe",
+ "wpa": "2",
+ "wpa_key_mgmt": "OWE",
+ "ieee80211w": "2",
+ "rsn_pairwise": "CCMP"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
ap_connector = "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiJwYWtZbXVzd1dCdWpSYTl5OEsweDViaTVrT3VNT3dzZHRlaml2UG55ZHZzIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7Imdyb3VwSWQiOiIqIiwibmV0Um9sZSI6ImFwIn1dLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiIybU5vNXZuRkI5bEw3d1VWb1hJbGVPYzBNSEE1QXZKbnpwZXZULVVTYzVNIiwieSI6IlhzS3dqVHJlLTg5WWdpU3pKaG9CN1haeUttTU05OTl3V2ZaSVl0bi01Q3MifX0.XhjFpZgcSa7G2lHy0OCYTvaZFRo5Hyx6b7g7oYyusLC7C_73AJ4_BxEZQVYJXAtDuGvb3dXSkHEKxREP9Q6Qeg"
ap_netaccesskey = "30770201010420ceba752db2ad5200fa7bc565b9c05c69b7eb006751b0b329b0279de1c19ca67ca00a06082a8648ce3d030107a14403420004da6368e6f9c507d94bef0515a1722578e73430703902f267ce97af4fe51273935ec2b08d3adefbcf588224b3261a01ed76722a630cf7df7059f64862d9fee42b"
- params = { "ssid": "DPPNET01",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "DPP",
- "rsn_pairwise": "CCMP",
- "dpp_connector": ap_connector,
- "dpp_csign": csign_pub,
- "dpp_netaccesskey": ap_netaccesskey }
+ params = {"ssid": "DPPNET01",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "DPP",
+ "rsn_pairwise": "CCMP",
+ "dpp_connector": ap_connector,
+ "dpp_csign": csign_pub,
+ "dpp_netaccesskey": ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
ap_connector = "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiJwYWtZbXVzd1dCdWpSYTl5OEsweDViaTVrT3VNT3dzZHRlaml2UG55ZHZzIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7Imdyb3VwSWQiOiIqIiwibmV0Um9sZSI6ImFwIn1dLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiIybU5vNXZuRkI5bEw3d1VWb1hJbGVPYzBNSEE1QXZKbnpwZXZULVVTYzVNIiwieSI6IlhzS3dqVHJlLTg5WWdpU3pKaG9CN1haeUttTU05OTl3V2ZaSVl0bi01Q3MifX0.XhjFpZgcSa7G2lHy0OCYTvaZFRo5Hyx6b7g7oYyusLC7C_73AJ4_BxEZQVYJXAtDuGvb3dXSkHEKxREP9Q6Qeg"
ap_netaccesskey = "30770201010420ceba752db2ad5200fa7bc565b9c05c69b7eb006751b0b329b0279de1c19ca67ca00a06082a8648ce3d030107a14403420004da6368e6f9c507d94bef0515a1722578e73430703902f267ce97af4fe51273935ec2b08d3adefbcf588224b3261a01ed76722a630cf7df7059f64862d9fee42b"
- params = { "ssid": "DPPNET01",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "DPP",
- "rsn_pairwise": "CCMP",
- "dpp_connector": ap_connector,
- "dpp_csign": csign_pub,
- "dpp_netaccesskey": ap_netaccesskey }
+ params = {"ssid": "DPPNET01",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "DPP",
+ "rsn_pairwise": "CCMP",
+ "dpp_connector": ap_connector,
+ "dpp_csign": csign_pub,
+ "dpp_netaccesskey": ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
ap_connector = "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiJwYWtZbXVzd1dCdWpSYTl5OEsweDViaTVrT3VNT3dzZHRlaml2UG55ZHZzIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7Imdyb3VwSWQiOiIqIiwibmV0Um9sZSI6ImFwIn1dLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiIybU5vNXZuRkI5bEw3d1VWb1hJbGVPYzBNSEE1QXZKbnpwZXZULVVTYzVNIiwieSI6IlhzS3dqVHJlLTg5WWdpU3pKaG9CN1haeUttTU05OTl3V2ZaSVl0bi01Q3MifX0.XhjFpZgcSa7G2lHy0OCYTvaZFRo5Hyx6b7g7oYyusLC7C_73AJ4_BxEZQVYJXAtDuGvb3dXSkHEKxREP9Q6Qeg"
ap_netaccesskey = "30770201010420ceba752db2ad5200fa7bc565b9c05c69b7eb006751b0b329b0279de1c19ca67ca00a06082a8648ce3d030107a14403420004da6368e6f9c507d94bef0515a1722578e73430703902f267ce97af4fe51273935ec2b08d3adefbcf588224b3261a01ed76722a630cf7df7059f64862d9fee42b"
- params = { "ssid": "DPPNET01",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "DPP",
- "rsn_pairwise": "CCMP",
- "dpp_connector": ap_connector,
- "dpp_csign": csign_pub,
- "dpp_netaccesskey": ap_netaccesskey }
+ params = {"ssid": "DPPNET01",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "DPP",
+ "rsn_pairwise": "CCMP",
+ "dpp_connector": ap_connector,
+ "dpp_csign": csign_pub,
+ "dpp_netaccesskey": ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
ap_connector = "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiJwYWtZbXVzd1dCdWpSYTl5OEsweDViaTVrT3VNT3dzZHRlaml2UG55ZHZzIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7Imdyb3VwSWQiOiIqIiwibmV0Um9sZSI6ImFwIn1dLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiIybU5vNXZuRkI5bEw3d1VWb1hJbGVPYzBNSEE1QXZKbnpwZXZULVVTYzVNIiwieSI6IlhzS3dqVHJlLTg5WWdpU3pKaG9CN1haeUttTU05OTl3V2ZaSVl0bi01Q3MifX0.XhjFpZgcSa7G2lHy0OCYTvaZFRo5Hyx6b7g7oYyusLC7C_73AJ4_BxEZQVYJXAtDuGvb3dXSkHEKxREP9Q6Qeg"
ap_netaccesskey = "30770201010420ceba752db2ad5200fa7bc565b9c05c69b7eb006751b0b329b0279de1c19ca67ca00a06082a8648ce3d030107a14403420004da6368e6f9c507d94bef0515a1722578e73430703902f267ce97af4fe51273935ec2b08d3adefbcf588224b3261a01ed76722a630cf7df7059f64862d9fee42b"
- params = { "ssid": "DPPNET01",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "DPP",
- "rsn_pairwise": "CCMP",
- "dpp_connector": ap_connector,
- "dpp_csign": csign_pub,
- "dpp_netaccesskey": ap_netaccesskey }
+ params = {"ssid": "DPPNET01",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "DPP",
+ "rsn_pairwise": "CCMP",
+ "dpp_connector": ap_connector,
+ "dpp_csign": csign_pub,
+ "dpp_netaccesskey": ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
"""sigma_dut DPP protocol testing - Initiator"""
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- tests = [ ("InvalidValue", "AuthenticationRequest", "WrappedData",
- "BootstrapResult,OK,AuthResult,Errorsent",
- None),
- ("InvalidValue", "AuthenticationConfirm", "WrappedData",
- "BootstrapResult,OK,AuthResult,Errorsent",
- None),
- ("MissingAttribute", "AuthenticationRequest", "InitCapabilities",
- "BootstrapResult,OK,AuthResult,Errorsent",
- "Missing or invalid I-capabilities"),
- ("InvalidValue", "AuthenticationConfirm", "InitAuthTag",
- "BootstrapResult,OK,AuthResult,Errorsent",
- "Mismatching Initiator Authenticating Tag"),
- ("MissingAttribute", "ConfigurationResponse", "EnrolleeNonce",
- "BootstrapResult,OK,AuthResult,OK,ConfResult,Errorsent",
- "Missing or invalid Enrollee Nonce attribute") ]
+ tests = [("InvalidValue", "AuthenticationRequest", "WrappedData",
+ "BootstrapResult,OK,AuthResult,Errorsent",
+ None),
+ ("InvalidValue", "AuthenticationConfirm", "WrappedData",
+ "BootstrapResult,OK,AuthResult,Errorsent",
+ None),
+ ("MissingAttribute", "AuthenticationRequest", "InitCapabilities",
+ "BootstrapResult,OK,AuthResult,Errorsent",
+ "Missing or invalid I-capabilities"),
+ ("InvalidValue", "AuthenticationConfirm", "InitAuthTag",
+ "BootstrapResult,OK,AuthResult,Errorsent",
+ "Mismatching Initiator Authenticating Tag"),
+ ("MissingAttribute", "ConfigurationResponse", "EnrolleeNonce",
+ "BootstrapResult,OK,AuthResult,OK,ConfResult,Errorsent",
+ "Missing or invalid Enrollee Nonce attribute")]
for step, frame, attr, result, fail in tests:
dev[0].request("FLUSH")
dev[1].request("FLUSH")
"""sigma_dut DPP protocol testing - Responder"""
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- tests = [ ("MissingAttribute", "AuthenticationResponse", "DPPStatus",
- "BootstrapResult,OK,AuthResult,Errorsent",
- "Missing or invalid required DPP Status attribute"),
- ("MissingAttribute", "ConfigurationRequest", "EnrolleeNonce",
- "BootstrapResult,OK,AuthResult,OK,ConfResult,Errorsent",
- "Missing or invalid Enrollee Nonce attribute") ]
+ tests = [("MissingAttribute", "AuthenticationResponse", "DPPStatus",
+ "BootstrapResult,OK,AuthResult,Errorsent",
+ "Missing or invalid required DPP Status attribute"),
+ ("MissingAttribute", "ConfigurationRequest", "EnrolleeNonce",
+ "BootstrapResult,OK,AuthResult,OK,ConfResult,Errorsent",
+ "Missing or invalid Enrollee Nonce attribute")]
for step, frame, attr, result, fail in tests:
dev[0].request("FLUSH")
dev[1].request("FLUSH")
"""sigma_dut DPP protocol testing - Stop at RX on Initiator"""
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- tests = [ ("AuthenticationResponse",
- "BootstrapResult,OK,AuthResult,Errorsent",
- None),
- ("ConfigurationRequest",
- "BootstrapResult,OK,AuthResult,OK,ConfResult,Errorsent",
- None)]
+ tests = [("AuthenticationResponse",
+ "BootstrapResult,OK,AuthResult,Errorsent",
+ None),
+ ("ConfigurationRequest",
+ "BootstrapResult,OK,AuthResult,OK,ConfResult,Errorsent",
+ None)]
for frame, result, fail in tests:
dev[0].request("FLUSH")
dev[1].request("FLUSH")
"""sigma_dut DPP protocol testing - Stop at TX on Initiator/Enrollee"""
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- tests = [ ("AuthenticationConfirm",
- "BootstrapResult,OK,AuthResult,Errorsent,LastFrameReceived,AuthenticationResponse",
- None) ]
+ tests = [("AuthenticationConfirm",
+ "BootstrapResult,OK,AuthResult,Errorsent,LastFrameReceived,AuthenticationResponse",
+ None)]
for frame, result, fail in tests:
dev[0].request("FLUSH")
dev[1].request("FLUSH")
"""sigma_dut DPP protocol testing - Stop at RX on Responder"""
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- tests = [ ("AuthenticationRequest",
- "BootstrapResult,OK,AuthResult,Errorsent",
- None),
- ("AuthenticationConfirm",
- "BootstrapResult,OK,AuthResult,Errorsent",
- None) ]
+ tests = [("AuthenticationRequest",
+ "BootstrapResult,OK,AuthResult,Errorsent",
+ None),
+ ("AuthenticationConfirm",
+ "BootstrapResult,OK,AuthResult,Errorsent",
+ None)]
for frame, result, fail in tests:
dev[0].request("FLUSH")
dev[1].request("FLUSH")
"""sigma_dut DPP protocol testing - Initiator (PKEX)"""
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- tests = [ ("InvalidValue", "PKEXCRRequest", "WrappedData",
- "BootstrapResult,Errorsent",
- None),
- ("MissingAttribute", "PKEXExchangeRequest", "FiniteCyclicGroup",
- "BootstrapResult,Errorsent",
- "Missing or invalid Finite Cyclic Group attribute"),
- ("MissingAttribute", "PKEXCRRequest", "BSKey",
- "BootstrapResult,Errorsent",
- "No valid peer bootstrapping key found") ]
+ tests = [("InvalidValue", "PKEXCRRequest", "WrappedData",
+ "BootstrapResult,Errorsent",
+ None),
+ ("MissingAttribute", "PKEXExchangeRequest", "FiniteCyclicGroup",
+ "BootstrapResult,Errorsent",
+ "Missing or invalid Finite Cyclic Group attribute"),
+ ("MissingAttribute", "PKEXCRRequest", "BSKey",
+ "BootstrapResult,Errorsent",
+ "No valid peer bootstrapping key found")]
for step, frame, attr, result, fail in tests:
dev[0].request("FLUSH")
dev[1].request("FLUSH")
"""sigma_dut DPP protocol testing - Responder (PKEX)"""
check_dpp_capab(dev[0])
check_dpp_capab(dev[1])
- tests = [ ("InvalidValue", "PKEXCRResponse", "WrappedData",
- "BootstrapResult,Errorsent",
- None),
- ("MissingAttribute", "PKEXExchangeResponse", "DPPStatus",
- "BootstrapResult,Errorsent",
- "No DPP Status attribute"),
- ("MissingAttribute", "PKEXCRResponse", "BSKey",
- "BootstrapResult,Errorsent",
- "No valid peer bootstrapping key found") ]
+ tests = [("InvalidValue", "PKEXCRResponse", "WrappedData",
+ "BootstrapResult,Errorsent",
+ None),
+ ("MissingAttribute", "PKEXExchangeResponse", "DPPStatus",
+ "BootstrapResult,Errorsent",
+ "No DPP Status attribute"),
+ ("MissingAttribute", "PKEXCRResponse", "BSKey",
+ "BootstrapResult,Errorsent",
+ "No valid peer bootstrapping key found")]
for step, frame, attr, result, fail in tests:
dev[0].request("FLUSH")
dev[1].request("FLUSH")
ap_connector = "eyJ0eXAiOiJkcHBDb24iLCJraWQiOiJwYWtZbXVzd1dCdWpSYTl5OEsweDViaTVrT3VNT3dzZHRlaml2UG55ZHZzIiwiYWxnIjoiRVMyNTYifQ.eyJncm91cHMiOlt7Imdyb3VwSWQiOiIqIiwibmV0Um9sZSI6ImFwIn1dLCJuZXRBY2Nlc3NLZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiIybU5vNXZuRkI5bEw3d1VWb1hJbGVPYzBNSEE1QXZKbnpwZXZULVVTYzVNIiwieSI6IlhzS3dqVHJlLTg5WWdpU3pKaG9CN1haeUttTU05OTl3V2ZaSVl0bi01Q3MifX0.XhjFpZgcSa7G2lHy0OCYTvaZFRo5Hyx6b7g7oYyusLC7C_73AJ4_BxEZQVYJXAtDuGvb3dXSkHEKxREP9Q6Qeg"
ap_netaccesskey = "30770201010420ceba752db2ad5200fa7bc565b9c05c69b7eb006751b0b329b0279de1c19ca67ca00a06082a8648ce3d030107a14403420004da6368e6f9c507d94bef0515a1722578e73430703902f267ce97af4fe51273935ec2b08d3adefbcf588224b3261a01ed76722a630cf7df7059f64862d9fee42b"
- params = { "ssid": "DPPNET01",
- "wpa": "2",
- "ieee80211w": "2",
- "wpa_key_mgmt": "DPP",
- "rsn_pairwise": "CCMP",
- "dpp_connector": ap_connector,
- "dpp_csign": csign_pub,
- "dpp_netaccesskey": ap_netaccesskey }
+ params = {"ssid": "DPPNET01",
+ "wpa": "2",
+ "ieee80211w": "2",
+ "wpa_key_mgmt": "DPP",
+ "rsn_pairwise": "CCMP",
+ "dpp_connector": ap_connector,
+ "dpp_csign": csign_pub,
+ "dpp_netaccesskey": ap_netaccesskey}
try:
hapd = hostapd.add_ap(apdev[0], params)
except:
"""sigma_dut DPP Configurator enrolling an AP and using self-configuration"""
check_dpp_capab(dev[0])
- hapd = hostapd.add_ap(apdev[0], { "ssid": "unconfigured" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "unconfigured"})
check_dpp_capab(hapd)
sigma = start_sigma_dut(dev[0].ifname)
def run_sigma_dut_wps_pbc(dev, apdev):
ssid = "test-wps-conf"
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wps", "eap_server": "1", "wps_state": "2",
- "wpa_passphrase": "12345678", "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP" })
+ {"ssid": "wps", "eap_server": "1", "wps_state": "2",
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
hapd.request("WPS_PBC")
ifname = dev[0].ifname
def test_sigma_dut_sta_scan_bss(dev, apdev):
"""sigma_dut sta_scan_bss"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test"})
sigma = start_sigma_dut(dev[0].ifname)
try:
cmd = "sta_scan_bss,Interface,%s,BSSID,%s" % (dev[0].ifname, \
url2 = "https://example.org/venue-info/"
params["venue_group"] = str(venue_group)
params["venue_type"] = str(venue_type)
- params["venue_name"] = [ lang1 + ":" + name1, lang2 + ":" + name2 ]
- params["venue_url"] = [ "1:" + url1, "2:" + url2 ]
+ params["venue_name"] = [lang1 + ":" + name1, lang2 + ":" + name2]
+ params["venue_url"] = ["1:" + url1, "2:" + url2]
hapd = hostapd.add_ap(apdev[0], params)
@remote_compatible
def test_ssid_hex_encoded(dev, apdev):
"""SSID configuration using hex encoded version"""
- hostapd.add_ap(apdev[0], { "ssid2": '68656c6c6f' })
+ hostapd.add_ap(apdev[0], {"ssid2": '68656c6c6f'})
dev[0].connect("hello", key_mgmt="NONE", scan_freq="2412")
dev[1].connect(ssid2="68656c6c6f", key_mgmt="NONE", scan_freq="2412")
def test_ssid_printf_encoded(dev, apdev):
"""SSID configuration using printf encoded version"""
- hostapd.add_ap(apdev[0], { "ssid2": 'P"\\0hello\\nthere"' })
+ hostapd.add_ap(apdev[0], {"ssid2": 'P"\\0hello\\nthere"'})
dev[0].connect(ssid2="0068656c6c6f0a7468657265", key_mgmt="NONE",
scan_freq="2412")
dev[1].connect(ssid2='P"\\x00hello\\nthere"', key_mgmt="NONE",
@remote_compatible
def test_ssid_1_octet(dev, apdev):
"""SSID with one octet"""
- hostapd.add_ap(apdev[0], { "ssid": '1' })
+ hostapd.add_ap(apdev[0], {"ssid": '1'})
dev[0].connect("1", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_ssid_32_octets(dev, apdev):
"""SSID with 32 octets"""
hostapd.add_ap(apdev[0],
- { "ssid": '1234567890abcdef1234567890ABCDEF' })
+ {"ssid": '1234567890abcdef1234567890ABCDEF'})
dev[0].connect("1234567890abcdef1234567890ABCDEF", key_mgmt="NONE",
scan_freq="2412")
"""SSID with 32 octets with nul at the end"""
ssid = 'P"1234567890abcdef1234567890ABCDE\\x00"'
hostapd.add_ap(apdev[0],
- { "ssid2": ssid })
+ {"ssid2": ssid})
dev[0].connect(ssid2=ssid, key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_ssid_utf8(dev, apdev):
"""SSID with UTF8 encoding"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": 'testi-åäöÅÄÖ-testi',
- "utf8_ssid": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'testi-åäöÅÄÖ-testi',
+ "utf8_ssid": "1"})
dev[0].connect("testi-åäöÅÄÖ-testi", key_mgmt="NONE", scan_freq="2412")
dev[1].connect(ssid2="74657374692dc3a5c3a4c3b6c385c384c3962d7465737469",
key_mgmt="NONE", scan_freq="2412")
# verify ctrl_iface for coverage
- addrs = [ dev[0].p2p_interface_addr(), dev[1].p2p_interface_addr() ]
+ addrs = [dev[0].p2p_interface_addr(), dev[1].p2p_interface_addr()]
sta = hapd.get_sta(None)
if sta['addr'] not in addrs:
raise Exception("Unexpected STA address")
@remote_compatible
def test_ssid_hidden(dev, apdev):
"""Hidden SSID"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": 'secret',
- "ignore_broadcast_ssid": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'secret',
+ "ignore_broadcast_ssid": "1"})
dev[1].connect("secret", key_mgmt="NONE", scan_freq="2412",
wait_connect=False)
dev[0].connect("secret", key_mgmt="NONE", scan_freq="2412", scan_ssid="1")
@remote_compatible
def test_ssid_hidden2(dev, apdev):
"""Hidden SSID using zero octets as payload"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": 'secret2',
- "ignore_broadcast_ssid": "2" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": 'secret2',
+ "ignore_broadcast_ssid": "2"})
dev[1].connect("secret2", key_mgmt="NONE", scan_freq="2412",
wait_connect=False)
dev[0].connect("secret2", key_mgmt="NONE", scan_freq="2412", scan_ssid="1")
def test_sta_ap_scan_0(dev, apdev):
"""Dynamically added wpa_supplicant interface with AP_SCAN 0 connection"""
- hostapd.add_ap(apdev[0], { "ssid": "test" })
+ hostapd.add_ap(apdev[0], {"ssid": "test"})
bssid = apdev[0]['bssid']
logger.info("Create a dynamic wpa_supplicant interface and connect")
def test_sta_ap_scan_2(dev, apdev):
"""Dynamically added wpa_supplicant interface with AP_SCAN 2 connection"""
- hostapd.add_ap(apdev[0], { "ssid": "test" })
+ hostapd.add_ap(apdev[0], {"ssid": "test"})
bssid = apdev[0]['bssid']
logger.info("Create a dynamic wpa_supplicant interface and connect")
def test_sta_ap_scan_2b(dev, apdev):
"""Dynamically added wpa_supplicant interface with AP_SCAN 2 operation"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test"})
bssid = apdev[0]['bssid']
logger.info("Create a dynamic wpa_supplicant interface and connect")
if not tls.startswith("OpenSSL"):
raise HwsimSkip("TLS library not supported for Suite B: " + tls)
supported = False
- for ver in [ '1.0.2', '1.1.0', '1.1.1' ]:
+ for ver in ['1.0.2', '1.1.0', '1.1.1']:
if "build=OpenSSL " + ver in tls and "run=OpenSSL " + ver in tls:
supported = True
break
raise HwsimSkip("OpenSSL version not supported for Suite B: " + tls)
def suite_b_ap_params():
- params = { "ssid": "test-suite-b",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-EAP-SUITE-B",
- "rsn_pairwise": "GCMP",
- "group_mgmt_cipher": "BIP-GMAC-128",
- "ieee80211w": "2",
- "ieee8021x": "1",
- "openssl_ciphers": "SUITEB128",
- #"dh_file": "auth_serv/dh.conf",
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/ec-ca.pem",
- "server_cert": "auth_serv/ec-server.pem",
- "private_key": "auth_serv/ec-server.key" }
+ params = {"ssid": "test-suite-b",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-EAP-SUITE-B",
+ "rsn_pairwise": "GCMP",
+ "group_mgmt_cipher": "BIP-GMAC-128",
+ "ieee80211w": "2",
+ "ieee8021x": "1",
+ "openssl_ciphers": "SUITEB128",
+ #"dh_file": "auth_serv/dh.conf",
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/ec-ca.pem",
+ "server_cert": "auth_serv/ec-server.pem",
+ "private_key": "auth_serv/ec-server.key"}
return params
def test_suite_b(dev, apdev):
params = suite_b_as_params()
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-suite-b",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-EAP-SUITE-B",
- "rsn_pairwise": "GCMP",
- "group_mgmt_cipher": "BIP-GMAC-128",
- "ieee80211w": "2",
- "ieee8021x": "1",
- 'auth_server_addr': "127.0.0.1",
- 'auth_server_port': "18129",
- 'auth_server_shared_secret': "radius",
- 'nas_identifier': "nas.w1.fi" }
+ params = {"ssid": "test-suite-b",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-EAP-SUITE-B",
+ "rsn_pairwise": "GCMP",
+ "group_mgmt_cipher": "BIP-GMAC-128",
+ "ieee80211w": "2",
+ "ieee8021x": "1",
+ 'auth_server_addr': "127.0.0.1",
+ 'auth_server_port': "18129",
+ 'auth_server_shared_secret': "radius",
+ 'nas_identifier': "nas.w1.fi"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-suite-b", key_mgmt="WPA-EAP-SUITE-B", ieee80211w="2",
check_suite_b_tls_lib(dev, dhe=dhe)
def suite_b_192_ap_params():
- params = { "ssid": "test-suite-b",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
- "rsn_pairwise": "GCMP-256",
- "group_mgmt_cipher": "BIP-GMAC-256",
- "ieee80211w": "2",
- "ieee8021x": "1",
- "openssl_ciphers": "SUITEB192",
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/ec2-ca.pem",
- "server_cert": "auth_serv/ec2-server.pem",
- "private_key": "auth_serv/ec2-server.key" }
+ params = {"ssid": "test-suite-b",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
+ "rsn_pairwise": "GCMP-256",
+ "group_mgmt_cipher": "BIP-GMAC-256",
+ "ieee80211w": "2",
+ "ieee8021x": "1",
+ "openssl_ciphers": "SUITEB192",
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/ec2-ca.pem",
+ "server_cert": "auth_serv/ec2-server.pem",
+ "private_key": "auth_serv/ec2-server.key"}
return params
def test_suite_b_192(dev, apdev):
params['openssl_ciphers'] = 'SUITEB192'
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-suite-b",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
- "rsn_pairwise": "GCMP-256",
- "group_mgmt_cipher": "BIP-GMAC-256",
- "ieee80211w": "2",
- "ieee8021x": "1",
- 'auth_server_addr': "127.0.0.1",
- 'auth_server_port': "18129",
- 'auth_server_shared_secret': "radius",
- 'nas_identifier': "nas.w1.fi" }
+ params = {"ssid": "test-suite-b",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
+ "rsn_pairwise": "GCMP-256",
+ "group_mgmt_cipher": "BIP-GMAC-256",
+ "ieee80211w": "2",
+ "ieee8021x": "1",
+ 'auth_server_addr': "127.0.0.1",
+ 'auth_server_port': "18129",
+ 'auth_server_shared_secret': "radius",
+ 'nas_identifier': "nas.w1.fi"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-suite-b", key_mgmt="WPA-EAP-SUITE-B-192",
params['openssl_ciphers'] = 'SUITEB192'
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-suite-b",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
- "rsn_pairwise": "GCMP-256",
- "group_mgmt_cipher": "BIP-GMAC-256",
- "ieee80211w": "2",
- "ieee8021x": "1",
- 'auth_server_addr': "127.0.0.1",
- 'auth_server_port': "18129",
- 'auth_server_shared_secret': "radius",
- 'nas_identifier': "nas.w1.fi" }
+ params = {"ssid": "test-suite-b",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
+ "rsn_pairwise": "GCMP-256",
+ "group_mgmt_cipher": "BIP-GMAC-256",
+ "ieee80211w": "2",
+ "ieee8021x": "1",
+ 'auth_server_addr': "127.0.0.1",
+ 'auth_server_port': "18129",
+ 'auth_server_shared_secret': "radius",
+ 'nas_identifier': "nas.w1.fi"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-suite-b", key_mgmt="WPA-EAP-SUITE-B-192",
dev[0].wait_disconnected()
def suite_b_192_rsa_ap_params():
- params = { "ssid": "test-suite-b",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
- "rsn_pairwise": "GCMP-256",
- "group_mgmt_cipher": "BIP-GMAC-256",
- "ieee80211w": "2",
- "ieee8021x": "1",
- "tls_flags": "[SUITEB]",
- "dh_file": "auth_serv/dh_param_3072.pem",
- "eap_server": "1",
- "eap_user_file": "auth_serv/eap_user.conf",
- "ca_cert": "auth_serv/rsa3072-ca.pem",
- "server_cert": "auth_serv/rsa3072-server.pem",
- "private_key": "auth_serv/rsa3072-server.key" }
+ params = {"ssid": "test-suite-b",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
+ "rsn_pairwise": "GCMP-256",
+ "group_mgmt_cipher": "BIP-GMAC-256",
+ "ieee80211w": "2",
+ "ieee8021x": "1",
+ "tls_flags": "[SUITEB]",
+ "dh_file": "auth_serv/dh_param_3072.pem",
+ "eap_server": "1",
+ "eap_user_file": "auth_serv/eap_user.conf",
+ "ca_cert": "auth_serv/rsa3072-ca.pem",
+ "server_cert": "auth_serv/rsa3072-server.pem",
+ "private_key": "auth_serv/rsa3072-server.key"}
return params
def test_suite_b_192_rsa(dev, apdev):
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-suite-b",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
- "rsn_pairwise": "GCMP-256",
- "group_mgmt_cipher": "BIP-GMAC-256",
- "ieee80211w": "2",
- "ieee8021x": "1",
- 'auth_server_addr': "127.0.0.1",
- 'auth_server_port': "18129",
- 'auth_server_shared_secret': "radius",
- 'nas_identifier': "nas.w1.fi" }
+ params = {"ssid": "test-suite-b",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
+ "rsn_pairwise": "GCMP-256",
+ "group_mgmt_cipher": "BIP-GMAC-256",
+ "ieee80211w": "2",
+ "ieee8021x": "1",
+ 'auth_server_addr': "127.0.0.1",
+ 'auth_server_port': "18129",
+ 'auth_server_shared_secret': "radius",
+ 'nas_identifier': "nas.w1.fi"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-suite-b", key_mgmt="WPA-EAP-SUITE-B-192",
hostapd.add_ap(apdev[1], params)
- params = { "ssid": "test-suite-b",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
- "rsn_pairwise": "GCMP-256",
- "group_mgmt_cipher": "BIP-GMAC-256",
- "ieee80211w": "2",
- "ieee8021x": "1",
- 'auth_server_addr': "127.0.0.1",
- 'auth_server_port': "18129",
- 'auth_server_shared_secret': "radius",
- 'nas_identifier': "nas.w1.fi" }
+ params = {"ssid": "test-suite-b",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-EAP-SUITE-B-192",
+ "rsn_pairwise": "GCMP-256",
+ "group_mgmt_cipher": "BIP-GMAC-256",
+ "ieee80211w": "2",
+ "ieee8021x": "1",
+ 'auth_server_addr': "127.0.0.1",
+ 'auth_server_port': "18129",
+ 'auth_server_shared_secret': "radius",
+ 'nas_identifier': "nas.w1.fi"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-suite-b", key_mgmt="WPA-EAP-SUITE-B-192",
params["tnc"] = "1"
hostapd.add_ap(apdev[0], params)
- tests = [ (1, "tncc_build_soh"),
- (1, "eap_msg_alloc;=eap_peap_phase2_request") ]
+ tests = [(1, "tncc_build_soh"),
+ (1, "eap_msg_alloc;=eap_peap_phase2_request")]
for count, func in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
params["fragment_size"] = "150"
hostapd.add_ap(apdev[0], params)
- tests = [ (1, "eap_ttls_process_phase2_eap;eap_ttls_process_tnc_start",
- "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
- (1, "eap_ttls_process_phase2_eap;eap_ttls_process_tnc_start",
- "mschap user", "auth=MSCHAP"),
- (1, "=eap_tnc_init", "chap user", "auth=CHAP"),
- (1, "tncc_init;eap_tnc_init", "pap user", "auth=PAP"),
- (1, "eap_msg_alloc;eap_tnc_build_frag_ack",
- "pap user", "auth=PAP"),
- (1, "eap_msg_alloc;eap_tnc_build_msg",
- "pap user", "auth=PAP"),
- (1, "wpabuf_alloc;=eap_tnc_process_fragment",
- "pap user", "auth=PAP"),
- (1, "eap_msg_alloc;=eap_tnc_process", "pap user", "auth=PAP"),
- (1, "wpabuf_alloc;=eap_tnc_process", "pap user", "auth=PAP"),
- (1, "dup_binstr;tncc_process_if_tnccs", "pap user", "auth=PAP"),
- (1, "tncc_get_base64;tncc_process_if_tnccs",
- "pap user", "auth=PAP"),
- (1, "tncc_if_tnccs_start", "pap user", "auth=PAP"),
- (1, "tncc_if_tnccs_end", "pap user", "auth=PAP"),
- (1, "tncc_parse_imc", "pap user", "auth=PAP"),
- (2, "tncc_parse_imc", "pap user", "auth=PAP"),
- (3, "tncc_parse_imc", "pap user", "auth=PAP"),
- (1, "os_readfile;tncc_read_config", "pap user", "auth=PAP"),
- (1, "tncc_init", "pap user", "auth=PAP"),
- (1, "TNC_TNCC_ReportMessageTypes", "pap user", "auth=PAP"),
- (1, "base64_gen_encode;?base64_encode;TNC_TNCC_SendMessage",
- "pap user", "auth=PAP"),
- (1, "=TNC_TNCC_SendMessage", "pap user", "auth=PAP"),
- (1, "tncc_get_base64;tncc_process_if_tnccs",
- "pap user", "auth=PAP") ]
+ tests = [(1, "eap_ttls_process_phase2_eap;eap_ttls_process_tnc_start",
+ "DOMAIN\mschapv2 user", "auth=MSCHAPV2"),
+ (1, "eap_ttls_process_phase2_eap;eap_ttls_process_tnc_start",
+ "mschap user", "auth=MSCHAP"),
+ (1, "=eap_tnc_init", "chap user", "auth=CHAP"),
+ (1, "tncc_init;eap_tnc_init", "pap user", "auth=PAP"),
+ (1, "eap_msg_alloc;eap_tnc_build_frag_ack",
+ "pap user", "auth=PAP"),
+ (1, "eap_msg_alloc;eap_tnc_build_msg",
+ "pap user", "auth=PAP"),
+ (1, "wpabuf_alloc;=eap_tnc_process_fragment",
+ "pap user", "auth=PAP"),
+ (1, "eap_msg_alloc;=eap_tnc_process", "pap user", "auth=PAP"),
+ (1, "wpabuf_alloc;=eap_tnc_process", "pap user", "auth=PAP"),
+ (1, "dup_binstr;tncc_process_if_tnccs", "pap user", "auth=PAP"),
+ (1, "tncc_get_base64;tncc_process_if_tnccs",
+ "pap user", "auth=PAP"),
+ (1, "tncc_if_tnccs_start", "pap user", "auth=PAP"),
+ (1, "tncc_if_tnccs_end", "pap user", "auth=PAP"),
+ (1, "tncc_parse_imc", "pap user", "auth=PAP"),
+ (2, "tncc_parse_imc", "pap user", "auth=PAP"),
+ (3, "tncc_parse_imc", "pap user", "auth=PAP"),
+ (1, "os_readfile;tncc_read_config", "pap user", "auth=PAP"),
+ (1, "tncc_init", "pap user", "auth=PAP"),
+ (1, "TNC_TNCC_ReportMessageTypes", "pap user", "auth=PAP"),
+ (1, "base64_gen_encode;?base64_encode;TNC_TNCC_SendMessage",
+ "pap user", "auth=PAP"),
+ (1, "=TNC_TNCC_SendMessage", "pap user", "auth=PAP"),
+ (1, "tncc_get_base64;tncc_process_if_tnccs",
+ "pap user", "auth=PAP")]
for count, func, identity, phase2 in tests:
with alloc_fail(dev[0], count, func):
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
check_eap_capa(dev[0], "FAST")
params = int_eap_server_params()
params["tnc"] = "1"
- params["pac_opaque_encr_key"] ="000102030405060708090a0b0c0d0e00"
+ params["pac_opaque_encr_key"] = "000102030405060708090a0b0c0d0e00"
params["eap_fast_a_id"] = "101112131415161718191a1b1c1d1e00"
params["eap_fast_a_id_info"] = "test server2"
def test_wep_open_auth(dev, apdev):
"""WEP Open System authentication"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wep-open",
- "wep_key0": '"hello"' })
+ {"ssid": "wep-open",
+ "wep_key0": '"hello"'})
dev[0].flush_scan_cache()
dev[0].connect("wep-open", key_mgmt="NONE", wep_key0='"hello"',
scan_freq="2412")
def test_wep_shared_key_auth(dev, apdev):
"""WEP Shared Key authentication"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wep-shared-key",
- "wep_key0": '"hello12345678"',
- "auth_algs": "2" })
+ {"ssid": "wep-shared-key",
+ "wep_key0": '"hello12345678"',
+ "auth_algs": "2"})
dev[0].connect("wep-shared-key", key_mgmt="NONE", auth_alg="SHARED",
wep_key0='"hello12345678"',
scan_freq="2412")
def test_wep_shared_key_auth_not_allowed(dev, apdev):
"""WEP Shared Key authentication not allowed"""
hostapd.add_ap(apdev[0],
- { "ssid": "wep-shared-key",
- "wep_key0": '"hello12345678"',
- "auth_algs": "1" })
+ {"ssid": "wep-shared-key",
+ "wep_key0": '"hello12345678"',
+ "auth_algs": "1"})
dev[0].connect("wep-shared-key", key_mgmt="NONE", auth_alg="SHARED",
wep_key0='"hello12345678"',
scan_freq="2412", wait_connect=False)
def test_wep_shared_key_auth_multi_key(dev, apdev):
"""WEP Shared Key authentication with multiple keys"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wep-shared-key",
- "wep_key0": '"hello12345678"',
- "wep_key1": '"other12345678"',
- "auth_algs": "2" })
+ {"ssid": "wep-shared-key",
+ "wep_key0": '"hello12345678"',
+ "wep_key1": '"other12345678"',
+ "auth_algs": "2"})
dev[0].connect("wep-shared-key", key_mgmt="NONE", auth_alg="SHARED",
wep_key0='"hello12345678"',
scan_freq="2412")
dev[0].flush_scan_cache()
try:
hapd = None
- params = { "ssid": "test-vht40-wep",
- "country_code": "SE",
- "hw_mode": "a",
- "channel": "36",
- "ieee80211n": "1",
- "ieee80211ac": "1",
- "ht_capab": "[HT40+]",
- "vht_capab": "",
- "vht_oper_chwidth": "0",
- "vht_oper_centr_freq_seg0_idx": "0",
- "wep_key0": '"hello"' }
+ params = {"ssid": "test-vht40-wep",
+ "country_code": "SE",
+ "hw_mode": "a",
+ "channel": "36",
+ "ieee80211n": "1",
+ "ieee80211ac": "1",
+ "ht_capab": "[HT40+]",
+ "vht_capab": "",
+ "vht_oper_chwidth": "0",
+ "vht_oper_centr_freq_seg0_idx": "0",
+ "wep_key0": '"hello"'}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-vht40-wep", scan_freq="5180", key_mgmt="NONE",
wep_key0='"hello"')
def test_wep_ifdown(dev, apdev):
"""AP with WEP and external ifconfig down"""
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wep-open",
- "wep_key0": '"hello"' })
+ {"ssid": "wep-open",
+ "wep_key0": '"hello"'})
dev[0].flush_scan_cache()
id = dev[0].connect("wep-open", key_mgmt="NONE", wep_key0='"hello"',
scan_freq="2412")
"""WEXT driver interface with open network"""
wpas = get_wext_interface()
- params = { "ssid": "wext-open" }
+ params = {"ssid": "wext-open"}
hapd = hostapd.add_ap(apdev[0], params)
wpas.connect("wext-open", key_mgmt="NONE")
wpas = get_wext_interface()
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wep-open",
- "wep_key0": '"hello"' })
+ {"ssid": "wep-open",
+ "wep_key0": '"hello"'})
wpas.connect("wep-open", key_mgmt="NONE", wep_key0='"hello"',
scan_freq="2412")
hwsim_utils.test_connectivity(wpas, hapd)
wpas = get_wext_interface()
hapd = hostapd.add_ap(apdev[0],
- { "ssid": "wep-shared-key",
- "wep_key0": '"hello12345678"',
- "auth_algs": "2" })
+ {"ssid": "wep-shared-key",
+ "wep_key0": '"hello12345678"',
+ "auth_algs": "2"})
wpas.connect("wep-shared-key", key_mgmt="NONE", auth_alg="SHARED",
wep_key0='"hello12345678"', scan_freq="2412")
hwsim_utils.test_connectivity(wpas, hapd)
"""WEXT with hidden SSID"""
wpas = get_wext_interface()
- hapd = hostapd.add_ap(apdev[0], { "ssid": "test-scan",
- "ignore_broadcast_ssid": "1" })
- hapd2 = hostapd.add_ap(apdev[1], { "ssid": "test-scan2",
- "ignore_broadcast_ssid": "1" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "test-scan",
+ "ignore_broadcast_ssid": "1"})
+ hapd2 = hostapd.add_ap(apdev[1], {"ssid": "test-scan2",
+ "ignore_broadcast_ssid": "1"})
id1 = wpas.connect("test-scan", key_mgmt="NONE", scan_ssid="1",
only_add_network=True)
wpas = get_wext_interface()
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
wpas.connect("open", key_mgmt="NONE", scan_freq="2412")
try:
logger.info("rfkill block")
CFG = """
ifaces :
{
- ids = ["%s", "%s" ]
+ ids = ["%s", "%s"]
links = (
(0, 1, 30)
)
CFG3 = """
ifaces :
{
- ids = ["%s", "%s", "%s", "%s", "%s" ]
+ ids = ["%s", "%s", "%s", "%s", "%s"]
}
model:
raise Exception("Unexpected mode: " + mode)
# set mesh path request ttl
- subprocess.check_call([ "iw", "dev", dev[0].ifname, "set", "mesh_param",
- "mesh_element_ttl=" + ("4" if ok else "3") ])
+ subprocess.check_call(["iw", "dev", dev[0].ifname, "set", "mesh_param",
+ "mesh_element_ttl=" + ("4" if ok else "3")])
# Check for peer connected
for i in range(0, 5):
filt = "wlan.fc.type_subtype == 0x000d && " + \
"wlan_mgt.fixed.mesh_action == 0x01 && " + \
"wlan_mgt.tag.number == 126"
- out = run_tshark(capfile, filt, [ "wlan.rann.root_sta" ])
+ out = run_tshark(capfile, filt, ["wlan.rann.root_sta"])
if out is None:
raise Exception("No captured data found\n")
if out.find(dev[2].own_addr()) == -1 or \
"wlan.fc.type_subtype == 0x000d && " + \
"wlan_mgt.fixed.mesh_action == 0x01 && " + \
"wlan_mgt.tag.number == 126"
- out = run_tshark(capfile, filt, [ "frame.time_relative" ])
+ out = run_tshark(capfile, filt, ["frame.time_relative"])
if out is None:
raise Exception("No captured data found\n")
lines = out.splitlines()
"wlan.fc.type_subtype == 0x000d && " + \
"wlan_mgt.fixed.mesh_action == 0x01 && " + \
"wlan_mgt.tag.number == 130"
- out = run_tshark(capfile, filt, [ "wlan.sa", "wlan.da" ])
+ out = run_tshark(capfile, filt, ["wlan.sa", "wlan.da"])
if out is None:
raise Exception("No captured data found\n")
if len(out) > 0:
@remote_compatible
def test_wnm_bss_transition_mgmt(dev, apdev):
"""WNM BSS Transition Management"""
- params = { "ssid": "test-wnm",
- "time_advertisement": "2",
- "time_zone": "EST5",
- "wnm_sleep_mode": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "time_advertisement": "2",
+ "time_zone": "EST5",
+ "wnm_sleep_mode": "1",
+ "bss_transition": "1"}
hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
def test_wnm_bss_transition_mgmt_oom(dev, apdev):
"""WNM BSS Transition Management OOM"""
- params = { "ssid": "test-wnm", "bss_transition": "1" }
+ params = {"ssid": "test-wnm", "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_wnm_disassoc_imminent(dev, apdev):
"""WNM Disassociation Imminent"""
- params = { "ssid": "test-wnm",
- "time_advertisement": "2",
- "time_zone": "EST5",
- "wnm_sleep_mode": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "time_advertisement": "2",
+ "time_zone": "EST5",
+ "wnm_sleep_mode": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
def test_wnm_disassoc_imminent_fail(dev, apdev):
"""WNM Disassociation Imminent failure"""
- params = { "ssid": "test-wnm", "bss_transition": "1" }
+ params = {"ssid": "test-wnm", "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_wnm_ess_disassoc_imminent(dev, apdev):
"""WNM ESS Disassociation Imminent"""
- params = { "ssid": "test-wnm",
- "time_advertisement": "2",
- "time_zone": "EST5",
- "wnm_sleep_mode": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "time_advertisement": "2",
+ "time_zone": "EST5",
+ "wnm_sleep_mode": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
def test_wnm_ess_disassoc_imminent_fail(dev, apdev):
"""WNM ESS Disassociation Imminent failure"""
- params = { "ssid": "test-wnm", "bss_transition": "1" }
+ params = {"ssid": "test-wnm", "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
def test_wnm_ess_disassoc_imminent_reject(dev, apdev):
"""WNM ESS Disassociation Imminent getting rejected"""
- params = { "ssid": "test-wnm",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
@remote_compatible
def test_wnm_sleep_mode_open(dev, apdev):
"""WNM Sleep Mode - open"""
- params = { "ssid": "test-wnm",
- "time_advertisement": "2",
- "time_zone": "EST5",
- "wnm_sleep_mode": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "time_advertisement": "2",
+ "time_zone": "EST5",
+ "wnm_sleep_mode": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
check_wnm_sleep_mode_enter_exit(hapd, dev[0])
check_wnm_sleep_mode_enter_exit(hapd, dev[0], interval=100)
check_wnm_sleep_mode_enter_exit(hapd, dev[0], tfs_req="5b17010001130e110000071122334455661122334455661234")
- cmds = [ "foo",
- "exit tfs_req=123 interval=10",
- "enter tfs_req=qq interval=10" ]
+ cmds = ["foo",
+ "exit tfs_req=123 interval=10",
+ "enter tfs_req=qq interval=10"]
for cmd in cmds:
if "FAIL" not in dev[0].request("WNM_SLEEP " + cmd):
raise Exception("Invalid WNM_SLEEP accepted")
def test_wnm_sleep_mode_open_fail(dev, apdev):
"""WNM Sleep Mode - open (fail)"""
- params = { "ssid": "test-wnm", "wnm_sleep_mode": "1" }
+ params = {"ssid": "test-wnm", "wnm_sleep_mode": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm-rsn", psk="12345678", scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
check_wnm_sleep_mode_enter_exit(hapd, dev[0])
@remote_compatible
def test_wnm_sleep_mode_ap_oom(dev, apdev):
"""WNM Sleep Mode - AP side OOM"""
- params = { "ssid": "test-wnm",
- "wnm_sleep_mode": "1" }
+ params = {"ssid": "test-wnm",
+ "wnm_sleep_mode": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
with alloc_fail(hapd, 1, "ieee802_11_send_wnmsleep_resp"):
dev[0].connect("test-wnm-rsn", psk="12345678", ieee80211w="2",
key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
check_wnm_sleep_mode_enter_exit(hapd, dev[0])
dev[0].connect("test-wnm-rsn", psk="12345678", ieee80211w="2", ocv="1",
key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
check_wnm_sleep_mode_enter_exit(hapd, dev[0])
# Check if OCV succeeded or failed
- ev = dev[0].wait_event([ "OCV failed" ], timeout=1)
+ ev = dev[0].wait_event(["OCV failed"], timeout=1)
if ev is not None:
raise Exception("OCI verification failed: " + ev)
dev[0].request("WNM_SLEEP enter")
time.sleep(0.1)
- msg = { 'fc': MGMT_SUBTYPE_ACTION << 4,
- 'da': bssid,
- 'sa': dev[0].own_addr(),
- 'bssid': bssid }
+ msg = {'fc': MGMT_SUBTYPE_ACTION << 4,
+ 'da': bssid,
+ 'sa': dev[0].own_addr(),
+ 'bssid': bssid}
logger.debug("WNM Sleep Mode Request - Missing OCI element")
msg['payload'] = struct.pack("<BBBBBBBHBB",
WLAN_EID_TFS_REQ, 0)
mgmt_tx(dev[0], "MGMT_TX {} {} freq=2412 wait_time=200 no_cck=1 action={}".format(
msg['da'], msg['bssid'], binascii.hexlify(msg['payload']).decode()))
- ev = hapd.wait_event([ "OCV failed" ], timeout=5)
+ ev = hapd.wait_event(["OCV failed"], timeout=5)
if ev is None:
raise Exception("AP did not report missing OCI element")
msg['payload'] += struct.pack("<BBB", WLAN_EID_EXTENSION, 1 + len(oci_ie),
WLAN_EID_EXT_OCV_OCI) + oci_ie
mgmt_tx(dev[0], "MGMT_TX {} {} freq=2412 wait_time=200 no_cck=1 action={}".format(
- msg['da'], msg['bssid'] , binascii.hexlify(msg['payload']).decode()))
- ev = hapd.wait_event([ "OCV failed" ], timeout=5)
+ msg['da'], msg['bssid'], binascii.hexlify(msg['payload']).decode()))
+ ev = hapd.wait_event(["OCV failed"], timeout=5)
if ev is None:
raise Exception("AP did not report bad OCI element")
- msg = { 'fc': MGMT_SUBTYPE_ACTION << 4,
- 'da': dev[0].own_addr(),
- 'sa': bssid,
- 'bssid': bssid }
+ msg = {'fc': MGMT_SUBTYPE_ACTION << 4,
+ 'da': dev[0].own_addr(),
+ 'sa': bssid,
+ 'bssid': bssid}
hapd.set("ext_mgmt_frame_handling", "1")
logger.debug("WNM Sleep Mode Response - Missing OCI element")
dev[0].request("WNM_SLEEP exit")
hapd.mgmt_tx(msg)
expect_ack(hapd)
- ev = dev[0].wait_event([ "OCV failed" ], timeout=5)
+ ev = dev[0].wait_event(["OCV failed"], timeout=5)
if ev is None:
raise Exception("STA did not report missing OCI element")
WLAN_EID_EXT_OCV_OCI) + oci_ie
hapd.mgmt_tx(msg)
expect_ack(hapd)
- ev = dev[0].wait_event([ "OCV failed" ], timeout=5)
+ ev = dev[0].wait_event(["OCV failed"], timeout=5)
if ev is None:
raise Exception("STA did not report bad OCI element")
dev[0].connect("test-wnm-rsn", psk="12345678", ieee80211w="2",
key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
- ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+ ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
if ev is None:
raise Exception("No connection event received from hostapd")
check_wnm_sleep_mode_enter_exit(hapd, dev[0])
def test_wnm_sleep_mode_proto(dev, apdev):
"""WNM Sleep Mode - protocol testing"""
- params = { "ssid": "test-wnm", "wnm_sleep_mode": "1" }
+ params = {"ssid": "test-wnm", "wnm_sleep_mode": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
hdr = "d0003a01" + bssid.replace(':', '') + addr.replace(':', '') + bssid.replace(':', '') + "1000"
hapd.set("ext_mgmt_frame_handling", "1")
- tests = [ "0a10",
- "0a1001",
- "0a10015d00",
- "0a10015d01",
- "0a10015d0400000000",
- "0a1001" + 7*("5bff" + 255*"00") + "5d00",
- "0a1001ff00" ]
+ tests = ["0a10",
+ "0a1001",
+ "0a10015d00",
+ "0a10015d01",
+ "0a10015d0400000000",
+ "0a1001" + 7*("5bff" + 255*"00") + "5d00",
+ "0a1001ff00"]
for t in tests:
if "OK" not in hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + t):
raise Exception("MGMT_RX_PROCESS failed")
@remote_compatible
def test_wnm_bss_tm_req(dev, apdev):
"""BSS Transition Management Request"""
- params = { "ssid": "test-wnm", "bss_transition": "1" }
+ params = {"ssid": "test-wnm", "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
@remote_compatible
def test_wnm_bss_keep_alive(dev, apdev):
"""WNM keep-alive"""
- params = { "ssid": "test-wnm",
- "ap_max_inactivity": "1" }
+ params = {"ssid": "test-wnm",
+ "ap_max_inactivity": "1"}
hapd = hostapd.add_ap(apdev[0], params)
addr = dev[0].p2p_interface_addr()
try:
hapd = None
hapd2 = None
- params = { "ssid": "test-wnm",
- "country_code": "FI",
- "ieee80211d": "1",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": "FI",
+ "ieee80211d": "1",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
id = dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
dev[0].set_network(id, "scan_freq", "")
- params = { "ssid": "test-wnm",
- "country_code": "FI",
- "ieee80211d": "1",
- "hw_mode": "a",
- "channel": "36",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": "FI",
+ "ieee80211d": "1",
+ "hw_mode": "a",
+ "channel": "36",
+ "bss_transition": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
addr = dev[0].p2p_interface_addr()
def test_wnm_bss_tm_errors(dev, apdev):
"""WNM BSS Transition Management errors"""
- params = { "ssid": "test-wnm",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
id = dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
- tests = [ "BSS_TM_REQ q",
- "BSS_TM_REQ 22:22:22:22:22:22",
- "BSS_TM_REQ %s disassoc_timer=-1" % addr,
- "BSS_TM_REQ %s disassoc_timer=65536" % addr,
- "BSS_TM_REQ %s bss_term=foo" % addr,
- "BSS_TM_REQ %s neighbor=q" % addr,
- "BSS_TM_REQ %s neighbor=02:11:22:33:44:55" % addr,
- "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0" % addr,
- "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0,0" % addr,
- "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0,0,0" % addr,
- "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0,0,0,0,q" % addr,
- "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0,0,0,0,0q" % addr,
- "BSS_TM_REQ " + addr + " url=" + 256*'a',
- "BSS_TM_REQ %s url=foo mbo=1:2" % addr,
- "BSS_TM_REQ %s url=foo mbo=100000:0:0" % addr,
- "BSS_TM_REQ %s url=foo mbo=0:0:254" % addr,
- "BSS_TM_REQ %s url=foo mbo=0:100000:0" % addr ]
+ tests = ["BSS_TM_REQ q",
+ "BSS_TM_REQ 22:22:22:22:22:22",
+ "BSS_TM_REQ %s disassoc_timer=-1" % addr,
+ "BSS_TM_REQ %s disassoc_timer=65536" % addr,
+ "BSS_TM_REQ %s bss_term=foo" % addr,
+ "BSS_TM_REQ %s neighbor=q" % addr,
+ "BSS_TM_REQ %s neighbor=02:11:22:33:44:55" % addr,
+ "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0" % addr,
+ "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0,0" % addr,
+ "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0,0,0" % addr,
+ "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0,0,0,0,q" % addr,
+ "BSS_TM_REQ %s neighbor=02:11:22:33:44:55,0,0,0,0,0q" % addr,
+ "BSS_TM_REQ " + addr + " url=" + 256*'a',
+ "BSS_TM_REQ %s url=foo mbo=1:2" % addr,
+ "BSS_TM_REQ %s url=foo mbo=100000:0:0" % addr,
+ "BSS_TM_REQ %s url=foo mbo=0:0:254" % addr,
+ "BSS_TM_REQ %s url=foo mbo=0:100000:0" % addr]
for t in tests:
if "FAIL" not in hapd.request(t):
raise Exception("Invalid command accepted: %s" % t)
def test_wnm_bss_tm_termination(dev, apdev):
"""WNM BSS Transition Management and BSS termination"""
- params = { "ssid": "test-wnm",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
id = dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
addr = dev[0].own_addr()
try:
hapd = None
hapd2 = None
- params = { "ssid": "test-wnm",
- "country_code": "FI",
- "ieee80211d": "1",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": "FI",
+ "ieee80211d": "1",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "test-wnm",
- "country_code": "FI",
- "ieee80211d": "1",
- "hw_mode": hwmode,
- "channel": channel,
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": "FI",
+ "ieee80211d": "1",
+ "hw_mode": hwmode,
+ "channel": channel,
+ "bss_transition": "1"}
if not ht:
params['ieee80211n'] = '0'
if vht:
try:
hapd = None
hapd2 = None
- params = { "ssid": "test-wnm",
- "country_code": "FI",
- "ieee80211d": "1",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": "FI",
+ "ieee80211d": "1",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "test-wnm",
- "country_code": "FI",
- "ieee80211d": "1",
- "hw_mode": "a",
- "channel": "36",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": "FI",
+ "ieee80211d": "1",
+ "hw_mode": "a",
+ "channel": "36",
+ "bss_transition": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
dev[0].scan_for_bss(apdev[1]['bssid'], 5180)
try:
hapd = None
hapd2 = None
- params = { "ssid": "test-wnm",
- "country_code": "FI",
- "country3": "0x04",
- "ieee80211d": "1",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": "FI",
+ "country3": "0x04",
+ "ieee80211d": "1",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "test-wnm",
- "country_code": "FI",
- "country3": "0x04",
- "ieee80211d": "1",
- "hw_mode": "a",
- "channel": "36",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": "FI",
+ "country3": "0x04",
+ "ieee80211d": "1",
+ "hw_mode": "a",
+ "channel": "36",
+ "bss_transition": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
id = dev[0].connect("test-wnm", key_mgmt="NONE",
clear_regdom_state(dev, hapd, hapd2)
def start_wnm_tm(ap, country, dev, country3=None):
- params = { "ssid": "test-wnm",
- "country_code": country,
- "ieee80211d": "1",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": country,
+ "ieee80211d": "1",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
if country3 is not None:
params["country3"] = country3
hapd = hostapd.add_ap(ap, params)
def test_wnm_action_proto(dev, apdev):
"""WNM Action protocol testing"""
- params = { "ssid": "test-wnm" }
+ params = {"ssid": "test-wnm"}
params['wnm_sleep_mode'] = '1'
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
@remote_compatible
def test_wnm_bss_transition_mgmt_query(dev, apdev):
"""WNM BSS Transition Management query"""
- params = { "ssid": "test-wnm",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "another" }
+ params = {"ssid": "another"}
hapd2 = hostapd.add_ap(apdev[1], params)
dev[0].scan_for_bss(apdev[1]['bssid'], 2412)
@remote_compatible
def test_wnm_bss_tm_security_mismatch(dev, apdev):
"""WNM BSS Transition Management and security mismatch"""
- params = { "ssid": "test-wnm",
- "wpa": "2",
- "wpa_key_mgmt": "WPA-PSK",
- "rsn_pairwise": "CCMP",
- "wpa_passphrase": "12345678",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK",
+ "rsn_pairwise": "CCMP",
+ "wpa_passphrase": "12345678",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "test-wnm",
- "hw_mode": "g",
- "channel": "11",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "hw_mode": "g",
+ "channel": "11",
+ "bss_transition": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
dev[0].scan_for_bss(apdev[1]['bssid'], 2462)
def test_wnm_bss_tm_connect_cmd(dev, apdev):
"""WNM BSS Transition Management and cfg80211 connect command"""
- params = { "ssid": "test-wnm",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
- params = { "ssid": "test-wnm",
- "hw_mode": "g",
- "channel": "11",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "hw_mode": "g",
+ "channel": "11",
+ "bss_transition": "1"}
hapd2 = hostapd.add_ap(apdev[1], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
"""WNM BSS Transition Management request getting rejected"""
try:
hapd = None
- params = { "ssid": "test-wnm",
- "country_code": "FI",
- "ieee80211d": "1",
- "hw_mode": "g",
- "channel": "1",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "country_code": "FI",
+ "ieee80211d": "1",
+ "hw_mode": "g",
+ "channel": "1",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
id = dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
def test_wnm_bss_tm_ap_proto(dev, apdev):
"""WNM BSS TM - protocol testing for AP message parsing"""
- params = { "ssid": "test-wnm", "bss_transition": "1" }
+ params = {"ssid": "test-wnm", "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
hdr = "d0003a01" + bssid.replace(':', '') + addr.replace(':', '') + bssid.replace(':', '') + "1000"
hapd.set("ext_mgmt_frame_handling", "1")
- tests = [ "0a",
- "0a06",
- "0a0601",
- "0a060100",
- "0a080000",
- "0a08000000",
- "0a080000001122334455",
- "0a08000000112233445566",
- "0a08000000112233445566112233445566778899",
- "0a08ffffff",
- "0a08ffffff112233445566778899",
- "0a1a",
- "0a1a00",
- "0a1a0000",
- "0aff" ]
+ tests = ["0a",
+ "0a06",
+ "0a0601",
+ "0a060100",
+ "0a080000",
+ "0a08000000",
+ "0a080000001122334455",
+ "0a08000000112233445566",
+ "0a08000000112233445566112233445566778899",
+ "0a08ffffff",
+ "0a08ffffff112233445566778899",
+ "0a1a",
+ "0a1a00",
+ "0a1a0000",
+ "0aff"]
for t in tests:
if "OK" not in hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + t):
raise Exception("MGMT_RX_PROCESS failed")
def test_wnm_bss_transition_mgmt_query_with_unknown_candidates(dev, apdev):
"""WNM BSS Transition Management query with unknown candidates"""
- params = { "ssid": "test-wnm",
- "bss_transition": "1" }
+ params = {"ssid": "test-wnm",
+ "bss_transition": "1"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].scan_for_bss(apdev[0]['bssid'], 2412)
def test_wnm_time_adv_without_time_zone(dev, apdev):
"""WNM Time Advertisement without time zone configuration"""
- params = { "ssid": "test-wnm",
- "time_advertisement": "2" }
+ params = {"ssid": "test-wnm",
+ "time_advertisement": "2"}
hostapd.add_ap(apdev[0], params)
dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
def test_wnm_coloc_intf_reporting(dev, apdev):
"""WNM Collocated Interference Reporting"""
- params = { "ssid": "test-wnm",
- "coloc_intf_reporting": "1" }
+ params = {"ssid": "test-wnm",
+ "coloc_intf_reporting": "1"}
hapd = hostapd.add_ap(apdev[0], params)
no_intf = struct.pack("<BBBBBLLLLH", 96, 21, 0, 127, 0x0f, 0, 0, 0, 0, 0)
addr1 = dev[1].p2p_interface_addr()
addr2 = dev[2].p2p_interface_addr()
- addrs = [ addr1, addr2 ]
+ addrs = [addr1, addr2]
sta = dev[0].get_sta(None)
if sta['addr'] not in addrs:
raise Exception("Unexpected STA address")
dev[0].set_network(id, "frequency", "2412")
dev[0].set_network(id, "scan_freq", "2412")
dev[0].select_network(id)
- ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED" ], timeout=0.1)
+ ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=0.1)
if ev is not None:
raise Exception("Unexpected connection event")
dev[0].request("REMOVE_NETWORK all")
dev[0].set_network(id, "scan_freq", "2412")
dev[0].set_network(id, "pbss", "2")
dev[0].select_network(id)
- ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
- "CTRL-EVENT-DISCONNECTED" ], timeout=0.1)
+ ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
+ "CTRL-EVENT-DISCONNECTED"], timeout=0.1)
if ev is not None and "CTRL-EVENT-CONNECTED" in ev:
raise Exception("Unexpected connection event(2)")
dev[0].request("REMOVE_NETWORK all")
for i in range(5):
with alloc_fail(wpas, i, "=wpa_supplicant_conf_ap"):
wpas.select_network(id)
- ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
- "CTRL-EVENT-DISCONNECTED" ], timeout=1)
+ ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
+ "CTRL-EVENT-DISCONNECTED"], timeout=1)
wpas.request("DISCONNECT")
wpas.wait_disconnected()
from wpasupplicant import WpaSupplicant
import hostapd
-config_checks = [ ("ap_scan", "0"),
- ("update_config", "1"),
- ("device_name", "name"),
- ("eapol_version", "2"),
- ("wps_priority", "5"),
- ("ip_addr_go", "192.168.1.1"),
- ("ip_addr_mask", "255.255.255.0"),
- ("ip_addr_start", "192.168.1.10"),
- ("ip_addr_end", "192.168.1.20"),
- ("disable_scan_offload", "1"),
- ("fast_reauth", "0"),
- ("uuid", "6aeae5e3-c1fc-4e76-8293-7346e1d1459d"),
- ("manufacturer", "MANUF"),
- ("model_name", "MODEL"),
- ("model_number", "MODEL NUM"),
- ("serial_number", "123qwerty"),
- ("device_type", "1234-0050F204-4321"),
- ("os_version", "01020304"),
- ("config_methods", "label push_button"),
- ("wps_cred_processing", "1"),
- ("wps_vendor_ext_m1", "000137100100020001"),
- ("p2p_listen_reg_class", "81"),
- ("p2p_listen_channel", "6"),
- ("p2p_oper_reg_class", "82"),
- ("p2p_oper_channel", "14"),
- ("p2p_go_intent", "14"),
- ("p2p_ssid_postfix", "foobar"),
- ("persistent_reconnect", "1"),
- ("p2p_intra_bss", "0"),
- ("p2p_group_idle", "2"),
- ("p2p_passphrase_len", "63"),
- ("p2p_pref_chan", "81:1,82:14,81:11"),
- ("p2p_no_go_freq", "2412-2432,2462,5000-6000"),
- ("p2p_add_cli_chan", "1"),
- ("p2p_optimize_listen_chan", "1"),
- ("p2p_go_ht40", "1"),
- ("p2p_go_vht", "1"),
- ("p2p_go_ctwindow", "1"),
- ("p2p_disabled", "1"),
- ("p2p_no_group_iface", "1"),
- ("p2p_ignore_shared_freq", "1"),
- ("p2p_cli_probe", "1"),
- ("p2p_go_freq_change_policy", "0"),
- ("country", "FI"),
- ("bss_max_count", "123"),
- ("bss_expiration_age", "45"),
- ("bss_expiration_scan_count", "17"),
- ("filter_ssids", "1"),
- ("filter_rssi", "-10"),
- ("max_num_sta", "3"),
- ("disassoc_low_ack", "1"),
- ("hs20", "1"),
- ("interworking", "1"),
- ("hessid", "02:03:04:05:06:07"),
- ("access_network_type", "7"),
- ("pbc_in_m1", "1"),
- ("wps_nfc_dev_pw_id", "12345"),
- ("wps_nfc_dh_pubkey", "1234567890ABCDEF"),
- ("wps_nfc_dh_privkey", "FF1234567890ABCDEFFF"),
- ("ext_password_backend", "test"),
- ("p2p_go_max_inactivity", "9"),
- ("auto_interworking", "1"),
- ("okc", "1"),
- ("pmf", "1"),
- ("dtim_period", "3"),
- ("beacon_int", "102"),
- ("sae_groups", "5 19"),
- ("ap_vendor_elements", "dd0411223301"),
- ("ignore_old_scan_res", "1"),
- ("freq_list", "2412 2437"),
- ("scan_cur_freq", "1"),
- ("sched_scan_interval", "13"),
- ("external_sim", "1"),
- ("tdls_external_control", "1"),
- ("wowlan_triggers", "any"),
- ("bgscan", '"simple:30:-45:300"'),
- ("p2p_search_delay", "123"),
- ("mac_addr", "2"),
- ("rand_addr_lifetime", "123456789"),
- ("preassoc_mac_addr", "1"),
- ("gas_rand_addr_lifetime", "567"),
- ("gas_rand_mac_addr", "2"),
- ("key_mgmt_offload", "0"),
- ("user_mpm", "0"),
- ("max_peer_links", "17"),
- ("cert_in_cb", "0"),
- ("mesh_max_inactivity", "31"),
- ("dot11RSNASAERetransPeriod", "19"),
- ("passive_scan", "1"),
- ("reassoc_same_bss_optim", "1"),
- ("wpa_rsc_relaxation", "0"),
- ("sched_scan_plans", "10:100 20:200 30"),
- ("non_pref_chan", "81:5:10:2 81:1:0:2 81:9:0:2"),
- ("mbo_cell_capa", "1"),
- ("gas_address3", "1"),
- ("ftm_responder", "1"),
- ("ftm_initiator", "1"),
- ("pcsc_reader", "foo"),
- ("pcsc_pin", "1234"),
- ("driver_param", "testing"),
- ("dot11RSNAConfigPMKLifetime", "43201"),
- ("dot11RSNAConfigPMKReauthThreshold", "71"),
- ("dot11RSNAConfigSATimeout", "61"),
- ("sec_device_type", "12345-0050F204-54321"),
- ("autoscan", "exponential:3:300"),
- ("osu_dir", "/tmp/osu"),
- ("fst_group_id", "bond0"),
- ("fst_priority", "5"),
- ("fst_llt", "7"),
- ("go_interworking", "1"),
- ("go_access_network_type", "2"),
- ("go_internet", "1"),
- ("go_venue_group", "3"),
- ("go_venue_type", "4"),
- ("p2p_device_random_mac_addr", "1"),
- ("p2p_device_persistent_mac_addr", "02:12:34:56:78:9a"),
- ("p2p_interface_random_mac_addr", "1"),
- ("openssl_ciphers", "DEFAULT") ]
+config_checks = [("ap_scan", "0"),
+ ("update_config", "1"),
+ ("device_name", "name"),
+ ("eapol_version", "2"),
+ ("wps_priority", "5"),
+ ("ip_addr_go", "192.168.1.1"),
+ ("ip_addr_mask", "255.255.255.0"),
+ ("ip_addr_start", "192.168.1.10"),
+ ("ip_addr_end", "192.168.1.20"),
+ ("disable_scan_offload", "1"),
+ ("fast_reauth", "0"),
+ ("uuid", "6aeae5e3-c1fc-4e76-8293-7346e1d1459d"),
+ ("manufacturer", "MANUF"),
+ ("model_name", "MODEL"),
+ ("model_number", "MODEL NUM"),
+ ("serial_number", "123qwerty"),
+ ("device_type", "1234-0050F204-4321"),
+ ("os_version", "01020304"),
+ ("config_methods", "label push_button"),
+ ("wps_cred_processing", "1"),
+ ("wps_vendor_ext_m1", "000137100100020001"),
+ ("p2p_listen_reg_class", "81"),
+ ("p2p_listen_channel", "6"),
+ ("p2p_oper_reg_class", "82"),
+ ("p2p_oper_channel", "14"),
+ ("p2p_go_intent", "14"),
+ ("p2p_ssid_postfix", "foobar"),
+ ("persistent_reconnect", "1"),
+ ("p2p_intra_bss", "0"),
+ ("p2p_group_idle", "2"),
+ ("p2p_passphrase_len", "63"),
+ ("p2p_pref_chan", "81:1,82:14,81:11"),
+ ("p2p_no_go_freq", "2412-2432,2462,5000-6000"),
+ ("p2p_add_cli_chan", "1"),
+ ("p2p_optimize_listen_chan", "1"),
+ ("p2p_go_ht40", "1"),
+ ("p2p_go_vht", "1"),
+ ("p2p_go_ctwindow", "1"),
+ ("p2p_disabled", "1"),
+ ("p2p_no_group_iface", "1"),
+ ("p2p_ignore_shared_freq", "1"),
+ ("p2p_cli_probe", "1"),
+ ("p2p_go_freq_change_policy", "0"),
+ ("country", "FI"),
+ ("bss_max_count", "123"),
+ ("bss_expiration_age", "45"),
+ ("bss_expiration_scan_count", "17"),
+ ("filter_ssids", "1"),
+ ("filter_rssi", "-10"),
+ ("max_num_sta", "3"),
+ ("disassoc_low_ack", "1"),
+ ("hs20", "1"),
+ ("interworking", "1"),
+ ("hessid", "02:03:04:05:06:07"),
+ ("access_network_type", "7"),
+ ("pbc_in_m1", "1"),
+ ("wps_nfc_dev_pw_id", "12345"),
+ ("wps_nfc_dh_pubkey", "1234567890ABCDEF"),
+ ("wps_nfc_dh_privkey", "FF1234567890ABCDEFFF"),
+ ("ext_password_backend", "test"),
+ ("p2p_go_max_inactivity", "9"),
+ ("auto_interworking", "1"),
+ ("okc", "1"),
+ ("pmf", "1"),
+ ("dtim_period", "3"),
+ ("beacon_int", "102"),
+ ("sae_groups", "5 19"),
+ ("ap_vendor_elements", "dd0411223301"),
+ ("ignore_old_scan_res", "1"),
+ ("freq_list", "2412 2437"),
+ ("scan_cur_freq", "1"),
+ ("sched_scan_interval", "13"),
+ ("external_sim", "1"),
+ ("tdls_external_control", "1"),
+ ("wowlan_triggers", "any"),
+ ("bgscan", '"simple:30:-45:300"'),
+ ("p2p_search_delay", "123"),
+ ("mac_addr", "2"),
+ ("rand_addr_lifetime", "123456789"),
+ ("preassoc_mac_addr", "1"),
+ ("gas_rand_addr_lifetime", "567"),
+ ("gas_rand_mac_addr", "2"),
+ ("key_mgmt_offload", "0"),
+ ("user_mpm", "0"),
+ ("max_peer_links", "17"),
+ ("cert_in_cb", "0"),
+ ("mesh_max_inactivity", "31"),
+ ("dot11RSNASAERetransPeriod", "19"),
+ ("passive_scan", "1"),
+ ("reassoc_same_bss_optim", "1"),
+ ("wpa_rsc_relaxation", "0"),
+ ("sched_scan_plans", "10:100 20:200 30"),
+ ("non_pref_chan", "81:5:10:2 81:1:0:2 81:9:0:2"),
+ ("mbo_cell_capa", "1"),
+ ("gas_address3", "1"),
+ ("ftm_responder", "1"),
+ ("ftm_initiator", "1"),
+ ("pcsc_reader", "foo"),
+ ("pcsc_pin", "1234"),
+ ("driver_param", "testing"),
+ ("dot11RSNAConfigPMKLifetime", "43201"),
+ ("dot11RSNAConfigPMKReauthThreshold", "71"),
+ ("dot11RSNAConfigSATimeout", "61"),
+ ("sec_device_type", "12345-0050F204-54321"),
+ ("autoscan", "exponential:3:300"),
+ ("osu_dir", "/tmp/osu"),
+ ("fst_group_id", "bond0"),
+ ("fst_priority", "5"),
+ ("fst_llt", "7"),
+ ("go_interworking", "1"),
+ ("go_access_network_type", "2"),
+ ("go_internet", "1"),
+ ("go_venue_group", "3"),
+ ("go_venue_type", "4"),
+ ("p2p_device_random_mac_addr", "1"),
+ ("p2p_device_persistent_mac_addr", "02:12:34:56:78:9a"),
+ ("p2p_interface_random_mac_addr", "1"),
+ ("openssl_ciphers", "DEFAULT")]
def supported_param(capa, field):
- mesh_params = [ "user_mpm", "max_peer_links", "mesh_max_inactivity" ]
+ mesh_params = ["user_mpm", "max_peer_links", "mesh_max_inactivity"]
if field in mesh_params and not capa['mesh']:
return False
- sae_params = [ "dot11RSNASAERetransPeriod" ]
+ sae_params = ["dot11RSNASAERetransPeriod"]
if field in sae_params and not capa['sae']:
return False
if os.path.exists(config):
os.remove(config)
- params = { "ssid": "test-wps", "eap_server": "1", "wps_state": "2",
- "skip_cred_build": "1", "extra_cred": "wps-ctrl-cred" }
+ params = {"ssid": "test-wps", "eap_server": "1", "wps_state": "2",
+ "skip_cred_build": "1", "extra_cred": "wps-ctrl-cred"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
if os.path.exists(config):
os.remove(config)
- params = { "ssid": "test-wps", "eap_server": "1", "wps_state": "2",
- "skip_cred_build": "1", "extra_cred": "wps-ctrl-cred2" }
+ params = {"ssid": "test-wps", "eap_server": "1", "wps_state": "2",
+ "skip_cred_build": "1", "extra_cred": "wps-ctrl-cred2"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
id = wpas.add_cred()
wpas.set_cred_quoted(id, "username", "hello")
- fields = [ "username", "milenage", "imsi", "password", "realm",
- "phase1", "phase2", "provisioning_sp" ]
+ fields = ["username", "milenage", "imsi", "password", "realm",
+ "phase1", "phase2", "provisioning_sp"]
for field in fields:
if "FAIL" not in wpas.request('SET_CRED %d %s "hello"\n}\nmodel_name=foobar\ncred={\n#\"' % (id, field)):
raise Exception("Invalid %s value accepted" % field)
wpas.interface_add("wlan5", config=config)
- fields = [ "model_name", "device_name", "ctrl_interface_group",
- "opensc_engine_path", "pkcs11_engine_path",
- "pkcs11_module_path", "openssl_ciphers", "pcsc_reader",
- "pcsc_pin", "driver_param", "manufacturer", "model_name",
- "model_number", "serial_number", "config_methods",
- "p2p_ssid_postfix", "autoscan", "ext_password_backend",
- "osu_dir", "wowlan_triggers", "fst_group_id",
- "sched_scan_plans", "non_pref_chan" ]
+ fields = ["model_name", "device_name", "ctrl_interface_group",
+ "opensc_engine_path", "pkcs11_engine_path",
+ "pkcs11_module_path", "openssl_ciphers", "pcsc_reader",
+ "pcsc_pin", "driver_param", "manufacturer", "model_name",
+ "model_number", "serial_number", "config_methods",
+ "p2p_ssid_postfix", "autoscan", "ext_password_backend",
+ "osu_dir", "wowlan_triggers", "fst_group_id",
+ "sched_scan_plans", "non_pref_chan"]
for field in fields:
if "FAIL" not in wpas.request('SET %s hello\nmodel_name=foobar' % field):
raise Exception("Invalid %s value accepted" % field)
wpas.set_network_quoted(id, "psk", "12345678")
wpas.set_network(id, "ieee80211w", "0")
- tests = [ "WPA-PSK", "WPA-EAP", "IEEE8021X", "NONE", "WPA-NONE", "FT-PSK",
- "FT-EAP", "FT-EAP-SHA384", "WPA-PSK-SHA256", "WPA-EAP-SHA256",
- "SAE", "FT-SAE", "OSEN", "WPA-EAP-SUITE-B",
- "WPA-EAP-SUITE-B-192", "FILS-SHA256", "FILS-SHA384",
- "FT-FILS-SHA256", "FT-FILS-SHA384", "OWE", "DPP" ]
+ tests = ["WPA-PSK", "WPA-EAP", "IEEE8021X", "NONE", "WPA-NONE", "FT-PSK",
+ "FT-EAP", "FT-EAP-SHA384", "WPA-PSK-SHA256", "WPA-EAP-SHA256",
+ "SAE", "FT-SAE", "OSEN", "WPA-EAP-SUITE-B",
+ "WPA-EAP-SUITE-B-192", "FILS-SHA256", "FILS-SHA384",
+ "FT-FILS-SHA256", "FT-FILS-SHA384", "OWE", "DPP"]
supported_key_mgmts = dev[0].get_capability("key_mgmt")
for key_mgmt in tests:
if key_mgmt == "WPA-EAP-SUITE-B-192" and key_mgmt not in supported_key_mgmts:
if "FAIL" not in dev[0].request('BSSID ' + str(id)):
raise Exception("Unexpected BSSID success")
- tests = [ "02:11:22:33:44:55",
- "02:11:22:33:44:55 02:ae:be:ce:53:77",
- "02:11:22:33:44:55/ff:00:ff:00:ff:00",
- "02:11:22:33:44:55/ff:00:ff:00:ff:00 f2:99:88:77:66:55",
- "f2:99:88:77:66:55 02:11:22:33:44:55/ff:00:ff:00:ff:00",
- "f2:99:88:77:66:55 02:11:22:33:44:55/ff:00:ff:00:ff:00 12:34:56:78:90:ab",
- "02:11:22:33:44:55/ff:ff:ff:00:00:00 02:ae:be:ce:53:77/00:00:00:00:00:ff" ]
+ tests = ["02:11:22:33:44:55",
+ "02:11:22:33:44:55 02:ae:be:ce:53:77",
+ "02:11:22:33:44:55/ff:00:ff:00:ff:00",
+ "02:11:22:33:44:55/ff:00:ff:00:ff:00 f2:99:88:77:66:55",
+ "f2:99:88:77:66:55 02:11:22:33:44:55/ff:00:ff:00:ff:00",
+ "f2:99:88:77:66:55 02:11:22:33:44:55/ff:00:ff:00:ff:00 12:34:56:78:90:ab",
+ "02:11:22:33:44:55/ff:ff:ff:00:00:00 02:ae:be:ce:53:77/00:00:00:00:00:ff"]
for val in tests:
dev[0].set_network(id, "bssid_blacklist", val)
res = dev[0].get_network(id, "bssid_blacklist")
if res != val:
raise Exception("Unexpected bssid_whitelist value: %s != %s" % (res, val))
- tests = [ "foo",
- "00:11:22:33:44:5",
- "00:11:22:33:44:55q",
- "00:11:22:33:44:55/",
- "00:11:22:33:44:55/66:77:88:99:aa:b" ]
+ tests = ["foo",
+ "00:11:22:33:44:5",
+ "00:11:22:33:44:55q",
+ "00:11:22:33:44:55/",
+ "00:11:22:33:44:55/66:77:88:99:aa:b"]
for val in tests:
if "FAIL" not in dev[0].request("SET_NETWORK %d bssid_blacklist %s" % (id, val)):
raise Exception("Invalid bssid_blacklist value accepted")
"""wpa_supplicant ctrl_iface network OOM in string parsing"""
id = dev[0].add_network()
- tests = [ ('"foo"', 1, 'dup_binstr;wpa_config_set'),
- ('P"foo"', 1, 'dup_binstr;wpa_config_set'),
- ('P"foo"', 2, 'wpa_config_set'),
- ('112233', 1, 'wpa_config_set') ]
- for val,count,func in tests:
+ tests = [('"foo"', 1, 'dup_binstr;wpa_config_set'),
+ ('P"foo"', 1, 'dup_binstr;wpa_config_set'),
+ ('P"foo"', 2, 'wpa_config_set'),
+ ('112233', 1, 'wpa_config_set')]
+ for val, count, func in tests:
with alloc_fail(dev[0], count, func):
if "FAIL" not in dev[0].request("SET_NETWORK " + str(id) + ' ssid ' + val):
raise Exception("Unexpected success for SET_NETWORK during OOM")
only_add_network=True)
id = dev[0].add_network()
dev[0].set_network_quoted(id, "ssid", ssid)
- for f in [ "key_mgmt", "psk", "scan_freq" ]:
+ for f in ["key_mgmt", "psk", "scan_freq"]:
res = dev[0].request("DUP_NETWORK {} {} {}".format(src, id, f))
if "OK" not in res:
raise Exception("DUP_NETWORK failed")
only_add_network=True)
id = dev[0].add_network()
dev[0].set_network_quoted(id, "ssid", ssid)
- for f in [ "key_mgmt", "psk", "scan_freq" ]:
+ for f in ["key_mgmt", "psk", "scan_freq"]:
res = dev[0].global_request("DUP_NETWORK {} {} {} {} {}".format(dev[0].ifname, dev[0].ifname, src, id, f))
if "OK" not in res:
raise Exception("DUP_NETWORK failed")
'roaming_partner "' + 200*'a' + '.example.org,"',
'roaming_partner "example.org,1"',
'roaming_partner "example.org,1,2"',
- 'roaming_partner "example.org,1,2,ABC"' ]
+ 'roaming_partner "example.org,1,2,ABC"']
for t in tests:
if "FAIL" not in dev[0].request("SET_CRED " + str(id) + " " + t):
raise Exception("Unexpected success on invalid SET_CRED value: " + t)
raise Exception("Unexpected LIST_CREDS result(2)")
id = add_cred(dev[0])
- values = [ ("temporary", "1", False),
- ("temporary", "0", False),
- ("pcsc", "1", False),
- ("realm", "example.com", True),
- ("username", "user@example.com", True),
- ("password", "foo", True, "*"),
- ("ca_cert", "ca.pem", True),
- ("client_cert", "user.pem", True),
- ("private_key", "key.pem", True),
- ("private_key_passwd", "foo", True, "*"),
- ("imsi", "310026-000000000", True),
- ("milenage", "foo", True, "*"),
- ("domain_suffix_match", "example.com", True),
- ("domain", "example.com", True),
- ("domain", "example.org", True, "example.com\nexample.org"),
- ("roaming_consortium", "0123456789", False),
- ("required_roaming_consortium", "456789", False),
- ("eap", "TTLS", False),
- ("phase1", "foo=bar1", True),
- ("phase2", "foo=bar2", True),
- ("excluded_ssid", "test", True),
- ("excluded_ssid", "foo", True, "test\nfoo"),
- ("roaming_partner", "example.com,0,4,*", True),
- ("roaming_partner", "example.org,1,2,US", True,
- "example.com,0,4,*\nexample.org,1,2,US"),
- ("update_identifier", "4", False),
- ("provisioning_sp", "sp.example.com", True),
- ("sp_priority", "7", False),
- ("min_dl_bandwidth_home", "100", False),
- ("min_ul_bandwidth_home", "101", False),
- ("min_dl_bandwidth_roaming", "102", False),
- ("min_ul_bandwidth_roaming", "103", False),
- ("max_bss_load", "57", False),
- ("req_conn_capab", "6:22,80,443", False),
- ("req_conn_capab", "17:500", False, "6:22,80,443\n17:500"),
- ("req_conn_capab", "50", False, "6:22,80,443\n17:500\n50"),
- ("ocsp", "1", False) ]
+ values = [("temporary", "1", False),
+ ("temporary", "0", False),
+ ("pcsc", "1", False),
+ ("realm", "example.com", True),
+ ("username", "user@example.com", True),
+ ("password", "foo", True, "*"),
+ ("ca_cert", "ca.pem", True),
+ ("client_cert", "user.pem", True),
+ ("private_key", "key.pem", True),
+ ("private_key_passwd", "foo", True, "*"),
+ ("imsi", "310026-000000000", True),
+ ("milenage", "foo", True, "*"),
+ ("domain_suffix_match", "example.com", True),
+ ("domain", "example.com", True),
+ ("domain", "example.org", True, "example.com\nexample.org"),
+ ("roaming_consortium", "0123456789", False),
+ ("required_roaming_consortium", "456789", False),
+ ("eap", "TTLS", False),
+ ("phase1", "foo=bar1", True),
+ ("phase2", "foo=bar2", True),
+ ("excluded_ssid", "test", True),
+ ("excluded_ssid", "foo", True, "test\nfoo"),
+ ("roaming_partner", "example.com,0,4,*", True),
+ ("roaming_partner", "example.org,1,2,US", True,
+ "example.com,0,4,*\nexample.org,1,2,US"),
+ ("update_identifier", "4", False),
+ ("provisioning_sp", "sp.example.com", True),
+ ("sp_priority", "7", False),
+ ("min_dl_bandwidth_home", "100", False),
+ ("min_ul_bandwidth_home", "101", False),
+ ("min_dl_bandwidth_roaming", "102", False),
+ ("min_ul_bandwidth_roaming", "103", False),
+ ("max_bss_load", "57", False),
+ ("req_conn_capab", "6:22,80,443", False),
+ ("req_conn_capab", "17:500", False, "6:22,80,443\n17:500"),
+ ("req_conn_capab", "50", False, "6:22,80,443\n17:500\n50"),
+ ("ocsp", "1", False)]
for v in values:
if v[2]:
set_cred_quoted(dev[0], id, v[0], v[1])
@remote_compatible
def test_wpas_ctrl_tdls_chan_switch(dev):
"""wpa_supplicant ctrl_iface tdls_chan_switch error cases"""
- for args in [ '', '00:11:22:33:44:55' ]:
+ for args in ['', '00:11:22:33:44:55']:
if "FAIL" not in dev[0].request("TDLS_CANCEL_CHAN_SWITCH " + args):
raise Exception("Unexpected success on invalid TDLS_CANCEL_CHAN_SWITCH: " + args)
- for args in [ '', 'foo ', '00:11:22:33:44:55 ', '00:11:22:33:44:55 q',
- '00:11:22:33:44:55 81', '00:11:22:33:44:55 81 1234',
- '00:11:22:33:44:55 81 1234 center_freq1=234 center_freq2=345 bandwidth=456 sec_channel_offset=567 ht vht' ]:
+ for args in ['', 'foo ', '00:11:22:33:44:55 ', '00:11:22:33:44:55 q',
+ '00:11:22:33:44:55 81', '00:11:22:33:44:55 81 1234',
+ '00:11:22:33:44:55 81 1234 center_freq1=234 center_freq2=345 bandwidth=456 sec_channel_offset=567 ht vht']:
if "FAIL" not in dev[0].request("TDLS_CHAN_SWITCH " + args):
raise Exception("Unexpected success on invalid TDLS_CHAN_SWITCH: " + args)
dev[2].request("SET config_methods ")
def _test_wpas_ctrl_set_wps_params(dev):
- ts = [ "config_methods label virtual_display virtual_push_button keypad",
- "device_type 1-0050F204-1",
- "os_version 01020300",
- "uuid 12345678-9abc-def0-1234-56789abcdef0" ]
+ ts = ["config_methods label virtual_display virtual_push_button keypad",
+ "device_type 1-0050F204-1",
+ "os_version 01020300",
+ "uuid 12345678-9abc-def0-1234-56789abcdef0"]
for t in ts:
if "OK" not in dev[2].request("SET " + t):
raise Exception("SET failed for: " + t)
- ts = [ "uuid 12345678+9abc-def0-1234-56789abcdef0",
- "uuid 12345678-qabc-def0-1234-56789abcdef0",
- "uuid 12345678-9abc+def0-1234-56789abcdef0",
- "uuid 12345678-9abc-qef0-1234-56789abcdef0",
- "uuid 12345678-9abc-def0+1234-56789abcdef0",
- "uuid 12345678-9abc-def0-q234-56789abcdef0",
- "uuid 12345678-9abc-def0-1234+56789abcdef0",
- "uuid 12345678-9abc-def0-1234-q6789abcdef0",
- "uuid qwerty" ]
+ ts = ["uuid 12345678+9abc-def0-1234-56789abcdef0",
+ "uuid 12345678-qabc-def0-1234-56789abcdef0",
+ "uuid 12345678-9abc+def0-1234-56789abcdef0",
+ "uuid 12345678-9abc-qef0-1234-56789abcdef0",
+ "uuid 12345678-9abc-def0+1234-56789abcdef0",
+ "uuid 12345678-9abc-def0-q234-56789abcdef0",
+ "uuid 12345678-9abc-def0-1234+56789abcdef0",
+ "uuid 12345678-9abc-def0-1234-q6789abcdef0",
+ "uuid qwerty"]
for t in ts:
if "FAIL" not in dev[2].request("SET " + t):
raise Exception("SET succeeded for: " + t)
try:
if "OK" not in dev[2].request("SET bssid_filter " + apdev[0]['bssid']):
raise Exception("Failed to set bssid_filter")
- params = { "ssid": "test" }
+ params = {"ssid": "test"}
hostapd.add_ap(apdev[0], params)
hostapd.add_ap(apdev[1], params)
dev[2].scan_for_bss(apdev[0]['bssid'], freq="2412")
@remote_compatible
def test_wpas_ctrl_disallow_aps(dev, apdev):
"""wpa_supplicant ctrl_iface disallow_aps"""
- params = { "ssid": "test" }
+ params = {"ssid": "test"}
hostapd.add_ap(apdev[0], params)
if "FAIL" not in dev[0].request("SET disallow_aps bssid "):
def test_wpas_ctrl_set(dev):
"""wpa_supplicant ctrl_iface SET"""
- vals = [ "foo",
- "ampdu 0",
- "radio_disable 0",
- "ps 10",
- "dot11RSNAConfigPMKLifetime 0",
- "dot11RSNAConfigPMKReauthThreshold 101",
- "dot11RSNAConfigSATimeout 0",
- "wps_version_number -1",
- "wps_version_number 256",
- "fst_group_id ",
- "fst_llt 0"]
+ vals = ["foo",
+ "ampdu 0",
+ "radio_disable 0",
+ "ps 10",
+ "dot11RSNAConfigPMKLifetime 0",
+ "dot11RSNAConfigPMKReauthThreshold 101",
+ "dot11RSNAConfigSATimeout 0",
+ "wps_version_number -1",
+ "wps_version_number 256",
+ "fst_group_id ",
+ "fst_llt 0"]
for val in vals:
if "FAIL" not in dev[0].request("SET " + val):
raise Exception("Unexpected SET success for " + val)
- vals = [ "ps 1" ]
+ vals = ["ps 1"]
for val in vals:
dev[0].request("SET " + val)
- vals = [ "EAPOL::heldPeriod 60",
- "EAPOL::authPeriod 30",
- "EAPOL::startPeriod 30",
- "EAPOL::maxStart 3",
- "dot11RSNAConfigSATimeout 60",
- "ps -1",
- "ps 0",
- "no_keep_alive 0",
- "tdls_disabled 1",
- "tdls_disabled 0" ]
+ vals = ["EAPOL::heldPeriod 60",
+ "EAPOL::authPeriod 30",
+ "EAPOL::startPeriod 30",
+ "EAPOL::maxStart 3",
+ "dot11RSNAConfigSATimeout 60",
+ "ps -1",
+ "ps 0",
+ "no_keep_alive 0",
+ "tdls_disabled 1",
+ "tdls_disabled 0"]
for val in vals:
if "OK" not in dev[0].request("SET " + val):
raise Exception("Unexpected SET failure for " + val)
@remote_compatible
def test_wpas_ctrl_nfc_report_handover(dev):
"""wpa_supplicant ctrl_iface NFC_REPORT_HANDOVER"""
- vals = [ "FOO",
- "ROLE freq=12345",
- "ROLE TYPE",
- "ROLE TYPE REQ",
- "ROLE TYPE REQ SEL",
- "ROLE TYPE 0Q SEL",
- "ROLE TYPE 00 SEL",
- "ROLE TYPE 00 0Q",
- "ROLE TYPE 00 00" ]
+ vals = ["FOO",
+ "ROLE freq=12345",
+ "ROLE TYPE",
+ "ROLE TYPE REQ",
+ "ROLE TYPE REQ SEL",
+ "ROLE TYPE 0Q SEL",
+ "ROLE TYPE 00 SEL",
+ "ROLE TYPE 00 0Q",
+ "ROLE TYPE 00 00"]
for v in vals:
if "FAIL" not in dev[0].request("NFC_REPORT_HANDOVER " + v):
raise Exception("Unexpected NFC_REPORT_HANDOVER success for " + v)
@remote_compatible
def test_wpas_ctrl_nfc_tag_read(dev):
"""wpa_supplicant ctrl_iface WPS_NFC_TAG_READ"""
- vals = [ "FOO", "0Q", "00", "000000", "10000001", "10000000", "00000000",
- "100e0000", "100e0001ff", "100e000411110000", "100e0004100e0001" ]
+ vals = ["FOO", "0Q", "00", "000000", "10000001", "10000000", "00000000",
+ "100e0000", "100e0001ff", "100e000411110000", "100e0004100e0001"]
for v in vals:
if "FAIL" not in dev[0].request("WPS_NFC_TAG_READ " + v):
raise Exception("Unexpected WPS_NFC_TAG_READ success for " + v)
@remote_compatible
def test_wpas_ctrl_nfc_get_handover(dev):
"""wpa_supplicant ctrl_iface NFC_GET_HANDOVER"""
- vals = [ "FOO", "FOO BAR", "WPS WPS", "WPS WPS-CR", "WPS FOO", "NDEF P2P" ]
+ vals = ["FOO", "FOO BAR", "WPS WPS", "WPS WPS-CR", "WPS FOO", "NDEF P2P"]
for v in vals:
if "FAIL" not in dev[0].request("NFC_GET_HANDOVER_REQ " + v):
raise Exception("Unexpected NFC_GET_HANDOVER_REQ success for " + v)
- vals = [ "NDEF WPS", "NDEF P2P-CR", "WPS P2P-CR" ]
+ vals = ["NDEF WPS", "NDEF P2P-CR", "WPS P2P-CR"]
for v in vals:
if "FAIL" in dev[0].request("NFC_GET_HANDOVER_REQ " + v):
raise Exception("Unexpected NFC_GET_HANDOVER_REQ failure for " + v)
- vals = [ "FOO", "FOO BAR", "WPS WPS", "WPS WPS-CR", "WPS FOO", "NDEF P2P",
- "NDEF WPS", "NDEF WPS uuid" ]
+ vals = ["FOO", "FOO BAR", "WPS WPS", "WPS WPS-CR", "WPS FOO", "NDEF P2P",
+ "NDEF WPS", "NDEF WPS uuid"]
for v in vals:
if "FAIL" not in dev[0].request("NFC_GET_HANDOVER_SEL " + v):
raise Exception("Unexpected NFC_GET_HANDOVER_SEL success for " + v)
- vals = [ "NDEF P2P-CR", "WPS P2P-CR", "NDEF P2P-CR-TAG",
- "WPS P2P-CR-TAG" ]
+ vals = ["NDEF P2P-CR", "WPS P2P-CR", "NDEF P2P-CR-TAG",
+ "WPS P2P-CR-TAG"]
for v in vals:
if "FAIL" in dev[0].request("NFC_GET_HANDOVER_SEL " + v):
raise Exception("Unexpected NFC_GET_HANDOVER_SEL failure for " + v)
if "FAIL" not in dev[2].request("LOG_LEVEL FOO"):
raise Exception("Invalid LOG_LEVEL accepted")
- for lev in [ "EXCESSIVE", "MSGDUMP", "DEBUG", "INFO", "WARNING", "ERROR" ]:
+ for lev in ["EXCESSIVE", "MSGDUMP", "DEBUG", "INFO", "WARNING", "ERROR"]:
if "OK" not in dev[2].request("LOG_LEVEL " + lev):
raise Exception("LOG_LEVEL failed for " + lev)
level = dev[2].request("LOG_LEVEL")
@remote_compatible
def test_wpas_ctrl_enable_disable_network(dev, apdev):
"""wpa_supplicant ctrl_iface ENABLE/DISABLE_NETWORK"""
- params = { "ssid": "test" }
+ params = {"ssid": "test"}
hostapd.add_ap(apdev[0], params)
id = dev[0].connect("test", key_mgmt="NONE", scan_freq="2412",
raise Exception("Unexpected success")
if "FAIL" not in dev[0].request("ROAM 00:11:22:33:44:55"):
raise Exception("Unexpected success")
- params = { "ssid": "test" }
+ params = {"ssid": "test"}
hostapd.add_ap(apdev[0], params)
id = dev[0].connect("test", key_mgmt="NONE", scan_freq="2412")
if "FAIL" not in dev[0].request("ROAM 00:11:22:33:44:55"):
id = dev[0].add_network()
if "FAIL" not in dev[0].request("CTRL-RSP-foo-%d:" % id):
raise Exception("Request succeeded unexpectedly")
- for req in [ "IDENTITY", "PASSWORD", "NEW_PASSWORD", "PIN", "OTP",
- "PASSPHRASE", "SIM" ]:
+ for req in ["IDENTITY", "PASSWORD", "NEW_PASSWORD", "PIN", "OTP",
+ "PASSPHRASE", "SIM"]:
if "OK" not in dev[0].request("CTRL-RSP-%s-%d:" % (req, id)):
raise Exception("Request failed unexpectedly")
if "OK" not in dev[0].request("CTRL-RSP-%s-%d:" % (req, id)):
@remote_compatible
def test_wpas_ctrl_vendor(dev, apdev):
"""wpa_supplicant ctrl_iface VENDOR"""
- cmds = [ "foo",
- "1",
- "1 foo",
- "1 2foo",
- "1 2 qq" ]
+ cmds = ["foo",
+ "1",
+ "1 foo",
+ "1 2foo",
+ "1 2 qq"]
for cmd in cmds:
if "FAIL" not in dev[0].request("VENDOR " + cmd):
raise Exception("Invalid VENDOR command accepted: " + cmd)
@remote_compatible
def test_wpas_ctrl_mgmt_tx(dev, apdev):
"""wpa_supplicant ctrl_iface MGMT_TX"""
- cmds = [ "foo",
- "00:11:22:33:44:55 foo",
- "00:11:22:33:44:55 11:22:33:44:55:66",
- "00:11:22:33:44:55 11:22:33:44:55:66 freq=0 no_cck=0 wait_time=0 action=123",
- "00:11:22:33:44:55 11:22:33:44:55:66 action=12qq" ]
+ cmds = ["foo",
+ "00:11:22:33:44:55 foo",
+ "00:11:22:33:44:55 11:22:33:44:55:66",
+ "00:11:22:33:44:55 11:22:33:44:55:66 freq=0 no_cck=0 wait_time=0 action=123",
+ "00:11:22:33:44:55 11:22:33:44:55:66 action=12qq"]
for cmd in cmds:
if "FAIL" not in dev[0].request("MGMT_TX " + cmd):
raise Exception("Invalid MGMT_TX command accepted: " + cmd)
@remote_compatible
def test_wpas_ctrl_eapol_rx(dev, apdev):
"""wpa_supplicant ctrl_iface EAPOL_RX"""
- cmds = [ "foo",
- "00:11:22:33:44:55 123",
- "00:11:22:33:44:55 12qq" ]
+ cmds = ["foo",
+ "00:11:22:33:44:55 123",
+ "00:11:22:33:44:55 12qq"]
for cmd in cmds:
if "FAIL" not in dev[0].request("EAPOL_RX " + cmd):
raise Exception("Invalid EAPOL_RX command accepted: " + cmd)
raise Exception("DATA_TEST_CONFIG failed")
if "OK" not in dev[0].request("DATA_TEST_CONFIG 1"):
raise Exception("DATA_TEST_CONFIG failed")
- cmds = [ "foo",
- "00:11:22:33:44:55 foo",
- "00:11:22:33:44:55 00:11:22:33:44:55 -1",
- "00:11:22:33:44:55 00:11:22:33:44:55 256" ]
+ cmds = ["foo",
+ "00:11:22:33:44:55 foo",
+ "00:11:22:33:44:55 00:11:22:33:44:55 -1",
+ "00:11:22:33:44:55 00:11:22:33:44:55 256"]
for cmd in cmds:
if "FAIL" not in dev[0].request("DATA_TEST_TX " + cmd):
raise Exception("Invalid DATA_TEST_TX command accepted: " + cmd)
finally:
dev[0].request("DATA_TEST_CONFIG 0")
- cmds = [ "",
- "00",
- "00112233445566778899aabbccdde",
- "00112233445566778899aabbccdq" ]
+ cmds = ["",
+ "00",
+ "00112233445566778899aabbccdde",
+ "00112233445566778899aabbccdq"]
for cmd in cmds:
if "FAIL" not in dev[0].request("DATA_TEST_FRAME " + cmd):
raise Exception("Invalid DATA_TEST_FRAME command accepted: " + cmd)
"""wpa_supplicant ctrl_iface VENDOR_ELEM"""
if "OK" not in dev[0].request("VENDOR_ELEM_ADD 1 "):
raise Exception("VENDOR_ELEM_ADD failed")
- cmds = [ "-1 ",
- "255 ",
- "1",
- "1 123",
- "1 12qq34" ]
+ cmds = ["-1 ",
+ "255 ",
+ "1",
+ "1 123",
+ "1 12qq34"]
for cmd in cmds:
if "FAIL" not in dev[0].request("VENDOR_ELEM_ADD " + cmd):
raise Exception("Invalid VENDOR_ELEM_ADD command accepted: " + cmd)
- cmds = [ "-1 ",
- "255 " ]
+ cmds = ["-1 ",
+ "255 "]
for cmd in cmds:
if "FAIL" not in dev[0].request("VENDOR_ELEM_GET " + cmd):
raise Exception("Invalid VENDOR_ELEM_GET command accepted: " + cmd)
dev[0].request("VENDOR_ELEM_REMOVE 1 *")
- cmds = [ "-1 ",
- "255 ",
- "1",
- "1",
- "1 123",
- "1 12qq34",
- "1 12",
- "1 0000" ]
+ cmds = ["-1 ",
+ "255 ",
+ "1",
+ "1",
+ "1 123",
+ "1 12qq34",
+ "1 12",
+ "1 0000"]
for cmd in cmds:
if "FAIL" not in dev[0].request("VENDOR_ELEM_REMOVE " + cmd):
raise Exception("Invalid VENDOR_ELEM_REMOVE command accepted: " + cmd)
dev[0].request("VENDOR_ELEM_ADD 1 000100")
if "OK" not in dev[0].request("VENDOR_ELEM_REMOVE 1 "):
raise Exception("VENDOR_ELEM_REMOVE failed")
- cmds = [ "-1 ",
- "255 ",
- "1",
- "1 123",
- "1 12qq34",
- "1 12",
- "1 0000" ]
+ cmds = ["-1 ",
+ "255 ",
+ "1",
+ "1 123",
+ "1 12qq34",
+ "1 12",
+ "1 0000"]
for cmd in cmds:
if "FAIL" not in dev[0].request("VENDOR_ELEM_REMOVE " + cmd):
raise Exception("Invalid VENDOR_ELEM_REMOVE command accepted: " + cmd)
def test_wpas_ctrl_interface_add(dev, apdev):
"""wpa_supplicant INTERFACE_ADD/REMOVE with vif creation/removal"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], hapd)
def test_wpas_ctrl_interface_add_sta(dev, apdev):
"""wpa_supplicant INTERFACE_ADD/REMOVE with STA vif creation/removal"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
ifname = "test-" + dev[0].ifname
dev[0].interface_add(ifname, create=True, if_type='sta')
wpas = WpaSupplicant(ifname=ifname)
dev[0].global_request("INTERFACE_REMOVE " + ifname)
def _test_wpas_ctrl_interface_add_many(dev, apdev):
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], hapd)
dev[0].dump_monitor()
subprocess.call(['iw', 'dev', ifname, 'del'])
def _test_wpas_ctrl_interface_add2(dev, apdev, ifname):
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], hapd)
'alt-wpa_supplicant/wpa_supplicant/wpa_supplicant')
if not os.path.exists(prg):
prg = '../../wpa_supplicant/wpa_supplicant'
- arg = [ prg ]
+ arg = [prg]
cmd = subprocess.Popen(arg, stdout=subprocess.PIPE)
out = cmd.communicate()[0].decode()
cmd.wait()
tracing = "Linux tracing" in out
with HWSimRadio() as (radio, iface):
- arg = [ prg, '-BdddW', '-P', pidfile, '-f', logfile,
- '-Dnl80211', '-c', conffile, '-i', iface ]
+ arg = [prg, '-BdddW', '-P', pidfile, '-f', logfile,
+ '-Dnl80211', '-c', conffile, '-i', iface]
if tracing:
- arg += [ '-T' ]
+ arg += ['-T']
logger.info("Start wpa_supplicant: " + str(arg))
subprocess.call(arg)
wpas = WpaSupplicant(ifname=iface)
raise Exception("PID file not created")
if "OK" not in wpas.request("TERMINATE"):
raise Exception("Could not TERMINATE")
- ev = wpas.wait_event([ "CTRL-EVENT-TERMINATING" ], timeout=2)
+ ev = wpas.wait_event(["CTRL-EVENT-TERMINATING"], timeout=2)
if ev is None:
raise Exception("No termination event received")
for i in range(20):
def _test_wpas_ctrl_oom(dev):
dev[0].request('VENDOR_ELEM_ADD 2 000100')
- tests = [ ('DRIVER_EVENT AVOID_FREQUENCIES 2412', 'FAIL',
- 1, 'freq_range_list_parse'),
- ('P2P_SET disallow_freq 2412', 'FAIL',
- 1, 'freq_range_list_parse'),
- ('SCAN freq=2412', 'FAIL',
- 1, 'freq_range_list_parse'),
- ('INTERWORKING_SELECT freq=2412', 'FAIL',
- 1, 'freq_range_list_parse'),
- ('SCAN ssid 112233', 'FAIL',
- 1, 'wpas_ctrl_scan'),
- ('MGMT_TX 00:00:00:00:00:00 00:00:00:00:00:00 action=00', 'FAIL',
- 1, 'wpas_ctrl_iface_mgmt_tx'),
- ('EAPOL_RX 00:00:00:00:00:00 00', 'FAIL',
- 1, 'wpas_ctrl_iface_eapol_rx'),
- ('DATA_TEST_FRAME 00112233445566778899aabbccddee', 'FAIL',
- 1, 'wpas_ctrl_iface_data_test_frame'),
- ('DATA_TEST_FRAME 00112233445566778899aabbccddee', 'FAIL',
- 1, 'l2_packet_init;wpas_ctrl_iface_data_test_frame'),
- ('VENDOR_ELEM_ADD 1 000100', 'FAIL',
- 1, 'wpas_ctrl_vendor_elem_add'),
- ('VENDOR_ELEM_ADD 2 000100', 'FAIL',
- 2, 'wpas_ctrl_vendor_elem_add'),
- ('VENDOR_ELEM_REMOVE 2 000100', 'FAIL',
- 1, 'wpas_ctrl_vendor_elem_remove'),
- ('SET bssid_filter 00:11:22:33:44:55', 'FAIL',
- 1, 'set_bssid_filter'),
- ('SET disallow_aps bssid 00:11:22:33:44:55', 'FAIL',
- 1, 'set_disallow_aps'),
- ('SET disallow_aps ssid 11', 'FAIL',
- 1, 'set_disallow_aps'),
- ('SET blob foo 0011', 'FAIL',
- 1, 'wpas_ctrl_set_blob'),
- ('SET blob foo 0011', 'FAIL',
- 2, 'wpas_ctrl_set_blob'),
- ('SET blob foo 0011', 'FAIL',
- 3, 'wpas_ctrl_set_blob'),
- ('WPS_NFC_TAG_READ 00', 'FAIL',
- 1, 'wpa_supplicant_ctrl_iface_wps_nfc_tag_read'),
- ('WPS_NFC_TOKEN NDEF', 'FAIL',
- 1, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
- ('WPS_NFC_TOKEN NDEF', 'FAIL',
- 2, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
- ('WPS_NFC_TOKEN NDEF', 'FAIL',
- 3, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
- ('WPS_NFC_TOKEN NDEF', 'FAIL',
- 4, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
- ('NFC_REPORT_HANDOVER ROLE TYPE 00 00', 'FAIL',
- 1, 'wpas_ctrl_nfc_report_handover'),
- ('NFC_REPORT_HANDOVER ROLE TYPE 00 00', 'FAIL',
- 2, 'wpas_ctrl_nfc_report_handover'),
- ('NFC_GET_HANDOVER_REQ NDEF WPS-CR', 'FAIL',
- 1, 'wps_build_nfc_handover_req'),
- ('NFC_GET_HANDOVER_REQ NDEF WPS-CR', 'FAIL',
- 1, 'ndef_build_record'),
- ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', None,
- 1, 'wpas_p2p_nfc_handover'),
- ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', None,
- 1, 'wps_build_nfc_handover_req_p2p'),
- ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', 'FAIL',
- 1, 'ndef_build_record'),
- ('NFC_GET_HANDOVER_SEL NDEF P2P-CR-TAG', None,
- 1, 'wpas_ctrl_nfc_get_handover_sel_p2p'),
- ('NFC_GET_HANDOVER_SEL NDEF P2P-CR', None,
- 1, 'wpas_ctrl_nfc_get_handover_sel_p2p'),
- ('P2P_ASP_PROVISION_RESP 00:11:22:33:44:55 id=1', 'FAIL',
- 1, 'p2p_parse_asp_provision_cmd'),
- ('P2P_SERV_DISC_REQ 00:11:22:33:44:55 02000001', 'FAIL',
- 1, 'p2p_ctrl_serv_disc_req'),
- ('P2P_SERV_DISC_RESP 2412 00:11:22:33:44:55 1 00', 'FAIL',
- 1, 'p2p_ctrl_serv_disc_resp'),
- ('P2P_SERVICE_ADD bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027',
- 'FAIL',
- 1, 'p2p_ctrl_service_add_bonjour'),
- ('P2P_SERVICE_ADD bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027',
- 'FAIL',
- 2, 'p2p_ctrl_service_add_bonjour'),
- ('P2P_SERVICE_ADD bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027',
- 'FAIL',
- 3, 'p2p_ctrl_service_add_bonjour'),
- ('P2P_SERVICE_DEL bonjour 0b5f6166706f766572746370c00c000c01',
- 'FAIL',
- 1, 'p2p_ctrl_service_del_bonjour'),
- ('GAS_REQUEST 00:11:22:33:44:55 00', 'FAIL',
- 1, 'gas_request'),
- ('GAS_REQUEST 00:11:22:33:44:55 00 11', 'FAIL',
- 2, 'gas_request'),
- ('HS20_GET_NAI_HOME_REALM_LIST 00:11:22:33:44:55 realm=example.com',
+ tests = [('DRIVER_EVENT AVOID_FREQUENCIES 2412', 'FAIL',
+ 1, 'freq_range_list_parse'),
+ ('P2P_SET disallow_freq 2412', 'FAIL',
+ 1, 'freq_range_list_parse'),
+ ('SCAN freq=2412', 'FAIL',
+ 1, 'freq_range_list_parse'),
+ ('INTERWORKING_SELECT freq=2412', 'FAIL',
+ 1, 'freq_range_list_parse'),
+ ('SCAN ssid 112233', 'FAIL',
+ 1, 'wpas_ctrl_scan'),
+ ('MGMT_TX 00:00:00:00:00:00 00:00:00:00:00:00 action=00', 'FAIL',
+ 1, 'wpas_ctrl_iface_mgmt_tx'),
+ ('EAPOL_RX 00:00:00:00:00:00 00', 'FAIL',
+ 1, 'wpas_ctrl_iface_eapol_rx'),
+ ('DATA_TEST_FRAME 00112233445566778899aabbccddee', 'FAIL',
+ 1, 'wpas_ctrl_iface_data_test_frame'),
+ ('DATA_TEST_FRAME 00112233445566778899aabbccddee', 'FAIL',
+ 1, 'l2_packet_init;wpas_ctrl_iface_data_test_frame'),
+ ('VENDOR_ELEM_ADD 1 000100', 'FAIL',
+ 1, 'wpas_ctrl_vendor_elem_add'),
+ ('VENDOR_ELEM_ADD 2 000100', 'FAIL',
+ 2, 'wpas_ctrl_vendor_elem_add'),
+ ('VENDOR_ELEM_REMOVE 2 000100', 'FAIL',
+ 1, 'wpas_ctrl_vendor_elem_remove'),
+ ('SET bssid_filter 00:11:22:33:44:55', 'FAIL',
+ 1, 'set_bssid_filter'),
+ ('SET disallow_aps bssid 00:11:22:33:44:55', 'FAIL',
+ 1, 'set_disallow_aps'),
+ ('SET disallow_aps ssid 11', 'FAIL',
+ 1, 'set_disallow_aps'),
+ ('SET blob foo 0011', 'FAIL',
+ 1, 'wpas_ctrl_set_blob'),
+ ('SET blob foo 0011', 'FAIL',
+ 2, 'wpas_ctrl_set_blob'),
+ ('SET blob foo 0011', 'FAIL',
+ 3, 'wpas_ctrl_set_blob'),
+ ('WPS_NFC_TAG_READ 00', 'FAIL',
+ 1, 'wpa_supplicant_ctrl_iface_wps_nfc_tag_read'),
+ ('WPS_NFC_TOKEN NDEF', 'FAIL',
+ 1, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
+ ('WPS_NFC_TOKEN NDEF', 'FAIL',
+ 2, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
+ ('WPS_NFC_TOKEN NDEF', 'FAIL',
+ 3, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
+ ('WPS_NFC_TOKEN NDEF', 'FAIL',
+ 4, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
+ ('NFC_REPORT_HANDOVER ROLE TYPE 00 00', 'FAIL',
+ 1, 'wpas_ctrl_nfc_report_handover'),
+ ('NFC_REPORT_HANDOVER ROLE TYPE 00 00', 'FAIL',
+ 2, 'wpas_ctrl_nfc_report_handover'),
+ ('NFC_GET_HANDOVER_REQ NDEF WPS-CR', 'FAIL',
+ 1, 'wps_build_nfc_handover_req'),
+ ('NFC_GET_HANDOVER_REQ NDEF WPS-CR', 'FAIL',
+ 1, 'ndef_build_record'),
+ ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', None,
+ 1, 'wpas_p2p_nfc_handover'),
+ ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', None,
+ 1, 'wps_build_nfc_handover_req_p2p'),
+ ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', 'FAIL',
+ 1, 'ndef_build_record'),
+ ('NFC_GET_HANDOVER_SEL NDEF P2P-CR-TAG', None,
+ 1, 'wpas_ctrl_nfc_get_handover_sel_p2p'),
+ ('NFC_GET_HANDOVER_SEL NDEF P2P-CR', None,
+ 1, 'wpas_ctrl_nfc_get_handover_sel_p2p'),
+ ('P2P_ASP_PROVISION_RESP 00:11:22:33:44:55 id=1', 'FAIL',
+ 1, 'p2p_parse_asp_provision_cmd'),
+ ('P2P_SERV_DISC_REQ 00:11:22:33:44:55 02000001', 'FAIL',
+ 1, 'p2p_ctrl_serv_disc_req'),
+ ('P2P_SERV_DISC_RESP 2412 00:11:22:33:44:55 1 00', 'FAIL',
+ 1, 'p2p_ctrl_serv_disc_resp'),
+ ('P2P_SERVICE_ADD bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027',
'FAIL',
- 1, 'hs20_nai_home_realm_list'),
- ('HS20_GET_NAI_HOME_REALM_LIST 00:11:22:33:44:55 00',
+ 1, 'p2p_ctrl_service_add_bonjour'),
+ ('P2P_SERVICE_ADD bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027',
'FAIL',
- 1, 'hs20_get_nai_home_realm_list'),
- ('WNM_SLEEP enter tfs_req=11', 'FAIL',
- 1, 'wpas_ctrl_iface_wnm_sleep'),
- ('WNM_SLEEP enter tfs_req=11', 'FAIL',
- 2, 'wpas_ctrl_iface_wnm_sleep'),
- ('WNM_SLEEP enter tfs_req=11', 'FAIL',
- 3, 'wpas_ctrl_iface_wnm_sleep'),
- ('WNM_SLEEP enter tfs_req=11', 'FAIL',
- 4, 'wpas_ctrl_iface_wnm_sleep'),
- ('WNM_SLEEP enter tfs_req=11', 'FAIL',
- 5, 'wpas_ctrl_iface_wnm_sleep'),
- ('WNM_SLEEP enter', 'FAIL',
- 3, 'wpas_ctrl_iface_wnm_sleep'),
- ('VENDOR 1 1 00', 'FAIL',
- 1, 'wpa_supplicant_vendor_cmd'),
- ('VENDOR 1 1 00', 'FAIL',
- 2, 'wpa_supplicant_vendor_cmd'),
- ('RADIO_WORK add test', 'FAIL',
- 1, 'wpas_ctrl_radio_work_add'),
- ('RADIO_WORK add test', 'FAIL',
- 2, 'wpas_ctrl_radio_work_add'),
- ('AUTOSCAN periodic:1', 'FAIL',
- 1, 'wpa_supplicant_ctrl_iface_autoscan'),
- ('PING', None,
- 1, 'wpa_supplicant_ctrl_iface_process') ]
+ 2, 'p2p_ctrl_service_add_bonjour'),
+ ('P2P_SERVICE_ADD bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027',
+ 'FAIL',
+ 3, 'p2p_ctrl_service_add_bonjour'),
+ ('P2P_SERVICE_DEL bonjour 0b5f6166706f766572746370c00c000c01',
+ 'FAIL',
+ 1, 'p2p_ctrl_service_del_bonjour'),
+ ('GAS_REQUEST 00:11:22:33:44:55 00', 'FAIL',
+ 1, 'gas_request'),
+ ('GAS_REQUEST 00:11:22:33:44:55 00 11', 'FAIL',
+ 2, 'gas_request'),
+ ('HS20_GET_NAI_HOME_REALM_LIST 00:11:22:33:44:55 realm=example.com',
+ 'FAIL',
+ 1, 'hs20_nai_home_realm_list'),
+ ('HS20_GET_NAI_HOME_REALM_LIST 00:11:22:33:44:55 00',
+ 'FAIL',
+ 1, 'hs20_get_nai_home_realm_list'),
+ ('WNM_SLEEP enter tfs_req=11', 'FAIL',
+ 1, 'wpas_ctrl_iface_wnm_sleep'),
+ ('WNM_SLEEP enter tfs_req=11', 'FAIL',
+ 2, 'wpas_ctrl_iface_wnm_sleep'),
+ ('WNM_SLEEP enter tfs_req=11', 'FAIL',
+ 3, 'wpas_ctrl_iface_wnm_sleep'),
+ ('WNM_SLEEP enter tfs_req=11', 'FAIL',
+ 4, 'wpas_ctrl_iface_wnm_sleep'),
+ ('WNM_SLEEP enter tfs_req=11', 'FAIL',
+ 5, 'wpas_ctrl_iface_wnm_sleep'),
+ ('WNM_SLEEP enter', 'FAIL',
+ 3, 'wpas_ctrl_iface_wnm_sleep'),
+ ('VENDOR 1 1 00', 'FAIL',
+ 1, 'wpa_supplicant_vendor_cmd'),
+ ('VENDOR 1 1 00', 'FAIL',
+ 2, 'wpa_supplicant_vendor_cmd'),
+ ('RADIO_WORK add test', 'FAIL',
+ 1, 'wpas_ctrl_radio_work_add'),
+ ('RADIO_WORK add test', 'FAIL',
+ 2, 'wpas_ctrl_radio_work_add'),
+ ('AUTOSCAN periodic:1', 'FAIL',
+ 1, 'wpa_supplicant_ctrl_iface_autoscan'),
+ ('PING', None,
+ 1, 'wpa_supplicant_ctrl_iface_process')]
tls = dev[0].request("GET tls_library")
if not tls.startswith("internal"):
tests.append(('NFC_GET_HANDOVER_SEL NDEF P2P-CR-TAG', 'FAIL',
4, 'wpas_ctrl_nfc_get_handover_sel_p2p'))
- for cmd,exp,count,func in tests:
+ for cmd, exp, count, func in tests:
with alloc_fail(dev[0], count, func):
res = dev[0].request(cmd)
if exp and exp not in res:
raise Exception("Unexpected success for '%s' during OOM (%d:%s)" % (cmd, count, func))
- tests = [ ('FOO', None,
- 1, 'wpa_supplicant_global_ctrl_iface_process'),
- ('IFNAME=notfound PING', 'FAIL\n',
- 1, 'wpas_global_ctrl_iface_ifname') ]
- for cmd,exp,count,func in tests:
+ tests = [('FOO', None,
+ 1, 'wpa_supplicant_global_ctrl_iface_process'),
+ ('IFNAME=notfound PING', 'FAIL\n',
+ 1, 'wpas_global_ctrl_iface_ifname')]
+ for cmd, exp, count, func in tests:
with alloc_fail(dev[0], count, func):
res = dev[0].global_request(cmd)
if exp and exp not in res:
@remote_compatible
def test_wpas_ctrl_error(dev):
"""Various wpa_supplicant ctrl_iface error cases"""
- tests = [ ('WPS_NFC_TOKEN NDEF', 'FAIL',
- 1, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
- ('WPS_NFC_TOKEN NDEF', 'FAIL',
- 2, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
- ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', None,
- 1, 'wpas_p2p_nfc_handover'),
- ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', None,
- 1, 'wps_build_nfc_handover_req_p2p') ]
- for cmd,exp,count,func in tests:
+ tests = [('WPS_NFC_TOKEN NDEF', 'FAIL',
+ 1, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
+ ('WPS_NFC_TOKEN NDEF', 'FAIL',
+ 2, 'wpa_supplicant_ctrl_iface_wps_nfc_token'),
+ ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', None,
+ 1, 'wpas_p2p_nfc_handover'),
+ ('NFC_GET_HANDOVER_REQ NDEF P2P-CR', None,
+ 1, 'wps_build_nfc_handover_req_p2p')]
+ for cmd, exp, count, func in tests:
with fail_test(dev[0], count, func):
res = dev[0].request(cmd)
if exp and exp not in res:
total_i = 0
total_g = 0
for i in range(100):
- (i,g) = dev[0].dump_monitor()
+ (i, g) = dev[0].dump_monitor()
total_i += i
total_g += g
logger.info("Received i=%d g=%d" % (i, g))
def test_wpas_ctrl_signal_monitor(dev, apdev):
"""wpa_supplicant SIGNAL_MONITOR command"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
dev[1].connect("open", key_mgmt="NONE", scan_freq="2412",
bgscan="simple:1:-45:2")
dev[2].connect("open", key_mgmt="NONE", scan_freq="2412")
- tests = [ " THRESHOLD=-45", " THRESHOLD=-44 HYSTERESIS=5", "" ]
+ tests = [" THRESHOLD=-45", " THRESHOLD=-44 HYSTERESIS=5", ""]
try:
if "FAIL" in dev[2].request("SIGNAL_MONITOR THRESHOLD=-1 HYSTERESIS=5"):
raise Exception("SIGNAL_MONITOR command failed")
def test_wpas_ctrl_bss_current(dev, apdev):
"""wpa_supplicant BSS CURRENT command"""
- hapd = hostapd.add_ap(apdev[0], { "ssid": "open" })
+ hapd = hostapd.add_ap(apdev[0], {"ssid": "open"})
bssid = hapd.own_addr()
res = dev[0].request("BSS CURRENT")
if res != '':
def test_wpas_ctrl_set_sched_scan_relative_rssi(dev):
"""wpa_supplicant SET relative RSSI"""
- tests = [ "relative_rssi -1",
- "relative_rssi 101",
- "relative_band_adjust 2G",
- "relative_band_adjust 2G:-101",
- "relative_band_adjust 2G:101",
- "relative_band_adjust 3G:1" ]
+ tests = ["relative_rssi -1",
+ "relative_rssi 101",
+ "relative_band_adjust 2G",
+ "relative_band_adjust 2G:-101",
+ "relative_band_adjust 2G:101",
+ "relative_band_adjust 3G:1"]
for t in tests:
if "FAIL" not in dev[0].request("SET " + t):
raise Exception("No failure reported for SET " + t)
- tests = [ "relative_rssi 0",
- "relative_rssi 10",
- "relative_rssi disable",
- "relative_band_adjust 2G:-1",
- "relative_band_adjust 2G:0",
- "relative_band_adjust 2G:1",
- "relative_band_adjust 5G:-1",
- "relative_band_adjust 5G:1",
- "relative_band_adjust 5G:0" ]
+ tests = ["relative_rssi 0",
+ "relative_rssi 10",
+ "relative_rssi disable",
+ "relative_band_adjust 2G:-1",
+ "relative_band_adjust 2G:0",
+ "relative_band_adjust 2G:1",
+ "relative_band_adjust 5G:-1",
+ "relative_band_adjust 5G:1",
+ "relative_band_adjust 5G:0"]
for t in tests:
if "OK" not in dev[0].request("SET " + t):
raise Exception("Failed to SET " + t)
dev[0].mesh_group_add(id)
check_mesh_group_added(dev[0])
- cmd = subprocess.Popen([ "iw", "dev", dev[0].ifname, "get", "mesh_param",
- "mesh_rssi_threshold" ], stdout=subprocess.PIPE)
+ cmd = subprocess.Popen(["iw", "dev", dev[0].ifname, "get", "mesh_param",
+ "mesh_rssi_threshold"], stdout=subprocess.PIPE)
mesh_rssi_threshold = int(cmd.stdout.read().decode().split(" ")[0])
dev[0].mesh_group_remove()
capfile = os.path.join(params['logdir'], "hwsim0.pcapng")
filt = "wlan.fc.type_subtype == 8"
- out = run_tshark(capfile, filt, [ "wlan.sa", "wlan.mesh.config.cap" ])
+ out = run_tshark(capfile, filt, ["wlan.sa", "wlan.mesh.config.cap"])
pkts = out.splitlines()
- one = [ 0, 0, 0 ]
- zero = [ 0, 0, 0 ]
+ one = [0, 0, 0]
+ zero = [0, 0, 0]
all_cap_one = True
for pkt in pkts:
addr, cap = pkt.split('\t')
#
# For now, assume the capability field ends up being the last octet of
# the frame.
- one = [ 0, 0, 0 ]
- zero = [ 0, 0, 0 ]
- addrs = [ addr0, addr1, addr2 ]
+ one = [0, 0, 0]
+ zero = [0, 0, 0]
+ addrs = [addr0, addr1, addr2]
for idx in range(3):
addr = addrs[idx]
out = run_tshark_json(capfile, filt + " && wlan.sa == " + addr)
# Start a 20 MHz BSS on channel 40 that would be the secondary channel of
# HT40+ mesh on channel 36.
- params = { "ssid": "test-ht40",
- "hw_mode": "a",
- "channel": "40",
- "country_code": "US" }
+ params = {"ssid": "test-ht40",
+ "hw_mode": "a",
+ "channel": "40",
+ "country_code": "US"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = hapd.own_addr()
filt = "wlan.sa==%s && wlan_mgt.fixed.mesh_addr5==%s" % (addr2,
external_sta)
for i in range(15):
- da = run_tshark(capfile, filt, [ "wlan.da" ])
+ da = run_tshark(capfile, filt, ["wlan.da"])
if addr0 in da and addr1 in da:
logger.debug("Frames seen in tshark iteration %d" % i)
break
if "FAIL" not in res:
raise Exception("MESH_PMKSA_GET accepted when not in mesh")
- tests = [ "foo",
- "02:02:02:02:02:02",
- "02:02:02:02:02:02 q",
- "02:02:02:02:02:02 c3d51a7ccfca0c6d5287291a7169d79b",
- "02:02:02:02:02:02 c3d51a7ccfca0c6d5287291a7169d79b q",
- "02:02:02:02:02:02 c3d51a7ccfca0c6d5287291a7169d79b 1bed4fa22ece7997ca1bdc8b829019fe63acac91cba3405522c24c91f7cfb49f",
- "02:02:02:02:02:02 c3d51a7ccfca0c6d5287291a7169d79b 1bed4fa22ece7997ca1bdc8b829019fe63acac91cba3405522c24c91f7cfb49f q" ]
+ tests = ["foo",
+ "02:02:02:02:02:02",
+ "02:02:02:02:02:02 q",
+ "02:02:02:02:02:02 c3d51a7ccfca0c6d5287291a7169d79b",
+ "02:02:02:02:02:02 c3d51a7ccfca0c6d5287291a7169d79b q",
+ "02:02:02:02:02:02 c3d51a7ccfca0c6d5287291a7169d79b 1bed4fa22ece7997ca1bdc8b829019fe63acac91cba3405522c24c91f7cfb49f",
+ "02:02:02:02:02:02 c3d51a7ccfca0c6d5287291a7169d79b 1bed4fa22ece7997ca1bdc8b829019fe63acac91cba3405522c24c91f7cfb49f q"]
for t in tests:
if "FAIL" not in dev[1].request("MESH_PMKSA_ADD " + t):
raise Exception("Invalid MESH_PMKSA_ADD accepted")
dev[0].request("SET sae_groups ")
dev[1].request("SET sae_groups ")
- funcs = [ (1, "=mesh_rsn_auth_sae_sta", True),
- (1, "mesh_rsn_build_sae_commit;mesh_rsn_auth_sae_sta", False),
- (1, "auth_sae_init_committed;mesh_rsn_auth_sae_sta", True),
- (1, "=mesh_rsn_protect_frame", True),
- (2, "=mesh_rsn_protect_frame", True),
- (1, "aes_siv_encrypt;mesh_rsn_protect_frame", True),
- (1, "=mesh_rsn_process_ampe", True),
- (1, "aes_siv_decrypt;mesh_rsn_process_ampe", True) ]
+ funcs = [(1, "=mesh_rsn_auth_sae_sta", True),
+ (1, "mesh_rsn_build_sae_commit;mesh_rsn_auth_sae_sta", False),
+ (1, "auth_sae_init_committed;mesh_rsn_auth_sae_sta", True),
+ (1, "=mesh_rsn_protect_frame", True),
+ (2, "=mesh_rsn_protect_frame", True),
+ (1, "aes_siv_encrypt;mesh_rsn_protect_frame", True),
+ (1, "=mesh_rsn_process_ampe", True),
+ (1, "aes_siv_decrypt;mesh_rsn_process_ampe", True)]
for count, func, success in funcs:
id = add_mesh_secure_net(dev[0])
dev[0].mesh_group_add(id)
"""Mesh and local failures"""
check_mesh_support(dev[0])
- funcs = [ (1, "ap_sta_add;mesh_mpm_add_peer", True),
- (1, "wpabuf_alloc;mesh_mpm_send_plink_action", True) ]
+ funcs = [(1, "ap_sta_add;mesh_mpm_add_peer", True),
+ (1, "wpabuf_alloc;mesh_mpm_send_plink_action", True)]
for count, func, success in funcs:
add_open_mesh_network(dev[0])
check_mesh_group_removed(dev[0])
check_mesh_group_removed(dev[1])
- funcs = [ (1, "mesh_mpm_init_link", True) ]
+ funcs = [(1, "mesh_mpm_init_link", True)]
for count, func, success in funcs:
add_open_mesh_network(dev[0])
def test_mesh_scan_parse_error(dev, apdev):
"""Mesh scan element parse error"""
check_mesh_support(dev[0])
- params = { "ssid": "open",
- "beacon_int": "2000" }
+ params = {"ssid": "open",
+ "beacon_int": "2000"}
hapd = hostapd.add_ap(apdev[0], params)
bssid = apdev[0]['bssid']
hapd.set('vendor_elements', 'dd0201')
from utils import fail_test
def add_wmm_ap(apdev, acm_list):
- params = { "ssid": "wmm_ac",
- "hw_mode": "g",
- "channel": "11",
- "wmm_enabled" : "1"}
+ params = {"ssid": "wmm_ac",
+ "hw_mode": "g",
+ "channel": "11",
+ "wmm_enabled": "1"}
for ac in acm_list:
params["wmm_ac_%s_acm" % (ac.lower())] = "1"
@remote_compatible
def test_tspec_not_enabled(dev, apdev):
"""addts failing if AP does not support WMM"""
- params = { "ssid": "wmm_no_ac",
- "hw_mode": "g",
- "channel": "11",
- "wmm_enabled" : "0" }
+ params = {"ssid": "wmm_no_ac",
+ "hw_mode": "g",
+ "channel": "11",
+ "wmm_enabled": "0"}
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("wmm_no_ac", key_mgmt="NONE", scan_freq="2462")
status = dev[0].request("WMM_AC_STATUS")
dev[0].request("VENDOR_ELEM_REMOVE 13 *")
def run_wmm_element(dev, apdev):
- params = { "ssid": "wmm" }
+ params = {"ssid": "wmm"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
dev[0].connect("wmm_ac", key_mgmt="NONE", scan_freq="2462")
addr = dev[0].own_addr()
- tests = [ "WMM_AC_ADDTS downlink tsid=5 up=6 nominal_msdu_size=1500 sba=9000 mean_data_rate=1500 min_phy_rate=600000",
- "WMM_AC_ADDTS downlink tsid=5 up=6 nominal_msdu_size=1500 sba=8192 mean_data_rate=1500 min_phy_rate=6000000",
- "WMM_AC_ADDTS downlink tsid=5 up=6 nominal_msdu_size=32767 sba=65535 mean_data_rate=1500 min_phy_rate=1000000",
- "WMM_AC_ADDTS downlink tsid=5 up=6 nominal_msdu_size=10000 sba=65535 mean_data_rate=2147483647 min_phy_rate=1000000" ]
+ tests = ["WMM_AC_ADDTS downlink tsid=5 up=6 nominal_msdu_size=1500 sba=9000 mean_data_rate=1500 min_phy_rate=600000",
+ "WMM_AC_ADDTS downlink tsid=5 up=6 nominal_msdu_size=1500 sba=8192 mean_data_rate=1500 min_phy_rate=6000000",
+ "WMM_AC_ADDTS downlink tsid=5 up=6 nominal_msdu_size=32767 sba=65535 mean_data_rate=1500 min_phy_rate=1000000",
+ "WMM_AC_ADDTS downlink tsid=5 up=6 nominal_msdu_size=10000 sba=65535 mean_data_rate=2147483647 min_phy_rate=1000000"]
for t in tests:
if "OK" not in dev[0].request(t):
raise Exception("WMM_AC_ADDTS failed")
tests = []
# WMM: Invalid Nominal MSDU Size (0)
- tests += [ "11000400dd3d0050f2020201aa300000000000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff0000" ]
+ tests += ["11000400dd3d0050f2020201aa300000000000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff0000"]
# hostapd_wmm_action - missing or wrong length tspec
- tests += [ "11000400dd3e0050f2020201aa300010270000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff000000" ]
+ tests += ["11000400dd3e0050f2020201aa300010270000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff000000"]
# hostapd_wmm_action - could not parse wmm action
- tests += [ "11000400dd3d0050f2020201aa300010270000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff00" ]
+ tests += ["11000400dd3d0050f2020201aa300010270000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff00"]
# valid form
- tests += [ "11000400dd3d0050f2020201aa300010270000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff0000" ]
+ tests += ["11000400dd3d0050f2020201aa300010270000000000000000000000000000000000000000000000000000ffffff7f00000000000000000000000040420f00ffff0000"]
hdr = "d0003a01" + bssid.replace(':', '') + addr.replace(':', '') + bssid.replace(':', '') + "1000"
hapd.set("ext_mgmt_frame_handling", "1")
def test_wmm_disabled(dev, apdev):
"""WMM disabled and unexpected TSPEC"""
- params = { "ssid": "no-wmm", "ieee80211n": "0", "wmm_enabled": "0" }
+ params = {"ssid": "no-wmm", "ieee80211n": "0", "wmm_enabled": "0"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
bssid = hapd.own_addr()
dev[0].connect("no-wmm", key_mgmt="NONE", scan_freq="2412")
time.sleep(0.1)
try:
- arg = [ "tshark", "-r", filename,
- _tshark_filter_arg, filter ]
+ arg = ["tshark", "-r", filename,
+ _tshark_filter_arg, filter]
if display:
arg.append('-Tfields')
for d in display:
wait)
def run_tshark_json(filename, filter):
- arg = [ "tshark", "-r", filename,
- _tshark_filter_arg, filter ]
+ arg = ["tshark", "-r", filename,
+ _tshark_filter_arg, filter]
arg.append('-Tjson')
arg.append('-x')
try:
ret = {}
data = binascii.unhexlify(buf)
while len(data) >= 2:
- ie,elen = struct.unpack('BB', data[0:2])
+ ie, elen = struct.unpack('BB', data[0:2])
data = data[2:]
if elen > len(data):
break
logger = logging.getLogger()
# Test cases that take significantly longer time to execute than average.
-long_tests = [ "ap_roam_open",
- "wpas_mesh_password_mismatch_retry",
- "wpas_mesh_password_mismatch",
- "hostapd_oom_wpa2_psk_connect",
- "ap_hs20_fetch_osu_stop",
- "ap_roam_wpa2_psk",
- "ibss_wpa_none_ccmp",
- "nfc_wps_er_handover_pk_hash_mismatch_sta",
- "go_neg_peers_force_diff_freq",
- "p2p_cli_invite",
- "sta_ap_scan_2b",
- "ap_pmf_sta_unprot_deauth_burst",
- "ap_bss_add_remove_during_ht_scan",
- "wext_scan_hidden",
- "autoscan_exponential",
- "nfc_p2p_client",
- "wnm_bss_keep_alive",
- "ap_inactivity_disconnect",
- "scan_bss_expiration_age",
- "autoscan_periodic",
- "discovery_group_client",
- "concurrent_p2pcli",
- "ap_bss_add_remove",
- "wpas_ap_wps",
- "wext_pmksa_cache",
- "ibss_wpa_none",
- "ap_ht_40mhz_intolerant_ap",
- "ibss_rsn",
- "discovery_pd_retries",
- "ap_wps_setup_locked_timeout",
- "ap_vht160",
- "dfs_radar",
- "dfs",
- "dfs_ht40_minus",
- "dfs_etsi",
- "ap_acs_dfs",
- "grpform_cred_ready_timeout",
- "hostapd_oom_wpa2_eap_connect",
- "wpas_ap_dfs",
- "autogo_many",
- "hostapd_oom_wpa2_eap",
- "ibss_open",
- "proxyarp_open_ebtables",
- "proxyarp_open_ebtables_ipv6",
- "radius_failover",
- "obss_scan_40_intolerant",
- "dbus_connect_oom",
- "proxyarp_open",
- "proxyarp_open_ipv6",
- "ap_wps_iteration",
- "ap_wps_iteration_error",
- "ap_wps_pbc_timeout",
- "ap_wps_http_timeout",
- "p2p_go_move_reg_change",
- "p2p_go_move_active",
- "p2p_go_move_scm",
- "p2p_go_move_scm_peer_supports",
- "p2p_go_move_scm_peer_does_not_support",
- "p2p_go_move_scm_multi" ]
+long_tests = ["ap_roam_open",
+ "wpas_mesh_password_mismatch_retry",
+ "wpas_mesh_password_mismatch",
+ "hostapd_oom_wpa2_psk_connect",
+ "ap_hs20_fetch_osu_stop",
+ "ap_roam_wpa2_psk",
+ "ibss_wpa_none_ccmp",
+ "nfc_wps_er_handover_pk_hash_mismatch_sta",
+ "go_neg_peers_force_diff_freq",
+ "p2p_cli_invite",
+ "sta_ap_scan_2b",
+ "ap_pmf_sta_unprot_deauth_burst",
+ "ap_bss_add_remove_during_ht_scan",
+ "wext_scan_hidden",
+ "autoscan_exponential",
+ "nfc_p2p_client",
+ "wnm_bss_keep_alive",
+ "ap_inactivity_disconnect",
+ "scan_bss_expiration_age",
+ "autoscan_periodic",
+ "discovery_group_client",
+ "concurrent_p2pcli",
+ "ap_bss_add_remove",
+ "wpas_ap_wps",
+ "wext_pmksa_cache",
+ "ibss_wpa_none",
+ "ap_ht_40mhz_intolerant_ap",
+ "ibss_rsn",
+ "discovery_pd_retries",
+ "ap_wps_setup_locked_timeout",
+ "ap_vht160",
+ "dfs_radar",
+ "dfs",
+ "dfs_ht40_minus",
+ "dfs_etsi",
+ "ap_acs_dfs",
+ "grpform_cred_ready_timeout",
+ "hostapd_oom_wpa2_eap_connect",
+ "wpas_ap_dfs",
+ "autogo_many",
+ "hostapd_oom_wpa2_eap",
+ "ibss_open",
+ "proxyarp_open_ebtables",
+ "proxyarp_open_ebtables_ipv6",
+ "radius_failover",
+ "obss_scan_40_intolerant",
+ "dbus_connect_oom",
+ "proxyarp_open",
+ "proxyarp_open_ipv6",
+ "ap_wps_iteration",
+ "ap_wps_iteration_error",
+ "ap_wps_pbc_timeout",
+ "ap_wps_http_timeout",
+ "p2p_go_move_reg_change",
+ "p2p_go_move_active",
+ "p2p_go_move_scm",
+ "p2p_go_move_scm_peer_supports",
+ "p2p_go_move_scm_peer_does_not_support",
+ "p2p_go_move_scm_multi"]
def get_failed(vm):
failed = []
debug_level = logging.DEBUG
extra_args = []
if args.valgrind:
- extra_args += [ '--valgrind' ]
+ extra_args += ['--valgrind']
if args.long:
- extra_args += [ '--long' ]
+ extra_args += ['--long']
if args.codecov:
print("Code coverage - build separate binaries")
logdir = os.path.join(dir, str(timestamp))
tests = args.params
else:
tests = []
- cmd = [ os.path.join(os.path.dirname(scriptsdir), 'run-tests.py'),
- '-L' ]
+ cmd = [os.path.join(os.path.dirname(scriptsdir), 'run-tests.py'), '-L']
if args.testmodules:
- cmd += [ "-f" ]
+ cmd += ["-f"]
cmd += args.testmodules
lst = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for l in lst.stdout.readlines():
'--ext', 'srv.%d' % (i + 1),
'-i'] + codecov_args + extra_args
if args.telnet:
- cmd += [ '--telnet', str(args.telnet + i) ]
+ cmd += ['--telnet', str(args.telnet + i)]
vm[i] = {}
vm[i]['first_run_done'] = False
vm[i]['proc'] = subprocess.Popen(cmd,
vm[i]['err'] = ""
vm[i]['failed'] = []
vm[i]['fail_seq'] = []
- for stream in [ vm[i]['proc'].stdout, vm[i]['proc'].stderr ]:
+ for stream in [vm[i]['proc'].stdout, vm[i]['proc'].stderr]:
fd = stream.fileno()
fl = fcntl.fcntl(fd, fcntl.F_GETFL)
fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)
for tid in range(0, 17):
tx[tid] = self.get_tx_tid(bssid, addr, tid)
rx[tid] = self.get_rx_tid(bssid, addr, tid)
- return [ tx, rx ]
+ return [tx, rx]
for l in lines:
if "network id" in l:
continue
- [id,ssid,bssid,flags] = l.split('\t')
+ [id, ssid, bssid, flags] = l.split('\t')
network = {}
network['id'] = id
network['ssid'] = ssid
def add_cred_values(self, params):
id = self.add_cred()
- quoted = [ "realm", "username", "password", "domain", "imsi",
- "excluded_ssid", "milenage", "ca_cert", "client_cert",
- "private_key", "domain_suffix_match", "provisioning_sp",
- "roaming_partner", "phase1", "phase2", "private_key_passwd",
- "roaming_consortiums" ]
+ quoted = ["realm", "username", "password", "domain", "imsi",
+ "excluded_ssid", "milenage", "ca_cert", "client_cert",
+ "private_key", "domain_suffix_match", "provisioning_sp",
+ "roaming_partner", "phase1", "phase2", "private_key_passwd",
+ "roaming_consortiums"]
for field in quoted:
if field in params:
self.set_cred_quoted(id, field, params[field])
- not_quoted = [ "eap", "roaming_consortium", "priority",
- "required_roaming_consortium", "sp_priority",
- "max_bss_load", "update_identifier", "req_conn_capab",
- "min_dl_bandwidth_home", "min_ul_bandwidth_home",
- "min_dl_bandwidth_roaming", "min_ul_bandwidth_roaming" ]
+ not_quoted = ["eap", "roaming_consortium", "priority",
+ "required_roaming_consortium", "sp_priority",
+ "max_bss_load", "update_identifier", "req_conn_capab",
+ "min_dl_bandwidth_home", "min_ul_bandwidth_home",
+ "min_dl_bandwidth_roaming", "min_ul_bandwidth_roaming"]
for field in not_quoted:
if field in params:
self.set_cred(id, field, params[field])
vals = dict()
for l in lines:
try:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
except ValueError as e:
logger.info(self.ifname + ": Ignore unexpected STATUS line: " + l)
vals = dict()
for l in lines:
try:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
except ValueError:
logger.info(self.ifname + ": Ignore unexpected status line: " + l)
continue
vals = dict()
for l in lines:
try:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
except ValueError:
logger.info(self.ifname + ": Ignore unexpected status-driver line: " + l)
continue
vals = dict()
for l in lines:
try:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
except ValueError as e:
logger.info(self.ifname + ": Ignore unexpected MIB line: " + l)
vals = dict()
for l in lines:
if '=' in l:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
return vals
elif ssid2:
self.set_network(id, "ssid", ssid2)
- quoted = [ "psk", "identity", "anonymous_identity", "password",
- "ca_cert", "client_cert", "private_key",
- "private_key_passwd", "ca_cert2", "client_cert2",
- "private_key2", "phase1", "phase2", "domain_suffix_match",
- "altsubject_match", "subject_match", "pac_file", "dh_file",
- "bgscan", "ht_mcs", "id_str", "openssl_ciphers",
- "domain_match", "dpp_connector", "sae_password",
- "sae_password_id", "check_cert_subject" ]
+ quoted = ["psk", "identity", "anonymous_identity", "password",
+ "ca_cert", "client_cert", "private_key",
+ "private_key_passwd", "ca_cert2", "client_cert2",
+ "private_key2", "phase1", "phase2", "domain_suffix_match",
+ "altsubject_match", "subject_match", "pac_file", "dh_file",
+ "bgscan", "ht_mcs", "id_str", "openssl_ciphers",
+ "domain_match", "dpp_connector", "sae_password",
+ "sae_password_id", "check_cert_subject"]
for field in quoted:
if field in kwargs and kwargs[field]:
self.set_network_quoted(id, field, kwargs[field])
- not_quoted = [ "proto", "key_mgmt", "ieee80211w", "pairwise",
- "group", "wep_key0", "wep_key1", "wep_key2", "wep_key3",
- "wep_tx_keyidx", "scan_freq", "freq_list", "eap",
- "eapol_flags", "fragment_size", "scan_ssid", "auth_alg",
- "wpa_ptk_rekey", "disable_ht", "disable_vht", "bssid",
- "disable_max_amsdu", "ampdu_factor", "ampdu_density",
- "disable_ht40", "disable_sgi", "disable_ldpc",
- "ht40_intolerant", "update_identifier", "mac_addr",
- "erp", "bg_scan_period", "bssid_blacklist",
- "bssid_whitelist", "mem_only_psk", "eap_workaround",
- "engine", "fils_dh_group", "bssid_hint",
- "dpp_csign", "dpp_csign_expiry",
- "dpp_netaccesskey", "dpp_netaccesskey_expiry",
- "group_mgmt", "owe_group",
- "roaming_consortium_selection", "ocv",
- "multi_ap_backhaul_sta", "rx_stbc", "tx_stbc" ]
+ not_quoted = ["proto", "key_mgmt", "ieee80211w", "pairwise",
+ "group", "wep_key0", "wep_key1", "wep_key2", "wep_key3",
+ "wep_tx_keyidx", "scan_freq", "freq_list", "eap",
+ "eapol_flags", "fragment_size", "scan_ssid", "auth_alg",
+ "wpa_ptk_rekey", "disable_ht", "disable_vht", "bssid",
+ "disable_max_amsdu", "ampdu_factor", "ampdu_density",
+ "disable_ht40", "disable_sgi", "disable_ldpc",
+ "ht40_intolerant", "update_identifier", "mac_addr",
+ "erp", "bg_scan_period", "bssid_blacklist",
+ "bssid_whitelist", "mem_only_psk", "eap_workaround",
+ "engine", "fils_dh_group", "bssid_hint",
+ "dpp_csign", "dpp_csign_expiry",
+ "dpp_netaccesskey", "dpp_netaccesskey_expiry",
+ "group_mgmt", "owe_group",
+ "roaming_consortium_selection", "ocv",
+ "multi_ap_backhaul_sta", "rx_stbc", "tx_stbc"]
for field in not_quoted:
if field in kwargs and kwargs[field]:
self.set_network(id, field, kwargs[field])
lines = res.splitlines()
vals = dict()
for l in lines:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
if len(vals) == 0:
return None
continue
vals = dict()
try:
- [index,aa,pmkid,expiration,opportunistic] = l.split(' ')
+ [index, aa, pmkid, expiration, opportunistic] = l.split(' ')
cache_id = None
except ValueError:
- [index,aa,pmkid,expiration,opportunistic,cache_id] = l.split(' ')
+ [index, aa, pmkid, expiration, opportunistic, cache_id] = l.split(' ')
vals['index'] = index
vals['pmkid'] = pmkid
vals['expiration'] = expiration
vals['addr'] = l
first = False
else:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
return vals
return None
msg = {}
items = ev.split(' ')
- field,val = items[1].split('=')
+ field, val = items[1].split('=')
if field != "freq":
raise Exception("Unexpected MGMT-RX event format: " + ev)
msg['freq'] = val
- field,val = items[2].split('=')
+ field, val = items[2].split('=')
if field != "datarate":
raise Exception("Unexpected MGMT-RX event format: " + ev)
msg['datarate'] = val
- field,val = items[3].split('=')
+ field, val = items[3].split('=')
if field != "ssi_signal":
raise Exception("Unexpected MGMT-RX event format: " + ev)
msg['ssi_signal'] = val
lines = res.splitlines()
vals = dict()
for l in lines:
- [name,value] = l.split('=', 1)
+ [name, value] = l.split('=', 1)
vals[name] = value
return vals
# You can put your settings in cfg.py file with setup_params, devices
# definitions in the format as below. In other case HWSIM cfg will be used.
#
-setup_params = { "setup_hw" : "./tests/setup_hw.sh",
- "hostapd" : "./tests/hostapd",
- "wpa_supplicant" : "./tests/wpa_supplicant",
- "iperf" : "iperf",
- "wlantest" : "./tests/wlantest",
- "wlantest_cli" : "./tests/wlantest_cli",
- "country" : "US",
- "log_dir" : "/tmp/",
- "ipv4_test_net" : "192.168.12.0",
- "trace_start" : "./tests/trace_start.sh",
- "trace_stop" : "./tests/trace_stop.sh",
- "perf_start" : "./tests/perf_start.sh",
- "perf_stop" : "./tests/perf_stop.sh" }
+setup_params = {"setup_hw" : "./tests/setup_hw.sh",
+ "hostapd" : "./tests/hostapd",
+ "wpa_supplicant" : "./tests/wpa_supplicant",
+ "iperf" : "iperf",
+ "wlantest" : "./tests/wlantest",
+ "wlantest_cli" : "./tests/wlantest_cli",
+ "country" : "US",
+ "log_dir" : "/tmp/",
+ "ipv4_test_net" : "192.168.12.0",
+ "trace_start" : "./tests/trace_start.sh",
+ "trace_stop" : "./tests/trace_stop.sh",
+ "perf_start" : "./tests/perf_start.sh",
+ "perf_stop" : "./tests/perf_stop.sh"}
#
#devices = [{"hostname": "192.168.254.58", "ifname" : "wlan0", "port": "9877", "name" : "t2-ath9k", "flags" : "AP_HT40 STA_HT40"},
if dev is None:
continue
- host = Host(host = dev['hostname'],
- ifname = dev['ifname'],
- port = dev['port'],
- name = dev['name'])
+ host = Host(host=dev['hostname'],
+ ifname=dev['ifname'],
+ port=dev['port'],
+ name=dev['name'])
try:
host.execute(["iw", "reg", "set", setup_params['country']])
get_status_field_f = wpa.get_status_field
freq = get_status_field_f("freq")
bw = "20"
- center_freq1=""
- center_freq2=""
+ center_freq1 = ""
+ center_freq2 = ""
vht_oper_chwidth = get_status_field_f("vht_oper_chwidth")
secondary_channel = get_status_field_f("secondary_channel")
else:
pass
- monitor_params = { "freq" : freq,
- "bw" : bw,
- "center_freq1" : center_freq1,
- "center_freq2" : center_freq2 }
+ monitor_params = {"freq" : freq,
+ "bw" : bw,
+ "center_freq1" : center_freq1,
+ "center_freq2" : center_freq2}
return monitor_params
if m:
mod = __import__(m.group(1))
test_modules.append(mod.__name__.replace('test_', '', 1))
- for key,val in mod.__dict__.items():
+ for key, val in mod.__dict__.items():
if key.startswith("test_"):
tests.append(val)
test_names = list(set([t.__name__.replace('test_', '', 1) for t in tests]))
if m:
mod = __import__(m.group(1))
test_modules.append(mod.__name__.replace('test_', '', 1))
- for key,val in mod.__dict__.items():
+ for key, val in mod.__dict__.items():
if key.startswith("test_"):
hwsim_tests.append(val)
# get host based on name
def get_host(devices, dev_name):
dev = config.get_device(devices, dev_name)
- host = Host(host = dev['hostname'],
- ifname = dev['ifname'],
- port = dev['port'],
- name = dev['name'])
+ host = Host(host=dev['hostname'],
+ ifname=dev['ifname'],
+ port=dev['port'],
+ name=dev['name'])
host.dev = dev
return host
elif security == "mixed":
sec_params = hostapd.wpa_mixed_params(passphrase="testtest")
elif security == "wep":
- sec_params = { "wep_key0" : "123456789a",
- "wep_default_key" : "0",
- "auth_algs" : "1"}
+ sec_params = {"wep_key0" : "123456789a",
+ "wep_default_key" : "0",
+ "auth_algs" : "1"}
elif security == "wep_shared":
- sec_params = { "wep_key0" : "123456789a",
- "wep_default_key" : "0",
- "auth_algs" : "2" }
+ sec_params = {"wep_key0" : "123456789a",
+ "wep_default_key" : "0",
+ "auth_algs" : "2"}
else:
sec_params = {}
def flush_arp_cache(host):
host.execute(["ip", "-s", "-s", "neigh", "flush", "all"])
-def check_connectivity(a, b, addr_type = "ipv4", deadline="5", qos=None):
+def check_connectivity(a, b, addr_type="ipv4", deadline="5", qos=None):
addr_a = get_ip(a, addr_type)
addr_b = get_ip(b, addr_type)
# first find last SUM line
for line in lines:
- res = line.find("[SUM]")
+ res = line.find("[SUM]")
if res != -1:
sum_line = line
iperf_server = iperf_server + ["-p", port]
elif l3 == "ipv6":
iperf_client = [iperf, "-V", "-c", server_ip + "%" + ifname, "-p", port]
- iperf_server = iperf_server + ["-V", "-p", port]
+ iperf_server = iperf_server + ["-V", "-p", port]
else:
return -1, -1
if l4 == "udp":
if iperf != "iperf3":
iperf_server = iperf_server + ["-u"]
- iperf_client = iperf_client + ["-u", "-b", bw]
+ iperf_client = iperf_client + ["-u", "-b", bw]
if qos:
iperf_client = iperf_client + ["-Q", ac_to_iperf_ac(qos)]
# connect to hostapd/wpa_supplicant UDP CTRL iface
hapd = hostapd.add_ap(ap.dev, ap_params)
freq = hapd.get_status_field("freq")
- wpas = WpaSupplicant(hostname = sta.host, global_iface="udp",
- global_port = sta.port)
+ wpas = WpaSupplicant(hostname=sta.host, global_iface="udp",
+ global_port=sta.port)
wpas.interface_add(sta.ifname)
# setup standalone monitor based on hapd; could be multi interface