test_ap_eap.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/usr/bin/python
  2. #
  3. # WPA2-Enterprise tests
  4. # Copyright (c) 2013, Jouni Malinen <j@w1.fi>
  5. #
  6. # This software may be distributed under the terms of the BSD license.
  7. # See README for more details.
  8. import time
  9. import subprocess
  10. import logging
  11. logger = logging.getLogger(__name__)
  12. import hwsim_utils
  13. import hostapd
  14. def eap_connect(dev, method, identity, anonymous_identity=None, password=None,
  15. phase1=None, phase2=None, ca_cert=None):
  16. dev.connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap=method,
  17. identity=identity, anonymous_identity=anonymous_identity,
  18. password=password, phase1=phase1, phase2=phase2,
  19. ca_cert=ca_cert,
  20. wait_connect=False)
  21. ev = dev.wait_event(["CTRL-EVENT-EAP-STARTED"], timeout=10)
  22. if ev is None:
  23. raise Exception("Association and EAP start timed out")
  24. ev = dev.wait_event(["CTRL-EVENT-EAP-METHOD"], timeout=10)
  25. if ev is None:
  26. raise Exception("EAP method selection timed out")
  27. if method not in ev:
  28. raise Exception("Unexpected EAP method")
  29. ev = dev.wait_event(["CTRL-EVENT-EAP-SUCCESS"], timeout=10)
  30. if ev is None:
  31. raise Exception("EAP success timed out")
  32. ev = dev.wait_event(["CTRL-EVENT-CONNECTED"], timeout=10)
  33. if ev is None:
  34. raise Exception("Association with the AP timed out")
  35. status = dev.get_status()
  36. if status["wpa_state"] != "COMPLETED":
  37. raise Exception("Connection not completed")
  38. if status["suppPortStatus"] != "Authorized":
  39. raise Exception("Port not authorized")
  40. if method not in status["selectedMethod"]:
  41. raise Exception("Incorrect EAP method status")
  42. if status["key_mgmt"] != "WPA2/IEEE 802.1X/EAP":
  43. raise Exception("Unexpected key_mgmt status")
  44. def test_ap_wpa2_eap_sim(dev, apdev):
  45. """WPA2-Enterprise connection using EAP-SIM"""
  46. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  47. hostapd.add_ap(apdev[0]['ifname'], params)
  48. eap_connect(dev[0], "SIM", "1232010000000000",
  49. password="90dca4eda45b53cf0f12d7c9c3bc6a89:cb9cccc4b9258e6dca4760379fb82581")
  50. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  51. def test_ap_wpa2_eap_aka(dev, apdev):
  52. """WPA2-Enterprise connection using EAP-AKA"""
  53. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  54. hostapd.add_ap(apdev[0]['ifname'], params)
  55. eap_connect(dev[0], "AKA", "0232010000000000",
  56. password="90dca4eda45b53cf0f12d7c9c3bc6a89:cb9cccc4b9258e6dca4760379fb82581:000000000123")
  57. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  58. def test_ap_wpa2_eap_aka_prime(dev, apdev):
  59. """WPA2-Enterprise connection using EAP-AKA'"""
  60. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  61. hostapd.add_ap(apdev[0]['ifname'], params)
  62. eap_connect(dev[0], "AKA'", "6555444333222111",
  63. password="5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123")
  64. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  65. def test_ap_wpa2_eap_ttls_pap(dev, apdev):
  66. """WPA2-Enterprise connection using EAP-TTLS/PAP"""
  67. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  68. hostapd.add_ap(apdev[0]['ifname'], params)
  69. eap_connect(dev[0], "TTLS", "pap user",
  70. anonymous_identity="ttls", password="password",
  71. ca_cert="auth_serv/ca.pem", phase2="auth=PAP")
  72. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  73. def test_ap_wpa2_eap_ttls_chap(dev, apdev):
  74. """WPA2-Enterprise connection using EAP-TTLS/CHAP"""
  75. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  76. hostapd.add_ap(apdev[0]['ifname'], params)
  77. eap_connect(dev[0], "TTLS", "chap user",
  78. anonymous_identity="ttls", password="password",
  79. ca_cert="auth_serv/ca.pem", phase2="auth=CHAP")
  80. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  81. def test_ap_wpa2_eap_ttls_mschap(dev, apdev):
  82. """WPA2-Enterprise connection using EAP-TTLS/MSCHAP"""
  83. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  84. hostapd.add_ap(apdev[0]['ifname'], params)
  85. eap_connect(dev[0], "TTLS", "mschap user",
  86. anonymous_identity="ttls", password="password",
  87. ca_cert="auth_serv/ca.pem", phase2="auth=MSCHAP")
  88. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  89. def test_ap_wpa2_eap_ttls_mschapv2(dev, apdev):
  90. """WPA2-Enterprise connection using EAP-TTLS/MSCHAPv2"""
  91. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  92. hostapd.add_ap(apdev[0]['ifname'], params)
  93. eap_connect(dev[0], "TTLS", "DOMAIN\mschapv2 user",
  94. anonymous_identity="ttls", password="password",
  95. ca_cert="auth_serv/ca.pem", phase2="auth=MSCHAPV2")
  96. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  97. def test_ap_wpa2_eap_ttls_eap_gtc(dev, apdev):
  98. """WPA2-Enterprise connection using EAP-TTLS/EAP-GTC"""
  99. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  100. hostapd.add_ap(apdev[0]['ifname'], params)
  101. eap_connect(dev[0], "TTLS", "user",
  102. anonymous_identity="ttls", password="password",
  103. ca_cert="auth_serv/ca.pem", phase2="autheap=GTC")
  104. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  105. def test_ap_wpa2_eap_ttls_eap_md5(dev, apdev):
  106. """WPA2-Enterprise connection using EAP-TTLS/EAP-MD5"""
  107. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  108. hostapd.add_ap(apdev[0]['ifname'], params)
  109. eap_connect(dev[0], "TTLS", "user",
  110. anonymous_identity="ttls", password="password",
  111. ca_cert="auth_serv/ca.pem", phase2="autheap=MD5")
  112. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  113. def test_ap_wpa2_eap_ttls_eap_mschapv2(dev, apdev):
  114. """WPA2-Enterprise connection using EAP-TTLS/EAP-MSCHAPv2"""
  115. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  116. hostapd.add_ap(apdev[0]['ifname'], params)
  117. eap_connect(dev[0], "TTLS", "user",
  118. anonymous_identity="ttls", password="password",
  119. ca_cert="auth_serv/ca.pem", phase2="autheap=MSCHAPV2")
  120. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
  121. def test_ap_wpa2_eap_peap_eap_mschapv2(dev, apdev):
  122. """WPA2-Enterprise connection using EAP-PEAP/EAP-MSCHAPv2"""
  123. params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
  124. hostapd.add_ap(apdev[0]['ifname'], params)
  125. eap_connect(dev[0], "PEAP", "user",
  126. anonymous_identity="ttls", password="password",
  127. ca_cert="auth_serv/ca.pem", phase2="auth=MSCHAPV2")
  128. hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])