]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: WPA2-PSK/GCMP/CCMP ciphers
authorJouni Malinen <jouni@codeaurora.org>
Mon, 23 Apr 2018 10:43:52 +0000 (13:43 +0300)
committerJouni Malinen <j@w1.fi>
Mon, 23 Apr 2018 21:35:47 +0000 (00:35 +0300)
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
tests/hwsim/test_ap_ciphers.py

index a9e88abe2a8000c1d7a0063e956bbe8f42d0dde6..abed26fe5709651c88360c5c5b2915dc6f434d63 100644 (file)
@@ -15,6 +15,7 @@ import hwsim_utils
 import hostapd
 from utils import HwsimSkip, skip_with_fips, require_under_vm
 from wlantest import Wlantest
+from wpasupplicant import WpaSupplicant
 
 def check_cipher(dev, ap, cipher, group_cipher=None):
     if cipher not in dev.get_capability("pairwise"):
@@ -300,6 +301,64 @@ def test_ap_cipher_gcmp_256_group_ccmp(dev, apdev):
     """WPA2-PSK/GCMP-256 connection with group cipher override CCMP"""
     check_cipher(dev[0], apdev[0], "GCMP-256", "CCMP")
 
+def test_ap_cipher_gcmp_ccmp(dev, apdev, params):
+    """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" ]:
+        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" }
+    hapd = hostapd.add_ap(apdev[0], params)
+
+
+    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":
+            raise Exception("Unexpected group_cipher")
+        if dev[0].get_status_field("pairwise_cipher") != cipher:
+            raise Exception("Unexpected pairwise_cipher")
+        dev[0].request("REMOVE_NETWORK all")
+        dev[0].wait_disconnected()
+
+    dev[0].connect("test-wpa2-psk", psk="12345678",
+                   pairwise="CCMP CCMP-256 GCMP GCMP-256",
+                   group="CCMP CCMP-256 GCMP GCMP-256", scan_freq="2412")
+    if dev[0].get_status_field("group_cipher") != "CCMP":
+        raise Exception("Unexpected group_cipher")
+    res = dev[0].get_status_field("pairwise_cipher")
+    if res != "CCMP-256" and res != "GCMP-256":
+        raise Exception("Unexpected pairwise_cipher")
+
+    try:
+        with open(config, "w") as f:
+            f.write("network={\n" +
+                    "\tssid=\"test-wpa2-psk\"\n" +
+                    "\tkey_mgmt=WPA-PSK\n" +
+                    "\tpsk=\"12345678\"\n" +
+                    "\tpairwise=GCMP\n" +
+                    "\tgroup=CCMP\n" +
+                    "\tscan_freq=2412\n" +
+                    "}\n")
+
+        wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
+        wpas.interface_add("wlan5", config=config)
+        wpas.wait_connected()
+        if wpas.get_status_field("group_cipher") != "CCMP":
+            raise Exception("Unexpected group_cipher")
+        if wpas.get_status_field("pairwise_cipher") != "GCMP":
+            raise Exception("Unexpected pairwise_cipher")
+    finally:
+        os.remove(config)
+
 @remote_compatible
 def test_ap_cipher_mixed_wpa_wpa2(dev, apdev):
     """WPA2-PSK/CCMP/ and WPA-PSK/TKIP mixed configuration"""