]>
git.ipfire.org Git - thirdparty/hostap.git/blob - tests/hwsim/test_ap_psk.py
2 # Copyright (c) 2014, Qualcomm Atheros, Inc.
4 # This software may be distributed under the terms of the BSD license.
5 # See README for more details.
8 logger
= logging
.getLogger()
14 def test_ap_wpa2_psk(dev
, apdev
):
15 """WPA2-PSK AP with PSK instead of passphrase"""
16 ssid
= "test-wpa2-psk"
17 passphrase
= 'qwertyuiop'
18 psk
= '602e323e077bc63bd80307ef4745b754b0ae0a925c2638ecd13a794b9527b9e6'
19 params
= hostapd
.wpa2_params(ssid
=ssid
)
20 params
['wpa_psk'] = psk
21 hapd
= hostapd
.add_ap(apdev
[0]['ifname'], params
)
22 key_mgmt
= hapd
.get_config()['key_mgmt']
23 if key_mgmt
.split(' ')[0] != "WPA-PSK":
24 raise Exception("Unexpected GET_CONFIG(key_mgmt): " + key_mgmt
)
25 dev
[0].connect(ssid
, raw_psk
=psk
, scan_freq
="2412")
26 dev
[1].connect(ssid
, psk
=passphrase
, scan_freq
="2412")
28 def test_ap_wpa2_psk_file(dev
, apdev
):
29 """WPA2-PSK AP with PSK from a file"""
30 ssid
= "test-wpa2-psk"
31 passphrase
= 'qwertyuiop'
32 psk
= '602e323e077bc63bd80307ef4745b754b0ae0a925c2638ecd13a794b9527b9e6'
33 params
= hostapd
.wpa2_params(ssid
=ssid
, passphrase
=passphrase
)
34 params
['wpa_psk_file'] = 'hostapd.wpa_psk'
35 hostapd
.add_ap(apdev
[0]['ifname'], params
)
36 dev
[1].connect(ssid
, psk
="very secret", scan_freq
="2412", wait_connect
=False)
37 dev
[2].connect(ssid
, raw_psk
=psk
, scan_freq
="2412")
38 dev
[2].request("REMOVE_NETWORK all")
39 dev
[0].connect(ssid
, psk
="very secret", scan_freq
="2412")
40 dev
[0].request("REMOVE_NETWORK all")
41 dev
[2].connect(ssid
, psk
="another passphrase for all STAs", scan_freq
="2412")
42 dev
[0].connect(ssid
, psk
="another passphrase for all STAs", scan_freq
="2412")
43 ev
= dev
[1].wait_event(["WPA: 4-Way Handshake failed"], timeout
=10)
45 raise Exception("Timed out while waiting for failure report")
46 dev
[1].request("REMOVE_NETWORK all")
48 def test_ap_wpa2_ptk_rekey(dev
, apdev
):
49 """WPA2-PSK AP and PTK rekey enforced by station"""
50 ssid
= "test-wpa2-psk"
51 passphrase
= 'qwertyuiop'
52 params
= hostapd
.wpa2_params(ssid
=ssid
, passphrase
=passphrase
)
53 hostapd
.add_ap(apdev
[0]['ifname'], params
)
54 dev
[0].connect(ssid
, psk
=passphrase
, wpa_ptk_rekey
="1", scan_freq
="2412")
55 ev
= dev
[0].wait_event(["WPA: Key negotiation completed"])
57 raise Exception("PTK rekey timed out")
58 hwsim_utils
.test_connectivity(dev
[0].ifname
, apdev
[0]['ifname'])
60 def test_ap_wpa2_sha256_ptk_rekey(dev
, apdev
):
61 """WPA2-PSK/SHA256 AKM AP and PTK rekey enforced by station"""
62 ssid
= "test-wpa2-psk"
63 passphrase
= 'qwertyuiop'
64 params
= hostapd
.wpa2_params(ssid
=ssid
, passphrase
=passphrase
)
65 params
["wpa_key_mgmt"] = "WPA-PSK-SHA256"
66 hostapd
.add_ap(apdev
[0]['ifname'], params
)
67 dev
[0].connect(ssid
, psk
=passphrase
, key_mgmt
="WPA-PSK-SHA256",
68 wpa_ptk_rekey
="1", scan_freq
="2412")
69 ev
= dev
[0].wait_event(["WPA: Key negotiation completed"])
71 raise Exception("PTK rekey timed out")
72 hwsim_utils
.test_connectivity(dev
[0].ifname
, apdev
[0]['ifname'])
74 def test_ap_wpa_ptk_rekey(dev
, apdev
):
75 """WPA-PSK/TKIP AP and PTK rekey enforced by station"""
77 passphrase
= 'qwertyuiop'
78 params
= hostapd
.wpa_params(ssid
=ssid
, passphrase
=passphrase
)
79 hostapd
.add_ap(apdev
[0]['ifname'], params
)
80 dev
[0].connect(ssid
, psk
=passphrase
, wpa_ptk_rekey
="1", scan_freq
="2412")
81 ev
= dev
[0].wait_event(["WPA: Key negotiation completed"])
83 raise Exception("PTK rekey timed out")
84 hwsim_utils
.test_connectivity(dev
[0].ifname
, apdev
[0]['ifname'])
86 def test_ap_wpa2_psk_file(dev
, apdev
):
87 """WPA2-PSK AP with various PSK file error and success cases"""
88 addr0
= dev
[0].p2p_dev_addr()
89 addr1
= dev
[1].p2p_dev_addr()
90 addr2
= dev
[2].p2p_dev_addr()
92 pskfile
= "/tmp/ap_wpa2_psk_file_errors.psk_file"
98 params
= { "ssid": ssid
, "wpa": "2", "wpa_key_mgmt": "WPA-PSK",
99 "rsn_pairwise": "CCMP", "wpa_psk_file": pskfile
}
103 hapd
= hostapd
.add_ap(apdev
[0]['ifname'], params
, no_enable
=True)
104 if "FAIL" not in hapd
.request("ENABLE"):
105 raise Exception("Unexpected ENABLE success")
106 hapd
.request("DISABLE")
108 # invalid MAC address
109 with
open(pskfile
, "w") as f
:
112 if "FAIL" not in hapd
.request("ENABLE"):
113 raise Exception("Unexpected ENABLE success")
114 hapd
.request("DISABLE")
117 with
open(pskfile
, "w") as f
:
118 f
.write("00:11:22:33:44:55\n")
119 if "FAIL" not in hapd
.request("ENABLE"):
120 raise Exception("Unexpected ENABLE success")
121 hapd
.request("DISABLE")
124 with
open(pskfile
, "w") as f
:
125 f
.write("00:11:22:33:44:55 1234567\n")
126 if "FAIL" not in hapd
.request("ENABLE"):
127 raise Exception("Unexpected ENABLE success")
128 hapd
.request("DISABLE")
131 with
open(pskfile
, "w") as f
:
132 f
.write("00:11:22:33:44:55 12345678\n")
133 f
.write(addr0
+ " 123456789\n")
134 f
.write(addr1
+ " 123456789a\n")
135 f
.write(addr2
+ " 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\n")
136 if "FAIL" in hapd
.request("ENABLE"):
137 raise Exception("Unexpected ENABLE failure")
139 dev
[0].connect(ssid
, psk
="123456789", scan_freq
="2412")
140 dev
[1].connect(ssid
, psk
="123456789a", scan_freq
="2412")
141 dev
[2].connect(ssid
, raw_psk
="0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", scan_freq
="2412")