finally:
os.remove(pskfile)
+def test_ap_wps_pin_request_file(dev, apdev):
+ """WPS PIN provisioning with configured AP"""
+ ssid = "wps"
+ pinfile = "/tmp/ap_wps_pin_request_file.log"
+ if os.path.exists(pinfile):
+ subprocess.call(['sudo', 'rm', pinfile])
+ hostapd.add_ap(apdev[0]['ifname'],
+ { "ssid": ssid, "eap_server": "1", "wps_state": "2",
+ "wps_pin_requests": pinfile,
+ "wpa_passphrase": "12345678", "wpa": "2",
+ "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"})
+ hapd = hostapd.Hostapd(apdev[0]['ifname'])
+ uuid = dev[0].get_status_field("uuid")
+ pin = dev[0].wps_read_pin()
+ try:
+ dev[0].request("WPS_PIN any " + pin)
+ ev = hapd.wait_event(["WPS-PIN-NEEDED"], timeout=15)
+ if ev is None:
+ raise Exception("PIN needed event not shown")
+ if uuid not in ev:
+ raise Exception("UUID mismatch")
+ dev[0].request("WPS_CANCEL")
+ success = False
+ with open(pinfile, "r") as f:
+ lines = f.readlines()
+ for l in lines:
+ if uuid in l:
+ success = True
+ break
+ if not success:
+ raise Exception("PIN request entry not in the log file")
+ finally:
+ subprocess.call(['sudo', 'rm', pinfile])
+
def add_ssdp_ap(ifname, ap_uuid):
ssid = "wps-ssdp"
ap_pin = "12345670"