Browse Source

tests: Verify PeerKey handshake

NOTE: Actual use of the direct link (DLS) is not supported in
mac80211_hwsim, so this operation fails at setting the keys after
successfully completed 4-way handshake. This test case does allow the
key negotiation part to be tested for coverage, though.

Signed-hostap: Jouni Malinen <j@w1.fi>
Jouni Malinen 11 years ago
parent
commit
4a5a5792f1
2 changed files with 36 additions and 1 deletions
  1. 33 0
      tests/hwsim/test_peerkey.py
  2. 3 1
      tests/hwsim/wpasupplicant.py

+ 33 - 0
tests/hwsim/test_peerkey.py

@@ -0,0 +1,33 @@
+#!/usr/bin/python
+#
+# PeerKey tests
+# Copyright (c) 2013, Jouni Malinen <j@w1.fi>
+#
+# This software may be distributed under the terms of the BSD license.
+# See README for more details.
+
+import logging
+logger = logging.getLogger()
+import time
+
+import hwsim_utils
+import hostapd
+
+def test_peerkey(dev, apdev):
+    """RSN AP and PeerKey between two STAs"""
+    ssid = "test-peerkey"
+    passphrase = "12345678"
+    params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
+    params['peerkey'] = "1"
+    hostapd.add_ap(apdev[0]['ifname'], params)
+
+    dev[0].connect(ssid, psk=passphrase, scan_freq="2412", peerkey=True)
+    dev[1].connect(ssid, psk=passphrase, scan_freq="2412", peerkey=True)
+    hwsim_utils.test_connectivity_sta(dev[0], dev[1])
+
+    dev[0].request("STKSTART " + dev[1].p2p_interface_addr())
+    time.sleep(0.5)
+    # NOTE: Actual use of the direct link (DLS) is not supported in
+    # mac80211_hwsim, so this operation fails at setting the keys after
+    # successfully completed 4-way handshake. This test case does allow the
+    # key negotiation part to be tested for coverage, though.

+ 3 - 1
tests/hwsim/wpasupplicant.py

@@ -532,7 +532,7 @@ class WpaSupplicant:
                 eap=None, identity=None, anonymous_identity=None,
                 eap=None, identity=None, anonymous_identity=None,
                 password=None, phase1=None, phase2=None, ca_cert=None,
                 password=None, phase1=None, phase2=None, ca_cert=None,
                 domain_suffix_match=None, password_hex=None,
                 domain_suffix_match=None, password_hex=None,
-                client_cert=None, private_key=None,
+                client_cert=None, private_key=None, peerkey=False,
                 wait_connect=True):
                 wait_connect=True):
         logger.info("Connect STA " + self.ifname + " to AP")
         logger.info("Connect STA " + self.ifname + " to AP")
         id = self.add_network()
         id = self.add_network()
@@ -577,6 +577,8 @@ class WpaSupplicant:
         if domain_suffix_match:
         if domain_suffix_match:
             self.set_network_quoted(id, "domain_suffix_match",
             self.set_network_quoted(id, "domain_suffix_match",
                                     domain_suffix_match)
                                     domain_suffix_match)
+        if peerkey:
+            self.set_network(id, "peerkey", "1")
         if wait_connect:
         if wait_connect:
             self.connect_network(id)
             self.connect_network(id)
         else:
         else: