From 17914a6ec9e4814998abdaec5a947b6a78709a19 Mon Sep 17 00:00:00 2001 From: Sam Leffler Date: Thu, 15 Jan 2009 02:11:43 +0000 Subject: flatten vendor branch --- COPYING | 340 ++ ChangeLog | 1023 +++++ FREEBSD-Xlist | 33 + FREEBSD-upgrade | 24 + Makefile | 918 +++++ README | 970 +++++ aes.c | 1107 +++++ aes.h | 25 + aes_wrap.c | 515 +++ aes_wrap.h | 44 + asn1.c | 209 + asn1.h | 71 + asn1_test.c | 210 + base64.c | 188 + base64.h | 23 + bignum.c | 230 ++ bignum.h | 38 + build_config.h | 50 + common.c | 646 +++ common.h | 492 +++ config.c | 1759 ++++++++ config.h | 339 ++ config_file.c | 724 ++++ config_none.c | 57 + config_ssid.h | 871 ++++ config_types.h | 28 + config_winreg.c | 882 ++++ contrib/wpa_supplicant/COPYING | 340 -- contrib/wpa_supplicant/ChangeLog | 1023 ----- contrib/wpa_supplicant/FREEBSD-Xlist | 33 - contrib/wpa_supplicant/FREEBSD-upgrade | 24 - contrib/wpa_supplicant/Makefile | 918 ----- contrib/wpa_supplicant/README | 970 ----- contrib/wpa_supplicant/aes.c | 1107 ----- contrib/wpa_supplicant/aes.h | 25 - contrib/wpa_supplicant/aes_wrap.c | 515 --- contrib/wpa_supplicant/aes_wrap.h | 44 - contrib/wpa_supplicant/asn1.c | 209 - contrib/wpa_supplicant/asn1.h | 71 - contrib/wpa_supplicant/asn1_test.c | 210 - contrib/wpa_supplicant/base64.c | 188 - contrib/wpa_supplicant/base64.h | 23 - contrib/wpa_supplicant/bignum.c | 230 -- contrib/wpa_supplicant/bignum.h | 38 - contrib/wpa_supplicant/build_config.h | 50 - contrib/wpa_supplicant/common.c | 646 --- contrib/wpa_supplicant/common.h | 492 --- contrib/wpa_supplicant/config.c | 1759 -------- contrib/wpa_supplicant/config.h | 339 -- contrib/wpa_supplicant/config_file.c | 724 ---- contrib/wpa_supplicant/config_none.c | 57 - contrib/wpa_supplicant/config_ssid.h | 871 ---- contrib/wpa_supplicant/config_types.h | 28 - contrib/wpa_supplicant/config_winreg.c | 882 ---- contrib/wpa_supplicant/crypto.c | 207 - contrib/wpa_supplicant/crypto.h | 413 -- contrib/wpa_supplicant/crypto_cryptoapi.c | 801 ---- contrib/wpa_supplicant/crypto_gnutls.c | 163 - contrib/wpa_supplicant/crypto_internal.c | 670 --- contrib/wpa_supplicant/crypto_libtomcrypt.c | 736 ---- contrib/wpa_supplicant/crypto_none.c | 28 - contrib/wpa_supplicant/ctrl_iface.c | 1376 ------- contrib/wpa_supplicant/ctrl_iface.h | 159 - contrib/wpa_supplicant/ctrl_iface_dbus.c | 1060 ----- contrib/wpa_supplicant/ctrl_iface_dbus.h | 146 - contrib/wpa_supplicant/ctrl_iface_dbus_handlers.c | 1331 ------ contrib/wpa_supplicant/ctrl_iface_dbus_handlers.h | 83 - contrib/wpa_supplicant/ctrl_iface_named_pipe.c | 834 ---- contrib/wpa_supplicant/ctrl_iface_udp.c | 561 --- contrib/wpa_supplicant/ctrl_iface_unix.c | 689 ---- contrib/wpa_supplicant/dbus-wpa_supplicant.conf | 16 - contrib/wpa_supplicant/dbus-wpa_supplicant.service | 4 - contrib/wpa_supplicant/dbus_dict_helpers.c | 957 ----- contrib/wpa_supplicant/dbus_dict_helpers.h | 135 - contrib/wpa_supplicant/defconfig | 326 -- contrib/wpa_supplicant/defs.h | 140 - contrib/wpa_supplicant/des.c | 476 --- contrib/wpa_supplicant/developer.txt | 458 --- contrib/wpa_supplicant/doc/code_structure.doxygen | 270 -- contrib/wpa_supplicant/doc/ctrl_iface.doxygen | 444 -- contrib/wpa_supplicant/doc/docbook/Makefile | 25 - .../wpa_supplicant/doc/docbook/wpa_background.8 | 84 - .../wpa_supplicant/doc/docbook/wpa_background.sgml | 101 - contrib/wpa_supplicant/doc/docbook/wpa_cli.8 | 209 - contrib/wpa_supplicant/doc/docbook/wpa_cli.sgml | 338 -- .../wpa_supplicant/doc/docbook/wpa_passphrase.8 | 40 - .../wpa_supplicant/doc/docbook/wpa_passphrase.sgml | 73 - .../wpa_supplicant/doc/docbook/wpa_supplicant.8 | 556 --- .../doc/docbook/wpa_supplicant.conf.5 | 230 -- .../doc/docbook/wpa_supplicant.conf.sgml | 244 -- .../wpa_supplicant/doc/docbook/wpa_supplicant.sgml | 791 ---- contrib/wpa_supplicant/doc/doxygen.fast | 243 -- contrib/wpa_supplicant/doc/doxygen.full | 230 -- contrib/wpa_supplicant/doc/driver_wrapper.doxygen | 180 - contrib/wpa_supplicant/doc/eap.doxygen | 56 - contrib/wpa_supplicant/doc/kerneldoc2doxygen.pl | 129 - contrib/wpa_supplicant/doc/mainpage.doxygen | 56 - contrib/wpa_supplicant/doc/porting.doxygen | 208 - contrib/wpa_supplicant/doc/testing_tools.doxygen | 295 -- contrib/wpa_supplicant/doc/wpa_supplicant.fig | 247 -- contrib/wpa_supplicant/driver.h | 757 ---- contrib/wpa_supplicant/driver_hostap.h | 153 - contrib/wpa_supplicant/driver_ndis.c | 2840 ------------- contrib/wpa_supplicant/driver_ndis.h | 64 - contrib/wpa_supplicant/driver_ndis_.c | 164 - contrib/wpa_supplicant/driver_wired.c | 278 -- contrib/wpa_supplicant/drivers.c | 102 - contrib/wpa_supplicant/eap.c | 2120 ---------- contrib/wpa_supplicant/eap.h | 272 -- contrib/wpa_supplicant/eap_aka.c | 934 ----- contrib/wpa_supplicant/eap_defs.h | 75 - contrib/wpa_supplicant/eap_fast.c | 2091 ---------- contrib/wpa_supplicant/eap_gpsk.c | 754 ---- contrib/wpa_supplicant/eap_gpsk_common.c | 425 -- contrib/wpa_supplicant/eap_gpsk_common.h | 66 - contrib/wpa_supplicant/eap_gtc.c | 155 - contrib/wpa_supplicant/eap_i.h | 356 -- contrib/wpa_supplicant/eap_leap.c | 399 -- contrib/wpa_supplicant/eap_md5.c | 132 - contrib/wpa_supplicant/eap_methods.c | 500 --- contrib/wpa_supplicant/eap_methods.h | 87 - contrib/wpa_supplicant/eap_mschapv2.c | 944 ----- contrib/wpa_supplicant/eap_otp.c | 114 - contrib/wpa_supplicant/eap_pax.c | 551 --- contrib/wpa_supplicant/eap_pax_common.c | 150 - contrib/wpa_supplicant/eap_pax_common.h | 101 - contrib/wpa_supplicant/eap_peap.c | 895 ---- contrib/wpa_supplicant/eap_psk.c | 468 --- contrib/wpa_supplicant/eap_psk_common.c | 64 - contrib/wpa_supplicant/eap_psk_common.h | 103 - contrib/wpa_supplicant/eap_sake.c | 515 --- contrib/wpa_supplicant/eap_sake_common.c | 380 -- contrib/wpa_supplicant/eap_sake_common.h | 104 - contrib/wpa_supplicant/eap_sim.c | 1003 ----- contrib/wpa_supplicant/eap_sim_common.c | 849 ---- contrib/wpa_supplicant/eap_sim_common.h | 166 - contrib/wpa_supplicant/eap_testing.txt | 359 -- contrib/wpa_supplicant/eap_tls.c | 289 -- contrib/wpa_supplicant/eap_tls_common.c | 681 --- contrib/wpa_supplicant/eap_tls_common.h | 71 - contrib/wpa_supplicant/eap_tlv.c | 204 - contrib/wpa_supplicant/eap_tlv.h | 96 - contrib/wpa_supplicant/eap_ttls.c | 1756 -------- contrib/wpa_supplicant/eap_ttls.h | 71 - contrib/wpa_supplicant/eap_vendor_test.c | 198 - contrib/wpa_supplicant/eapol_sm.c | 1786 -------- contrib/wpa_supplicant/eapol_sm.h | 322 -- contrib/wpa_supplicant/eapol_test.c | 1088 ----- contrib/wpa_supplicant/eloop.c | 531 --- contrib/wpa_supplicant/eloop.h | 327 -- contrib/wpa_supplicant/eloop_none.c | 390 -- contrib/wpa_supplicant/eloop_win.c | 604 --- contrib/wpa_supplicant/events.c | 881 ---- contrib/wpa_supplicant/examples/ieee8021x.conf | 13 - contrib/wpa_supplicant/examples/plaintext.conf | 8 - contrib/wpa_supplicant/examples/wep.conf | 11 - contrib/wpa_supplicant/examples/wpa-psk-tkip.conf | 12 - contrib/wpa_supplicant/examples/wpa2-eap-ccmp.conf | 15 - contrib/wpa_supplicant/hostap_common.h | 557 --- contrib/wpa_supplicant/hostapd.h | 39 - contrib/wpa_supplicant/includes.h | 57 - contrib/wpa_supplicant/l2_packet.h | 141 - contrib/wpa_supplicant/libtommath.c | 2370 ----------- contrib/wpa_supplicant/main.c | 289 -- contrib/wpa_supplicant/md4.c | 282 -- contrib/wpa_supplicant/md5.c | 394 -- contrib/wpa_supplicant/md5.h | 34 - contrib/wpa_supplicant/mlme.c | 2897 ------------- contrib/wpa_supplicant/mlme.h | 104 - contrib/wpa_supplicant/ms_funcs.c | 440 -- contrib/wpa_supplicant/ms_funcs.h | 59 - contrib/wpa_supplicant/nmake.mak | 188 - .../openssl-0.9.8d-tls-extensions.patch | 429 -- .../openssl-0.9.8e-tls-extensions.patch | 353 -- .../wpa_supplicant/openssl-tls-extensions.patch | 429 -- contrib/wpa_supplicant/os.h | 488 --- contrib/wpa_supplicant/os_internal.c | 441 -- contrib/wpa_supplicant/os_none.c | 220 - contrib/wpa_supplicant/os_unix.c | 229 -- contrib/wpa_supplicant/pcsc_funcs.c | 1238 ------ contrib/wpa_supplicant/pcsc_funcs.h | 68 - contrib/wpa_supplicant/pmksa_cache.c | 502 --- contrib/wpa_supplicant/pmksa_cache.h | 116 - contrib/wpa_supplicant/preauth.c | 524 --- contrib/wpa_supplicant/preauth.h | 87 - contrib/wpa_supplicant/preauth_test.c | 390 -- contrib/wpa_supplicant/radius.c | 1228 ------ contrib/wpa_supplicant/radius.h | 267 -- contrib/wpa_supplicant/radius_client.c | 1219 ------ contrib/wpa_supplicant/radius_client.h | 105 - contrib/wpa_supplicant/rc4.c | 86 - contrib/wpa_supplicant/rc4.h | 22 - contrib/wpa_supplicant/rsa.c | 359 -- contrib/wpa_supplicant/rsa.h | 29 - contrib/wpa_supplicant/sha1.c | 722 ---- contrib/wpa_supplicant/sha1.h | 41 - contrib/wpa_supplicant/sha256.c | 379 -- contrib/wpa_supplicant/sha256.h | 27 - contrib/wpa_supplicant/state_machine.h | 144 - contrib/wpa_supplicant/tests/test_aes.c | 306 -- contrib/wpa_supplicant/tests/test_eap_sim_common.c | 53 - contrib/wpa_supplicant/tests/test_md4.c | 99 - contrib/wpa_supplicant/tests/test_md5.c | 99 - contrib/wpa_supplicant/tests/test_ms_funcs.c | 119 - contrib/wpa_supplicant/tests/test_sha1.c | 328 -- contrib/wpa_supplicant/tests/test_sha256.c | 330 -- contrib/wpa_supplicant/tests/test_x509v3.c | 69 - contrib/wpa_supplicant/tls.h | 521 --- contrib/wpa_supplicant/tls_gnutls.c | 1370 ------- contrib/wpa_supplicant/tls_internal.c | 326 -- contrib/wpa_supplicant/tls_none.c | 241 -- contrib/wpa_supplicant/tls_openssl.c | 2333 ----------- contrib/wpa_supplicant/tls_schannel.c | 796 ---- contrib/wpa_supplicant/tlsv1_client.c | 2609 ------------ contrib/wpa_supplicant/tlsv1_client.h | 58 - contrib/wpa_supplicant/tlsv1_common.c | 552 --- contrib/wpa_supplicant/tlsv1_common.h | 233 -- contrib/wpa_supplicant/todo.txt | 124 - contrib/wpa_supplicant/version.h | 6 - contrib/wpa_supplicant/wpa.c | 4321 -------------------- contrib/wpa_supplicant/wpa.h | 289 -- contrib/wpa_supplicant/wpa_cli.c | 1641 -------- contrib/wpa_supplicant/wpa_common.h | 58 - contrib/wpa_supplicant/wpa_ctrl.c | 425 -- contrib/wpa_supplicant/wpa_ctrl.h | 185 - .../wpa_supplicant/wpa_gui-qt4/eventhistory.cpp | 122 - contrib/wpa_supplicant/wpa_gui-qt4/eventhistory.h | 63 - contrib/wpa_supplicant/wpa_gui-qt4/eventhistory.ui | 93 - .../wpa_supplicant/wpa_gui-qt4/eventhistory.ui.h | 41 - contrib/wpa_supplicant/wpa_gui-qt4/main.cpp | 44 - .../wpa_supplicant/wpa_gui-qt4/networkconfig.cpp | 582 --- contrib/wpa_supplicant/wpa_gui-qt4/networkconfig.h | 58 - .../wpa_supplicant/wpa_gui-qt4/networkconfig.ui | 356 -- .../wpa_supplicant/wpa_gui-qt4/networkconfig.ui.h | 513 --- contrib/wpa_supplicant/wpa_gui-qt4/scanresults.cpp | 124 - contrib/wpa_supplicant/wpa_gui-qt4/scanresults.h | 47 - contrib/wpa_supplicant/wpa_gui-qt4/scanresults.ui | 125 - .../wpa_supplicant/wpa_gui-qt4/scanresults.ui.h | 101 - .../wpa_gui-qt4/setup-mingw-cross-compiling | 11 - .../wpa_supplicant/wpa_gui-qt4/userdatarequest.cpp | 100 - .../wpa_supplicant/wpa_gui-qt4/userdatarequest.h | 46 - .../wpa_supplicant/wpa_gui-qt4/userdatarequest.ui | 109 - .../wpa_gui-qt4/userdatarequest.ui.h | 70 - contrib/wpa_supplicant/wpa_gui-qt4/wpa_gui.pro | 50 - contrib/wpa_supplicant/wpa_gui-qt4/wpagui.cpp | 779 ---- contrib/wpa_supplicant/wpa_gui-qt4/wpagui.h | 76 - contrib/wpa_supplicant/wpa_gui-qt4/wpagui.ui | 318 -- contrib/wpa_supplicant/wpa_gui-qt4/wpagui.ui.h | 651 --- contrib/wpa_supplicant/wpa_gui-qt4/wpamsg.h | 42 - contrib/wpa_supplicant/wpa_gui/eventhistory.ui | 125 - contrib/wpa_supplicant/wpa_gui/eventhistory.ui.h | 41 - contrib/wpa_supplicant/wpa_gui/main.cpp | 30 - contrib/wpa_supplicant/wpa_gui/networkconfig.ui | 455 --- contrib/wpa_supplicant/wpa_gui/networkconfig.ui.h | 537 --- contrib/wpa_supplicant/wpa_gui/scanresults.ui | 179 - contrib/wpa_supplicant/wpa_gui/scanresults.ui.h | 101 - .../wpa_gui/setup-mingw-cross-compiling | 11 - contrib/wpa_supplicant/wpa_gui/userdatarequest.ui | 163 - .../wpa_supplicant/wpa_gui/userdatarequest.ui.h | 70 - contrib/wpa_supplicant/wpa_gui/wpa_gui.pro | 47 - contrib/wpa_supplicant/wpa_gui/wpagui.ui | 471 --- contrib/wpa_supplicant/wpa_gui/wpagui.ui.h | 731 ---- contrib/wpa_supplicant/wpa_gui/wpamsg.h | 34 - contrib/wpa_supplicant/wpa_i.h | 226 - contrib/wpa_supplicant/wpa_passphrase.c | 73 - contrib/wpa_supplicant/wpa_supplicant.c | 2619 ------------ contrib/wpa_supplicant/wpa_supplicant.conf | 748 ---- contrib/wpa_supplicant/wpa_supplicant.h | 273 -- contrib/wpa_supplicant/wpa_supplicant_i.h | 701 ---- contrib/wpa_supplicant/x509v3.c | 1676 -------- contrib/wpa_supplicant/x509v3.h | 154 - crypto.c | 207 + crypto.h | 413 ++ crypto_cryptoapi.c | 801 ++++ crypto_gnutls.c | 163 + crypto_internal.c | 670 +++ crypto_libtomcrypt.c | 736 ++++ crypto_none.c | 28 + ctrl_iface.c | 1376 +++++++ ctrl_iface.h | 159 + ctrl_iface_dbus.c | 1060 +++++ ctrl_iface_dbus.h | 146 + ctrl_iface_dbus_handlers.c | 1331 ++++++ ctrl_iface_dbus_handlers.h | 83 + ctrl_iface_named_pipe.c | 834 ++++ ctrl_iface_udp.c | 561 +++ ctrl_iface_unix.c | 689 ++++ dbus-wpa_supplicant.conf | 16 + dbus-wpa_supplicant.service | 4 + dbus_dict_helpers.c | 957 +++++ dbus_dict_helpers.h | 135 + defconfig | 326 ++ defs.h | 140 + des.c | 476 +++ developer.txt | 458 +++ doc/code_structure.doxygen | 270 ++ doc/ctrl_iface.doxygen | 444 ++ doc/docbook/Makefile | 25 + doc/docbook/wpa_background.8 | 84 + doc/docbook/wpa_background.sgml | 101 + doc/docbook/wpa_cli.8 | 209 + doc/docbook/wpa_cli.sgml | 338 ++ doc/docbook/wpa_passphrase.8 | 40 + doc/docbook/wpa_passphrase.sgml | 73 + doc/docbook/wpa_supplicant.8 | 556 +++ doc/docbook/wpa_supplicant.conf.5 | 230 ++ doc/docbook/wpa_supplicant.conf.sgml | 244 ++ doc/docbook/wpa_supplicant.sgml | 791 ++++ doc/doxygen.fast | 243 ++ doc/doxygen.full | 230 ++ doc/driver_wrapper.doxygen | 180 + doc/eap.doxygen | 56 + doc/kerneldoc2doxygen.pl | 129 + doc/mainpage.doxygen | 56 + doc/porting.doxygen | 208 + doc/testing_tools.doxygen | 295 ++ doc/wpa_supplicant.fig | 247 ++ driver.h | 757 ++++ driver_hostap.h | 153 + driver_ndis.c | 2840 +++++++++++++ driver_ndis.h | 64 + driver_ndis_.c | 164 + driver_wired.c | 278 ++ drivers.c | 102 + eap.c | 2120 ++++++++++ eap.h | 272 ++ eap_aka.c | 934 +++++ eap_defs.h | 75 + eap_fast.c | 2091 ++++++++++ eap_gpsk.c | 754 ++++ eap_gpsk_common.c | 425 ++ eap_gpsk_common.h | 66 + eap_gtc.c | 155 + eap_i.h | 356 ++ eap_leap.c | 399 ++ eap_md5.c | 132 + eap_methods.c | 500 +++ eap_methods.h | 87 + eap_mschapv2.c | 944 +++++ eap_otp.c | 114 + eap_pax.c | 551 +++ eap_pax_common.c | 150 + eap_pax_common.h | 101 + eap_peap.c | 895 ++++ eap_psk.c | 468 +++ eap_psk_common.c | 64 + eap_psk_common.h | 103 + eap_sake.c | 515 +++ eap_sake_common.c | 380 ++ eap_sake_common.h | 104 + eap_sim.c | 1003 +++++ eap_sim_common.c | 849 ++++ eap_sim_common.h | 166 + eap_testing.txt | 359 ++ eap_tls.c | 289 ++ eap_tls_common.c | 681 +++ eap_tls_common.h | 71 + eap_tlv.c | 204 + eap_tlv.h | 96 + eap_ttls.c | 1756 ++++++++ eap_ttls.h | 71 + eap_vendor_test.c | 198 + eapol_sm.c | 1786 ++++++++ eapol_sm.h | 322 ++ eapol_test.c | 1088 +++++ eloop.c | 531 +++ eloop.h | 327 ++ eloop_none.c | 390 ++ eloop_win.c | 604 +++ events.c | 881 ++++ examples/ieee8021x.conf | 13 + examples/plaintext.conf | 8 + examples/wep.conf | 11 + examples/wpa-psk-tkip.conf | 12 + examples/wpa2-eap-ccmp.conf | 15 + hostap_common.h | 557 +++ hostapd.h | 39 + includes.h | 57 + l2_packet.h | 141 + libtommath.c | 2370 +++++++++++ main.c | 289 ++ md4.c | 282 ++ md5.c | 394 ++ md5.h | 34 + mlme.c | 2897 +++++++++++++ mlme.h | 104 + ms_funcs.c | 440 ++ ms_funcs.h | 59 + nmake.mak | 188 + openssl-0.9.8d-tls-extensions.patch | 429 ++ openssl-0.9.8e-tls-extensions.patch | 353 ++ openssl-tls-extensions.patch | 429 ++ os.h | 488 +++ os_internal.c | 441 ++ os_none.c | 220 + os_unix.c | 229 ++ pcsc_funcs.c | 1238 ++++++ pcsc_funcs.h | 68 + pmksa_cache.c | 502 +++ pmksa_cache.h | 116 + preauth.c | 524 +++ preauth.h | 87 + preauth_test.c | 390 ++ radius.c | 1228 ++++++ radius.h | 267 ++ radius_client.c | 1219 ++++++ radius_client.h | 105 + rc4.c | 86 + rc4.h | 22 + rsa.c | 359 ++ rsa.h | 29 + sha1.c | 722 ++++ sha1.h | 41 + sha256.c | 379 ++ sha256.h | 27 + state_machine.h | 144 + tests/test_aes.c | 306 ++ tests/test_eap_sim_common.c | 53 + tests/test_md4.c | 99 + tests/test_md5.c | 99 + tests/test_ms_funcs.c | 119 + tests/test_sha1.c | 328 ++ tests/test_sha256.c | 330 ++ tests/test_x509v3.c | 69 + tls.h | 521 +++ tls_gnutls.c | 1370 +++++++ tls_internal.c | 326 ++ tls_none.c | 241 ++ tls_openssl.c | 2333 +++++++++++ tls_schannel.c | 796 ++++ tlsv1_client.c | 2609 ++++++++++++ tlsv1_client.h | 58 + tlsv1_common.c | 552 +++ tlsv1_common.h | 233 ++ todo.txt | 124 + version.h | 6 + wpa.c | 4321 ++++++++++++++++++++ wpa.h | 289 ++ wpa_cli.c | 1641 ++++++++ wpa_common.h | 58 + wpa_ctrl.c | 425 ++ wpa_ctrl.h | 185 + wpa_gui-qt4/eventhistory.cpp | 122 + wpa_gui-qt4/eventhistory.h | 63 + wpa_gui-qt4/eventhistory.ui | 93 + wpa_gui-qt4/eventhistory.ui.h | 41 + wpa_gui-qt4/main.cpp | 44 + wpa_gui-qt4/networkconfig.cpp | 582 +++ wpa_gui-qt4/networkconfig.h | 58 + wpa_gui-qt4/networkconfig.ui | 356 ++ wpa_gui-qt4/networkconfig.ui.h | 513 +++ wpa_gui-qt4/scanresults.cpp | 124 + wpa_gui-qt4/scanresults.h | 47 + wpa_gui-qt4/scanresults.ui | 125 + wpa_gui-qt4/scanresults.ui.h | 101 + wpa_gui-qt4/setup-mingw-cross-compiling | 11 + wpa_gui-qt4/userdatarequest.cpp | 100 + wpa_gui-qt4/userdatarequest.h | 46 + wpa_gui-qt4/userdatarequest.ui | 109 + wpa_gui-qt4/userdatarequest.ui.h | 70 + wpa_gui-qt4/wpa_gui.pro | 50 + wpa_gui-qt4/wpagui.cpp | 779 ++++ wpa_gui-qt4/wpagui.h | 76 + wpa_gui-qt4/wpagui.ui | 318 ++ wpa_gui-qt4/wpagui.ui.h | 651 +++ wpa_gui-qt4/wpamsg.h | 42 + wpa_gui/eventhistory.ui | 125 + wpa_gui/eventhistory.ui.h | 41 + wpa_gui/main.cpp | 30 + wpa_gui/networkconfig.ui | 455 +++ wpa_gui/networkconfig.ui.h | 537 +++ wpa_gui/scanresults.ui | 179 + wpa_gui/scanresults.ui.h | 101 + wpa_gui/setup-mingw-cross-compiling | 11 + wpa_gui/userdatarequest.ui | 163 + wpa_gui/userdatarequest.ui.h | 70 + wpa_gui/wpa_gui.pro | 47 + wpa_gui/wpagui.ui | 471 +++ wpa_gui/wpagui.ui.h | 731 ++++ wpa_gui/wpamsg.h | 34 + wpa_i.h | 226 + wpa_passphrase.c | 73 + wpa_supplicant.c | 2619 ++++++++++++ wpa_supplicant.conf | 748 ++++ wpa_supplicant.h | 273 ++ wpa_supplicant_i.h | 701 ++++ x509v3.c | 1676 ++++++++ x509v3.h | 154 + 488 files changed, 106948 insertions(+), 106948 deletions(-) create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 FREEBSD-Xlist create mode 100644 FREEBSD-upgrade create mode 100644 Makefile create mode 100644 README create mode 100644 aes.c create mode 100644 aes.h create mode 100644 aes_wrap.c create mode 100644 aes_wrap.h create mode 100644 asn1.c create mode 100644 asn1.h create mode 100644 asn1_test.c create mode 100644 base64.c create mode 100644 base64.h create mode 100644 bignum.c create mode 100644 bignum.h create mode 100644 build_config.h create mode 100644 common.c create mode 100644 common.h create mode 100644 config.c create mode 100644 config.h create mode 100644 config_file.c create mode 100644 config_none.c create mode 100644 config_ssid.h create mode 100644 config_types.h create mode 100644 config_winreg.c delete mode 100644 contrib/wpa_supplicant/COPYING delete mode 100644 contrib/wpa_supplicant/ChangeLog delete mode 100644 contrib/wpa_supplicant/FREEBSD-Xlist delete mode 100644 contrib/wpa_supplicant/FREEBSD-upgrade delete mode 100644 contrib/wpa_supplicant/Makefile delete mode 100644 contrib/wpa_supplicant/README delete mode 100644 contrib/wpa_supplicant/aes.c delete mode 100644 contrib/wpa_supplicant/aes.h delete mode 100644 contrib/wpa_supplicant/aes_wrap.c delete mode 100644 contrib/wpa_supplicant/aes_wrap.h delete mode 100644 contrib/wpa_supplicant/asn1.c delete mode 100644 contrib/wpa_supplicant/asn1.h delete mode 100644 contrib/wpa_supplicant/asn1_test.c delete mode 100644 contrib/wpa_supplicant/base64.c delete mode 100644 contrib/wpa_supplicant/base64.h delete mode 100644 contrib/wpa_supplicant/bignum.c delete mode 100644 contrib/wpa_supplicant/bignum.h delete mode 100644 contrib/wpa_supplicant/build_config.h delete mode 100644 contrib/wpa_supplicant/common.c delete mode 100644 contrib/wpa_supplicant/common.h delete mode 100644 contrib/wpa_supplicant/config.c delete mode 100644 contrib/wpa_supplicant/config.h delete mode 100644 contrib/wpa_supplicant/config_file.c delete mode 100644 contrib/wpa_supplicant/config_none.c delete mode 100644 contrib/wpa_supplicant/config_ssid.h delete mode 100644 contrib/wpa_supplicant/config_types.h delete mode 100644 contrib/wpa_supplicant/config_winreg.c delete mode 100644 contrib/wpa_supplicant/crypto.c delete mode 100644 contrib/wpa_supplicant/crypto.h delete mode 100644 contrib/wpa_supplicant/crypto_cryptoapi.c delete mode 100644 contrib/wpa_supplicant/crypto_gnutls.c delete mode 100644 contrib/wpa_supplicant/crypto_internal.c delete mode 100644 contrib/wpa_supplicant/crypto_libtomcrypt.c delete mode 100644 contrib/wpa_supplicant/crypto_none.c delete mode 100644 contrib/wpa_supplicant/ctrl_iface.c delete mode 100644 contrib/wpa_supplicant/ctrl_iface.h delete mode 100644 contrib/wpa_supplicant/ctrl_iface_dbus.c delete mode 100644 contrib/wpa_supplicant/ctrl_iface_dbus.h delete mode 100644 contrib/wpa_supplicant/ctrl_iface_dbus_handlers.c delete mode 100644 contrib/wpa_supplicant/ctrl_iface_dbus_handlers.h delete mode 100644 contrib/wpa_supplicant/ctrl_iface_named_pipe.c delete mode 100644 contrib/wpa_supplicant/ctrl_iface_udp.c delete mode 100644 contrib/wpa_supplicant/ctrl_iface_unix.c delete mode 100644 contrib/wpa_supplicant/dbus-wpa_supplicant.conf delete mode 100644 contrib/wpa_supplicant/dbus-wpa_supplicant.service delete mode 100644 contrib/wpa_supplicant/dbus_dict_helpers.c delete mode 100644 contrib/wpa_supplicant/dbus_dict_helpers.h delete mode 100644 contrib/wpa_supplicant/defconfig delete mode 100644 contrib/wpa_supplicant/defs.h delete mode 100644 contrib/wpa_supplicant/des.c delete mode 100644 contrib/wpa_supplicant/developer.txt delete mode 100644 contrib/wpa_supplicant/doc/code_structure.doxygen delete mode 100644 contrib/wpa_supplicant/doc/ctrl_iface.doxygen delete mode 100644 contrib/wpa_supplicant/doc/docbook/Makefile delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_background.8 delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_background.sgml delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_cli.8 delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_cli.sgml delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_passphrase.8 delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_passphrase.sgml delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_supplicant.8 delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_supplicant.conf.5 delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_supplicant.conf.sgml delete mode 100644 contrib/wpa_supplicant/doc/docbook/wpa_supplicant.sgml delete mode 100644 contrib/wpa_supplicant/doc/doxygen.fast delete mode 100644 contrib/wpa_supplicant/doc/doxygen.full delete mode 100644 contrib/wpa_supplicant/doc/driver_wrapper.doxygen delete mode 100644 contrib/wpa_supplicant/doc/eap.doxygen delete mode 100755 contrib/wpa_supplicant/doc/kerneldoc2doxygen.pl delete mode 100644 contrib/wpa_supplicant/doc/mainpage.doxygen delete mode 100644 contrib/wpa_supplicant/doc/porting.doxygen delete mode 100644 contrib/wpa_supplicant/doc/testing_tools.doxygen delete mode 100644 contrib/wpa_supplicant/doc/wpa_supplicant.fig delete mode 100644 contrib/wpa_supplicant/driver.h delete mode 100644 contrib/wpa_supplicant/driver_hostap.h delete mode 100644 contrib/wpa_supplicant/driver_ndis.c delete mode 100644 contrib/wpa_supplicant/driver_ndis.h delete mode 100644 contrib/wpa_supplicant/driver_ndis_.c delete mode 100644 contrib/wpa_supplicant/driver_wired.c delete mode 100644 contrib/wpa_supplicant/drivers.c delete mode 100644 contrib/wpa_supplicant/eap.c delete mode 100644 contrib/wpa_supplicant/eap.h delete mode 100644 contrib/wpa_supplicant/eap_aka.c delete mode 100644 contrib/wpa_supplicant/eap_defs.h delete mode 100644 contrib/wpa_supplicant/eap_fast.c delete mode 100644 contrib/wpa_supplicant/eap_gpsk.c delete mode 100644 contrib/wpa_supplicant/eap_gpsk_common.c delete mode 100644 contrib/wpa_supplicant/eap_gpsk_common.h delete mode 100644 contrib/wpa_supplicant/eap_gtc.c delete mode 100644 contrib/wpa_supplicant/eap_i.h delete mode 100644 contrib/wpa_supplicant/eap_leap.c delete mode 100644 contrib/wpa_supplicant/eap_md5.c delete mode 100644 contrib/wpa_supplicant/eap_methods.c delete mode 100644 contrib/wpa_supplicant/eap_methods.h delete mode 100644 contrib/wpa_supplicant/eap_mschapv2.c delete mode 100644 contrib/wpa_supplicant/eap_otp.c delete mode 100644 contrib/wpa_supplicant/eap_pax.c delete mode 100644 contrib/wpa_supplicant/eap_pax_common.c delete mode 100644 contrib/wpa_supplicant/eap_pax_common.h delete mode 100644 contrib/wpa_supplicant/eap_peap.c delete mode 100644 contrib/wpa_supplicant/eap_psk.c delete mode 100644 contrib/wpa_supplicant/eap_psk_common.c delete mode 100644 contrib/wpa_supplicant/eap_psk_common.h delete mode 100644 contrib/wpa_supplicant/eap_sake.c delete mode 100644 contrib/wpa_supplicant/eap_sake_common.c delete mode 100644 contrib/wpa_supplicant/eap_sake_common.h delete mode 100644 contrib/wpa_supplicant/eap_sim.c delete mode 100644 contrib/wpa_supplicant/eap_sim_common.c delete mode 100644 contrib/wpa_supplicant/eap_sim_common.h delete mode 100644 contrib/wpa_supplicant/eap_testing.txt delete mode 100644 contrib/wpa_supplicant/eap_tls.c delete mode 100644 contrib/wpa_supplicant/eap_tls_common.c delete mode 100644 contrib/wpa_supplicant/eap_tls_common.h delete mode 100644 contrib/wpa_supplicant/eap_tlv.c delete mode 100644 contrib/wpa_supplicant/eap_tlv.h delete mode 100644 contrib/wpa_supplicant/eap_ttls.c delete mode 100644 contrib/wpa_supplicant/eap_ttls.h delete mode 100644 contrib/wpa_supplicant/eap_vendor_test.c delete mode 100644 contrib/wpa_supplicant/eapol_sm.c delete mode 100644 contrib/wpa_supplicant/eapol_sm.h delete mode 100644 contrib/wpa_supplicant/eapol_test.c delete mode 100644 contrib/wpa_supplicant/eloop.c delete mode 100644 contrib/wpa_supplicant/eloop.h delete mode 100644 contrib/wpa_supplicant/eloop_none.c delete mode 100644 contrib/wpa_supplicant/eloop_win.c delete mode 100644 contrib/wpa_supplicant/events.c delete mode 100644 contrib/wpa_supplicant/examples/ieee8021x.conf delete mode 100644 contrib/wpa_supplicant/examples/plaintext.conf delete mode 100644 contrib/wpa_supplicant/examples/wep.conf delete mode 100644 contrib/wpa_supplicant/examples/wpa-psk-tkip.conf delete mode 100644 contrib/wpa_supplicant/examples/wpa2-eap-ccmp.conf delete mode 100644 contrib/wpa_supplicant/hostap_common.h delete mode 100644 contrib/wpa_supplicant/hostapd.h delete mode 100644 contrib/wpa_supplicant/includes.h delete mode 100644 contrib/wpa_supplicant/l2_packet.h delete mode 100644 contrib/wpa_supplicant/libtommath.c delete mode 100644 contrib/wpa_supplicant/main.c delete mode 100644 contrib/wpa_supplicant/md4.c delete mode 100644 contrib/wpa_supplicant/md5.c delete mode 100644 contrib/wpa_supplicant/md5.h delete mode 100644 contrib/wpa_supplicant/mlme.c delete mode 100644 contrib/wpa_supplicant/mlme.h delete mode 100644 contrib/wpa_supplicant/ms_funcs.c delete mode 100644 contrib/wpa_supplicant/ms_funcs.h delete mode 100644 contrib/wpa_supplicant/nmake.mak delete mode 100644 contrib/wpa_supplicant/openssl-0.9.8d-tls-extensions.patch delete mode 100644 contrib/wpa_supplicant/openssl-0.9.8e-tls-extensions.patch delete mode 100644 contrib/wpa_supplicant/openssl-tls-extensions.patch delete mode 100644 contrib/wpa_supplicant/os.h delete mode 100644 contrib/wpa_supplicant/os_internal.c delete mode 100644 contrib/wpa_supplicant/os_none.c delete mode 100644 contrib/wpa_supplicant/os_unix.c delete mode 100644 contrib/wpa_supplicant/pcsc_funcs.c delete mode 100644 contrib/wpa_supplicant/pcsc_funcs.h delete mode 100644 contrib/wpa_supplicant/pmksa_cache.c delete mode 100644 contrib/wpa_supplicant/pmksa_cache.h delete mode 100644 contrib/wpa_supplicant/preauth.c delete mode 100644 contrib/wpa_supplicant/preauth.h delete mode 100644 contrib/wpa_supplicant/preauth_test.c delete mode 100644 contrib/wpa_supplicant/radius.c delete mode 100644 contrib/wpa_supplicant/radius.h delete mode 100644 contrib/wpa_supplicant/radius_client.c delete mode 100644 contrib/wpa_supplicant/radius_client.h delete mode 100644 contrib/wpa_supplicant/rc4.c delete mode 100644 contrib/wpa_supplicant/rc4.h delete mode 100644 contrib/wpa_supplicant/rsa.c delete mode 100644 contrib/wpa_supplicant/rsa.h delete mode 100644 contrib/wpa_supplicant/sha1.c delete mode 100644 contrib/wpa_supplicant/sha1.h delete mode 100644 contrib/wpa_supplicant/sha256.c delete mode 100644 contrib/wpa_supplicant/sha256.h delete mode 100644 contrib/wpa_supplicant/state_machine.h delete mode 100644 contrib/wpa_supplicant/tests/test_aes.c delete mode 100644 contrib/wpa_supplicant/tests/test_eap_sim_common.c delete mode 100644 contrib/wpa_supplicant/tests/test_md4.c delete mode 100644 contrib/wpa_supplicant/tests/test_md5.c delete mode 100644 contrib/wpa_supplicant/tests/test_ms_funcs.c delete mode 100644 contrib/wpa_supplicant/tests/test_sha1.c delete mode 100644 contrib/wpa_supplicant/tests/test_sha256.c delete mode 100644 contrib/wpa_supplicant/tests/test_x509v3.c delete mode 100644 contrib/wpa_supplicant/tls.h delete mode 100644 contrib/wpa_supplicant/tls_gnutls.c delete mode 100644 contrib/wpa_supplicant/tls_internal.c delete mode 100644 contrib/wpa_supplicant/tls_none.c delete mode 100644 contrib/wpa_supplicant/tls_openssl.c delete mode 100644 contrib/wpa_supplicant/tls_schannel.c delete mode 100644 contrib/wpa_supplicant/tlsv1_client.c delete mode 100644 contrib/wpa_supplicant/tlsv1_client.h delete mode 100644 contrib/wpa_supplicant/tlsv1_common.c delete mode 100644 contrib/wpa_supplicant/tlsv1_common.h delete mode 100644 contrib/wpa_supplicant/todo.txt delete mode 100644 contrib/wpa_supplicant/version.h delete mode 100644 contrib/wpa_supplicant/wpa.c delete mode 100644 contrib/wpa_supplicant/wpa.h delete mode 100644 contrib/wpa_supplicant/wpa_cli.c delete mode 100644 contrib/wpa_supplicant/wpa_common.h delete mode 100644 contrib/wpa_supplicant/wpa_ctrl.c delete mode 100644 contrib/wpa_supplicant/wpa_ctrl.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/eventhistory.cpp delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/eventhistory.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/eventhistory.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/eventhistory.ui.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/main.cpp delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/networkconfig.cpp delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/networkconfig.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/networkconfig.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/networkconfig.ui.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/scanresults.cpp delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/scanresults.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/scanresults.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/scanresults.ui.h delete mode 100755 contrib/wpa_supplicant/wpa_gui-qt4/setup-mingw-cross-compiling delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/userdatarequest.cpp delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/userdatarequest.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/userdatarequest.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/userdatarequest.ui.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/wpa_gui.pro delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/wpagui.cpp delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/wpagui.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/wpagui.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/wpagui.ui.h delete mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/wpamsg.h delete mode 100644 contrib/wpa_supplicant/wpa_gui/eventhistory.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui/eventhistory.ui.h delete mode 100644 contrib/wpa_supplicant/wpa_gui/main.cpp delete mode 100644 contrib/wpa_supplicant/wpa_gui/networkconfig.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui/networkconfig.ui.h delete mode 100644 contrib/wpa_supplicant/wpa_gui/scanresults.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui/scanresults.ui.h delete mode 100755 contrib/wpa_supplicant/wpa_gui/setup-mingw-cross-compiling delete mode 100644 contrib/wpa_supplicant/wpa_gui/userdatarequest.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui/userdatarequest.ui.h delete mode 100644 contrib/wpa_supplicant/wpa_gui/wpa_gui.pro delete mode 100644 contrib/wpa_supplicant/wpa_gui/wpagui.ui delete mode 100644 contrib/wpa_supplicant/wpa_gui/wpagui.ui.h delete mode 100644 contrib/wpa_supplicant/wpa_gui/wpamsg.h delete mode 100644 contrib/wpa_supplicant/wpa_i.h delete mode 100644 contrib/wpa_supplicant/wpa_passphrase.c delete mode 100644 contrib/wpa_supplicant/wpa_supplicant.c delete mode 100644 contrib/wpa_supplicant/wpa_supplicant.conf delete mode 100644 contrib/wpa_supplicant/wpa_supplicant.h delete mode 100644 contrib/wpa_supplicant/wpa_supplicant_i.h delete mode 100644 contrib/wpa_supplicant/x509v3.c delete mode 100644 contrib/wpa_supplicant/x509v3.h create mode 100644 crypto.c create mode 100644 crypto.h create mode 100644 crypto_cryptoapi.c create mode 100644 crypto_gnutls.c create mode 100644 crypto_internal.c create mode 100644 crypto_libtomcrypt.c create mode 100644 crypto_none.c create mode 100644 ctrl_iface.c create mode 100644 ctrl_iface.h create mode 100644 ctrl_iface_dbus.c create mode 100644 ctrl_iface_dbus.h create mode 100644 ctrl_iface_dbus_handlers.c create mode 100644 ctrl_iface_dbus_handlers.h create mode 100644 ctrl_iface_named_pipe.c create mode 100644 ctrl_iface_udp.c create mode 100644 ctrl_iface_unix.c create mode 100644 dbus-wpa_supplicant.conf create mode 100644 dbus-wpa_supplicant.service create mode 100644 dbus_dict_helpers.c create mode 100644 dbus_dict_helpers.h create mode 100644 defconfig create mode 100644 defs.h create mode 100644 des.c create mode 100644 developer.txt create mode 100644 doc/code_structure.doxygen create mode 100644 doc/ctrl_iface.doxygen create mode 100644 doc/docbook/Makefile create mode 100644 doc/docbook/wpa_background.8 create mode 100644 doc/docbook/wpa_background.sgml create mode 100644 doc/docbook/wpa_cli.8 create mode 100644 doc/docbook/wpa_cli.sgml create mode 100644 doc/docbook/wpa_passphrase.8 create mode 100644 doc/docbook/wpa_passphrase.sgml create mode 100644 doc/docbook/wpa_supplicant.8 create mode 100644 doc/docbook/wpa_supplicant.conf.5 create mode 100644 doc/docbook/wpa_supplicant.conf.sgml create mode 100644 doc/docbook/wpa_supplicant.sgml create mode 100644 doc/doxygen.fast create mode 100644 doc/doxygen.full create mode 100644 doc/driver_wrapper.doxygen create mode 100644 doc/eap.doxygen create mode 100755 doc/kerneldoc2doxygen.pl create mode 100644 doc/mainpage.doxygen create mode 100644 doc/porting.doxygen create mode 100644 doc/testing_tools.doxygen create mode 100644 doc/wpa_supplicant.fig create mode 100644 driver.h create mode 100644 driver_hostap.h create mode 100644 driver_ndis.c create mode 100644 driver_ndis.h create mode 100644 driver_ndis_.c create mode 100644 driver_wired.c create mode 100644 drivers.c create mode 100644 eap.c create mode 100644 eap.h create mode 100644 eap_aka.c create mode 100644 eap_defs.h create mode 100644 eap_fast.c create mode 100644 eap_gpsk.c create mode 100644 eap_gpsk_common.c create mode 100644 eap_gpsk_common.h create mode 100644 eap_gtc.c create mode 100644 eap_i.h create mode 100644 eap_leap.c create mode 100644 eap_md5.c create mode 100644 eap_methods.c create mode 100644 eap_methods.h create mode 100644 eap_mschapv2.c create mode 100644 eap_otp.c create mode 100644 eap_pax.c create mode 100644 eap_pax_common.c create mode 100644 eap_pax_common.h create mode 100644 eap_peap.c create mode 100644 eap_psk.c create mode 100644 eap_psk_common.c create mode 100644 eap_psk_common.h create mode 100644 eap_sake.c create mode 100644 eap_sake_common.c create mode 100644 eap_sake_common.h create mode 100644 eap_sim.c create mode 100644 eap_sim_common.c create mode 100644 eap_sim_common.h create mode 100644 eap_testing.txt create mode 100644 eap_tls.c create mode 100644 eap_tls_common.c create mode 100644 eap_tls_common.h create mode 100644 eap_tlv.c create mode 100644 eap_tlv.h create mode 100644 eap_ttls.c create mode 100644 eap_ttls.h create mode 100644 eap_vendor_test.c create mode 100644 eapol_sm.c create mode 100644 eapol_sm.h create mode 100644 eapol_test.c create mode 100644 eloop.c create mode 100644 eloop.h create mode 100644 eloop_none.c create mode 100644 eloop_win.c create mode 100644 events.c create mode 100644 examples/ieee8021x.conf create mode 100644 examples/plaintext.conf create mode 100644 examples/wep.conf create mode 100644 examples/wpa-psk-tkip.conf create mode 100644 examples/wpa2-eap-ccmp.conf create mode 100644 hostap_common.h create mode 100644 hostapd.h create mode 100644 includes.h create mode 100644 l2_packet.h create mode 100644 libtommath.c create mode 100644 main.c create mode 100644 md4.c create mode 100644 md5.c create mode 100644 md5.h create mode 100644 mlme.c create mode 100644 mlme.h create mode 100644 ms_funcs.c create mode 100644 ms_funcs.h create mode 100644 nmake.mak create mode 100644 openssl-0.9.8d-tls-extensions.patch create mode 100644 openssl-0.9.8e-tls-extensions.patch create mode 100644 openssl-tls-extensions.patch create mode 100644 os.h create mode 100644 os_internal.c create mode 100644 os_none.c create mode 100644 os_unix.c create mode 100644 pcsc_funcs.c create mode 100644 pcsc_funcs.h create mode 100644 pmksa_cache.c create mode 100644 pmksa_cache.h create mode 100644 preauth.c create mode 100644 preauth.h create mode 100644 preauth_test.c create mode 100644 radius.c create mode 100644 radius.h create mode 100644 radius_client.c create mode 100644 radius_client.h create mode 100644 rc4.c create mode 100644 rc4.h create mode 100644 rsa.c create mode 100644 rsa.h create mode 100644 sha1.c create mode 100644 sha1.h create mode 100644 sha256.c create mode 100644 sha256.h create mode 100644 state_machine.h create mode 100644 tests/test_aes.c create mode 100644 tests/test_eap_sim_common.c create mode 100644 tests/test_md4.c create mode 100644 tests/test_md5.c create mode 100644 tests/test_ms_funcs.c create mode 100644 tests/test_sha1.c create mode 100644 tests/test_sha256.c create mode 100644 tests/test_x509v3.c create mode 100644 tls.h create mode 100644 tls_gnutls.c create mode 100644 tls_internal.c create mode 100644 tls_none.c create mode 100644 tls_openssl.c create mode 100644 tls_schannel.c create mode 100644 tlsv1_client.c create mode 100644 tlsv1_client.h create mode 100644 tlsv1_common.c create mode 100644 tlsv1_common.h create mode 100644 todo.txt create mode 100644 version.h create mode 100644 wpa.c create mode 100644 wpa.h create mode 100644 wpa_cli.c create mode 100644 wpa_common.h create mode 100644 wpa_ctrl.c create mode 100644 wpa_ctrl.h create mode 100644 wpa_gui-qt4/eventhistory.cpp create mode 100644 wpa_gui-qt4/eventhistory.h create mode 100644 wpa_gui-qt4/eventhistory.ui create mode 100644 wpa_gui-qt4/eventhistory.ui.h create mode 100644 wpa_gui-qt4/main.cpp create mode 100644 wpa_gui-qt4/networkconfig.cpp create mode 100644 wpa_gui-qt4/networkconfig.h create mode 100644 wpa_gui-qt4/networkconfig.ui create mode 100644 wpa_gui-qt4/networkconfig.ui.h create mode 100644 wpa_gui-qt4/scanresults.cpp create mode 100644 wpa_gui-qt4/scanresults.h create mode 100644 wpa_gui-qt4/scanresults.ui create mode 100644 wpa_gui-qt4/scanresults.ui.h create mode 100755 wpa_gui-qt4/setup-mingw-cross-compiling create mode 100644 wpa_gui-qt4/userdatarequest.cpp create mode 100644 wpa_gui-qt4/userdatarequest.h create mode 100644 wpa_gui-qt4/userdatarequest.ui create mode 100644 wpa_gui-qt4/userdatarequest.ui.h create mode 100644 wpa_gui-qt4/wpa_gui.pro create mode 100644 wpa_gui-qt4/wpagui.cpp create mode 100644 wpa_gui-qt4/wpagui.h create mode 100644 wpa_gui-qt4/wpagui.ui create mode 100644 wpa_gui-qt4/wpagui.ui.h create mode 100644 wpa_gui-qt4/wpamsg.h create mode 100644 wpa_gui/eventhistory.ui create mode 100644 wpa_gui/eventhistory.ui.h create mode 100644 wpa_gui/main.cpp create mode 100644 wpa_gui/networkconfig.ui create mode 100644 wpa_gui/networkconfig.ui.h create mode 100644 wpa_gui/scanresults.ui create mode 100644 wpa_gui/scanresults.ui.h create mode 100755 wpa_gui/setup-mingw-cross-compiling create mode 100644 wpa_gui/userdatarequest.ui create mode 100644 wpa_gui/userdatarequest.ui.h create mode 100644 wpa_gui/wpa_gui.pro create mode 100644 wpa_gui/wpagui.ui create mode 100644 wpa_gui/wpagui.ui.h create mode 100644 wpa_gui/wpamsg.h create mode 100644 wpa_i.h create mode 100644 wpa_passphrase.c create mode 100644 wpa_supplicant.c create mode 100644 wpa_supplicant.conf create mode 100644 wpa_supplicant.h create mode 100644 wpa_supplicant_i.h create mode 100644 x509v3.c create mode 100644 x509v3.h diff --git a/COPYING b/COPYING new file mode 100644 index 000000000000..14f5453722a8 --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 000000000000..1ba2e1c8b2e2 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,1023 @@ +ChangeLog for wpa_supplicant + +2008-02-19 - v0.5.10 + * added support for Makefile builds to include debug-log-to-a-file + functionality (CONFIG_DEBUG_FILE=y and -f on command line) + * added network configuration parameter 'frequency' for setting + initial channel for IBSS (adhoc) networks + * fixed EAP-SIM and EAP-AKA message parser to validate attribute + lengths properly to avoid potential crash caused by invalid messages + * added driver_wext workaround for race condition between scanning and + association with drivers that take very long time to scan all + channels (e.g., madwifi with dual-band cards); wpa_supplicant is now + using a longer hardcoded timeout for the scan if the driver supports + notifications for scan completion (SIOCGIWSCAN event); this helps, + e.g., in cases where wpa_supplicant and madwifi driver ended up in + loop where the driver did not even try to associate + * fixed EAP-SIM not to include AT_NONCE_MT and AT_SELECTED_VERSION + attributes in EAP-SIM Start/Response when using fast reauthentication + * fixed problems in getting NDIS events from WMI on Windows 2000 + +2007-12-02 - v0.5.9 + * fixed an integer overflow issue in the ASN.1 parser used by the + (experimental) internal TLS implementation to avoid a potential + buffer read overflow + * fixed a race condition with -W option (wait for a control interface + monitor before starting) that could have caused the first messages to + be lost + * updated EAP Generalized Pre-Shared Key (EAP-GPSK) to use the latest + draft (draft-ietf-emu-eap-gpsk-07.txt) + * added ctrl_iface RECONNECT (wpa_cli reconnect) command + (like reassociate, but only takes effect if already associated) + * fixed a possible race condition between wpa_cli reassociate and + wpa_cli disconnect + * return a non-zero exit code from non-interactive wpa_cli if the + command is not recognized or fails + * fixed 0.5.8 regressions in BSS selection that prevented wildcard SSID + from being used with non-WPA networks and disabled workaround for + ignoring bogus WPA/RSN IE in non-WPA configuration + * fixed OpenSSL TLS wrapper to clear trusted CA list to allow + network blocks to use different trusted CA configurations + * fixed a potential EAP state machine loop when mloving from PSK to EAP + configuration without restarting wpa_supplicant + +2007-05-28 - v0.5.8 + * updated driver_wext.c to build with the current wireless-dev.git tree + and net/d80211 changes + * updated EAP Generalized Pre-Shared Key (EAP-GPSK) to use the latest + draft (draft-ietf-emu-eap-gpsk-03.txt) + * fixed 'make install' + * fixed EAP-TTLS implementation not to crash on use of freed memory + if TLS library initialization fails + * fixed EAP-AKA Notification processing to allow Notification to be + processed after AKA Challenge response has been sent + +2006-12-31 - v0.5.7 + * updated EAP-SAKE to RFC 4763 and the IANA-allocated EAP type 48 + * updated EAP-PSK to use the IANA-allocated EAP type 47 + * fixed EAP-PAX key derivation + * fixed EAP-PSK bit ordering of the Flags field + * fixed EAP-PEAP/TTLS/FAST to use the correct EAP identifier in + tunnelled identity request (previously, the identifier from the outer + method was used, not the tunnelled identifier which could be + different) + * fixed EAP-TTLS AVP parser processing for too short AVP lengths + * added support for EAP-FAST authentication with inner methods that + generate MSK (e.g., EAP-MSCHAPv2 that was previously only supported + for PAC provisioning) + * fixed dbus ctrl_iface to validate message interface before + dispatching to avoid a possible segfault [Bug 190] + * fixed PeerKey key derivation to use the correct PRF label + * updated Windows binary build to link against OpenSSL 0.9.8d and + added support for EAP-FAST + +2006-11-24 - v0.5.6 + * added experimental, integrated TLSv1 client implementation with the + needed X.509/ASN.1/RSA/bignum processing (this can be enabled by + setting CONFIG_TLS=internal and CONFIG_INTERNAL_LIBTOMMATH=y in + .config); this can be useful, e.g., if the target system does not + have a suitable TLS library and a minimal code size is required + (total size of this internal TLS/crypto code is bit under 50 kB on + x86 and the crypto code is shared by rest of the supplicant so some + of it was already required; TLSv1/X.509/ASN.1/RSA added about 25 kB) + * removed STAKey handshake since PeerKey handshake has replaced it in + IEEE 802.11ma and there are no known deployments of STAKey + * updated EAP Generalized Pre-Shared Key (EAP-GPSK) to use the latest + draft (draft-ietf-emu-eap-gpsk-01.txt) + * added preliminary implementation of IEEE 802.11w/D1.0 (management + frame protection) + (Note: this requires driver support to work properly.) + (Note2: IEEE 802.11w is an unapproved draft and subject to change.) + * fixed Windows named pipes ctrl_iface to not stop listening for + commands if client program opens a named pipe and closes it + immediately without sending a command + * fixed USIM PIN status determination for the case that PIN is not + needed (this allows EAP-AKA to be used with USIM cards that do not + use PIN) + * added support for reading 3G USIM AID from EF_DIR to allow EAP-AKA to + be used with cards that do not support file selection based on + partial AID + * added support for matching the subjectAltName of the authentication + server certificate against multiple name components (e.g., + altsubject_match="DNS:server.example.com;DNS:server2.example.com") + * fixed EAP-SIM/AKA key derivation for re-authentication case (only + affects IEEE 802.1X with dynamic WEP keys) + * changed ctrl_iface network configuration 'get' operations to not + return password/key material; if these fields are requested, "*" + will be returned if the password/key is set, but the value of the + parameter is not exposed + +2006-08-27 - v0.5.5 + * added support for building Windows version with UNICODE defined + (wide-char functions) + * driver_ndis: fixed static WEP configuration to avoid race condition + issues with some NDIS drivers between association and setting WEP + keys + * driver_ndis: added validation for IELength value in scan results to + avoid crashes when using buggy NDIS drivers [Bug 165] + * fixed Release|Win32 target in the Visual Studio project files + (previously, only Debug|Win32 target was set properly) + * changed control interface API call wpa_ctrl_pending() to allow it to + return -1 on error (e.g., connection lost); control interface clients + will need to make sure that they verify that the value is indeed >0 + when determining whether there are pending messages + * added an alternative control interface backend for Windows targets: + Named Pipe (CONFIG_CTRL_IFACE=named_pipe); this is now the default + control interface mechanism for Windows builds (previously, UDP to + localhost was used) + * changed ctrl_interface configuration for UNIX domain sockets: + - deprecated ctrl_interface_group variable (it may be removed in + future versions) + - allow both directory and group be configured with ctrl_interface + in following format: DIR=/var/run/wpa_supplicant GROUP=wheel + - ctrl_interface=/var/run/wpa_supplicant is still supported for the + case when group is not changed + * added support for controlling more than one interface per process in + Windows version + * added a workaround for a case where the AP is using unknown address + (e.g., MAC address of the wired interface) as the source address for + EAPOL-Key frames; previously, that source address was used as the + destination for EAPOL-Key frames and in key derivation; now, BSSID is + used even if the source address does not match with it + (this resolves an interoperability issue with Thomson SpeedTouch 580) + * added a workaround for UDP-based control interface (which was used in + Windows builds before this release) to prevent packets with forged + addresses from being accepted as local control requests + * removed ndis_events.cpp and possibility of using external + ndis_events.exe; C version (ndis_events.c) is fully functional and + there is no desire to maintain two separate versions of this + implementation + * ndis_events: Changed NDIS event notification design to use WMI to + learn the adapter description through Win32_PnPEntity class; this + should fix some cases where the adapter name was not recognized + correctly (e.g., with some USB WLAN adapters, e.g., Ralink RT2500 + USB) [Bug 113] + * fixed selection of the first network in ap_scan=2 mode; previously, + wpa_supplicant could get stuck in SCANNING state when only the first + network for enabled (e.g., after 'wpa_cli select_network 0') + * winsvc: added support for configuring ctrl_interface parameters in + registry (ctrl_interface string value in + HKLM\SOFTWARE\wpa_supplicant\interfaces\0000 key); this new value is + required to enable control interface (previously, this was hardcoded + to be enabled) + * allow wpa_gui subdirectory to be built with both Qt3 and Qt4 + * converted wpa_gui-qt4 subdirectory to use Qt4 specific project format + +2006-06-20 - v0.5.4 + * fixed build with CONFIG_STAKEY=y [Bug 143] + * added support for doing MLME (IEEE 802.11 management frame + processing) in wpa_supplicant when using Devicescape IEEE 802.11 + stack (wireless-dev.git tree) + * added a new network block configuration option, fragment_size, to + configure the maximum EAP fragment size + * driver_ndis: Disable WZC automatically for the selected interface to + avoid conflicts with two programs trying to control the radio; WZC + will be re-enabled (if it was enabled originally) when wpa_supplicant + is terminated + * added an experimental TLSv1 client implementation + (CONFIG_TLS=internal) that can be used instead of an external TLS + library, e.g., to reduce total size requirement on systems that do + not include any TLS library by default (this is not yet complete; + basic functionality is there, but certificate validation is not yet + included) + * added PeerKey handshake implementation for IEEE 802.11e + direct link setup (DLS) to replace STAKey handshake + * fixed WPA PSK update through ctrl_iface for the case where the old + PSK was derived from an ASCII passphrase and the new PSK is set as + a raw PSK (hex string) + * added new configuration option for identifying which network block + was used (id_str in wpa_supplicant.conf; included on + WPA_EVENT_CONNECT monitor event and as WPA_ID_STR environmental + variable in wpa_cli action scripts; in addition WPA_ID variable is + set to the current unique identifier that wpa_supplicant assigned + automatically for the network and that can be used with + GET_NETWORK/SET_NETWORK ctrl_iface commands) + * wpa_cli action script is now called only when the connect/disconnect + status changes or when associating with a different network + * fixed configuration parser not to remove CCMP from group cipher list + if WPA-None (adhoc) is used (pairwise=NONE in that case) + * fixed integrated NDIS events processing not to hang the process due + to a missed change in eloop_win.c API in v0.5.3 [Bug 155] + * added support for EAP Generalized Pre-Shared Key (EAP-GPSK, + draft-clancy-emu-eap-shared-secret-00.txt) + * added Microsoft Visual Studio 2005 solution and project files for + build wpa_supplicant for Windows (see vs2005 subdirectory) + * eloop_win: fixed unregistration of Windows events + * l2_packet_winpcap: fixed a deadlock in deinitializing l2_packet + at the end of RSN pre-authentication and added unregistration of + a Windows event to avoid getting eloop_win stuck with an invalid + handle + * driver_ndis: added support for selecting AP based on BSSID + * added new environmental variable for wpa_cli action scripts: + WPA_CTRL_DIR is the current control interface directory + * driver_ndis: added support for using NDISUIO instead of WinPcap for + OID set/query operations (CONFIG_USE_NDISUIO=y in .config); with new + l2_packet_ndis (CONFIG_L2_PACKET=ndis), this can be used to build + wpa_supplicant without requiring WinPcap; note that using NDISUIO + requires that WZC is disabled (net stop wzcsvc) since NDISUIO allows + only one application to open the device + * changed NDIS driver naming to only include device GUID, e.g., + {7EE3EFE5-C165-472F-986D-F6FBEDFE8C8D}, instead of including WinPcap + specific \Device\NPF_ prefix before the GUID; the prefix is still + allowed for backwards compatibility, but it is not required anymore + when specifying the interface + * driver_ndis: re-initialize driver interface is the adapter is removed + and re-inserted [Bug 159] + * driver_madwifi: fixed TKIP and CCMP sequence number configuration on + big endian hosts [Bug 146] + +2006-04-27 - v0.5.3 + * fixed EAP-GTC response to include correct user identity when run as + phase 2 method of EAP-FAST (i.e., EAP-FAST did not work in v0.5.2) + * driver_ndis: Fixed encryption mode configuration for unencrypted + networks (some NDIS drivers ignored this, but others, e.g., Broadcom, + refused to associate with open networks) [Bug 106] + * driver_ndis: use BSSID OID polling to detect when IBSS network is + formed even when ndis_events code is included since some NDIS drivers + do not generate media connect events in IBSS mode + * config_winreg: allow global ctrl_interface parameter to be configured + in Windows registry + * config_winreg: added support for saving configuration data into + Windows registry + * added support for controlling network device operational state + (dormant/up) for Linux 2.6.17 to improve DHCP processing (see + http://www.flamewarmaster.de/software/dhcpclient/ for a DHCP client + that can use this information) + * driver_wext: added support for WE-21 change to SSID configuration + * driver_wext: fixed privacy configuration for static WEP keys mode + [Bug 140] + * added an optional driver_ops callback for MLME-SETPROTECTION.request + primitive + * added support for EAP-SAKE (no EAP method number allocated yet, so + this is using the same experimental type 255 as EAP-PSK) + * added support for dynamically loading EAP methods (.so files) instead + of requiring them to be statically linked in; this is disabled by + default (see CONFIG_DYNAMIC_EAP_METHODS in defconfig for information + on how to use this) + +2006-03-19 - v0.5.2 + * do not try to use USIM APDUs when initializing PC/SC for SIM card + access for a network that has not enabled EAP-AKA + * fixed EAP phase 2 Nak for EAP-{PEAP,TTLS,FAST} (this was broken in + v0.5.1 due to the new support for expanded EAP types) + * added support for generating EAP Expanded Nak + * try to fetch scan results once before requesting new scan when + starting up in ap_scan=1 mode (this can speed up initial association + a lot with, e.g., madwifi-ng driver) + * added support for receiving EAPOL frames from a Linux bridge + interface (-bbr0 on command line) + * fixed EAPOL re-authentication for sessions that used PMKSA caching + * changed EAP method registration to use a dynamic list of methods + instead of a static list generated at build time + * fixed PMKSA cache deinitialization not to use freed memory when + removing PMKSA entries + * fixed a memory leak in EAP-TTLS re-authentication + * reject WPA/WPA2 message 3/4 if it does not include any valid + WPA/RSN IE + * driver_wext: added fallback to use SIOCSIWENCODE for setting auth_alg + if the driver does not support SIOCSIWAUTH + +2006-01-29 - v0.5.1 + * driver_test: added better support for multiple APs and STAs by using + a directory with sockets that include MAC address for each device in + the name (driver_param=test_dir=/tmp/test) + * added support for EAP expanded type (vendor specific EAP methods) + * added AP_SCAN command into ctrl_iface so that ap_scan configuration + option can be changed if needed + * wpa_cli/wpa_gui: skip non-socket files in control directory when + using UNIX domain sockets; this avoids selecting an incorrect + interface (e.g., a PID file could be in this directory, even though + use of this directory for something else than socket files is not + recommended) + * fixed TLS library deinitialization after RSN pre-authentication not + to disable TLS library for normal authentication + * driver_wext: Remove null-termination from SSID length if the driver + used it; some Linux drivers do this and they were causing problems in + wpa_supplicant not finding matching configuration block. This change + would break a case where the SSID actually ends in '\0', but that is + not likely to happen in real use. + * fixed PMKSA cache processing not to trigger deauthentication if the + current PMKSA cache entry is replaced with a valid new entry + * fixed PC/SC initialization for ap_scan != 1 modes (this fixes + EAP-SIM and EAP-AKA with real SIM/USIM card when using ap_scan=0 or + ap_scan=2) + +2005-12-18 - v0.5.0 (beginning of 0.5.x development releases) + * added experimental STAKey handshake implementation for IEEE 802.11e + direct link setup (DLS); note: this is disabled by default in both + build and runtime configuration (can be enabled with CONFIG_STAKEY=y + and stakey=1) + * fixed EAP-SIM and EAP-AKA pseudonym and fast re-authentication to + decrypt AT_ENCR_DATA attributes correctly + * fixed EAP-AKA to allow resynchronization within the same session + * made code closer to ANSI C89 standard to make it easier to port to + other C libraries and compilers + * started moving operating system or C library specific functions into + wrapper functions defined in os.h and implemented in os_*.c to make + code more portable + * wpa_supplicant can now be built with Microsoft Visual C++ + (e.g., with the freely available Toolkit 2003 version or Visual + C++ 2005 Express Edition and Platform SDK); see nmake.mak for an + example makefile for nmake + * added support for using Windows registry for command line parameters + (CONFIG_MAIN=main_winsvc) and configuration data + (CONFIG_BACKEND=winreg); see win_example.reg for an example registry + contents; this version can be run both as a Windows service and as a + normal application; 'wpasvc.exe app' to start as applicant, + 'wpasvc.exe reg ' to register a service, + 'net start wpasvc' to start the service, 'wpasvc.exe unreg' to + unregister a service + * made it possible to link ndis_events.exe functionality into + wpa_supplicant.exe by defining CONFIG_NDIS_EVENTS_INTEGRATED + * added better support for multiple control interface backends + (CONFIG_CTRL_IFACE option); currently, 'unix' and 'udp' are supported + * fixed PC/SC code to use correct length for GSM AUTH command buffer + and to not use pioRecvPci with SCardTransmit() calls; these were not + causing visible problems with pcsc-lite, but Windows Winscard.dll + refused the previously used parameters; this fixes EAP-SIM and + EAP-AKA authentication using SIM/USIM card under Windows + * added new event loop implementation for Windows using + WaitForMultipleObject() instead of select() in order to allow waiting + for non-socket objects; this can be selected with + CONFIG_ELOOP=eloop_win in .config + * added support for selecting l2_packet implementation in .config + (CONFIG_L2_PACKET; following options are available now: linux, pcap, + winpcap, freebsd, none) + * added new l2_packet implementation for WinPcap + (CONFIG_L2_PACKET=winpcap) that uses a separate receive thread to + reduce latency in EAPOL receive processing from about 100 ms to about + 3 ms + * added support for EAP-FAST key derivation using other ciphers than + RC4-128-SHA for authentication and AES128-SHA for provisioning + * added support for configuring CA certificate as DER file and as a + configuration blob + * fixed private key configuration as configuration blob and added + support for using PKCS#12 as a blob + * tls_gnutls: added support for using PKCS#12 files; added support for + session resumption + * added support for loading trusted CA certificates from Windows + certificate store: ca_cert="cert_store://", where is + likely CA (Intermediate CA certificates) or ROOT (root certificates) + * added C version of ndis_events.cpp and made it possible to build this + with MinGW so that CONFIG_NDIS_EVENTS_INTEGRATED can be used more + easily on cross-compilation builds + * added wpasvc.exe into Windows binary release; this is an alternative + version of wpa_supplicant.exe with configuration backend using + Windows registry and with the entry point designed to run as a + Windows service + * integrated ndis_events.exe functionality into wpa_supplicant.exe and + wpasvc.exe and removed this additional tool from the Windows binary + release since it is not needed anymore + * load winscard.dll functions dynamically when building with MinGW + since MinGW does not yet include winscard library + +2005-11-20 - v0.4.7 (beginning of 0.4.x stable releases) + * l2_packet_pcap: fixed wired IEEE 802.1X authentication with libpcap + and WinPcap to receive frames sent to PAE group address + * disable EAP state machine when IEEE 802.1X authentication is not used + in order to get rid of bogus "EAP failed" messages + * fixed OpenSSL error reporting to go through all pending errors to + avoid confusing reports of old errors being reported at later point + during handshake + * fixed configuration file updating to not write empty variables + (e.g., proto or key_mgmt) that the file parser would not accept + * fixed ADD_NETWORK ctrl_iface command to use the same default values + for variables as empty network definitions read from config file + would get + * fixed EAP state machine to not discard EAP-Failure messages in many + cases (e.g., during TLS handshake) + * fixed a infinite loop in private key reading if the configured file + cannot be parsed successfully + * driver_madwifi: added support for madwifi-ng + * wpa_gui: do not display password/PSK field contents + * wpa_gui: added CA certificate configuration + * driver_ndis: fixed scan request in ap_scan=2 mode not to change SSID + * driver_ndis: include Beacon IEs in AssocInfo in order to notice if + the new AP is using different WPA/RSN IE + * use longer timeout for IEEE 802.11 association to avoid problems with + drivers that may take more than five second to associate + +2005-10-27 - v0.4.6 + * allow fallback to WPA, if mixed WPA+WPA2 networks have mismatch in + RSN IE, but WPA IE would match with wpa_supplicant configuration + * added support for named configuration blobs in order to avoid having + to use file system for external files (e.g., certificates); + variables can be set to "blob://" instead of file path to + use a named blob; supported fields: pac_file, client_cert, + private_key + * fixed RSN pre-authentication (it was broken in the clean up of WPA + state machine interface in v0.4.5) + * driver_madwifi: set IEEE80211_KEY_GROUP flag for group keys to make + sure the driver configures broadcast decryption correctly + * added ca_path (and ca_path2) configuration variables that can be used + to configure OpenSSL CA path, e.g., /etc/ssl/certs, for using the + system-wide trusted CA list + * added support for starting wpa_supplicant without a configuration + file (-C argument must be used to set ctrl_interface parameter for + this case; in addition, -p argument can be used to provide + driver_param; these new arguments can also be used with a + configuration to override the values from the configuration) + * added global control interface that can be optionally used for adding + and removing network interfaces dynamically (-g command line argument + for both wpa_supplicant and wpa_cli) without having to restart + wpa_supplicant process + * wpa_gui: + - try to save configuration whenever something is modified + - added WEP key configuration + - added possibility to edit the current network configuration + * driver_ndis: fixed driver polling not to increase frequency on each + received EAPOL frame due to incorrectly cancelled timeout + * added simple configuration file examples (in examples subdirectory) + * fixed driver_wext.c to filter wireless events based on ifindex to + avoid interfaces receiving events from other interfaces + * delay sending initial EAPOL-Start couple of seconds to speed up + authentication for the most common case of Authenticator starting + EAP authentication immediately after association + +2005-09-25 - v0.4.5 + * added a workaround for clearing keys with ndiswrapper to allow + roaming from WPA enabled AP to plaintext one + * added docbook documentation (doc/docbook) that can be used to + generate, e.g., man pages + * l2_packet_linux: use socket type SOCK_DGRAM instead of SOCK_RAW for + PF_PACKET in order to prepare for network devices that do not use + Ethernet headers (e.g., network stack with native IEEE 802.11 frames) + * use receipt of EAPOL-Key frame as a lower layer success indication + for EAP state machine to allow recovery from dropped EAP-Success + frame + * cleaned up internal EAPOL frame processing by not including link + layer (Ethernet) header during WPA and EAPOL/EAP processing; this + header is added only when transmitted the frame; this makes it easier + to use wpa_supplicant on link layers that use different header than + Ethernet + * updated EAP-PSK to use draft 9 by default since this can now be + tested with hostapd; removed support for draft 3, including + server_nai configuration option from network blocks + * driver_wired: add PAE address to the multicast address list in order + to be able to receive EAPOL frames with drivers that do not include + these multicast addresses by default + * driver_wext: add support for WE-19 + * added support for multiple configuration backends (CONFIG_BACKEND + option); currently, only 'file' is supported (i.e., the format used + in wpa_supplicant.conf) + * added support for updating configuration ('wpa_cli save_config'); + this is disabled by default and can be enabled with global + update_config=1 variable in wpa_supplicant.conf; this allows wpa_cli + and wpa_gui to store the configuration changes in a permanent store + * added GET_NETWORK ctrl_iface command + (e.g., 'wpa_cli get_network 0 ssid') + +2005-08-21 - v0.4.4 + * replaced OpenSSL patch for EAP-FAST support + (openssl-tls-extensions.patch) with a more generic and correct + patch (the new patch is not compatible with the previous one, so the + OpenSSL library will need to be patched with the new patch in order + to be able to build wpa_supplicant with EAP-FAST support) + * added support for using Windows certificate store (through CryptoAPI) + for client certificate and private key operations (EAP-TLS) + (see wpa_supplicant.conf for more information on how to configure + this with private_key) + * ported wpa_gui to Windows + * added Qt4 version of wpa_gui (wpa_gui-qt4 directory); this can be + built with the open source version of the Qt4 for Windows + * allow non-WPA modes (e.g., IEEE 802.1X with dynamic WEP) to be used + with drivers that do not support WPA + * ndis_events: fixed Windows 2000 support + * added support for enabling/disabling networks from the list of all + configured networks ('wpa_cli enable_network ' and + 'wpa_cli disable_network ') + * added support for adding and removing network from the current + configuration ('wpa_cli add_network' and 'wpa_cli remove_network + '); added networks are disabled by default and they can + be enabled with enable_network command once the configuration is done + for the new network; note: configuration file is not yet updated, so + these new networks are lost when wpa_supplicant is restarted + * added support for setting network configuration parameters through + the control interface, for example: + wpa_cli set_network 0 ssid "\"my network\"" + * fixed parsing of strings that include both " and # within double + quoted area (e.g., "start"#end") + * added EAP workaround for PEAP session resumption: allow outer, + i.e., not tunneled, EAP-Success to terminate session since; this can + be disabled with eap_workaround=0 + (this was allowed for PEAPv1 before, but now it is also allowed for + PEAPv0 since at least one RADIUS authentication server seems to be + doing this for PEAPv0, too) + * wpa_gui: added preliminary support for adding new networks to the + wpa_supplicant configuration (double click on the scan results to + open network configuration) + +2005-06-26 - v0.4.3 + * removed interface for external EAPOL/EAP supplicant (e.g., + Xsupplicant), (CONFIG_XSUPPLICANT_IFACE) since it is not required + anymore and is unlikely to be used by anyone + * driver_ndis: fixed WinPcap 3.0 support + * fixed build with CONFIG_DNET_PCAP=y on Linux + * l2_packet: moved different implementations into separate files + (l2_packet_*.c) + +2005-06-12 - v0.4.2 + * driver_ipw: updated driver structures to match with ipw2200-1.0.4 + (note: ipw2100-1.1.0 is likely to require an update to work with + this) + * added support for using ap_scan=2 mode with multiple network blocks; + wpa_supplicant will go through the networks one by one until the + driver reports a successful association; this uses the same order for + networks as scan_ssid=1 scans, i.e., the priority field is ignored + and the network block order in the file is used instead + * fixed a potential issue in RSN pre-authentication ending up using + freed memory if pre-authentication times out + * added support for matching alternative subject name extensions of the + authentication server certificate; new configuration variables + altsubject_match and altsubject_match2 + * driver_ndis: added support for IEEE 802.1X authentication with wired + NDIS drivers + * added support for querying private key password (EAP-TLS) through the + control interface (wpa_cli/wpa_gui) if one is not included in the + configuration file + * driver_broadcom: fixed couple of memory leaks in scan result + processing + * EAP-PAX is now registered as EAP type 46 + * fixed EAP-PAX MAC calculation + * fixed EAP-PAX CK and ICK key derivation + * added support for using password with EAP-PAX (as an alternative to + entering key with eappsk); SHA-1 hash of the password will be used as + the key in this case + * added support for arbitrary driver interface parameters through the + configuration file with a new driver_param field; this adds a new + driver_ops function set_param() + * added possibility to override l2_packet module with driver interface + API (new send_eapol handler); this can be used to implement driver + specific TX/RX functions for EAPOL frames + * fixed ctrl_interface_group processing for the case where gid is + entered as a number, not group name + * driver_test: added support for testing hostapd with wpa_supplicant + by using test driver interface without any kernel drivers or network + cards + +2005-05-22 - v0.4.1 + * driver_madwifi: fixed WPA/WPA2 mode configuration to allow EAPOL + packets to be encrypted; this was apparently broken by the changed + ioctl order in v0.4.0 + * driver_madwifi: added preliminary support for compiling against 'BSD' + branch of madwifi CVS tree + * added support for EAP-MSCHAPv2 password retries within the same EAP + authentication session + * added support for password changes with EAP-MSCHAPv2 (used when the + password has expired) + * added support for reading additional certificates from PKCS#12 files + and adding them to the certificate chain + * fixed association with IEEE 802.1X (no WPA) when dynamic WEP keys + were used + * fixed a possible double free in EAP-TTLS fast-reauthentication when + identity or password is entered through control interface + * display EAP Notification messages to user through control interface + with "CTRL-EVENT-EAP-NOTIFICATION" prefix + * added GUI version of wpa_cli, wpa_gui; this is not build + automatically with 'make'; use 'make wpa_gui' to build (this requires + Qt development tools) + * added 'disconnect' command to control interface for setting + wpa_supplicant in state where it will not associate before + 'reassociate' command has been used + * added support for selecting a network from the list of all configured + networks ('wpa_cli select_network '; this disabled all + other networks; to re-enable, 'wpa_cli select_network any') + * added support for getting scan results through control interface + * added EAP workaround for PEAPv1 session resumption: allow outer, + i.e., not tunneled, EAP-Success to terminate session since; this can + be disabled with eap_workaround=0 + +2005-04-25 - v0.4.0 (beginning of 0.4.x development releases) + * added a new build time option, CONFIG_NO_STDOUT_DEBUG, that can be + used to reduce the size of the wpa_supplicant considerably if + debugging code is not needed + * fixed EAPOL-Key validation to drop packets with invalid Key Data + Length; such frames could have crashed wpa_supplicant due to buffer + overflow + * added support for wired authentication (IEEE 802.1X on wired + Ethernet); driver interface 'wired' + * obsoleted set_wpa() handler in the driver interface API (it can be + replaced by moving enable/disable functionality into init()/deinit()) + (calls to set_wpa() are still present for backwards compatibility, + but they may be removed in the future) + * driver_madwifi: fixed association in plaintext mode + * modified the EAP workaround that accepts EAP-Success with incorrect + Identifier to be even less strict about verification in order to + interoperate with some authentication servers + * added support for sending TLS alerts + * added support for 'any' SSID wildcard; if ssid is not configured or + is set to an empty string, any SSID will be accepted for non-WPA AP + * added support for asking PIN (for SIM) from frontends (e.g., + wpa_cli); if a PIN is needed, but not included in the configuration + file, a control interface request is sent and EAP processing is + delayed until the PIN is available + * added support for using external devices (e.g., a smartcard) for + private key operations in EAP-TLS (CONFIG_SMARTCARD=y in .config); + new wpa_supplicant.conf variables: + - global: opensc_engine_path, pkcs11_engine_path, pkcs11_module_path + - network: engine, engine_id, key_id + * added experimental support for EAP-PAX + * added monitor mode for wpa_cli (-a) that + allows external commands (e.g., shell scripts) to be run based on + wpa_supplicant events, e.g., when authentication has been completed + and data connection is ready; other related wpa_cli arguments: + -B (run in background), -P (write PID file); wpa_supplicant has a new + command line argument (-W) that can be used to make it wait until a + control interface command is received in order to avoid missing + events + * added support for opportunistic WPA2 PMKSA key caching (disabled by + default, can be enabled with proactive_key_caching=1) + * fixed RSN IE in 4-Way Handshake message 2/4 for the case where + Authenticator rejects PMKSA caching attempt and the driver is not + using assoc_info events + * added -P argument for wpa_supplicant to write the current + process id into a file + +2005-02-12 - v0.3.7 (beginning of 0.3.x stable releases) + * added new phase1 option parameter, include_tls_length=1, to force + wpa_supplicant to add TLS Message Length field to all TLS messages + even if the packet is not fragmented; this may be needed with some + authentication servers + * fixed WPA/RSN IE verification in message 3 of 4-Way Handshake when + using drivers that take care of AP selection (e.g., when using + ap_scan=2) + * fixed reprocessing of pending request after ctrl_iface requests for + identity/password/otp + * fixed ctrl_iface requests for identity/password/otp in Phase 2 of + EAP-PEAP and EAP-TTLS + * all drivers using driver_wext: set interface up and select Managed + mode when starting wpa_supplicant; set interface down when exiting + * renamed driver_ipw2100.c to driver_ipw.c since it now supports both + ipw2100 and ipw2200; please note that this also changed the + configuration variable in .config to CONFIG_DRIVER_IPW + +2005-01-24 - v0.3.6 + * fixed a busy loop introduced in v0.3.5 for scan result processing + when no matching AP is found + +2005-01-23 - v0.3.5 + * added a workaround for an interoperability issue with a Cisco AP + when using WPA2-PSK + * fixed non-WPA IEEE 802.1X to use the same authentication timeout as + WPA with IEEE 802.1X (i.e., timeout 10 -> 70 sec to allow + retransmission of dropped frames) + * fixed issues with 64-bit CPUs and SHA1 cleanup in previous version + (e.g., segfault when processing EAPOL-Key frames) + * fixed EAP workaround and fast reauthentication configuration for + RSN pre-authentication; previously these were disabled and + pre-authentication would fail if the used authentication server + requires EAP workarounds + * added support for blacklisting APs that fail or timeout + authentication in ap_scan=1 mode so that all APs are tried in cases + where the ones with strongest signal level are failing authentication + * fixed CA certificate loading after a failed EAP-TLS/PEAP/TTLS + authentication attempt + * allow EAP-PEAP/TTLS fast reauthentication only if Phase 2 succeeded + in the previous authentication (previously, only Phase 1 success was + verified) + +2005-01-09 - v0.3.4 + * added preliminary support for IBSS (ad-hoc) mode configuration + (mode=1 in network block); this included a new key_mgmt mode + WPA-NONE, i.e., TKIP or CCMP with a fixed key (based on psk) and no + key management; see wpa_supplicant.conf for more details and an + example on how to configure this (note: this is currently implemented + only for driver_hostapd.c, but the changes should be trivial to add + in associate() handler for other drivers, too (assuming the driver + supports WPA-None) + * added preliminary port for native Windows (i.e., no cygwin) using + mingw + +2005-01-02 - v0.3.3 + * added optional support for GNU Readline and History Libraries for + wpa_cli (CONFIG_READLINE) + * cleaned up EAP state machine <-> method interface and number of + small problems with error case processing not terminating on + EAP-Failure but waiting for timeout + * added couple of workarounds for interoperability issues with a + Cisco AP when using WPA2 + * added support for EAP-FAST (draft-cam-winget-eap-fast-00.txt); + Note: This requires a patch for openssl to add support for TLS + extensions and number of workarounds for operations without + certificates. Proof of concept type of experimental patch is + included in openssl-tls-extensions.patch. + +2004-12-19 - v0.3.2 + * fixed private key loading for cases where passphrase is not set + * fixed Windows/cygwin L2 packet handler freeing; previous version + could cause a segfault when RSN pre-authentication was completed + * added support for PMKSA caching with drivers that generate RSN IEs + (e.g., NDIS); currently, this is only implemented in driver_ndis.c, + but similar code can be easily added to driver_ndiswrapper.c once + ndiswrapper gets full support for RSN PMKSA caching + * improved recovery from PMKID mismatches by requesting full EAP + authentication in case of failed PMKSA caching attempt + * driver_ndis: added support for NDIS NdisMIncidateStatus() events + (this requires that ndis_events is ran while wpa_supplicant is + running) + * driver_ndis: use ADD_WEP/REMOVE_WEP when configuring WEP keys + * added support for driver interfaces to replace the interface name + based on driver/OS specific mapping, e.g., in case of driver_ndis, + this allows the beginning of the adapter description to be used as + the interface name + * added support for CR+LF (Windows-style) line ends in configuration + file + * driver_ndis: enable radio before starting scanning, disable radio + when exiting + * modified association event handler to set portEnabled = FALSE before + clearing port Valid in order to reset EAP state machine and avoid + problems with new authentication getting ignored because of state + machines ending up in AUTHENTICATED/SUCCESS state based on old + information + * added support for driver events to add PMKID candidates in order to + allow drivers to give priority to most likely roaming candidates + * driver_hostap: moved PrivacyInvoked configuration to associate() + function so that this will not be set for plaintext connections + * added KEY_MGMT_802_1X_NO_WPA as a new key_mgmt type so that driver + interface can distinguish plaintext and IEEE 802.1X (no WPA) + authentication + * fixed static WEP key configuration to use broadcast/default type for + all keys (previously, the default TX key was configured as pairwise/ + unicast key) + * driver_ndis: added legacy WPA capability detection for non-WPA2 + drivers + * added support for setting static WEP keys for IEEE 802.1X without + dynamic WEP keying (eapol_flags=0) + +2004-12-12 - v0.3.1 + * added support for reading PKCS#12 (PFX) files (as a replacement for + PEM/DER) to get certificate and private key (CONFIG_PKCS12) + * fixed compilation with CONFIG_PCSC=y + * added new ap_scan mode, ap_scan=2, for drivers that take care of + association, but need to be configured with security policy and SSID, + e.g., ndiswrapper and NDIS driver; this mode should allow such + drivers to work with hidden SSIDs and optimized roaming; when + ap_scan=2 is used, only the first network block in the configuration + file is used and this configuration should have explicit security + policy (i.e., only one option in the lists) for key_mgmt, pairwise, + group, proto variables + * added experimental port of wpa_supplicant for Windows + - driver_ndis.c driver interface (NDIS OIDs) + - currently, this requires cygwin and WinPcap + - small utility, win_if_list, can be used to get interface name + * control interface can now be removed at build time; add + CONFIG_CTRL_IFACE=y to .config to maintain old functionality + * optional Xsupplicant interface can now be removed at build time; + (CONFIG_XSUPPLICANT_IFACE=y in .config to bring it back) + * added auth_alg to driver interface associate() parameters to make it + easier for drivers to configure authentication algorithm as part of + the association + +2004-12-05 - v0.3.0 (beginning of 0.3.x development releases) + * driver_broadcom: added new driver interface for Broadcom wl.o driver + (a generic driver for Broadcom IEEE 802.11a/g cards) + * wpa_cli: fixed parsing of -p command line argument + * PEAPv1: fixed tunneled EAP-Success reply handling to reply with TLS + ACK, not tunneled EAP-Success (of which only the first byte was + actually send due to a bug in previous code); this seems to + interoperate with most RADIUS servers that implements PEAPv1 + * PEAPv1: added support for terminating PEAP authentication on tunneled + EAP-Success message; this can be configured by adding + peap_outer_success=0 on phase1 parameters in wpa_supplicant.conf + (some RADIUS servers require this whereas others require a tunneled + reply + * PEAPv1: changed phase1 option peaplabel to use default to 0, i.e., to + the old label for key derivation; previously, the default was 1, + but it looks like most existing PEAPv1 implementations use the old + label which is thus more suitable default option + * added support for EAP-PSK (draft-bersani-eap-psk-03.txt) + * fixed parsing of wep_tx_keyidx + * added support for configuring list of allowed Phase 2 EAP types + (for both EAP-PEAP and EAP-TTLS) instead of only one type + * added support for configuring IEEE 802.11 authentication algorithm + (auth_alg; mainly for using Shared Key authentication with static + WEP keys) + * added support for EAP-AKA (with UMTS SIM) + * fixed couple of errors in PCSC handling that could have caused + random-looking errors for EAP-SIM + * added support for EAP-SIM pseudonyms and fast re-authentication + * added support for EAP-TLS/PEAP/TTLS fast re-authentication (TLS + session resumption) + * added support for EAP-SIM with two challanges + (phase1="sim_min_num_chal=3" can be used to require three challenges) + * added support for configuring DH/DSA parameters for an ephemeral DH + key exchange (EAP-TLS/PEAP/TTLS) using new configuration parameters + dh_file and dh_file2 (phase 2); this adds support for using DSA keys + and optional DH key exchange to achieve forward secracy with RSA keys + * added support for matching subject of the authentication server + certificate with a substring when using EAP-TLS/PEAP/TTLS; new + configuration variables subject_match and subject_match2 + * changed SSID configuration in driver_wext.c (used by many driver + interfaces) to use ssid_len+1 as the length for SSID since some Linux + drivers expect this + * fixed couple of unaligned reads in scan result parsing to fix WPA + connection on some platforms (e.g., ARM) + * added driver interface for Intel ipw2100 driver + * added support for LEAP with WPA + * added support for larger scan results report (old limit was 4 kB of + data, i.e., about 35 or so APs) when using Linux wireless extensions + v17 or newer + * fixed a bug in PMKSA cache processing: skip sending of EAPOL-Start + only if there is a PMKSA cache entry for the current AP + * fixed error handling for case where reading of scan results fails: + must schedule a new scan or wpa_supplicant will remain waiting + forever + * changed debug output to remove shared password/key material by + default; all key information can be included with -K command line + argument to match the previous behavior + * added support for timestamping debug log messages (disabled by + default, can be enabled with -t command line argument) + * set pairwise/group cipher suite for non-WPA IEEE 802.1X to WEP-104 + if keys are not configured to be used; this fixes IEEE 802.1X mode + with drivers that use this information to configure whether Privacy + bit can be in Beacon frames (e.g., ndiswrapper) + * avoid clearing driver keys if no keys have been configured since last + key clear request; this seems to improve reliability of group key + handshake for ndiswrapper & NDIS driver which seems to be suffering + of some kind of timing issue when the keys are cleared again after + association + * changed driver interface API: + - WPA_SUPPLICANT_DRIVER_VERSION define can be used to determine which + version is being used (now, this is set to 2; previously, it was + not defined) + - pass pointer to private data structure to all calls + - the new API is not backwards compatible; all in-tree driver + interfaces has been converted to the new API + * added support for controlling multiple interfaces (radios) per + wpa_supplicant process; each interface needs to be listed on the + command line (-c, -i, -D arguments) with -N as a separator + (-cwpa1.conf -iwlan0 -Dhostap -N -cwpa2.conf -iath0 -Dmadwifi) + * added a workaround for EAP servers that incorrectly use same Id for + sequential EAP packets + * changed libpcap/libdnet configuration to use .config variable, + CONFIG_DNET_PCAP, instead of requiring Makefile modification + * improved downgrade attack detection in IE verification of msg 3/4: + verify both WPA and RSN IEs, if present, not only the selected one; + reject the AP if an RSN IE is found in msg 3/4, but not in Beacon or + Probe Response frame, and RSN is enabled in wpa_supplicant + configuration + * fixed WPA msg 3/4 processing to allow Key Data field contain other + IEs than just one WPA IE + * added support for FreeBSD and driver interface for the BSD net80211 + layer (CONFIG_DRIVER_BSD=y in .config); please note that some of the + required kernel mods have not yet been committed + * made EAP workarounds configurable; enabled by default, can be + disabled with network block option eap_workaround=0 + +2004-07-17 - v0.2.4 (beginning of 0.2.x stable releases) + * resolved couple of interoperability issues with EAP-PEAPv1 and + Phase 2 (inner EAP) fragment reassembly + * driver_madwifi: fixed WEP key configuration for IEEE 802.1X when the + AP is using non-zero key index for the unicast key and key index zero + for the broadcast key + * driver_hostap: fixed IEEE 802.1X WEP key updates and + re-authentication by allowing unencrypted EAPOL frames when not using + WPA + * added a new driver interface, 'wext', which uses only standard, + driver independent functionality in Linux wireless extensions; + currently, this can be used only for non-WPA IEEE 802.1X mode, but + eventually, this is to be extended to support full WPA/WPA2 once + Linux wireless extensions get support for this + * added support for mode in which the driver is responsible for AP + scanning and selection; this is disabled by default and can be + enabled with global ap_scan=0 variable in wpa_supplicant.conf; + this mode can be used, e.g., with generic 'wext' driver interface to + use wpa_supplicant as IEEE 802.1X Supplicant with any Linux driver + supporting wireless extensions. + * driver_madwifi: fixed WPA2 configuration and scan_ssid=1 (e.g., + operation with an AP that does not include SSID in the Beacon frames) + * added support for new EAP authentication methods: + EAP-TTLS/EAP-OTP, EAP-PEAPv0/OTP, EAP-PEAPv1/OTP, EAP-OTP + * added support for asking one-time-passwords from frontends (e.g., + wpa_cli); this 'otp' command works otherwise like 'password' command, + but the password is used only once and the frontend will be asked for + a new password whenever a request from authenticator requires a + password; this can be used with both EAP-OTP and EAP-GTC + * changed wpa_cli to automatically re-establish connection so that it + does not need to be re-started when wpa_supplicant is terminated and + started again + * improved user data (identity/password/otp) requests through + frontends: process pending EAPOL packets after getting new + information so that full authentication does not need to be + restarted; in addition, send pending requests again whenever a new + frontend is attached + * changed control frontends to use a new directory for socket files to + make it easier for wpa_cli to automatically select between interfaces + and to provide access control for the control interface; + wpa_supplicant.conf: ctrl_interface is now a path + (/var/run/wpa_supplicant is the recommended path) and + ctrl_interface_group can be used to select which group gets access to + the control interface; + wpa_cli: by default, try to connect to the first interface available + in /var/run/wpa_supplicant; this path can be overriden with -p option + and an interface can be selected with -i option (i.e., in most common + cases, wpa_cli does not need to get any arguments) + * added support for LEAP + * added driver interface for Linux ndiswrapper + * added priority option for network blocks in the configuration file; + this allows networks to be grouped based on priority (the scan + results are searched for matches with network blocks in this order) + +2004-06-20 - v0.2.3 + * sort scan results to improve AP selection + * fixed control interface socket removal for some error cases + * improved scan requesting and authentication timeout + * small improvements/bug fixes for EAP-MSCHAPv2, EAP-PEAP, and + TLS processing + * PEAP version can now be forced with phase1="peapver=" + (mostly for testing; by default, the highest version supported by + both the Supplicant and Authentication Server is selected + automatically) + * added support for madwifi driver (Atheros ar521x) + * added a workaround for cases where AP sets Install Tx/Rx bit for + WPA Group Key messages when pairwise keys are used (without this, + the Group Key would be used for Tx and the AP would drop frames + from the station) + * added GSM SIM/USIM interface for GSM authentication algorithm for + EAP-SIM; this requires pcsc-lite + * added support for ATMEL AT76C5XXx driver + * fixed IEEE 802.1X WEP key derivation in the case where Authenticator + does not include key data in the EAPOL-Key frame (i.e., part of + EAP keying material is used as data encryption key) + * added support for using plaintext and static WEP networks + (key_mgmt=NONE) + +2004-05-31 - v0.2.2 + * added support for new EAP authentication methods: + EAP-TTLS/EAP-MD5-Challenge + EAP-TTLS/EAP-GTC + EAP-TTLS/EAP-MSCHAPv2 + EAP-TTLS/EAP-TLS + EAP-TTLS/MSCHAPv2 + EAP-TTLS/MSCHAP + EAP-TTLS/PAP + EAP-TTLS/CHAP + EAP-PEAP/TLS + EAP-PEAP/GTC + EAP-PEAP/MD5-Challenge + EAP-GTC + EAP-SIM (not yet complete; needs GSM/SIM authentication interface) + * added support for anonymous identity (to be used when identity is + sent in plaintext; real identity will be used within TLS protected + tunnel (e.g., with EAP-TTLS) + * added event messages from wpa_supplicant to frontends, e.g., wpa_cli + * added support for requesting identity and password information using + control interface; in other words, the password for EAP-PEAP or + EAP-TTLS does not need to be included in the configuration file since + a frontand (e.g., wpa_cli) can ask it from the user + * improved RSN pre-authentication to use a candidate list and process + all candidates from each scan; not only one per scan + * fixed RSN IE and WPA IE capabilities field parsing + * ignore Tx bit in GTK IE when Pairwise keys are used + * avoid making new scan requests during IEEE 802.1X negotiation + * use openssl/libcrypto for MD5 and SHA-1 when compiling wpa_supplicant + with TLS support (this replaces the included implementation with + library code to save about 8 kB since the library code is needed + anyway for TLS) + * fixed WPA-PSK only mode when compiled without IEEE 802.1X support + (i.e., without CONFIG_IEEE8021X_EAPOL=y in .config) + +2004-05-06 - v0.2.1 + * added support for internal IEEE 802.1X (actually, IEEE 802.1aa/D6.1) + Supplicant + - EAPOL state machines for Supplicant [IEEE 802.1aa/D6.1] + - EAP peer state machine [draft-ietf-eap-statemachine-02.pdf] + - EAP-MD5 (cannot be used with WPA-RADIUS) + [draft-ietf-eap-rfc2284bis-09.txt] + - EAP-TLS [RFC 2716] + - EAP-MSCHAPv2 (currently used only with EAP-PEAP) + - EAP-PEAP/MSCHAPv2 [draft-josefsson-pppext-eap-tls-eap-07.txt] + [draft-kamath-pppext-eap-mschapv2-00.txt] + (PEAP version 0, 1, and parts of 2; only 0 and 1 are enabled by + default; tested with FreeRADIUS, Microsoft IAS, and Funk Odyssey) + - new configuration file options: eap, identity, password, ca_cert, + client_cert, privatekey, private_key_passwd + - Xsupplicant is not required anymore, but it can be used by + disabling the internal IEEE 802.1X Supplicant with -e command line + option + - this code is not included in the default build; Makefile need to + be edited for this (uncomment lines for selected functionality) + - EAP-TLS and EAP-PEAP require openssl libraries + * use module prefix in debug messages (WPA, EAP, EAP-TLS, ..) + * added support for non-WPA IEEE 802.1X mode with dynamic WEP keys + (i.e., complete IEEE 802.1X/EAP authentication and use IEEE 802.1X + EAPOL-Key frames instead of WPA key handshakes) + * added support for IEEE 802.11i/RSN (WPA2) + - improved PTK Key Handshake + - PMKSA caching, pre-authentication + * fixed wpa_supplicant to ignore possible extra data after WPA + EAPOL-Key packets (this fixes 'Invalid EAPOL-Key MIC when using + TPTK' error from message 3 of 4-Way Handshake in case the AP + includes extra data after the EAPOL-Key) + * added interface for external programs (frontends) to control + wpa_supplicant + - CLI example (wpa_cli) with interactive mode and command line + mode + - replaced SIGUSR1 status/statistics with the new control interface + * made some feature compile time configurable + - .config file for make + - driver interfaces (hostap, hermes, ..) + - EAPOL/EAP functions + +2004-02-15 - v0.2.0 + * Initial version of wpa_supplicant diff --git a/FREEBSD-Xlist b/FREEBSD-Xlist new file mode 100644 index 000000000000..f2fc14f19230 --- /dev/null +++ b/FREEBSD-Xlist @@ -0,0 +1,33 @@ +$FreeBSD: vendor/wpa_supplicant/dist/contrib/wpa_supplicant/FREEBSD-Xlist 171366 2007-07-11 15:48:36Z sam $ +.cvsignore +README-Windows.txt +driver_atmel.c +driver_broadcom.c +driver_bsd.c +driver_hostap.c +driver_ipw.c +driver_madwifi.c +driver_ndiswrapper.c +driver_ndis_.c +driver_prism54.c +driver_test.c +driver_wext.c +driver_wext.h +l2_packet_freebsd.c +l2_packet_linux.c +l2_packet_ndis.c +l2_packet_none.c +l2_packet_pcap.c +l2_packet_winpcap.c +main_none.c +main_winmain.c +main_winsvc.c +ndis_events.c +ndis_events.cpp +nmake.mk +os_win32.c +priv_netlink.h +vs2005 +win_example.reg +win_if_list.c +wireless_copy.h diff --git a/FREEBSD-upgrade b/FREEBSD-upgrade new file mode 100644 index 000000000000..94edd205d88f --- /dev/null +++ b/FREEBSD-upgrade @@ -0,0 +1,24 @@ +$FreeBSD: vendor/wpa_supplicant/dist/contrib/wpa_supplicant/FREEBSD-upgrade 171366 2007-07-11 15:48:36Z sam $ + +WPA Supplicant + originals can be found at: http://hostap.epitest.fi/releases/ + + +For the import files and directories were pruned by: + + tar -X FREEBSD-Xlist -zxf wpa_supplicant-0.5.8.tar.gz + +then imported by: + + cvs import -m 'Import of WPA supplicant 0.5.8' \ + src/contrib/wpa_supplicant MALINEN v0_5_8 + +To make local changes to wpa_supplcaint, simply patch and commit +to the main branch (aka HEAD). Never make local changes on the +vendor (MALINEN) branch. + +All local changes should be submitted to Jouni Malinen for inclusion in +the next vendor release. + +sam@FreeBSD.org +11-July-2007 diff --git a/Makefile b/Makefile new file mode 100644 index 000000000000..9bcdd83047a4 --- /dev/null +++ b/Makefile @@ -0,0 +1,918 @@ +ifndef CC +CC=gcc +endif + +ifndef CFLAGS +CFLAGS = -MMD -O2 -Wall -g +endif + +# Include directories for CVS version +CFLAGS += -I. -I../utils -I../hostapd + +ALL=wpa_supplicant wpa_passphrase wpa_cli + +all: verify_config $(ALL) dynamic_eap_methods + +verify_config: + @if [ ! -r .config ]; then \ + echo 'Building wpa_supplicant requires a configuration file'; \ + echo '(.config). See README for more instructions. You can'; \ + echo 'run "cp defconfig .config" to create an example'; \ + echo 'configuration.'; \ + exit 1; \ + fi + +mkconfig: + @if [ -e .config ]; then \ + echo '.config exists - did not replace it'; \ + exit 1; \ + fi + echo CONFIG_DRIVER_HOSTAP=y >> .config + echo CONFIG_DRIVER_WEXT=y >> .config + echo CONFIG_WIRELESS_EXTENSION=y >> .config + +install: all + mkdir -p $(DESTDIR)/usr/local/sbin/ + for i in $(ALL); do cp $$i $(DESTDIR)/usr/local/sbin/$$i; done + +OBJS = config.o \ + common.o md5.o md4.o \ + rc4.o sha1.o des.o +OBJS_p = wpa_passphrase.o sha1.o md5.o md4.o \ + common.o des.o +OBJS_c = wpa_cli.o wpa_ctrl.o + +-include .config + +ifndef CONFIG_OS +ifdef CONFIG_NATIVE_WINDOWS +CONFIG_OS=win32 +else +CONFIG_OS=unix +endif +endif + +ifeq ($(CONFIG_OS), internal) +CFLAGS += -DOS_NO_C_LIB_DEFINES +endif + +OBJS += os_$(CONFIG_OS).o +OBJS_p += os_$(CONFIG_OS).o +OBJS_c += os_$(CONFIG_OS).o + +ifndef CONFIG_ELOOP +CONFIG_ELOOP=eloop +endif +OBJS += $(CONFIG_ELOOP).o + + +ifdef CONFIG_EAPOL_TEST +CFLAGS += -Werror -DEAPOL_TEST +endif + +ifndef CONFIG_BACKEND +CONFIG_BACKEND=file +endif + +ifeq ($(CONFIG_BACKEND), file) +OBJS += config_file.o base64.o +CFLAGS += -DCONFIG_BACKEND_FILE +endif + +ifeq ($(CONFIG_BACKEND), winreg) +OBJS += config_winreg.o +endif + +ifeq ($(CONFIG_BACKEND), none) +OBJS += config_none.o +endif + +ifdef CONFIG_DRIVER_HOSTAP +CFLAGS += -DCONFIG_DRIVER_HOSTAP +OBJS_d += driver_hostap.o +CONFIG_WIRELESS_EXTENSION=y +endif + +ifdef CONFIG_DRIVER_WEXT +CFLAGS += -DCONFIG_DRIVER_WEXT +CONFIG_WIRELESS_EXTENSION=y +endif + +ifdef CONFIG_DRIVER_PRISM54 +CFLAGS += -DCONFIG_DRIVER_PRISM54 +OBJS_d += driver_prism54.o +CONFIG_WIRELESS_EXTENSION=y +endif + +ifdef CONFIG_DRIVER_HERMES +CFLAGS += -DCONFIG_DRIVER_HERMES +OBJS_d += driver_hermes.o +CONFIG_WIRELESS_EXTENSION=y +endif + +ifdef CONFIG_DRIVER_MADWIFI +CFLAGS += -DCONFIG_DRIVER_MADWIFI +OBJS_d += driver_madwifi.o +CONFIG_WIRELESS_EXTENSION=y +endif + +ifdef CONFIG_DRIVER_ATMEL +CFLAGS += -DCONFIG_DRIVER_ATMEL +OBJS_d += driver_atmel.o +CONFIG_WIRELESS_EXTENSION=y +endif + +ifdef CONFIG_DRIVER_NDISWRAPPER +CFLAGS += -DCONFIG_DRIVER_NDISWRAPPER +OBJS_d += driver_ndiswrapper.o +CONFIG_WIRELESS_EXTENSION=y +endif + +ifdef CONFIG_DRIVER_BROADCOM +CFLAGS += -DCONFIG_DRIVER_BROADCOM +OBJS_d += driver_broadcom.o +endif + +ifdef CONFIG_DRIVER_IPW +CFLAGS += -DCONFIG_DRIVER_IPW +OBJS_d += driver_ipw.o +CONFIG_WIRELESS_EXTENSION=y +endif + +ifdef CONFIG_DRIVER_BSD +CFLAGS += -DCONFIG_DRIVER_BSD +OBJS_d += driver_bsd.o +ifndef CONFIG_L2_PACKET +CONFIG_L2_PACKET=freebsd +endif +endif + +ifdef CONFIG_DRIVER_NDIS +CFLAGS += -DCONFIG_DRIVER_NDIS +OBJS_d += driver_ndis.o driver_ndis_.o +ifndef CONFIG_L2_PACKET +CONFIG_L2_PACKET=pcap +endif +CONFIG_WINPCAP=y +ifdef CONFIG_USE_NDISUIO +CFLAGS += -DCONFIG_USE_NDISUIO +endif +endif + +ifdef CONFIG_DRIVER_WIRED +CFLAGS += -DCONFIG_DRIVER_WIRED +OBJS_d += driver_wired.o +endif + +ifdef CONFIG_DRIVER_TEST +CFLAGS += -DCONFIG_DRIVER_TEST +OBJS_d += driver_test.o +endif + +ifndef CONFIG_L2_PACKET +CONFIG_L2_PACKET=linux +endif + +OBJS += l2_packet_$(CONFIG_L2_PACKET).o + +ifeq ($(CONFIG_L2_PACKET), pcap) +ifdef CONFIG_WINPCAP +CFLAGS += -DCONFIG_WINPCAP +LIBS += -lwpcap -lpacket +LIBS_w += -lwpcap +else +LIBS += -ldnet -lpcap +endif +endif + +ifeq ($(CONFIG_L2_PACKET), winpcap) +LIBS += -lwpcap -lpacket +LIBS_w += -lwpcap +endif + +ifeq ($(CONFIG_L2_PACKET), freebsd) +LIBS += -lpcap +endif + +ifdef CONFIG_EAP_TLS +# EAP-TLS +ifeq ($(CONFIG_EAP_TLS), dyn) +CFLAGS += -DEAP_TLS_DYNAMIC +EAPDYN += eap_tls.so +else +CFLAGS += -DEAP_TLS +OBJS += eap_tls.o +endif +TLS_FUNCS=y +CONFIG_IEEE8021X_EAPOL=y +endif + +ifdef CONFIG_EAP_PEAP +# EAP-PEAP +ifeq ($(CONFIG_EAP_PEAP), dyn) +CFLAGS += -DEAP_PEAP_DYNAMIC +EAPDYN += eap_peap.so +else +CFLAGS += -DEAP_PEAP +OBJS += eap_peap.o +endif +TLS_FUNCS=y +CONFIG_IEEE8021X_EAPOL=y +CONFIG_EAP_TLV=y +endif + +ifdef CONFIG_EAP_TTLS +# EAP-TTLS +ifeq ($(CONFIG_EAP_TTLS), dyn) +CFLAGS += -DEAP_TTLS_DYNAMIC +EAPDYN += eap_ttls.so +else +CFLAGS += -DEAP_TTLS +OBJS += eap_ttls.o +endif +MS_FUNCS=y +TLS_FUNCS=y +CONFIG_IEEE8021X_EAPOL=y +endif + +ifdef CONFIG_EAP_MD5 +# EAP-MD5 +ifeq ($(CONFIG_EAP_MD5), dyn) +CFLAGS += -DEAP_MD5_DYNAMIC +EAPDYN += eap_md5.so +else +CFLAGS += -DEAP_MD5 +OBJS += eap_md5.o +endif +CONFIG_IEEE8021X_EAPOL=y +endif + +# backwards compatibility for old spelling +ifdef CONFIG_MSCHAPV2 +ifndef CONFIG_EAP_MSCHAPV2 +CONFIG_EAP_MSCHAPV2=y +endif +endif + +ifdef CONFIG_EAP_MSCHAPV2 +# EAP-MSCHAPv2 +ifeq ($(CONFIG_EAP_MSCHAPV2), dyn) +CFLAGS += -DEAP_MSCHAPv2_DYNAMIC +EAPDYN += eap_mschapv2.so +else +CFLAGS += -DEAP_MSCHAPv2 +OBJS += eap_mschapv2.o +endif +MS_FUNCS=y +CONFIG_IEEE8021X_EAPOL=y +endif + +ifdef CONFIG_EAP_GTC +# EAP-GTC +ifeq ($(CONFIG_EAP_GTC), dyn) +CFLAGS += -DEAP_GTC_DYNAMIC +EAPDYN += eap_gtc.so +else +CFLAGS += -DEAP_GTC +OBJS += eap_gtc.o +endif +CONFIG_IEEE8021X_EAPOL=y +endif + +ifdef CONFIG_EAP_OTP +# EAP-OTP +ifeq ($(CONFIG_EAP_OTP), dyn) +CFLAGS += -DEAP_OTP_DYNAMIC +EAPDYN += eap_otp.so +else +CFLAGS += -DEAP_OTP +OBJS += eap_otp.o +endif +CONFIG_IEEE8021X_EAPOL=y +endif + +ifdef CONFIG_EAP_SIM +# EAP-SIM +ifeq ($(CONFIG_EAP_SIM), dyn) +CFLAGS += -DEAP_SIM_DYNAMIC +EAPDYN += eap_sim.so +else +CFLAGS += -DEAP_SIM +OBJS += eap_sim.o +endif +CONFIG_IEEE8021X_EAPOL=y +CONFIG_EAP_SIM_COMMON=y +endif + +ifdef CONFIG_EAP_LEAP +# EAP-LEAP +ifeq ($(CONFIG_EAP_LEAP), dyn) +CFLAGS += -DEAP_LEAP_DYNAMIC +EAPDYN += eap_leap.so +else +CFLAGS += -DEAP_LEAP +OBJS += eap_leap.o +endif +MS_FUNCS=y +CONFIG_IEEE8021X_EAPOL=y +endif + +ifdef CONFIG_EAP_PSK +# EAP-PSK +ifeq ($(CONFIG_EAP_PSK), dyn) +CFLAGS += -DEAP_PSK_DYNAMIC +EAPDYN += eap_psk.so +else +CFLAGS += -DEAP_PSK +OBJS += eap_psk.o eap_psk_common.o +endif +CONFIG_IEEE8021X_EAPOL=y +NEED_AES=y +endif + +ifdef CONFIG_EAP_AKA +# EAP-AKA +ifeq ($(CONFIG_EAP_AKA), dyn) +CFLAGS += -DEAP_AKA_DYNAMIC +EAPDYN += eap_aka.so +else +CFLAGS += -DEAP_AKA +OBJS += eap_aka.o +endif +CONFIG_IEEE8021X_EAPOL=y +CONFIG_EAP_SIM_COMMON=y +endif + +ifdef CONFIG_EAP_SIM_COMMON +OBJS += eap_sim_common.o +NEED_AES=y +endif + +ifdef CONFIG_EAP_TLV +# EAP-TLV +CFLAGS += -DEAP_TLV +OBJS += eap_tlv.o +endif + +ifdef CONFIG_EAP_FAST +# EAP-FAST +ifeq ($(CONFIG_EAP_FAST), dyn) +CFLAGS += -DEAP_FAST_DYNAMIC +EAPDYN += eap_fast.so +else +CFLAGS += -DEAP_FAST +OBJS += eap_fast.o +endif +TLS_FUNCS=y +endif + +ifdef CONFIG_EAP_PAX +# EAP-PAX +ifeq ($(CONFIG_EAP_PAX), dyn) +CFLAGS += -DEAP_PAX_DYNAMIC +EAPDYN += eap_pax.so +else +CFLAGS += -DEAP_PAX +OBJS += eap_pax.o eap_pax_common.o +endif +CONFIG_IEEE8021X_EAPOL=y +endif + +ifdef CONFIG_EAP_SAKE +# EAP-SAKE +ifeq ($(CONFIG_EAP_SAKE), dyn) +CFLAGS += -DEAP_SAKE_DYNAMIC +EAPDYN += eap_sake.so +else +CFLAGS += -DEAP_SAKE +OBJS += eap_sake.o eap_sake_common.o +endif +CONFIG_IEEE8021X_EAPOL=y +endif + +ifdef CONFIG_EAP_GPSK +# EAP-GPSK +ifeq ($(CONFIG_EAP_GPSK), dyn) +CFLAGS += -DEAP_GPSK_DYNAMIC +EAPDYN += eap_gpsk.so +else +CFLAGS += -DEAP_GPSK +OBJS += eap_gpsk.o eap_gpsk_common.o +endif +CONFIG_IEEE8021X_EAPOL=y +ifdef CONFIG_EAP_GPSK_SHA256 +CFLAGS += -DEAP_GPSK_SHA256 +NEED_SHA256=y +endif +endif + +ifdef CONFIG_EAP_VENDOR_TEST +ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn) +CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC +EAPDYN += eap_vendor_test.so +else +CFLAGS += -DEAP_VENDOR_TEST +OBJS += eap_vendor_test.o +endif +CONFIG_IEEE8021X_EAPOL=y +endif + +ifdef CONFIG_IEEE8021X_EAPOL +# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication) +CFLAGS += -DIEEE8021X_EAPOL +OBJS += eapol_sm.o eap.o eap_methods.o +ifdef CONFIG_DYNAMIC_EAP_METHODS +CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS +LIBS += -ldl -rdynamic +endif +endif + +ifdef CONFIG_PCSC +# PC/SC interface for smartcards (USIM, GSM SIM) +CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC +OBJS += pcsc_funcs.o +# -lpthread may not be needed depending on how pcsc-lite was configured +ifdef CONFIG_NATIVE_WINDOWS +#Once MinGW gets support for WinScard, -lwinscard could be used instead of the +#dynamic symbol loading that is now used in pcsc_funcs.c +#LIBS += -lwinscard +else +LIBS += -lpcsclite -lpthread +endif +endif + +ifndef CONFIG_TLS +CONFIG_TLS=openssl +endif + +ifeq ($(CONFIG_TLS), internal) +ifndef CONFIG_CRYPTO +CONFIG_CRYPTO=internal +endif +endif +ifeq ($(CONFIG_CRYPTO), libtomcrypt) +CFLAGS += -DCONFIG_INTERNAL_X509 +endif +ifeq ($(CONFIG_CRYPTO), internal) +CFLAGS += -DCONFIG_INTERNAL_X509 +endif + + +ifdef TLS_FUNCS +# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST) +CFLAGS += -DEAP_TLS_FUNCS +OBJS += eap_tls_common.o +ifeq ($(CONFIG_TLS), openssl) +CFLAGS += -DEAP_TLS_OPENSSL +OBJS += tls_openssl.o +LIBS += -lssl -lcrypto +LIBS_p += -lcrypto +endif +ifeq ($(CONFIG_TLS), gnutls) +OBJS += tls_gnutls.o +LIBS += -lgnutls -lgcrypt -lgpg-error +LIBS_p += -lgcrypt +ifdef CONFIG_GNUTLS_EXTRA +CFLAGS += -DCONFIG_GNUTLS_EXTRA +LIBS += -lgnutls-extra +endif +endif +ifeq ($(CONFIG_TLS), schannel) +OBJS += tls_schannel.o +endif +ifeq ($(CONFIG_TLS), internal) +OBJS += tls_internal.o tlsv1_common.o tlsv1_client.o asn1.o x509v3.o +OBJS_p += asn1.o rc4.o aes_wrap.o +ifneq ($(CONFIG_BACKEND), file) +OBJS += base64.o +endif +CFLAGS += -DCONFIG_TLS_INTERNAL +ifeq ($(CONFIG_CRYPTO), internal) +ifdef CONFIG_INTERNAL_LIBTOMMATH +CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH +else +LIBS += -ltommath +LIBS_p += -ltommath +endif +endif +ifeq ($(CONFIG_CRYPTO), libtomcrypt) +LIBS += -ltomcrypt -ltfm +LIBS_p += -ltomcrypt -ltfm +endif +endif +ifeq ($(CONFIG_TLS), none) +OBJS += tls_none.o +CFLAGS += -DEAP_TLS_NONE +CONFIG_INTERNAL_AES=y +CONFIG_INTERNAL_SHA1=y +CONFIG_INTERNAL_MD5=y +CONFIG_INTERNAL_SHA256=y +endif +ifdef CONFIG_SMARTCARD +ifndef CONFIG_NATIVE_WINDOWS +ifneq ($(CONFIG_L2_PACKET), freebsd) +LIBS += -ldl +endif +endif +endif +NEED_CRYPTO=y +else +OBJS += tls_none.o +endif + +ifdef CONFIG_PKCS12 +CFLAGS += -DPKCS12_FUNCS +endif + +ifdef CONFIG_SMARTCARD +CFLAGS += -DCONFIG_SMARTCARD +endif + +ifdef MS_FUNCS +OBJS += ms_funcs.o +NEED_CRYPTO=y +endif + +ifdef NEED_CRYPTO +ifndef TLS_FUNCS +ifeq ($(CONFIG_TLS), openssl) +LIBS += -lcrypto +LIBS_p += -lcrypto +endif +ifeq ($(CONFIG_TLS), gnutls) +LIBS += -lgcrypt +LIBS_p += -lgcrypt +endif +ifeq ($(CONFIG_TLS), schannel) +endif +ifeq ($(CONFIG_TLS), internal) +ifeq ($(CONFIG_CRYPTO), libtomcrypt) +LIBS += -ltomcrypt -ltfm +LIBS_p += -ltomcrypt -ltfm +endif +endif +endif +ifeq ($(CONFIG_TLS), openssl) +OBJS += crypto.o +OBJS_p += crypto.o +CONFIG_INTERNAL_SHA256=y +endif +ifeq ($(CONFIG_TLS), gnutls) +OBJS += crypto_gnutls.o +OBJS_p += crypto_gnutls.o +CONFIG_INTERNAL_SHA256=y +endif +ifeq ($(CONFIG_TLS), schannel) +OBJS += crypto_cryptoapi.o +OBJS_p += crypto_cryptoapi.o +CONFIG_INTERNAL_SHA256=y +endif +ifeq ($(CONFIG_TLS), internal) +ifeq ($(CONFIG_CRYPTO), libtomcrypt) +OBJS += crypto_libtomcrypt.o +OBJS_p += crypto_libtomcrypt.o +CONFIG_INTERNAL_SHA256=y +endif +ifeq ($(CONFIG_CRYPTO), internal) +OBJS += crypto_internal.o rsa.o bignum.o +OBJS_p += crypto_internal.o rsa.o bignum.o +CFLAGS += -DCONFIG_CRYPTO_INTERNAL +CONFIG_INTERNAL_AES=y +CONFIG_INTERNAL_DES=y +CONFIG_INTERNAL_SHA1=y +CONFIG_INTERNAL_MD4=y +CONFIG_INTERNAL_MD5=y +CONFIG_INTERNAL_SHA256=y +endif +ifeq ($(CONFIG_CRYPTO), cryptoapi) +OBJS += crypto_cryptoapi.o +OBJS_p += crypto_cryptoapi.o +CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI +CONFIG_INTERNAL_SHA256=y +endif +endif +ifeq ($(CONFIG_TLS), none) +OBJS += crypto_none.o +OBJS_p += crypto_none.o +CONFIG_INTERNAL_SHA256=y +endif +else +CONFIG_INTERNAL_AES=y +CONFIG_INTERNAL_SHA1=y +CONFIG_INTERNAL_MD5=y +endif + +ifdef CONFIG_INTERNAL_AES +CFLAGS += -DINTERNAL_AES +endif +ifdef CONFIG_INTERNAL_SHA1 +CFLAGS += -DINTERNAL_SHA1 +endif +ifdef CONFIG_INTERNAL_SHA256 +CFLAGS += -DINTERNAL_SHA256 +endif +ifdef CONFIG_INTERNAL_MD5 +CFLAGS += -DINTERNAL_MD5 +endif +ifdef CONFIG_INTERNAL_MD4 +CFLAGS += -DINTERNAL_MD4 +endif +ifdef CONFIG_INTERNAL_DES +CFLAGS += -DINTERNAL_DES +endif + +ifdef NEED_SHA256 +OBJS += sha256.o +endif + +ifdef CONFIG_WIRELESS_EXTENSION +CFLAGS += -DCONFIG_WIRELESS_EXTENSION +OBJS_d += driver_wext.o +endif + +ifdef CONFIG_CTRL_IFACE +ifeq ($(CONFIG_CTRL_IFACE), y) +ifdef CONFIG_NATIVE_WINDOWS +CONFIG_CTRL_IFACE=named_pipe +else +CONFIG_CTRL_IFACE=unix +endif +endif +CFLAGS += -DCONFIG_CTRL_IFACE +ifeq ($(CONFIG_CTRL_IFACE), unix) +CFLAGS += -DCONFIG_CTRL_IFACE_UNIX +endif +ifeq ($(CONFIG_CTRL_IFACE), udp) +CFLAGS += -DCONFIG_CTRL_IFACE_UDP +endif +ifeq ($(CONFIG_CTRL_IFACE), named_pipe) +CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE +endif +OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o +endif + +ifdef CONFIG_CTRL_IFACE_DBUS +CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE +OBJS += ctrl_iface_dbus.o ctrl_iface_dbus_handlers.o dbus_dict_helpers.o +ifndef DBUS_LIBS +DBUS_LIBS := $(shell pkg-config --libs dbus-1) +endif +LIBS += $(DBUS_LIBS) +ifndef DBUS_INCLUDE +DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1) +endif +dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1)) +DBUS_VERSION_MAJOR=$(word 1,$(dbus_version)) +DBUS_VERSION_MINOR=$(word 2,$(dbus_version)) +ifeq ($(DBUS_VERSION_MAJOR),) +DBUS_VERSION_MAJOR=0 +endif +ifeq ($(DBUS_VERSION_MINOR),) +DBUS_VERSION_MINOR=0 +endif +DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR) +DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR) +CFLAGS += $(DBUS_INCLUDE) +endif + +ifdef CONFIG_READLINE +CFLAGS += -DCONFIG_READLINE +LIBS_c += -lncurses -lreadline +endif + +ifdef CONFIG_NATIVE_WINDOWS +CFLAGS += -DCONFIG_NATIVE_WINDOWS +LIBS += -lws2_32 -lgdi32 -lcrypt32 +LIBS_c += -lws2_32 +LIBS_p += -lws2_32 +ifeq ($(CONFIG_CRYPTO), cryptoapi) +LIBS_p += -lcrypt32 +endif +endif + +ifdef CONFIG_NO_STDOUT_DEBUG +CFLAGS += -DCONFIG_NO_STDOUT_DEBUG +ifndef CONFIG_CTRL_IFACE +CFLAGS += -DCONFIG_NO_WPA_MSG +endif +endif + +ifdef CONFIG_IPV6 +# for eapol_test only +CFLAGS += -DCONFIG_IPV6 +endif + +ifdef CONFIG_PEERKEY +CFLAGS += -DCONFIG_PEERKEY +endif + +ifdef CONFIG_IEEE80211W +CFLAGS += -DCONFIG_IEEE80211W +NEED_SHA256=y +endif + +ifndef CONFIG_NO_WPA +OBJS += wpa.o preauth.o pmksa_cache.o +NEED_AES=y +else +CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2 +endif + +ifdef CONFIG_NO_WPA2 +CFLAGS += -DCONFIG_NO_WPA2 +endif + +ifdef CONFIG_NO_AES_EXTRAS +CFLAGS += -DCONFIG_NO_AES_WRAP +CFLAGS += -DCONFIG_NO_AES_CTR -DCONFIG_NO_AES_OMAC1 +CFLAGS += -DCONFIG_NO_AES_EAX -DCONFIG_NO_AES_CBC +endif + +ifdef NEED_AES +OBJS += aes_wrap.o +endif + +ifdef CONFIG_CLIENT_MLME +OBJS += mlme.o +CFLAGS += -DCONFIG_CLIENT_MLME +endif + +ifndef CONFIG_MAIN +CONFIG_MAIN=main +endif + +ifdef CONFIG_DEBUG_FILE +CFLAGS += -DCONFIG_DEBUG_FILE +endif + +ifdef CONFIG_DEBUG_SYSLOG +CFLAGS += -DCONFIG_DEBUG_SYSLOG +endif + +OBJS += wpa_supplicant.o events.o +OBJS_t := $(OBJS) eapol_test.o radius.o radius_client.o +OBJS_t2 := $(OBJS) preauth_test.o +OBJS += $(CONFIG_MAIN).o drivers.o $(OBJS_d) + +ifdef CONFIG_NDIS_EVENTS_INTEGRATED +CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED +OBJS += ndis_events.o +EXTRALIBS += -loleaut32 -lole32 -luuid +ifdef PLATFORMSDKLIB +EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib +else +EXTRALIBS += WbemUuid.Lib +endif +endif + +ifndef LDO +LDO=$(CC) +endif + +dynamic_eap_methods: $(EAPDYN) + +wpa_supplicant: .config $(OBJS) + $(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) + +eapol_test: .config $(OBJS_t) + $(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS) + +preauth_test: .config $(OBJS_t2) + $(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS) + +wpa_passphrase: $(OBJS_p) + $(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) + +wpa_cli: $(OBJS_c) + $(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c) + +OBJSa=asn1_test.o asn1.o x509v3.o common.o os_unix.o \ + crypto_$(CONFIG_CRYPTO).o md5.o sha1.o \ + rc4.o des.o aes_wrap.o \ + bignum.o rsa.o +asn1_test: $(OBJSa) + $(LDO) $(LDFLAGS) -o asn1_test $(OBJSa) + +OBJSx=tests/test_x509v3.o asn1.o x509v3.o \ + common.o os_unix.o \ + crypto_$(CONFIG_CRYPTO).o \ + md5.o sha1.o \ + rc4.o des.o aes_wrap.o \ + bignum.o rsa.o +test_x509v3: $(OBJSx) + $(LDO) $(LDFLAGS) -o test_x509v3 $(OBJSx) + +win_if_list: win_if_list.c + $(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w) + +eap_psk.so: eap_psk.c eap_psk_common.c + $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ + -Deap_peer_psk_register=eap_peer_method_dynamic_init + +eap_pax.so: eap_pax.c eap_pax_common.c + $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ + -Deap_peer_pax_register=eap_peer_method_dynamic_init + +eap_sake.so: eap_sake.c eap_sake_common.c + $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ + -Deap_peer_sake_register=eap_peer_method_dynamic_init + +%.so: %.c + $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \ + -D$(*:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init + + +wpa_supplicant.exe: wpa_supplicant + mv -f $< $@ +wpa_cli.exe: wpa_cli + mv -f $< $@ +wpa_passphrase.exe: wpa_passphrase + mv -f $< $@ +win_if_list.exe: win_if_list + mv -f $< $@ +eapol_test.exe: eapol_test + mv -f $< $@ + +WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe + +windows-bin: $(WINALL) + $(STRIP) $(WINALL) + +wpa_gui/Makefile: + qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro + +wpa_gui: wpa_gui/Makefile + $(MAKE) -C wpa_gui + +TEST_MS_FUNCS_OBJS = crypto.o sha1.o md5.o \ + os_unix.o rc4.o tests/test_ms_funcs.o +test-ms_funcs: $(TEST_MS_FUNCS_OBJS) + $(LDO) $(LDFLAGS) -o $@ $(TEST_MS_FUNCS_OBJS) $(LIBS) -lcrypto + ./test-ms_funcs + rm test-ms_funcs + +TEST_SHA1_OBJS = sha1.o md5.o tests/test_sha1.o #crypto.o +test-sha1: $(TEST_SHA1_OBJS) + $(LDO) $(LDFLAGS) -o $@ $(TEST_SHA1_OBJS) $(LIBS) + ./test-sha1 + rm test-sha1 + +TEST_SHA256_OBJS = sha256.o md5.o tests/test_sha256.o crypto.o +test-sha256: $(TEST_SHA256_OBJS) + $(LDO) $(LDFLAGS) -o $@ $(TEST_SHA256_OBJS) $(LIBS) + ./test-sha256 + rm test-sha256 + +TEST_AES_OBJS = aes_wrap.o tests/test_aes.o # crypto.o +test-aes: $(TEST_AES_OBJS) + $(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS) + ./test-aes + rm test-aes + +TEST_EAP_SIM_COMMON_OBJS = sha1.o md5.o \ + aes_wrap.o common.o os_unix.o \ + tests/test_eap_sim_common.o +test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS) + $(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS) + ./test-eap_sim_common + rm test-eap_sim_common + +TEST_MD4_OBJS = md4.o tests/test_md4.o #crypto.o +test-md4: $(TEST_MD4_OBJS) + $(LDO) $(LDFLAGS) -o $@ $(TEST_MD4_OBJS) $(LIBS) + ./test-md4 + rm test-md4 + +TEST_MD5_OBJS = md5.o tests/test_md5.o #crypto.o +test-md5: $(TEST_MD5_OBJS) + $(LDO) $(LDFLAGS) -o $@ $(TEST_MD5_OBJS) $(LIBS) + ./test-md5 + rm test-md5 + +tests: test-ms_funcs test-sha1 test-aes test-eap_sim_common test-md4 test-md5 + +clean: + rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) + +%.eps: %.fig + fig2dev -L eps $*.fig $*.eps + +%.png: %.fig + fig2dev -L png -m 3 $*.fig | pngtopnm | pnmscale 0.4 | pnmtopng \ + > $*.png + +docs-pics: doc/wpa_supplicant.png doc/wpa_supplicant.eps + +docs: docs-pics + doxygen doc/doxygen.full + $(MAKE) -C doc/latex + cp doc/latex/refman.pdf wpa_supplicant-devel.pdf + +docs-fast: docs-pics + doxygen doc/doxygen.fast + +clean-docs: + rm -rf doc/latex doc/html + rm -f doc/wpa_supplicant.{eps,png} wpa_supplicant-devel.pdf + +-include $(OBJS:%.o=%.d) diff --git a/README b/README new file mode 100644 index 000000000000..0b3c5858c43e --- /dev/null +++ b/README @@ -0,0 +1,970 @@ +WPA Supplicant +============== + +Copyright (c) 2003-2008, Jouni Malinen and contributors +All Rights Reserved. + +This program is dual-licensed under both the GPL version 2 and BSD +license. Either license may be used at your option. + + + +License +------- + +GPL v2: + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2 as +published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +(this copy of the license is in COPYING file) + + +Alternatively, this software may be distributed, used, and modified +under the terms of BSD license: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name(s) of the above-listed copyright holder(s) nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +Features +-------- + +Supported WPA/IEEE 802.11i features: +- WPA-PSK ("WPA-Personal") +- WPA with EAP (e.g., with RADIUS authentication server) ("WPA-Enterprise") + Following authentication methods are supported with an integrate IEEE 802.1X + Supplicant: + * EAP-TLS + * EAP-PEAP/MSCHAPv2 (both PEAPv0 and PEAPv1) + * EAP-PEAP/TLS (both PEAPv0 and PEAPv1) + * EAP-PEAP/GTC (both PEAPv0 and PEAPv1) + * EAP-PEAP/OTP (both PEAPv0 and PEAPv1) + * EAP-PEAP/MD5-Challenge (both PEAPv0 and PEAPv1) + * EAP-TTLS/EAP-MD5-Challenge + * EAP-TTLS/EAP-GTC + * EAP-TTLS/EAP-OTP + * EAP-TTLS/EAP-MSCHAPv2 + * EAP-TTLS/EAP-TLS + * EAP-TTLS/MSCHAPv2 + * EAP-TTLS/MSCHAP + * EAP-TTLS/PAP + * EAP-TTLS/CHAP + * EAP-SIM + * EAP-AKA + * EAP-PSK + * EAP-PAX + * EAP-SAKE + * EAP-GPSK + * LEAP (note: requires special support from the driver for IEEE 802.11 + authentication) + (following methods are supported, but since they do not generate keying + material, they cannot be used with WPA or IEEE 802.1X WEP keying) + * EAP-MD5-Challenge + * EAP-MSCHAPv2 + * EAP-GTC + * EAP-OTP +- key management for CCMP, TKIP, WEP104, WEP40 +- RSN/WPA2 (IEEE 802.11i) + * pre-authentication + * PMKSA caching + +Supported TLS/crypto libraries: +- OpenSSL (default) +- GnuTLS + +Internal TLS/crypto implementation (optional): +- can be used in place of an external TLS/crypto library +- TLSv1 +- X.509 certificate processing +- PKCS #1 +- ASN.1 +- RSA +- bignum +- minimal size (ca. 50 kB binary, parts of which are already needed for WPA; + TLSv1/X.509/ASN.1/RSA/bignum parts are about 25 kB on x86) + + +Requirements +------------ + +Current hardware/software requirements: +- Linux kernel 2.4.x or 2.6.x with Linux Wireless Extensions v15 or newer +- FreeBSD 6-CURRENT +- NetBSD-current +- Microsoft Windows with WinPcap (at least WinXP, may work with other versions) +- drivers: + Linux drivers that support WPA/WPA2 configuration with the generic + Linux wireless extensions (WE-18 or newer). Even though there are + number of driver specific interface included in wpa_supplicant, please + note that Linux drivers are moving to use generic wireless extensions + and driver_wext (-Dwext on wpa_supplicant command line) should be the + default option to start with before falling back to driver specific + interface. + + Host AP driver for Prism2/2.5/3 (development snapshot/v0.2.x) + (http://hostap.epitest.fi/) + Driver need to be set in Managed mode ('iwconfig wlan0 mode managed'). + Please note that station firmware version needs to be 1.7.0 or newer + to work in WPA mode. + + Linuxant DriverLoader (http://www.linuxant.com/driverloader/) + with Windows NDIS driver for your wlan card supporting WPA. + + Agere Systems Inc. Linux Driver + (http://www.agere.com/support/drivers/) + Please note that the driver interface file (driver_hermes.c) and + hardware specific include files are not included in the + wpa_supplicant distribution. You will need to copy these from the + source package of the Agere driver. + + madwifi driver for cards based on Atheros chip set (ar521x) + (http://sourceforge.net/projects/madwifi/) + Please note that you will need to modify the wpa_supplicant .config + file to use the correct path for the madwifi driver root directory + (CFLAGS += -I../madwifi/wpa line in example defconfig). + + ATMEL AT76C5XXx driver for USB and PCMCIA cards + (http://atmelwlandriver.sourceforge.net/). + + Linux ndiswrapper (http://ndiswrapper.sourceforge.net/) with + Windows NDIS driver. + + Broadcom wl.o driver + This is a generic Linux driver for Broadcom IEEE 802.11a/g cards. + However, it is proprietary driver that is not publicly available + except for couple of exceptions, mainly Broadcom-based APs/wireless + routers that use Linux. The driver binary can be downloaded, e.g., + from Linksys support site (http://www.linksys.com/support/gpl.asp) + for Linksys WRT54G. The GPL tarball includes cross-compiler and + the needed header file, wlioctl.h, for compiling wpa_supplicant. + This driver support in wpa_supplicant is expected to work also with + other devices based on Broadcom driver (assuming the driver includes + client mode support). + + Intel ipw2100 driver + (http://sourceforge.net/projects/ipw2100/) + + Intel ipw2200 driver + (http://sourceforge.net/projects/ipw2200/) + + In theory, any driver that supports Linux wireless extensions can be + used with IEEE 802.1X (i.e., not WPA) when using ap_scan=0 option in + configuration file. + + Wired Ethernet drivers (with ap_scan=0) + + BSD net80211 layer (e.g., Atheros driver) + At the moment, this is for FreeBSD 6-CURRENT branch and NetBSD-current. + + Windows NDIS + The current Windows port requires WinPcap (http://winpcap.polito.it/). + See README-Windows.txt for more information. + +wpa_supplicant was designed to be portable for different drivers and +operating systems. Hopefully, support for more wlan cards and OSes will be +added in the future. See developer's documentation +(http://hostap.epitest.fi/wpa_supplicant/devel/) for more information about the +design of wpa_supplicant and porting to other drivers. One main goal +is to add full WPA/WPA2 support to Linux wireless extensions to allow +new drivers to be supported without having to implement new +driver-specific interface code in wpa_supplicant. + +Optional libraries for layer2 packet processing: +- libpcap (tested with 0.7.2, most relatively recent versions assumed to work, + this is likely to be available with most distributions, + http://tcpdump.org/) +- libdnet (tested with v1.4, most versions assumed to work, + http://libdnet.sourceforge.net/) + +These libraries are _not_ used in the default Linux build. Instead, +internal Linux specific implementation is used. libpcap/libdnet are +more portable and they can be used by adding CONFIG_L2_PACKET=pcap into +.config. They may also be selected automatically for other operating +systems. In case of Windows builds, WinPcap is used by default +(CONFIG_L2_PACKET=winpcap). + + +Optional libraries for EAP-TLS, EAP-PEAP, and EAP-TTLS: +- OpenSSL (tested with 0.9.7c and 0.9.7d, and 0.9.8 versions; assumed to + work with most relatively recent versions; this is likely to be + available with most distributions, http://www.openssl.org/) +- GnuTLS +- internal TLSv1 implementation + +TLS options for EAP-FAST: +- OpenSSL 0.9.8d _with_ openssl-0.9.8d-tls-extensions.patch applied + (i.e., the default OpenSSL package does not include support for + extensions needed for EAP-FAST) +- internal TLSv1 implementation + +One of these libraries is needed when EAP-TLS, EAP-PEAP, EAP-TTLS, or +EAP-FAST support is enabled. WPA-PSK mode does not require this or EAPOL/EAP +implementation. A configuration file, .config, for compilation is +needed to enable IEEE 802.1X/EAPOL and EAP methods. Note that EAP-MD5, +EAP-GTC, EAP-OTP, and EAP-MSCHAPV2 cannot be used alone with WPA, so +they should only be enabled if testing the EAPOL/EAP state +machines. However, there can be used as inner authentication +algorithms with EAP-PEAP and EAP-TTLS. + +See Building and installing section below for more detailed +information about the wpa_supplicant build time configuration. + + + +WPA +--- + +The original security mechanism of IEEE 802.11 standard was not +designed to be strong and has proven to be insufficient for most +networks that require some kind of security. Task group I (Security) +of IEEE 802.11 working group (http://www.ieee802.org/11/) has worked +to address the flaws of the base standard and has in practice +completed its work in May 2004. The IEEE 802.11i amendment to the IEEE +802.11 standard was approved in June 2004 and published in July 2004. + +Wi-Fi Alliance (http://www.wi-fi.org/) used a draft version of the +IEEE 802.11i work (draft 3.0) to define a subset of the security +enhancements that can be implemented with existing wlan hardware. This +is called Wi-Fi Protected Access (WPA). This has now become a +mandatory component of interoperability testing and certification done +by Wi-Fi Alliance. Wi-Fi provides information about WPA at its web +site (http://www.wi-fi.org/OpenSection/protected_access.asp). + +IEEE 802.11 standard defined wired equivalent privacy (WEP) algorithm +for protecting wireless networks. WEP uses RC4 with 40-bit keys, +24-bit initialization vector (IV), and CRC32 to protect against packet +forgery. All these choices have proven to be insufficient: key space is +too small against current attacks, RC4 key scheduling is insufficient +(beginning of the pseudorandom stream should be skipped), IV space is +too small and IV reuse makes attacks easier, there is no replay +protection, and non-keyed authentication does not protect against bit +flipping packet data. + +WPA is an intermediate solution for the security issues. It uses +Temporal Key Integrity Protocol (TKIP) to replace WEP. TKIP is a +compromise on strong security and possibility to use existing +hardware. It still uses RC4 for the encryption like WEP, but with +per-packet RC4 keys. In addition, it implements replay protection, +keyed packet authentication mechanism (Michael MIC). + +Keys can be managed using two different mechanisms. WPA can either use +an external authentication server (e.g., RADIUS) and EAP just like +IEEE 802.1X is using or pre-shared keys without need for additional +servers. Wi-Fi calls these "WPA-Enterprise" and "WPA-Personal", +respectively. Both mechanisms will generate a master session key for +the Authenticator (AP) and Supplicant (client station). + +WPA implements a new key handshake (4-Way Handshake and Group Key +Handshake) for generating and exchanging data encryption keys between +the Authenticator and Supplicant. This handshake is also used to +verify that both Authenticator and Supplicant know the master session +key. These handshakes are identical regardless of the selected key +management mechanism (only the method for generating master session +key changes). + + + +IEEE 802.11i / WPA2 +------------------- + +The design for parts of IEEE 802.11i that were not included in WPA has +finished (May 2004) and this amendment to IEEE 802.11 was approved in +June 2004. Wi-Fi Alliance is using the final IEEE 802.11i as a new +version of WPA called WPA2. This includes, e.g., support for more +robust encryption algorithm (CCMP: AES in Counter mode with CBC-MAC) +to replace TKIP and optimizations for handoff (reduced number of +messages in initial key handshake, pre-authentication, and PMKSA caching). + + + +wpa_supplicant +-------------- + +wpa_supplicant is an implementation of the WPA Supplicant component, +i.e., the part that runs in the client stations. It implements WPA key +negotiation with a WPA Authenticator and EAP authentication with +Authentication Server. In addition, it controls the roaming and IEEE +802.11 authentication/association of the wlan driver. + +wpa_supplicant is designed to be a "daemon" program that runs in the +background and acts as the backend component controlling the wireless +connection. wpa_supplicant supports separate frontend programs and an +example text-based frontend, wpa_cli, is included with wpa_supplicant. + +Following steps are used when associating with an AP using WPA: + +- wpa_supplicant requests the kernel driver to scan neighboring BSSes +- wpa_supplicant selects a BSS based on its configuration +- wpa_supplicant requests the kernel driver to associate with the chosen + BSS +- If WPA-EAP: integrated IEEE 802.1X Supplicant completes EAP + authentication with the authentication server (proxied by the + Authenticator in the AP) +- If WPA-EAP: master key is received from the IEEE 802.1X Supplicant +- If WPA-PSK: wpa_supplicant uses PSK as the master session key +- wpa_supplicant completes WPA 4-Way Handshake and Group Key Handshake + with the Authenticator (AP) +- wpa_supplicant configures encryption keys for unicast and broadcast +- normal data packets can be transmitted and received + + + +Building and installing +----------------------- + +In order to be able to build wpa_supplicant, you will first need to +select which parts of it will be included. This is done by creating a +build time configuration file, .config, in the wpa_supplicant root +directory. Configuration options are text lines using following +format: CONFIG_