From 35aef052ff21baa52c4cec68b512986c21f70a48 Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 11 Jul 2007 15:48:36 +0000 Subject: Import of WPA supplicant 0.5.8 --- contrib/wpa_supplicant/COPYING | 4 +- contrib/wpa_supplicant/ChangeLog | 328 ++- contrib/wpa_supplicant/FREEBSD-Xlist | 19 +- contrib/wpa_supplicant/FREEBSD-upgrade | 8 +- contrib/wpa_supplicant/Makefile | 530 +++- contrib/wpa_supplicant/README | 102 +- contrib/wpa_supplicant/aes.c | 12 +- contrib/wpa_supplicant/aes.h | 25 + contrib/wpa_supplicant/aes_wrap.c | 377 +-- contrib/wpa_supplicant/aes_wrap.h | 2 +- contrib/wpa_supplicant/asn1.c | 205 ++ contrib/wpa_supplicant/asn1.h | 71 + contrib/wpa_supplicant/asn1_test.c | 210 ++ contrib/wpa_supplicant/base64.c | 32 +- contrib/wpa_supplicant/base64.h | 2 +- contrib/wpa_supplicant/bignum.c | 230 ++ contrib/wpa_supplicant/bignum.h | 38 + contrib/wpa_supplicant/build_config.h | 50 + contrib/wpa_supplicant/common.c | 479 +++- contrib/wpa_supplicant/common.h | 312 ++- contrib/wpa_supplicant/config.c | 713 +++-- contrib/wpa_supplicant/config.h | 82 +- contrib/wpa_supplicant/config_file.c | 365 +-- contrib/wpa_supplicant/config_none.c | 57 + contrib/wpa_supplicant/config_ssid.h | 121 +- contrib/wpa_supplicant/config_types.h | 14 + contrib/wpa_supplicant/config_winreg.c | 882 ++++++ contrib/wpa_supplicant/crypto.c | 87 +- contrib/wpa_supplicant/crypto.h | 308 ++- contrib/wpa_supplicant/crypto_cryptoapi.c | 801 ++++++ contrib/wpa_supplicant/crypto_gnutls.c | 14 +- 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 | 1401 ++++------ contrib/wpa_supplicant/ctrl_iface.h | 127 +- contrib/wpa_supplicant/ctrl_iface_dbus.c | 1043 +++++++ contrib/wpa_supplicant/ctrl_iface_dbus.h | 146 + contrib/wpa_supplicant/ctrl_iface_dbus_handlers.c | 1205 ++++++++ contrib/wpa_supplicant/ctrl_iface_dbus_handlers.h | 77 + contrib/wpa_supplicant/ctrl_iface_named_pipe.c | 834 ++++++ contrib/wpa_supplicant/ctrl_iface_udp.c | 561 ++++ contrib/wpa_supplicant/ctrl_iface_unix.c | 656 +++++ contrib/wpa_supplicant/dbus-wpa_supplicant.conf | 20 + contrib/wpa_supplicant/dbus_dict_helpers.c | 957 +++++++ contrib/wpa_supplicant/dbus_dict_helpers.h | 135 + contrib/wpa_supplicant/defconfig | 162 +- contrib/wpa_supplicant/defs.h | 13 +- contrib/wpa_supplicant/des.c | 476 ++++ contrib/wpa_supplicant/doc/code_structure.doxygen | 6 + contrib/wpa_supplicant/doc/ctrl_iface.doxygen | 30 +- .../wpa_supplicant/doc/docbook/wpa_background.8 | 4 +- .../wpa_supplicant/doc/docbook/wpa_background.sgml | 2 +- contrib/wpa_supplicant/doc/docbook/wpa_cli.8 | 15 +- contrib/wpa_supplicant/doc/docbook/wpa_cli.sgml | 14 +- .../wpa_supplicant/doc/docbook/wpa_passphrase.8 | 9 +- .../wpa_supplicant/doc/docbook/wpa_passphrase.sgml | 7 +- .../wpa_supplicant/doc/docbook/wpa_supplicant.8 | 17 +- .../doc/docbook/wpa_supplicant.conf.5 | 8 +- .../doc/docbook/wpa_supplicant.conf.sgml | 6 +- .../wpa_supplicant/doc/docbook/wpa_supplicant.sgml | 26 +- contrib/wpa_supplicant/doc/doxygen.fast | 2 +- contrib/wpa_supplicant/doc/doxygen.full | 4 +- contrib/wpa_supplicant/doc/eap.doxygen | 28 +- contrib/wpa_supplicant/doc/kerneldoc2doxygen.pl | 4 +- contrib/wpa_supplicant/doc/mainpage.doxygen | 2 +- contrib/wpa_supplicant/doc/porting.doxygen | 91 +- contrib/wpa_supplicant/doc/testing_tools.doxygen | 9 +- contrib/wpa_supplicant/driver.h | 208 +- contrib/wpa_supplicant/driver_hostap.h | 2 +- contrib/wpa_supplicant/driver_ndis.c | 1500 ++++++++-- contrib/wpa_supplicant/driver_ndis.h | 29 +- contrib/wpa_supplicant/driver_wired.c | 73 +- contrib/wpa_supplicant/drivers.c | 16 +- contrib/wpa_supplicant/eap.c | 1170 +++++--- contrib/wpa_supplicant/eap.h | 62 +- contrib/wpa_supplicant/eap_aka.c | 342 +-- contrib/wpa_supplicant/eap_defs.h | 39 +- contrib/wpa_supplicant/eap_fast.c | 736 ++--- contrib/wpa_supplicant/eap_gpsk.c | 583 ++++ contrib/wpa_supplicant/eap_gpsk_common.c | 441 +++ contrib/wpa_supplicant/eap_gpsk_common.h | 66 + contrib/wpa_supplicant/eap_gtc.c | 120 +- contrib/wpa_supplicant/eap_i.h | 84 +- contrib/wpa_supplicant/eap_leap.c | 148 +- contrib/wpa_supplicant/eap_md5.c | 89 +- contrib/wpa_supplicant/eap_methods.c | 500 ++++ contrib/wpa_supplicant/eap_methods.h | 87 + contrib/wpa_supplicant/eap_mschapv2.c | 796 +++--- contrib/wpa_supplicant/eap_otp.c | 81 +- contrib/wpa_supplicant/eap_pax.c | 117 +- contrib/wpa_supplicant/eap_pax_common.c | 20 +- contrib/wpa_supplicant/eap_pax_common.h | 31 +- contrib/wpa_supplicant/eap_peap.c | 291 +- contrib/wpa_supplicant/eap_psk.c | 169 +- contrib/wpa_supplicant/eap_psk_common.c | 25 +- contrib/wpa_supplicant/eap_psk_common.h | 29 +- 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 | 371 ++- contrib/wpa_supplicant/eap_sim_common.c | 316 ++- contrib/wpa_supplicant/eap_sim_common.h | 76 +- contrib/wpa_supplicant/eap_testing.txt | 14 +- contrib/wpa_supplicant/eap_tls.c | 183 +- contrib/wpa_supplicant/eap_tls_common.c | 579 ++-- contrib/wpa_supplicant/eap_tls_common.h | 11 +- contrib/wpa_supplicant/eap_tlv.c | 68 +- contrib/wpa_supplicant/eap_tlv.h | 24 +- contrib/wpa_supplicant/eap_ttls.c | 817 ++++-- contrib/wpa_supplicant/eap_ttls.h | 14 +- contrib/wpa_supplicant/eap_vendor_test.c | 198 ++ contrib/wpa_supplicant/eapol_sm.c | 328 ++- contrib/wpa_supplicant/eapol_sm.h | 12 +- contrib/wpa_supplicant/eapol_test.c | 293 +- contrib/wpa_supplicant/eloop.c | 332 ++- contrib/wpa_supplicant/eloop.h | 207 +- contrib/wpa_supplicant/eloop_none.c | 390 +++ contrib/wpa_supplicant/eloop_win.c | 604 ++++ contrib/wpa_supplicant/events.c | 253 +- contrib/wpa_supplicant/hostapd.h | 9 +- contrib/wpa_supplicant/includes.h | 57 + contrib/wpa_supplicant/l2_packet.h | 12 +- contrib/wpa_supplicant/libtommath.c | 2370 ++++++++++++++++ contrib/wpa_supplicant/main.c | 110 +- contrib/wpa_supplicant/md4.c | 282 ++ contrib/wpa_supplicant/md5.c | 53 +- contrib/wpa_supplicant/md5.h | 11 +- contrib/wpa_supplicant/mlme.c | 2897 ++++++++++++++++++++ contrib/wpa_supplicant/mlme.h | 104 + contrib/wpa_supplicant/ms_funcs.c | 245 +- contrib/wpa_supplicant/ms_funcs.h | 13 +- contrib/wpa_supplicant/nmake.mak | 188 ++ .../openssl-0.9.8d-tls-extensions.patch | 429 +++ .../openssl-0.9.8e-tls-extensions.patch | 353 +++ contrib/wpa_supplicant/os.h | 485 ++++ contrib/wpa_supplicant/os_internal.c | 441 +++ contrib/wpa_supplicant/os_none.c | 220 ++ contrib/wpa_supplicant/os_unix.c | 212 ++ contrib/wpa_supplicant/pcsc_funcs.c | 599 +++- contrib/wpa_supplicant/pcsc_funcs.h | 10 +- contrib/wpa_supplicant/pmksa_cache.c | 502 ++++ contrib/wpa_supplicant/pmksa_cache.h | 116 + contrib/wpa_supplicant/preauth.c | 530 +--- contrib/wpa_supplicant/preauth.h | 53 +- contrib/wpa_supplicant/preauth_test.c | 77 +- contrib/wpa_supplicant/radius.c | 295 +- contrib/wpa_supplicant/radius.h | 48 +- contrib/wpa_supplicant/radius_client.c | 427 +-- contrib/wpa_supplicant/radius_client.h | 22 +- contrib/wpa_supplicant/rc4.c | 7 +- contrib/wpa_supplicant/rc4.h | 2 +- contrib/wpa_supplicant/rsa.c | 359 +++ contrib/wpa_supplicant/rsa.h | 29 + contrib/wpa_supplicant/sha1.c | 470 +--- contrib/wpa_supplicant/sha1.h | 10 +- contrib/wpa_supplicant/sha256.c | 379 +++ contrib/wpa_supplicant/sha256.h | 27 + contrib/wpa_supplicant/state_machine.h | 144 + contrib/wpa_supplicant/tls.h | 182 +- contrib/wpa_supplicant/tls_gnutls.c | 772 +++++- contrib/wpa_supplicant/tls_internal.c | 326 +++ contrib/wpa_supplicant/tls_none.c | 219 +- contrib/wpa_supplicant/tls_openssl.c | 418 ++- contrib/wpa_supplicant/tls_schannel.c | 172 +- 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 | 93 +- contrib/wpa_supplicant/version.h | 2 +- contrib/wpa_supplicant/wpa.c | 2333 +++++++++++++--- contrib/wpa_supplicant/wpa.h | 51 +- contrib/wpa_supplicant/wpa_cli.c | 604 ++-- contrib/wpa_supplicant/wpa_common.h | 58 + contrib/wpa_supplicant/wpa_ctrl.c | 296 +- contrib/wpa_supplicant/wpa_ctrl.h | 4 +- .../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 | 200 +- 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 | 747 +++-- 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 | 290 +- .../wpa_supplicant/wpa_gui-qt4/userdatarequest.cpp | 100 + .../wpa_supplicant/wpa_gui-qt4/userdatarequest.h | 46 + .../wpa_supplicant/wpa_gui-qt4/userdatarequest.ui | 264 +- contrib/wpa_supplicant/wpa_gui-qt4/wpa_gui.pro | 31 +- 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 | 712 ++--- contrib/wpa_supplicant/wpa_gui-qt4/wpamsg.h | 42 +- contrib/wpa_supplicant/wpa_gui/eventhistory.ui.h | 4 +- contrib/wpa_supplicant/wpa_gui/networkconfig.ui.h | 92 +- contrib/wpa_supplicant/wpa_gui/scanresults.ui.h | 6 +- .../wpa_gui/setup-mingw-cross-compiling | 11 + contrib/wpa_supplicant/wpa_gui/wpa_gui.pro | 28 +- contrib/wpa_supplicant/wpa_gui/wpagui.ui | 7 + contrib/wpa_supplicant/wpa_gui/wpagui.ui.h | 88 +- contrib/wpa_supplicant/wpa_gui/wpamsg.h | 11 +- contrib/wpa_supplicant/wpa_i.h | 77 +- contrib/wpa_supplicant/wpa_passphrase.c | 9 +- contrib/wpa_supplicant/wpa_supplicant.c | 939 +++++-- contrib/wpa_supplicant/wpa_supplicant.conf | 118 +- contrib/wpa_supplicant/wpa_supplicant.h | 43 +- contrib/wpa_supplicant/wpa_supplicant_i.h | 226 +- contrib/wpa_supplicant/x509v3.c | 1596 +++++++++++ contrib/wpa_supplicant/x509v3.h | 154 ++ 211 files changed, 49709 insertions(+), 9560 deletions(-) create mode 100644 contrib/wpa_supplicant/aes.h create mode 100644 contrib/wpa_supplicant/asn1.c create mode 100644 contrib/wpa_supplicant/asn1.h create mode 100644 contrib/wpa_supplicant/asn1_test.c create mode 100644 contrib/wpa_supplicant/bignum.c create mode 100644 contrib/wpa_supplicant/bignum.h create mode 100644 contrib/wpa_supplicant/build_config.h create mode 100644 contrib/wpa_supplicant/config_none.c create mode 100644 contrib/wpa_supplicant/config_winreg.c create mode 100644 contrib/wpa_supplicant/crypto_cryptoapi.c create mode 100644 contrib/wpa_supplicant/crypto_internal.c create mode 100644 contrib/wpa_supplicant/crypto_libtomcrypt.c create mode 100644 contrib/wpa_supplicant/crypto_none.c create mode 100644 contrib/wpa_supplicant/ctrl_iface_dbus.c create mode 100644 contrib/wpa_supplicant/ctrl_iface_dbus.h create mode 100644 contrib/wpa_supplicant/ctrl_iface_dbus_handlers.c create mode 100644 contrib/wpa_supplicant/ctrl_iface_dbus_handlers.h create mode 100644 contrib/wpa_supplicant/ctrl_iface_named_pipe.c create mode 100644 contrib/wpa_supplicant/ctrl_iface_udp.c create mode 100644 contrib/wpa_supplicant/ctrl_iface_unix.c create mode 100644 contrib/wpa_supplicant/dbus-wpa_supplicant.conf create mode 100644 contrib/wpa_supplicant/dbus_dict_helpers.c create mode 100644 contrib/wpa_supplicant/dbus_dict_helpers.h create mode 100644 contrib/wpa_supplicant/des.c create mode 100644 contrib/wpa_supplicant/eap_gpsk.c create mode 100644 contrib/wpa_supplicant/eap_gpsk_common.c create mode 100644 contrib/wpa_supplicant/eap_gpsk_common.h create mode 100644 contrib/wpa_supplicant/eap_methods.c create mode 100644 contrib/wpa_supplicant/eap_methods.h create mode 100644 contrib/wpa_supplicant/eap_sake.c create mode 100644 contrib/wpa_supplicant/eap_sake_common.c create mode 100644 contrib/wpa_supplicant/eap_sake_common.h create mode 100644 contrib/wpa_supplicant/eap_vendor_test.c create mode 100644 contrib/wpa_supplicant/eloop_none.c create mode 100644 contrib/wpa_supplicant/eloop_win.c create mode 100644 contrib/wpa_supplicant/includes.h create mode 100644 contrib/wpa_supplicant/libtommath.c create mode 100644 contrib/wpa_supplicant/md4.c create mode 100644 contrib/wpa_supplicant/mlme.c create mode 100644 contrib/wpa_supplicant/mlme.h create mode 100644 contrib/wpa_supplicant/nmake.mak create mode 100644 contrib/wpa_supplicant/openssl-0.9.8d-tls-extensions.patch create mode 100644 contrib/wpa_supplicant/openssl-0.9.8e-tls-extensions.patch create mode 100644 contrib/wpa_supplicant/os.h create mode 100644 contrib/wpa_supplicant/os_internal.c create mode 100644 contrib/wpa_supplicant/os_none.c create mode 100644 contrib/wpa_supplicant/os_unix.c create mode 100644 contrib/wpa_supplicant/pmksa_cache.c create mode 100644 contrib/wpa_supplicant/pmksa_cache.h create mode 100644 contrib/wpa_supplicant/rsa.c create mode 100644 contrib/wpa_supplicant/rsa.h create mode 100644 contrib/wpa_supplicant/sha256.c create mode 100644 contrib/wpa_supplicant/sha256.h create mode 100644 contrib/wpa_supplicant/state_machine.h create mode 100644 contrib/wpa_supplicant/tls_internal.c create mode 100644 contrib/wpa_supplicant/tlsv1_client.c create mode 100644 contrib/wpa_supplicant/tlsv1_client.h create mode 100644 contrib/wpa_supplicant/tlsv1_common.c create mode 100644 contrib/wpa_supplicant/tlsv1_common.h create mode 100644 contrib/wpa_supplicant/wpa_common.h create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/eventhistory.cpp create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/eventhistory.h create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/networkconfig.cpp create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/networkconfig.h create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/scanresults.cpp create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/scanresults.h create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/userdatarequest.cpp create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/userdatarequest.h create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/wpagui.cpp create mode 100644 contrib/wpa_supplicant/wpa_gui-qt4/wpagui.h create mode 100755 contrib/wpa_supplicant/wpa_gui/setup-mingw-cross-compiling create mode 100644 contrib/wpa_supplicant/x509v3.c create mode 100644 contrib/wpa_supplicant/x509v3.h diff --git a/contrib/wpa_supplicant/COPYING b/contrib/wpa_supplicant/COPYING index 60549be..14f5453 100644 --- a/contrib/wpa_supplicant/COPYING +++ b/contrib/wpa_supplicant/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 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. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 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. diff --git a/contrib/wpa_supplicant/ChangeLog b/contrib/wpa_supplicant/ChangeLog index 4ed9e26..5bf3660 100644 --- a/contrib/wpa_supplicant/ChangeLog +++ b/contrib/wpa_supplicant/ChangeLog @@ -1,32 +1,334 @@ ChangeLog for wpa_supplicant -2006-02-08 - v0.4.8 +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 - * fixed EAP-SIM and EAP-AKA pseudonym and fast re-authentication to - decrypt AT_ENCR_DATA attributes correctly * 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 - * fixed cygwin build + * 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) - * fixed TLS library deinitialization after RSN pre-authentication not - to disable TLS library for normal authentication - * 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) - * do not try to use USIM APDUs when initializing PC/SC for SIM card - access for a network that has not enabled EAP-AKA + * 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 diff --git a/contrib/wpa_supplicant/FREEBSD-Xlist b/contrib/wpa_supplicant/FREEBSD-Xlist index d2f1697..d9522be 100644 --- a/contrib/wpa_supplicant/FREEBSD-Xlist +++ b/contrib/wpa_supplicant/FREEBSD-Xlist @@ -7,16 +7,27 @@ driver_bsd.c driver_hostap.c driver_ipw.c driver_madwifi.c -driver_ndis.c -driver_ndis.h -driver_ndis_.c driver_ndiswrapper.c +driver_ndis_.c driver_prism54.c driver_test.c driver_wext.c driver_wext.h -l2_packet.c +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/contrib/wpa_supplicant/FREEBSD-upgrade b/contrib/wpa_supplicant/FREEBSD-upgrade index f8ef0f0..88a4b18 100644 --- a/contrib/wpa_supplicant/FREEBSD-upgrade +++ b/contrib/wpa_supplicant/FREEBSD-upgrade @@ -6,12 +6,12 @@ WPA Supplicant For the import files and directories were pruned by: - tar -X FREEBSD-Xlist -zxf wpa_supplicant-0.3.8.tar.gz + tar -X FREEBSD-Xlist -zxf wpa_supplicant-0.5.8.tar.gz then imported by: - cvs import -m 'Import of WPA supplicant 0.3.8' \ - src/contrib/wpa_supplicant MALINEN v0_3_8 + 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 @@ -21,4 +21,4 @@ All local changes should be submitted to Jouni Malinen for inclusion in the next vendor release. sam@FreeBSD.org -4-June-2005 +11-July-2007 diff --git a/contrib/wpa_supplicant/Makefile b/contrib/wpa_supplicant/Makefile index d8fd3ed..f29eb69 100644 --- a/contrib/wpa_supplicant/Makefile +++ b/contrib/wpa_supplicant/Makefile @@ -11,7 +11,7 @@ CFLAGS += -I. -I../utils -I../hostapd ALL=wpa_supplicant wpa_passphrase wpa_cli -all: verify_config $(ALL) +all: verify_config $(ALL) dynamic_eap_methods verify_config: @if [ ! -r .config ]; then \ @@ -36,13 +36,36 @@ install: all for i in $(ALL); do cp $$i $(DESTDIR)/usr/local/sbin/$$i; done OBJS = config.o \ - eloop.o common.o md5.o \ - rc4.o sha1.o -OBJS_p = wpa_passphrase.o sha1.o md5.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 @@ -56,6 +79,14 @@ 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 @@ -111,15 +142,21 @@ endif ifdef CONFIG_DRIVER_BSD CFLAGS += -DCONFIG_DRIVER_BSD OBJS_d += driver_bsd.o -CONFIG_DNET_PCAP=y -CONFIG_L2_FREEBSD=y +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 -CONFIG_DNET_PCAP=y +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 @@ -132,116 +169,176 @@ CFLAGS += -DCONFIG_DRIVER_TEST OBJS_d += driver_test.o endif -ifdef CONFIG_DNET_PCAP -CFLAGS += -DUSE_DNET_PCAP +ifndef CONFIG_L2_PACKET +CONFIG_L2_PACKET=linux +endif + +OBJS += l2_packet_$(CONFIG_L2_PACKET).o + +ifeq ($(CONFIG_L2_PACKET), pcap) ifdef CONFIG_WINPCAP -OBJS += l2_packet_pcap.o CFLAGS += -DCONFIG_WINPCAP LIBS += -lwpcap -lpacket LIBS_w += -lwpcap else -ifdef CONFIG_L2_FREEBSD -OBJS += l2_packet_freebsd.o -LIBS += -lpcap -else -OBJS += l2_packet_pcap.o LIBS += -ldnet -lpcap endif endif -else -OBJS += l2_packet_linux.o + +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_EAP_MSCHAPV2=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_EAP_MD5=y CONFIG_IEEE8021X_EAPOL=y endif ifdef CONFIG_EAP_MD5 -# EAP-MD5 (also used by EAP-TTLS) +# 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 (also used by EAP-PEAP) +# 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 (also used by EAP-PEAP) +# 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 @@ -259,22 +356,75 @@ 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 +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 @@ -282,18 +432,38 @@ ifdef CONFIG_PCSC 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 @@ -302,16 +472,45 @@ 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 -# Using OpenSSL for crypto at the moment; to be replaced -LIBS += -lcrypto -LIBS_p += -lcrypto +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 -ifndef CONFIG_L2_FREEBSD +ifneq ($(CONFIG_L2_PACKET), freebsd) LIBS += -ldl endif endif @@ -345,24 +544,85 @@ LIBS += -lgcrypt LIBS_p += -lgcrypt endif ifeq ($(CONFIG_TLS), schannel) -# Using OpenSSL for crypto at the moment; to be replaced -LIBS += -lcrypto -LIBS_p += -lcrypto +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) -# Using OpenSSL for crypto at the moment; to be replaced -OBJS += crypto.o -OBJS_p += crypto.o +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 @@ -371,8 +631,31 @@ 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 -OBJS += ctrl_iface.o +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 +LIBS += `pkg-config --libs dbus-1` +CFLAGS += `pkg-config --cflags dbus-1` endif ifdef CONFIG_READLINE @@ -381,13 +664,20 @@ LIBS_c += -lncurses -lreadline endif ifdef CONFIG_NATIVE_WINDOWS -CFLAGS += -DCONFIG_NATIVE_WINDOWS -DCONFIG_CTRL_IFACE_UDP +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 @@ -395,53 +685,117 @@ ifdef CONFIG_IPV6 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 +OBJS += wpa.o preauth.o pmksa_cache.o NEED_AES=y else -CFLAGS += -DCONFIG_NO_WPA +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 + OBJS += wpa_supplicant.o events.o OBJS_t := $(OBJS) eapol_test.o radius.o radius_client.o OBJS_t2 := $(OBJS) preauth_test.o -OBJS += main.o drivers.o $(OBJS_d) +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) - $(CC) -o wpa_supplicant $(OBJS) $(LIBS) + $(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) eapol_test: .config $(OBJS_t) - $(CC) -o eapol_test $(OBJS_t) $(LIBS) + $(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS) preauth_test: .config $(OBJS_t2) - $(CC) -o preauth_test $(OBJS_t2) $(LIBS) + $(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS) wpa_passphrase: $(OBJS_p) - $(CC) -o wpa_passphrase $(OBJS_p) $(LIBS_p) + $(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) wpa_cli: $(OBJS_c) - $(CC) -o wpa_cli $(OBJS_c) $(LIBS_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 - $(CC) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w) - -# parameters for Microsoft Visual C++ Toolkit 2003 compiler -CL=cl -CLDIR=C:\Program Files\Microsoft Visual C++ Toolkit 2003 -PSDKDIR=C:\Program Files\Microsoft Platform SDK for Windows XP SP2 -CLFLAGS=-O -CLLIBS=wbemuuid.lib libcmt.lib kernel32.lib uuid.lib ole32.lib oleaut32.lib \ - ws2_32.lib - -ndis_events: ndis_events.cpp - INCLUDE="$(CLDIR)\include;$(PSDKDIR)\Include" \ - LIB="$(CLDIR)\lib;$(PSDKDIR)\Lib" \ - $(CL) $(CLFLAGS) -o ndis_events.exe ndis_events.cpp \ - /link -nodefaultlib $(CLLIBS) + $(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 $< $@ @@ -465,39 +819,55 @@ wpa_gui/Makefile: wpa_gui: wpa_gui/Makefile $(MAKE) -C wpa_gui -TEST_SRC_MS_FUNCS = ms_funcs.c crypto.c sha1.c md5.c -test-ms_funcs: $(TEST_SRC_MS_FUNCS) - $(CC) -o test-ms_funcs -Wall -Werror $(TEST_SRC_MS_FUNCS) \ - -DTEST_MAIN_MS_FUNCS -lcrypto -I../hostapd -I. +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_SRC_SHA1 = sha1.c -test-sha1: $(TEST_SRC_SHA1) - $(CC) -o test-sha1 -Wall -Werror $(TEST_SRC_SHA1) \ - -DTEST_MAIN -I../hostad -I. +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_SRC_AES_WRAP = aes_wrap.c -test-aes_wrap: $(TEST_SRC_AES_WRAP) - $(CC) -o test-aes_wrap -Wall -Werror $(TEST_SRC_AES_WRAP) \ - -DTEST_MAIN -I../hostad -I. - ./test-aes_wrap - rm test-aes_wrap - -TEST_SRC_EAP_SIM_COMMON = eap_sim_common.c sha1.c md5.c \ - aes_wrap.c common.c -test-eap_sim_common: $(TEST_SRC_EAP_SIM_COMMON) - $(CC) -o test-eap_sim_common -Wall -Werror $(TEST_SRC_EAP_SIM_COMMON) \ - -DTEST_MAIN_EAP_SIM_COMMON -I../hostapd -I. +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 -tests: test-ms_funcs test-sha1 test-aes_wrap 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 $(ALL) $(WINALL) + rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) %.eps: %.fig fig2dev -L eps $*.fig $*.eps diff --git a/contrib/wpa_supplicant/README b/contrib/wpa_supplicant/README index 831756b..be07574 100644 --- a/contrib/wpa_supplicant/README +++ b/contrib/wpa_supplicant/README @@ -1,8 +1,7 @@ WPA Supplicant ============== -Copyright (c) 2003-2006, Jouni Malinen and -contributors +Copyright (c) 2003-2007, Jouni Malinen and contributors All Rights Reserved. This program is dual-licensed under both the GPL version 2 and BSD @@ -26,13 +25,13 @@ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +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 under the terms of BSD -license: +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 @@ -90,6 +89,8 @@ Supported WPA/IEEE 802.11i features: * 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 @@ -103,6 +104,20 @@ Supported WPA/IEEE 802.11i features: * 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 @@ -114,6 +129,14 @@ Current hardware/software requirements: - 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'). @@ -191,18 +214,27 @@ Optional libraries for layer2 packet processing: 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_DNET_PCAP=y into +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. +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, assumed to work with most - relatively recent versions; this is likely to be available with most - distributions, http://www.openssl.org/) - -This library is only needed when EAP-TLS, EAP-PEAP, or EAP-TTLS -support is enabled. WPA-PSK mode does not require this or EAPOL/EAP +- 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 @@ -321,8 +353,8 @@ 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_