test_ext_password.py 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # External password storage
  2. # Copyright (c) 2014, Jouni Malinen <j@w1.fi>
  3. #
  4. # This software may be distributed under the terms of the BSD license.
  5. # See README for more details.
  6. import logging
  7. logger = logging.getLogger()
  8. import hostapd
  9. from utils import skip_with_fips
  10. from wpasupplicant import WpaSupplicant
  11. from test_ap_hs20 import hs20_ap_params
  12. from test_ap_hs20 import interworking_select
  13. from test_ap_hs20 import interworking_connect
  14. def test_ext_password_psk(dev, apdev):
  15. """External password storage for PSK"""
  16. params = hostapd.wpa2_params(ssid="ext-pw-psk", passphrase="12345678")
  17. hostapd.add_ap(apdev[0]['ifname'], params)
  18. dev[0].request("SET ext_password_backend test:psk1=12345678")
  19. dev[0].connect("ext-pw-psk", raw_psk="ext:psk1", scan_freq="2412")
  20. def test_ext_password_psk_not_found(dev, apdev):
  21. """External password storage for PSK and PSK not found"""
  22. params = hostapd.wpa2_params(ssid="ext-pw-psk", passphrase="12345678")
  23. hostapd.add_ap(apdev[0]['ifname'], params)
  24. dev[0].request("SET ext_password_backend test:psk1=12345678")
  25. dev[0].connect("ext-pw-psk", raw_psk="ext:psk2", scan_freq="2412",
  26. wait_connect=False)
  27. dev[1].request("SET ext_password_backend test:psk1=1234567")
  28. dev[1].connect("ext-pw-psk", raw_psk="ext:psk1", scan_freq="2412",
  29. wait_connect=False)
  30. dev[2].request("SET ext_password_backend test:psk1=1234567890123456789012345678901234567890123456789012345678901234567890")
  31. dev[2].connect("ext-pw-psk", raw_psk="ext:psk1", scan_freq="2412",
  32. wait_connect=False)
  33. wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
  34. wpas.interface_add("wlan5")
  35. wpas.request("SET ext_password_backend test:psk1=123456789012345678901234567890123456789012345678901234567890123q")
  36. wpas.connect("ext-pw-psk", raw_psk="ext:psk1", scan_freq="2412",
  37. wait_connect=False)
  38. ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1)
  39. if ev is not None:
  40. raise Exception("Unexpected association")
  41. ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=0.1)
  42. if ev is not None:
  43. raise Exception("Unexpected association")
  44. ev = dev[2].wait_event(["CTRL-EVENT-CONNECTED"], timeout=0.1)
  45. if ev is not None:
  46. raise Exception("Unexpected association")
  47. ev = wpas.wait_event(["CTRL-EVENT-CONNECTED"], timeout=0.1)
  48. if ev is not None:
  49. raise Exception("Unexpected association")
  50. def test_ext_password_eap(dev, apdev):
  51. """External password storage for EAP password"""
  52. params = hostapd.wpa2_eap_params(ssid="ext-pw-eap")
  53. hostapd.add_ap(apdev[0]['ifname'], params)
  54. dev[0].request("SET ext_password_backend test:pw0=hello|pw1=password|pw2=secret")
  55. dev[0].connect("ext-pw-eap", key_mgmt="WPA-EAP", eap="PEAP",
  56. identity="user", password_hex="ext:pw1",
  57. ca_cert="auth_serv/ca.pem", phase2="auth=MSCHAPV2",
  58. scan_freq="2412")
  59. def test_ext_password_interworking(dev, apdev):
  60. """External password storage for Interworking network selection"""
  61. skip_with_fips(dev[0])
  62. bssid = apdev[0]['bssid']
  63. params = hs20_ap_params()
  64. hostapd.add_ap(apdev[0]['ifname'], params)
  65. dev[0].hs20_enable()
  66. dev[0].request("SET ext_password_backend test:pw1=password")
  67. id = dev[0].add_cred_values({ 'realm': "example.com",
  68. 'username': "hs20-test" })
  69. dev[0].set_cred(id, "password", "ext:pw1")
  70. interworking_select(dev[0], bssid, freq="2412")
  71. interworking_connect(dev[0], bssid, "TTLS")