tests: DPP2 connection status result
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
16ef233bf1
commit
b256d9393d
2 changed files with 98 additions and 1 deletions
|
@ -3666,6 +3666,7 @@ def wait_auth_success(responder, initiator, configurator=None, enrollee=None,
|
||||||
allow_configurator_failure=False,
|
allow_configurator_failure=False,
|
||||||
require_configurator_failure=False,
|
require_configurator_failure=False,
|
||||||
timeout=5, stop_responder=False, stop_initiator=False):
|
timeout=5, stop_responder=False, stop_initiator=False):
|
||||||
|
res = {}
|
||||||
ev = responder.wait_event(["DPP-AUTH-SUCCESS", "DPP-FAIL"], timeout=timeout)
|
ev = responder.wait_event(["DPP-AUTH-SUCCESS", "DPP-FAIL"], timeout=timeout)
|
||||||
if ev is None or "DPP-AUTH-SUCCESS" not in ev:
|
if ev is None or "DPP-AUTH-SUCCESS" not in ev:
|
||||||
raise Exception("DPP authentication did not succeed (Responder)")
|
raise Exception("DPP authentication did not succeed (Responder)")
|
||||||
|
@ -3681,6 +3682,8 @@ def wait_auth_success(responder, initiator, configurator=None, enrollee=None,
|
||||||
raise Exception("DPP configuration did not succeed (Configurator")
|
raise Exception("DPP configuration did not succeed (Configurator")
|
||||||
if "DPP-CONF-SENT" in ev and require_configurator_failure:
|
if "DPP-CONF-SENT" in ev and require_configurator_failure:
|
||||||
raise Exception("DPP configuration succeeded (Configurator)")
|
raise Exception("DPP configuration succeeded (Configurator)")
|
||||||
|
if "DPP-CONF-SENT" in ev and "wait_conn_status=1" in ev:
|
||||||
|
res['wait_conn_status'] = True
|
||||||
if enrollee:
|
if enrollee:
|
||||||
ev = enrollee.wait_event(["DPP-CONF-RECEIVED",
|
ev = enrollee.wait_event(["DPP-CONF-RECEIVED",
|
||||||
"DPP-CONF-FAILED"], timeout=5)
|
"DPP-CONF-FAILED"], timeout=5)
|
||||||
|
@ -3692,6 +3695,7 @@ def wait_auth_success(responder, initiator, configurator=None, enrollee=None,
|
||||||
responder.request("DPP_STOP_LISTEN")
|
responder.request("DPP_STOP_LISTEN")
|
||||||
if stop_initiator:
|
if stop_initiator:
|
||||||
initiator.request("DPP_STOP_LISTEN")
|
initiator.request("DPP_STOP_LISTEN")
|
||||||
|
return res
|
||||||
|
|
||||||
def wait_conf_completion(configurator, enrollee):
|
def wait_conf_completion(configurator, enrollee):
|
||||||
ev = configurator.wait_event(["DPP-CONF-SENT"], timeout=5)
|
ev = configurator.wait_event(["DPP-CONF-SENT"], timeout=5)
|
||||||
|
@ -4675,3 +4679,94 @@ def run_dpp_controller_rx_errors(dev, apdev):
|
||||||
except socket.timeout:
|
except socket.timeout:
|
||||||
pass
|
pass
|
||||||
sock.close()
|
sock.close()
|
||||||
|
|
||||||
|
def test_dpp_conn_status_success(dev, apdev):
|
||||||
|
"""DPP connection status - success"""
|
||||||
|
try:
|
||||||
|
run_dpp_conn_status(dev, apdev)
|
||||||
|
finally:
|
||||||
|
dev[0].set("dpp_config_processing", "0")
|
||||||
|
|
||||||
|
def test_dpp_conn_status_wrong_passphrase(dev, apdev):
|
||||||
|
"""DPP connection status - wrong passphrase"""
|
||||||
|
try:
|
||||||
|
run_dpp_conn_status(dev, apdev, result=2)
|
||||||
|
finally:
|
||||||
|
dev[0].set("dpp_config_processing", "0")
|
||||||
|
|
||||||
|
def test_dpp_conn_status_no_ap(dev, apdev):
|
||||||
|
"""DPP connection status - no AP"""
|
||||||
|
try:
|
||||||
|
run_dpp_conn_status(dev, apdev, result=10)
|
||||||
|
finally:
|
||||||
|
dev[0].set("dpp_config_processing", "0")
|
||||||
|
|
||||||
|
def test_dpp_conn_status_connector_mismatch(dev, apdev):
|
||||||
|
"""DPP connection status - invalid Connector"""
|
||||||
|
try:
|
||||||
|
run_dpp_conn_status(dev, apdev, result=8)
|
||||||
|
finally:
|
||||||
|
dev[0].set("dpp_config_processing", "0")
|
||||||
|
|
||||||
|
def run_dpp_conn_status(dev, apdev, result=0):
|
||||||
|
check_dpp_capab(dev[0], min_ver=2)
|
||||||
|
check_dpp_capab(dev[1], min_ver=2)
|
||||||
|
|
||||||
|
if result != 10:
|
||||||
|
if result == 7 or result == 8:
|
||||||
|
params = {"ssid": "dpp-status",
|
||||||
|
"wpa": "2",
|
||||||
|
"wpa_key_mgmt": "DPP",
|
||||||
|
"ieee80211w": "2",
|
||||||
|
"rsn_pairwise": "CCMP",
|
||||||
|
"dpp_connector": params1_ap_connector,
|
||||||
|
"dpp_csign": params1_csign,
|
||||||
|
"dpp_netaccesskey": params1_ap_netaccesskey}
|
||||||
|
else:
|
||||||
|
if result == 2:
|
||||||
|
passphrase = "wrong passphrase"
|
||||||
|
else:
|
||||||
|
passphrase = "secret passphrase"
|
||||||
|
params = hostapd.wpa2_params(ssid="dpp-status",
|
||||||
|
passphrase=passphrase)
|
||||||
|
try:
|
||||||
|
hapd = hostapd.add_ap(apdev[0], params)
|
||||||
|
except:
|
||||||
|
raise HwsimSkip("DPP not supported")
|
||||||
|
|
||||||
|
dev[0].request("SET sae_groups ")
|
||||||
|
dev[0].set("dpp_config_processing", "2")
|
||||||
|
id0 = dev[0].dpp_bootstrap_gen(chan="81/1", mac=True)
|
||||||
|
uri0 = dev[0].request("DPP_BOOTSTRAP_GET_URI %d" % id0)
|
||||||
|
|
||||||
|
dev[0].dpp_listen(2412)
|
||||||
|
if result == 7 or result == 8:
|
||||||
|
conf = 'sta-dpp'
|
||||||
|
passphrase = None
|
||||||
|
configurator = dev[1].dpp_configurator_add()
|
||||||
|
else:
|
||||||
|
conf = 'sta-psk'
|
||||||
|
passphrase = "secret passphrase"
|
||||||
|
configurator = None
|
||||||
|
dev[1].dpp_auth_init(uri=uri0, conf=conf, ssid="dpp-status",
|
||||||
|
passphrase=passphrase, configurator=configurator,
|
||||||
|
conn_status=True)
|
||||||
|
res = wait_auth_success(dev[0], dev[1], configurator=dev[1],
|
||||||
|
enrollee=dev[0])
|
||||||
|
if 'wait_conn_status' not in res:
|
||||||
|
raise Exception("Configurator did not request connection status")
|
||||||
|
|
||||||
|
ev = dev[1].wait_event(["DPP-CONN-STATUS-RESULT"], timeout=20)
|
||||||
|
if ev is None:
|
||||||
|
raise Exception("No connection status reported")
|
||||||
|
if "timeout" in ev:
|
||||||
|
raise Exception("Connection status result timeout")
|
||||||
|
if "result=%d" % result not in ev:
|
||||||
|
raise Exception("Unexpected connection status result: " + ev)
|
||||||
|
if "ssid=dpp-status" not in ev:
|
||||||
|
raise Exception("SSID not reported")
|
||||||
|
|
||||||
|
if result == 0:
|
||||||
|
dev[0].wait_connected()
|
||||||
|
if result == 10 and "channel_list=" not in ev:
|
||||||
|
raise Exception("Channel list not reported for no-AP")
|
||||||
|
|
|
@ -1458,7 +1458,7 @@ class WpaSupplicant:
|
||||||
def dpp_auth_init(self, peer=None, uri=None, conf=None, configurator=None,
|
def dpp_auth_init(self, peer=None, uri=None, conf=None, configurator=None,
|
||||||
extra=None, own=None, role=None, neg_freq=None,
|
extra=None, own=None, role=None, neg_freq=None,
|
||||||
ssid=None, passphrase=None, expect_fail=False,
|
ssid=None, passphrase=None, expect_fail=False,
|
||||||
tcp_addr=None, tcp_port=None):
|
tcp_addr=None, tcp_port=None, conn_status=False):
|
||||||
cmd = "DPP_AUTH_INIT"
|
cmd = "DPP_AUTH_INIT"
|
||||||
if peer is None:
|
if peer is None:
|
||||||
peer = self.dpp_qr_code(uri)
|
peer = self.dpp_qr_code(uri)
|
||||||
|
@ -1483,6 +1483,8 @@ class WpaSupplicant:
|
||||||
cmd += " tcp_addr=" + tcp_addr
|
cmd += " tcp_addr=" + tcp_addr
|
||||||
if tcp_port:
|
if tcp_port:
|
||||||
cmd += " tcp_port=" + tcp_port
|
cmd += " tcp_port=" + tcp_port
|
||||||
|
if conn_status:
|
||||||
|
cmd += " conn_status=1"
|
||||||
res = self.request(cmd)
|
res = self.request(cmd)
|
||||||
if expect_fail:
|
if expect_fail:
|
||||||
if "FAIL" not in res:
|
if "FAIL" not in res:
|
||||||
|
|
Loading…
Reference in a new issue