tests: EAP-SIM DB error cases
Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
7b0f5500b0
commit
d4c3c055d5
1 changed files with 75 additions and 0 deletions
|
@ -12,6 +12,8 @@ import subprocess
|
|||
import logging
|
||||
logger = logging.getLogger()
|
||||
import os
|
||||
import socket
|
||||
import SocketServer
|
||||
|
||||
import hwsim_utils
|
||||
import hostapd
|
||||
|
@ -4097,3 +4099,76 @@ def test_eap_gpsk_errors(dev, apdev):
|
|||
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
||||
dev[0].request("REMOVE_NETWORK all")
|
||||
dev[0].wait_disconnected()
|
||||
|
||||
def test_ap_wpa2_eap_sim_db(dev, apdev, params):
|
||||
"""EAP-SIM DB error cases"""
|
||||
sockpath = '/tmp/hlr_auc_gw.sock-test'
|
||||
try:
|
||||
os.remove(sockpath)
|
||||
except:
|
||||
pass
|
||||
hparams = int_eap_server_params()
|
||||
hparams['eap_sim_db'] = 'unix:' + sockpath
|
||||
hapd = hostapd.add_ap(apdev[0]['ifname'], hparams)
|
||||
|
||||
# Initial test with hlr_auc_gw socket not available
|
||||
id = dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP WPA-EAP-SHA256",
|
||||
eap="SIM", identity="1232010000000000",
|
||||
password="90dca4eda45b53cf0f12d7c9c3bc6a89:cb9cccc4b9258e6dca4760379fb82581",
|
||||
scan_freq="2412", wait_connect=False)
|
||||
ev = dev[0].wait_event(["CTRL-EVENT-EAP-FAILURE"], timeout=10)
|
||||
if ev is None:
|
||||
raise Exception("EAP-Failure not reported")
|
||||
dev[0].wait_disconnected()
|
||||
dev[0].request("DISCONNECT")
|
||||
|
||||
# Test with invalid responses and response timeout
|
||||
|
||||
class test_handler(SocketServer.DatagramRequestHandler):
|
||||
def handle(self):
|
||||
data = self.request[0].strip()
|
||||
socket = self.request[1]
|
||||
logger.debug("Received hlr_auc_gw request: " + data)
|
||||
# EAP-SIM DB: Failed to parse response string
|
||||
socket.sendto("FOO", self.client_address)
|
||||
# EAP-SIM DB: Failed to parse response string
|
||||
socket.sendto("FOO 1", self.client_address)
|
||||
# EAP-SIM DB: Unknown external response
|
||||
socket.sendto("FOO 1 2", self.client_address)
|
||||
logger.info("No proper response - wait for pending eap_sim_db request timeout")
|
||||
|
||||
server = SocketServer.UnixDatagramServer(sockpath, test_handler)
|
||||
server.timeout = 1
|
||||
|
||||
dev[0].select_network(id)
|
||||
server.handle_request()
|
||||
ev = dev[0].wait_event(["CTRL-EVENT-EAP-FAILURE"], timeout=10)
|
||||
if ev is None:
|
||||
raise Exception("EAP-Failure not reported")
|
||||
dev[0].wait_disconnected()
|
||||
dev[0].request("DISCONNECT")
|
||||
|
||||
# Test with a valid response
|
||||
|
||||
class test_handler2(SocketServer.DatagramRequestHandler):
|
||||
def handle(self):
|
||||
data = self.request[0].strip()
|
||||
socket = self.request[1]
|
||||
logger.debug("Received hlr_auc_gw request: " + data)
|
||||
fname = os.path.join(params['logdir'],
|
||||
'hlr_auc_gw.milenage_db')
|
||||
cmd = subprocess.Popen(['../../hostapd/hlr_auc_gw',
|
||||
'-m', fname, data],
|
||||
stdout=subprocess.PIPE)
|
||||
res = cmd.stdout.read().strip()
|
||||
cmd.stdout.close()
|
||||
logger.debug("hlr_auc_gw response: " + res)
|
||||
socket.sendto(res, self.client_address)
|
||||
|
||||
server.RequestHandlerClass = test_handler2
|
||||
|
||||
dev[0].select_network(id)
|
||||
server.handle_request()
|
||||
dev[0].wait_connected()
|
||||
dev[0].request("DISCONNECT")
|
||||
dev[0].wait_disconnected()
|
||||
|
|
Loading…
Reference in a new issue