b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | EAP peer/server library and example program |
| 2 | Copyright (c) 2007, Jouni Malinen <j@w1.fi> |
| 3 | |
| 4 | This software may be distributed under the terms of the BSD license. |
| 5 | See the parent directory README for more details. |
| 6 | |
| 7 | |
| 8 | The interfaces of the EAP server/peer implementation are based on RFC |
| 9 | 4137 (EAP State Machines). This RFC is coordinated with the state |
| 10 | machines defined in IEEE 802.1X-2004. hostapd and wpa_supplicant |
| 11 | include implementation of the IEEE 802.1X EAPOL state machines and the |
| 12 | interface between them and EAP. However, the EAP implementation can be |
| 13 | used with other protocols, too, by providing a compatible interface |
| 14 | which maps the EAPOL<->EAP variables to another protocol. |
| 15 | |
| 16 | This directory contains an example showing how EAP peer and server |
| 17 | code from wpa_supplicant and hostapd can be used as a library. The |
| 18 | example program initializes both an EAP server and an EAP peer |
| 19 | entities and then runs through an EAP-PEAP/MSCHAPv2 authentication. |
| 20 | |
| 21 | eap_example_peer.c shows the initialization and glue code needed to |
| 22 | control the EAP peer implementation. eap_example_server.c does the |
| 23 | same for EAP server. eap_example.c is an example that ties in both the |
| 24 | EAP server and client parts to allow an EAP authentication to be |
| 25 | shown. |
| 26 | |
| 27 | In this example, the EAP messages are passed between the server and |
| 28 | the peer are passed by direct function calls within the same process. |
| 29 | In practice, server and peer functionalities would likely reside in |
| 30 | separate devices and the EAP messages would be transmitted between the |
| 31 | devices based on an external protocol. For example, in IEEE 802.11 |
| 32 | uses IEEE 802.1X EAPOL state machines to control the transmission of |
| 33 | EAP messages and WiMax supports optional PMK EAP authentication |
| 34 | mechanism that transmits EAP messages as defined in IEEE 802.16e. |
| 35 | |
| 36 | |
| 37 | The EAP library links in number of helper functions from src/utils and |
| 38 | src/crypto directories. Most of these are suitable as-is, but it may |
| 39 | be desirable to replace the debug output code in src/utils/wpa_debug.c |
| 40 | by dropping this file from the library and re-implementing the |
| 41 | functions there in a way that better fits in with the main |
| 42 | application. |