]>
Commit | Line | Data |
---|---|---|
f19ee5b7 | 1 | # -*- coding: utf-8 -*- |
f19ee5b7 JM |
2 | # SSID contents and encoding tests |
3 | # Copyright (c) 2013-2014, Jouni Malinen <j@w1.fi> | |
4 | # | |
5 | # This software may be distributed under the terms of the BSD license. | |
6 | # See README for more details. | |
7 | ||
8 | import logging | |
9 | logger = logging.getLogger() | |
10 | ||
11 | import hostapd | |
12 | ||
13 | def test_ssid_hex_encoded(dev, apdev): | |
14 | """SSID configuration using hex encoded version""" | |
8b8a1864 | 15 | hostapd.add_ap(apdev[0], { "ssid2": '68656c6c6f' }) |
f19ee5b7 JM |
16 | dev[0].connect("hello", key_mgmt="NONE", scan_freq="2412") |
17 | dev[1].connect(ssid2="68656c6c6f", key_mgmt="NONE", scan_freq="2412") | |
18 | ||
19 | def test_ssid_printf_encoded(dev, apdev): | |
20 | """SSID configuration using printf encoded version""" | |
8b8a1864 | 21 | hostapd.add_ap(apdev[0], { "ssid2": 'P"\\0hello\\nthere"' }) |
f19ee5b7 JM |
22 | dev[0].connect(ssid2="0068656c6c6f0a7468657265", key_mgmt="NONE", |
23 | scan_freq="2412") | |
24 | dev[1].connect(ssid2='P"\\x00hello\\nthere"', key_mgmt="NONE", | |
25 | scan_freq="2412") | |
26 | ssid = dev[0].get_status_field("ssid") | |
27 | bss = dev[1].get_bss(apdev[0]['bssid']) | |
28 | if ssid != bss['ssid']: | |
29 | raise Exception("Unexpected difference in SSID") | |
30 | dev[2].connect(ssid2='P"' + ssid + '"', key_mgmt="NONE", scan_freq="2412") | |
31 | ||
32 | def test_ssid_1_octet(dev, apdev): | |
33 | """SSID with one octet""" | |
8b8a1864 | 34 | hostapd.add_ap(apdev[0], { "ssid": '1' }) |
f19ee5b7 JM |
35 | dev[0].connect("1", key_mgmt="NONE", scan_freq="2412") |
36 | ||
37 | def test_ssid_32_octets(dev, apdev): | |
38 | """SSID with 32 octets""" | |
8b8a1864 | 39 | hostapd.add_ap(apdev[0], |
f19ee5b7 JM |
40 | { "ssid": '1234567890abcdef1234567890ABCDEF' }) |
41 | dev[0].connect("1234567890abcdef1234567890ABCDEF", key_mgmt="NONE", | |
42 | scan_freq="2412") | |
43 | ||
44 | def test_ssid_utf8(dev, apdev): | |
45 | """SSID with UTF8 encoding""" | |
8b8a1864 JD |
46 | hapd = hostapd.add_ap(apdev[0], { "ssid": 'testi-åäöÅÄÖ-testi', |
47 | "utf8_ssid": "1" }) | |
f19ee5b7 JM |
48 | dev[0].connect("testi-åäöÅÄÖ-testi", key_mgmt="NONE", scan_freq="2412") |
49 | dev[1].connect(ssid2="74657374692dc3a5c3a4c3b6c385c384c3962d7465737469", | |
50 | key_mgmt="NONE", scan_freq="2412") | |
cce26eb4 JM |
51 | # verify ctrl_iface for coverage |
52 | addrs = [ dev[0].p2p_interface_addr(), dev[1].p2p_interface_addr() ] | |
53 | sta = hapd.get_sta(None) | |
54 | if sta['addr'] not in addrs: | |
55 | raise Exception("Unexpected STA address") | |
56 | sta2 = hapd.get_sta(sta['addr'], next=True) | |
57 | if sta2['addr'] not in addrs: | |
58 | raise Exception("Unexpected STA2 address") | |
59 | sta3 = hapd.get_sta(sta2['addr'], next=True) | |
60 | if len(sta3) != 0: | |
61 | raise Exception("Unexpected STA iteration result (did not stop)") | |
f19ee5b7 | 62 | |
7c7234a5 JM |
63 | def clear_scan_cache(hapd, dev): |
64 | # clear BSS table to avoid issues in following test cases | |
65 | dev[0].request("REMOVE_NETWORK all") | |
66 | dev[1].request("REMOVE_NETWORK all") | |
67 | dev[0].wait_disconnected() | |
68 | hapd.disable() | |
69 | dev[0].flush_scan_cache() | |
70 | dev[1].flush_scan_cache() | |
71 | ||
f19ee5b7 JM |
72 | def test_ssid_hidden(dev, apdev): |
73 | """Hidden SSID""" | |
8b8a1864 JD |
74 | hapd = hostapd.add_ap(apdev[0], { "ssid": 'secret', |
75 | "ignore_broadcast_ssid": "1" }) | |
f19ee5b7 JM |
76 | dev[1].connect("secret", key_mgmt="NONE", scan_freq="2412", |
77 | wait_connect=False) | |
78 | dev[0].connect("secret", key_mgmt="NONE", scan_freq="2412", scan_ssid="1") | |
79 | ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1) | |
80 | if ev is not None: | |
81 | raise Exception("Unexpected connection") | |
7c7234a5 | 82 | clear_scan_cache(hapd, dev) |
f19ee5b7 | 83 | |
47a7e440 JM |
84 | def test_ssid_hidden2(dev, apdev): |
85 | """Hidden SSID using zero octets as payload""" | |
8b8a1864 JD |
86 | hapd = hostapd.add_ap(apdev[0], { "ssid": 'secret2', |
87 | "ignore_broadcast_ssid": "2" }) | |
47a7e440 JM |
88 | dev[1].connect("secret2", key_mgmt="NONE", scan_freq="2412", |
89 | wait_connect=False) | |
90 | dev[0].connect("secret2", key_mgmt="NONE", scan_freq="2412", scan_ssid="1") | |
91 | ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1) | |
92 | if ev is not None: | |
93 | raise Exception("Unexpected connection") | |
7c7234a5 | 94 | clear_scan_cache(hapd, dev) |
47a7e440 | 95 | |
f19ee5b7 JM |
96 | def test_ssid_hidden_wpa2(dev, apdev): |
97 | """Hidden SSID with WPA2-PSK""" | |
98 | params = hostapd.wpa2_params(ssid="secret", passphrase="12345678") | |
99 | params["ignore_broadcast_ssid"] = "1" | |
8b8a1864 | 100 | hapd = hostapd.add_ap(apdev[0], params) |
f19ee5b7 JM |
101 | dev[1].connect("secret", psk="12345678", scan_freq="2412", |
102 | wait_connect=False) | |
103 | dev[0].connect("secret", psk="12345678", scan_freq="2412", scan_ssid="1") | |
104 | ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1) | |
105 | if ev is not None: | |
106 | raise Exception("Unexpected connection") | |
7c7234a5 | 107 | clear_scan_cache(hapd, dev) |