Browse Source

tests: WPA2-PSK AP and no random numbers available

Signed-off-by: Jouni Malinen <j@w1.fi>
Jouni Malinen 9 years ago
parent
commit
bf7071bb0c
2 changed files with 33 additions and 1 deletions
  1. 19 1
      tests/hwsim/test_ap_psk.py
  2. 14 0
      tests/hwsim/utils.py

+ 19 - 1
tests/hwsim/test_ap_psk.py

@@ -17,7 +17,7 @@ import subprocess
 import time
 import time
 
 
 import hostapd
 import hostapd
-from utils import HwsimSkip
+from utils import HwsimSkip, fail_test
 import hwsim_utils
 import hwsim_utils
 from wpasupplicant import WpaSupplicant
 from wpasupplicant import WpaSupplicant
 
 
@@ -1971,3 +1971,21 @@ def test_ap_wpa_ie_parsing(dev, apdev):
             dev[0].request("DISCONNECT")
             dev[0].request("DISCONNECT")
         finally:
         finally:
             dev[0].request("VENDOR_ELEM_REMOVE 13 *")
             dev[0].request("VENDOR_ELEM_REMOVE 13 *")
+
+def test_ap_wpa2_psk_no_random(dev, apdev):
+    """WPA2-PSK AP and no random numbers available"""
+    ssid = "test-wpa2-psk"
+    passphrase = 'qwertyuiop'
+    psk = '602e323e077bc63bd80307ef4745b754b0ae0a925c2638ecd13a794b9527b9e6'
+    params = hostapd.wpa2_params(ssid=ssid)
+    params['wpa_psk'] = psk
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
+    with fail_test(hapd, 1, "wpa_gmk_to_gtk"):
+        id = dev[0].connect(ssid, raw_psk=psk, scan_freq="2412",
+                            wait_connect=False)
+        ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=15)
+        if ev is None:
+            raise Exception("Disconnection event not reported")
+        dev[0].request("DISCONNECT")
+        dev[0].select_network(id, freq=2412)
+        dev[0].wait_connected()

+ 14 - 0
tests/hwsim/utils.py

@@ -36,6 +36,20 @@ class alloc_fail(object):
             if self._dev.request("GET_ALLOC_FAIL") != "0:%s" % self._funcs:
             if self._dev.request("GET_ALLOC_FAIL") != "0:%s" % self._funcs:
                 raise Exception("Allocation failure did not trigger")
                 raise Exception("Allocation failure did not trigger")
 
 
+class fail_test(object):
+    def __init__(self, dev, count, funcs):
+        self._dev = dev
+        self._count = count
+        self._funcs = funcs
+    def __enter__(self):
+        cmd = "TEST_FAIL %d:%s" % (self._count, self._funcs)
+        if "OK" not in self._dev.request(cmd):
+            raise HwsimSkip("TEST_FAIL not supported")
+    def __exit__(self, type, value, traceback):
+        if type is None:
+            if self._dev.request("GET_FAIL") != "0:%s" % self._funcs:
+                raise Exception("Test failure did not trigger")
+
 def require_under_vm():
 def require_under_vm():
     with open('/proc/1/cmdline', 'r') as f:
     with open('/proc/1/cmdline', 'r') as f:
         cmd = f.read()
         cmd = f.read()