/**
\page code_structure Structure of the source code

[ \ref _wpa_supplicant_core "wpa_supplicant core functionality" |
\ref generic_helper_func "Generic helper functions" |
\ref crypto_func "Cryptographic functions" |
\ref tls_func "TLS library" |
\ref configuration "Configuration" |
\ref ctrl_iface "Control interface" |
\ref wpa_code "WPA supplicant" |
\ref eap_peer "EAP peer" |
\ref eapol_supp "EAPOL supplicant" |
\ref win_port "Windows port" |
\ref test_programs "Test programs" ]

wpa_supplicant implementation is divided into number of independent
modules. Core code includes functionality for controlling the network
selection, association, and configuration. Independent modules include
WPA code (key handshake, PMKSA caching, pre-authentication), EAPOL
state machine, and EAP state machine and methods. In addition, there
are number of separate files for generic helper functions.

Both WPA and EAPOL/EAP state machines can be used separately in other
programs than wpa_supplicant. As an example, the included test
programs eapol_test and preauth_test are using these modules.

\ref driver_wrapper "Driver interface API" is defined in \ref driver.h and
all hardware/driver dependent functionality is implemented in
driver_*.c.


\section _wpa_supplicant_core wpa_supplicant core functionality

\ref wpa_supplicant.c
	Program initialization, main control loop

\ref wpa_supplicant/main.c
	main() for UNIX-like operating systems and MinGW (Windows); this
	uses command line arguments to configure wpa_supplicant

\ref events.c
	Driver event processing; \ref wpa_supplicant_event() and related functions

\ref wpa_supplicant_i.h
	Internal definitions for wpa_supplicant core; should not be
	included into independent modules


\section generic_helper_func Generic helper functions

wpa_supplicant uses generic helper functions some of which are shared
with with hostapd. The following C files are currently used:

\ref eloop.c and \ref eloop.h
	Event loop (select() loop with registerable timeouts, socket read
	callbacks, and signal callbacks)

\ref common.c and \ref common.h
	Common helper functions

\ref defs.h
	Definitions shared by multiple files

\ref l2_packet.h, \ref l2_packet_linux.c, and \ref l2_packet_pcap.c
	Layer 2 (link) access wrapper (includes native Linux implementation
	and wrappers for libdnet/libpcap). A new l2_packet implementation
	may need to be added when porting to new operating systems that are
	not supported by libdnet/libpcap. Makefile can be used to select which
	l2_packet implementation is included. \ref l2_packet_linux.c uses Linux
	packet sockets and \ref l2_packet_pcap.c has a more portable version using
	libpcap and libdnet.

\ref pcsc_funcs.c and \ref pcsc_funcs.h
	Wrapper for PC/SC lite SIM and smart card readers

\ref priv_netlink.h
	Private version of netlink definitions from Linux kernel header files;
	this could be replaced with C library header file once suitable
	version becomes commonly available

\ref version.h
	Version number definitions


\section crypto_func Cryptographic functions

\ref md5.c and \ref md5.h
	MD5 (replaced with a crypto library if TLS support is included)
	HMAC-MD5 (keyed checksum for message authenticity validation)

\ref rc4.c and \ref rc4.h
	RC4 (broadcast/default key encryption)

\ref sha1.c and \ref sha1.h
	SHA-1 (replaced with a crypto library if TLS support is included)
	HMAC-SHA-1 (keyed checksum for message authenticity validation)
	PRF-SHA-1 (pseudorandom (key/nonce generation) function)
	PBKDF2-SHA-1 (ASCII passphrase to shared secret)
	T-PRF (for EAP-FAST)
	TLS-PRF (RFC 2246)

\ref sha256.c and \ref sha256.h
	SHA-256 (replaced with a crypto library if TLS support is included)

\ref aes-wrap.c, \ref aes_wrap.h, \ref aes.c
	AES (replaced with a crypto library if TLS support is included),
	AES Key Wrap Algorithm with 128-bit KEK, RFC3394 (broadcast/default
	key encryption),
	One-Key CBC MAC (OMAC1) hash with AES-128,
	AES-128 CTR mode encryption,
	AES-128 EAX mode encryption/decryption,
	AES-128 CBC

\ref crypto.h
	Definition of crypto library wrapper

\ref crypto_openssl.c
	Wrapper functions for libcrypto (OpenSSL)

\ref crypto_internal.c
	Wrapper functions for internal crypto implementation

\ref crypto_gnutls.c
	Wrapper functions for libgcrypt (used by GnuTLS)

\ref ms_funcs.c and \ref ms_funcs.h
	Helper functions for MSCHAPV2 and LEAP

\ref tls.h
	Definition of TLS library wrapper

\ref tls_none.c
	Dummy implementation of TLS library wrapper for cases where TLS
	functionality is not included.

\ref tls_openssl.c
	TLS library wrapper for openssl

\ref tls_internal.c
	TLS library for internal TLS implementation

\ref tls_gnutls.c
	TLS library wrapper for GnuTLS


\section tls_func TLS library

\ref asn1.c and \ref asn1.h
	ASN.1 DER parsing

\ref bignum.c and \ref bignum.h
	Big number math

\ref rsa.c and \ref rsa.h
	RSA

\ref x509v3.c and \ref x509v3.h
	X.509v3 certificate parsing and processing

\ref tlsv1_client.c, \ref tlsv1_client.h
	TLSv1 client (RFC 2246)

\ref tlsv1_client_i.h
	Internal structures for TLSv1 client

\ref tlsv1_client_read.c
	TLSv1 client: read handshake messages

\ref tlsv1_client_write.c
	TLSv1 client: write handshake messages

\ref tlsv1_common.c and \ref tlsv1_common.h
	Common TLSv1 routines and definitions

\ref tlsv1_cred.c and \ref tlsv1_cred.h
	TLSv1 credentials

\ref tlsv1_record.c and \ref tlsv1_record.h
	TLSv1 record protocol


\section configuration Configuration

\ref config_ssid.h
	Definition of per network configuration items

\ref config.h
	Definition of the wpa_supplicant configuration

\ref config.c
	Configuration parser and common functions

\ref wpa_supplicant/config_file.c
	Configuration backend for text files (e.g., wpa_supplicant.conf)

\ref config_winreg.c
	Configuration backend for Windows registry


\section ctrl_iface Control interface

wpa_supplicant has a \ref ctrl_iface_page "control interface"
that can be used to get status
information and manage operations from external programs. An example
command line interface (wpa_cli) and GUI (wpa_gui) for this interface
are included in the wpa_supplicant distribution.

\ref wpa_supplicant/ctrl_iface.c and \ref wpa_supplicant/ctrl_iface.h
	wpa_supplicant-side of the control interface

\ref ctrl_iface_unix.c
	UNIX domain sockets -based control interface backend

\ref ctrl_iface_udp.c
	UDP sockets -based control interface backend

\ref ctrl_iface_named_pipe.c
	Windows named pipes -based control interface backend

\ref wpa_ctrl.c and \ref wpa_ctrl.h
	Library functions for external programs to provide access to the
	wpa_supplicant control interface

\ref wpa_cli.c
	Example program for using wpa_supplicant control interface


\section wpa_code WPA supplicant

\ref wpa.c and \ref wpa.h
	WPA state machine and 4-Way/Group Key Handshake processing

\ref preauth.c and \ref preauth.h
	PMKSA caching and pre-authentication (RSN/WPA2)

\ref wpa_i.h
	Internal definitions for WPA code; not to be included to other modules.

\section eap_peer EAP peer

\ref eap_peer_module "EAP peer implementation" is a separate module that
can be used by other programs than just wpa_supplicant.

\ref eap.c and \ref eap.h
	EAP state machine and method interface

\ref eap_defs.h
	Common EAP definitions

\ref eap_i.h
	Internal definitions for EAP state machine and EAP methods; not to be
	included in other modules

\ref eap_sim_common.c and \ref eap_sim_common.h
	Common code for EAP-SIM and EAP-AKA

\ref eap_tls_common.c and \ref eap_tls_common.h
	Common code for EAP-PEAP, EAP-TTLS, and EAP-FAST

\ref eap_ttls.c and \ref eap_ttls.h
	EAP-TTLS

\ref eap_pax.c, \ref eap_pax_common.h, \ref eap_pax_common.c
	EAP-PAX

\ref eap_psk.c, \ref eap_psk_common.h, \ref eap_psk_common.c
	EAP-PSK (note: this is not needed for WPA-PSK)

\ref eap_sake.c, \ref eap_sake_common.h, \ref eap_sake_common.c
	EAP-SAKE

\ref eap_gpsk.c, \ref eap_gpsk_common.h, \ref eap_gpsk_common.c
	EAP-GPSK

\ref eap_aka.c, \ref eap_fast.c, \ref eap_gtc.c, \ref eap_leap.c,
\ref eap_md5.c, \ref eap_mschapv2.c, \ref eap_otp.c, \ref eap_peap.c,
\ref eap_sim.c, \ref eap_tls.c
	Other EAP method implementations


\section eapol_supp EAPOL supplicant

\ref eapol_supp_sm.c and \ref eapol_supp_sm.h
	EAPOL supplicant state machine and IEEE 802.1X processing


\section win_port Windows port

\ref ndis_events.c
	Code for receiving NdisMIndicateStatus() events and delivering them to
	wpa_supplicant \ref driver_ndis.c in more easier to use form

\ref win_if_list.c
	External program for listing current network interface


\section test_programs Test programs

\ref radius_client.c and \ref radius_client.h
	RADIUS authentication client implementation for eapol_test

\ref radius.c and \ref radius.h
	RADIUS message processing for eapol_test

\ref eapol_test.c
	Standalone EAP testing tool with integrated RADIUS authentication
	client

\ref preauth_test.c
	Standalone RSN pre-authentication tool

\ref wpa_passphrase.c
	WPA ASCII passphrase to PSK conversion

*/
