]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: SAE protocol testing and a valid commit after a failed one
authorJouni Malinen <quic_jouni@quicinc.com>
Thu, 20 Jun 2024 15:24:10 +0000 (18:24 +0300)
committerJouni Malinen <j@w1.fi>
Thu, 20 Jun 2024 15:24:10 +0000 (18:24 +0300)
Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
tests/hwsim/test_sae.py

index d2c6243d26811ddacd175e32bca4296a3b192662..e26bb0a34f3d4e7079eaa23061a5ed18db2ef098 100644 (file)
@@ -1254,6 +1254,42 @@ def test_sae_proto_hostapd_status_127(dev, apdev):
     check_commit_status(hapd, 127, 1)
     check_commit_status(hapd, 0, 0)
 
+def test_sae_proto_hostapd_valid_commit_after_fail(dev, apdev):
+    """SAE protocol testing with hostapd and valid commit after failed one"""
+    params = hostapd.wpa2_params(ssid="test-sae", passphrase="foofoofoo")
+    params['wpa_key_mgmt'] = 'SAE'
+    params['sae_groups'] = "19"
+    hapd = hostapd.add_ap(apdev[0], params)
+    hapd.set("ext_mgmt_frame_handling", "1")
+    bssid = hapd.own_addr().replace(':', '')
+    addr = "020000000000"
+    addr2 = "020000000001"
+    hdr = "b0003a01" + bssid + addr + bssid + "1000"
+    hdr2 = "b0003a01" + bssid + addr2 + bssid + "1000"
+    group = "1300"
+    scalar = "f7df19f4a7fef1d3b895ea1de150b7c5a7a705c8ebb31a52b623e0057908bd93"
+    element_x = "21931572027f2e953e2a49fab3d992944102cc95aa19515fc068b394fb25ae3c"
+    element_y = "cb4eeb94d7b0b789abfdb73a67ab9d6d5efa94dd553e0e724a6289821cbce530"
+    pw_id = "ff022130"
+
+    hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + "030001000000" + group + scalar + element_x + element_y + pw_id)
+    ev = hapd.wait_event(['MGMT-TX-STATUS'], timeout=1)
+    buf = ev.split(' ')[3].split('=')[1]
+    # Check for status = Unknown Password ID
+    if buf[48:] != '0300' + '0100' + '7b00':
+        raise Exception("Unexpected response to SAE commit with unknown password id: " + buf)
+
+    hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=" + hdr + "030001000000" + group + scalar + element_x + element_y)
+
+    ev = hapd.wait_event(['MGMT-TX-STATUS'], timeout=1)
+    if ev is None:
+        raise Exception("No response to valid SAE commit")
+    buf = ev.split(' ')[3].split('=')[1]
+    # Check for status = Success
+    payload = buf[48:]
+    if payload[8:12] != '0000':
+        raise Exception("Unexpected Status Code for valid SAE commit: " + buf)
+
 @remote_compatible
 def test_sae_no_ffc_by_default(dev, apdev):
     """SAE and default groups rejecting FFC"""