18dbcf02cSchristos /* 28dbcf02cSchristos * EAP method registration 38dbcf02cSchristos * Copyright (c) 2004-2009, Jouni Malinen <j@w1.fi> 48dbcf02cSchristos * 562a52023Schristos * This software may be distributed under the terms of the BSD license. 662a52023Schristos * See README for more details. 78dbcf02cSchristos */ 88dbcf02cSchristos 98dbcf02cSchristos #include "includes.h" 108dbcf02cSchristos 118dbcf02cSchristos #include "common.h" 128dbcf02cSchristos #include "eap_peer/eap_methods.h" 138dbcf02cSchristos #include "eap_server/eap_methods.h" 1462a52023Schristos #include "wpa_supplicant_i.h" 158dbcf02cSchristos 168dbcf02cSchristos 178dbcf02cSchristos /** 188dbcf02cSchristos * eap_register_methods - Register statically linked EAP methods 198dbcf02cSchristos * Returns: 0 on success, -1 or -2 on failure 208dbcf02cSchristos * 218dbcf02cSchristos * This function is called at program initialization to register all EAP 228dbcf02cSchristos * methods that were linked in statically. 238dbcf02cSchristos */ eap_register_methods(void)248dbcf02cSchristosint eap_register_methods(void) 258dbcf02cSchristos { 268dbcf02cSchristos int ret = 0; 278dbcf02cSchristos 288dbcf02cSchristos #ifdef EAP_MD5 298dbcf02cSchristos if (ret == 0) 308dbcf02cSchristos ret = eap_peer_md5_register(); 318dbcf02cSchristos #endif /* EAP_MD5 */ 328dbcf02cSchristos 338dbcf02cSchristos #ifdef EAP_TLS 348dbcf02cSchristos if (ret == 0) 358dbcf02cSchristos ret = eap_peer_tls_register(); 368dbcf02cSchristos #endif /* EAP_TLS */ 378dbcf02cSchristos 3862a52023Schristos #ifdef EAP_UNAUTH_TLS 3962a52023Schristos if (ret == 0) 4062a52023Schristos ret = eap_peer_unauth_tls_register(); 4162a52023Schristos #endif /* EAP_UNAUTH_TLS */ 4262a52023Schristos 4336d97821Schristos #ifdef EAP_TLS 4436d97821Schristos #ifdef CONFIG_HS20 4536d97821Schristos if (ret == 0) 4636d97821Schristos ret = eap_peer_wfa_unauth_tls_register(); 4736d97821Schristos #endif /* CONFIG_HS20 */ 4836d97821Schristos #endif /* EAP_TLS */ 4936d97821Schristos 508dbcf02cSchristos #ifdef EAP_MSCHAPv2 518dbcf02cSchristos if (ret == 0) 528dbcf02cSchristos ret = eap_peer_mschapv2_register(); 538dbcf02cSchristos #endif /* EAP_MSCHAPv2 */ 548dbcf02cSchristos 558dbcf02cSchristos #ifdef EAP_PEAP 568dbcf02cSchristos if (ret == 0) 578dbcf02cSchristos ret = eap_peer_peap_register(); 588dbcf02cSchristos #endif /* EAP_PEAP */ 598dbcf02cSchristos 608dbcf02cSchristos #ifdef EAP_TTLS 618dbcf02cSchristos if (ret == 0) 628dbcf02cSchristos ret = eap_peer_ttls_register(); 638dbcf02cSchristos #endif /* EAP_TTLS */ 648dbcf02cSchristos 658dbcf02cSchristos #ifdef EAP_GTC 668dbcf02cSchristos if (ret == 0) 678dbcf02cSchristos ret = eap_peer_gtc_register(); 688dbcf02cSchristos #endif /* EAP_GTC */ 698dbcf02cSchristos 708dbcf02cSchristos #ifdef EAP_OTP 718dbcf02cSchristos if (ret == 0) 728dbcf02cSchristos ret = eap_peer_otp_register(); 738dbcf02cSchristos #endif /* EAP_OTP */ 748dbcf02cSchristos 758dbcf02cSchristos #ifdef EAP_SIM 768dbcf02cSchristos if (ret == 0) 778dbcf02cSchristos ret = eap_peer_sim_register(); 788dbcf02cSchristos #endif /* EAP_SIM */ 798dbcf02cSchristos 808dbcf02cSchristos #ifdef EAP_LEAP 818dbcf02cSchristos if (ret == 0) 828dbcf02cSchristos ret = eap_peer_leap_register(); 838dbcf02cSchristos #endif /* EAP_LEAP */ 848dbcf02cSchristos 858dbcf02cSchristos #ifdef EAP_PSK 868dbcf02cSchristos if (ret == 0) 878dbcf02cSchristos ret = eap_peer_psk_register(); 888dbcf02cSchristos #endif /* EAP_PSK */ 898dbcf02cSchristos 908dbcf02cSchristos #ifdef EAP_AKA 918dbcf02cSchristos if (ret == 0) 928dbcf02cSchristos ret = eap_peer_aka_register(); 938dbcf02cSchristos #endif /* EAP_AKA */ 948dbcf02cSchristos 958dbcf02cSchristos #ifdef EAP_AKA_PRIME 968dbcf02cSchristos if (ret == 0) 978dbcf02cSchristos ret = eap_peer_aka_prime_register(); 988dbcf02cSchristos #endif /* EAP_AKA_PRIME */ 998dbcf02cSchristos 1008dbcf02cSchristos #ifdef EAP_FAST 1018dbcf02cSchristos if (ret == 0) 1028dbcf02cSchristos ret = eap_peer_fast_register(); 1038dbcf02cSchristos #endif /* EAP_FAST */ 1048dbcf02cSchristos 105*0d69f216Schristos #ifdef EAP_TEAP 106*0d69f216Schristos if (ret == 0) 107*0d69f216Schristos ret = eap_peer_teap_register(); 108*0d69f216Schristos #endif /* EAP_TEAP */ 109*0d69f216Schristos 1108dbcf02cSchristos #ifdef EAP_PAX 1118dbcf02cSchristos if (ret == 0) 1128dbcf02cSchristos ret = eap_peer_pax_register(); 1138dbcf02cSchristos #endif /* EAP_PAX */ 1148dbcf02cSchristos 1158dbcf02cSchristos #ifdef EAP_SAKE 1168dbcf02cSchristos if (ret == 0) 1178dbcf02cSchristos ret = eap_peer_sake_register(); 1188dbcf02cSchristos #endif /* EAP_SAKE */ 1198dbcf02cSchristos 1208dbcf02cSchristos #ifdef EAP_GPSK 1218dbcf02cSchristos if (ret == 0) 1228dbcf02cSchristos ret = eap_peer_gpsk_register(); 1238dbcf02cSchristos #endif /* EAP_GPSK */ 1248dbcf02cSchristos 1258dbcf02cSchristos #ifdef EAP_WSC 1268dbcf02cSchristos if (ret == 0) 1278dbcf02cSchristos ret = eap_peer_wsc_register(); 1288dbcf02cSchristos #endif /* EAP_WSC */ 1298dbcf02cSchristos 1308dbcf02cSchristos #ifdef EAP_IKEV2 1318dbcf02cSchristos if (ret == 0) 1328dbcf02cSchristos ret = eap_peer_ikev2_register(); 1338dbcf02cSchristos #endif /* EAP_IKEV2 */ 1348dbcf02cSchristos 1358dbcf02cSchristos #ifdef EAP_VENDOR_TEST 1368dbcf02cSchristos if (ret == 0) 1378dbcf02cSchristos ret = eap_peer_vendor_test_register(); 1388dbcf02cSchristos #endif /* EAP_VENDOR_TEST */ 1398dbcf02cSchristos 1408dbcf02cSchristos #ifdef EAP_TNC 1418dbcf02cSchristos if (ret == 0) 1428dbcf02cSchristos ret = eap_peer_tnc_register(); 1438dbcf02cSchristos #endif /* EAP_TNC */ 1448dbcf02cSchristos 14542669be3Schristos #ifdef EAP_PWD 14642669be3Schristos if (ret == 0) 14742669be3Schristos ret = eap_peer_pwd_register(); 14842669be3Schristos #endif /* EAP_PWD */ 1498dbcf02cSchristos 15036d97821Schristos #ifdef EAP_EKE 15136d97821Schristos if (ret == 0) 15236d97821Schristos ret = eap_peer_eke_register(); 15336d97821Schristos #endif /* EAP_EKE */ 15436d97821Schristos 1558dbcf02cSchristos #ifdef EAP_SERVER_IDENTITY 1568dbcf02cSchristos if (ret == 0) 1578dbcf02cSchristos ret = eap_server_identity_register(); 1588dbcf02cSchristos #endif /* EAP_SERVER_IDENTITY */ 1598dbcf02cSchristos 1608dbcf02cSchristos #ifdef EAP_SERVER_MD5 1618dbcf02cSchristos if (ret == 0) 1628dbcf02cSchristos ret = eap_server_md5_register(); 1638dbcf02cSchristos #endif /* EAP_SERVER_MD5 */ 1648dbcf02cSchristos 1658dbcf02cSchristos #ifdef EAP_SERVER_TLS 1668dbcf02cSchristos if (ret == 0) 1678dbcf02cSchristos ret = eap_server_tls_register(); 1688dbcf02cSchristos #endif /* EAP_SERVER_TLS */ 1698dbcf02cSchristos 17062a52023Schristos #ifdef EAP_SERVER_UNAUTH_TLS 17162a52023Schristos if (ret == 0) 17262a52023Schristos ret = eap_server_unauth_tls_register(); 17362a52023Schristos #endif /* EAP_SERVER_UNAUTH_TLS */ 17462a52023Schristos 1758dbcf02cSchristos #ifdef EAP_SERVER_MSCHAPV2 1768dbcf02cSchristos if (ret == 0) 1778dbcf02cSchristos ret = eap_server_mschapv2_register(); 1788dbcf02cSchristos #endif /* EAP_SERVER_MSCHAPV2 */ 1798dbcf02cSchristos 1808dbcf02cSchristos #ifdef EAP_SERVER_PEAP 1818dbcf02cSchristos if (ret == 0) 1828dbcf02cSchristos ret = eap_server_peap_register(); 1838dbcf02cSchristos #endif /* EAP_SERVER_PEAP */ 1848dbcf02cSchristos 1858dbcf02cSchristos #ifdef EAP_SERVER_TLV 1868dbcf02cSchristos if (ret == 0) 1878dbcf02cSchristos ret = eap_server_tlv_register(); 1888dbcf02cSchristos #endif /* EAP_SERVER_TLV */ 1898dbcf02cSchristos 1908dbcf02cSchristos #ifdef EAP_SERVER_GTC 1918dbcf02cSchristos if (ret == 0) 1928dbcf02cSchristos ret = eap_server_gtc_register(); 1938dbcf02cSchristos #endif /* EAP_SERVER_GTC */ 1948dbcf02cSchristos 1958dbcf02cSchristos #ifdef EAP_SERVER_TTLS 1968dbcf02cSchristos if (ret == 0) 1978dbcf02cSchristos ret = eap_server_ttls_register(); 1988dbcf02cSchristos #endif /* EAP_SERVER_TTLS */ 1998dbcf02cSchristos 2008dbcf02cSchristos #ifdef EAP_SERVER_SIM 2018dbcf02cSchristos if (ret == 0) 2028dbcf02cSchristos ret = eap_server_sim_register(); 2038dbcf02cSchristos #endif /* EAP_SERVER_SIM */ 2048dbcf02cSchristos 2058dbcf02cSchristos #ifdef EAP_SERVER_AKA 2068dbcf02cSchristos if (ret == 0) 2078dbcf02cSchristos ret = eap_server_aka_register(); 2088dbcf02cSchristos #endif /* EAP_SERVER_AKA */ 2098dbcf02cSchristos 2108dbcf02cSchristos #ifdef EAP_SERVER_AKA_PRIME 2118dbcf02cSchristos if (ret == 0) 2128dbcf02cSchristos ret = eap_server_aka_prime_register(); 2138dbcf02cSchristos #endif /* EAP_SERVER_AKA_PRIME */ 2148dbcf02cSchristos 2158dbcf02cSchristos #ifdef EAP_SERVER_PAX 2168dbcf02cSchristos if (ret == 0) 2178dbcf02cSchristos ret = eap_server_pax_register(); 2188dbcf02cSchristos #endif /* EAP_SERVER_PAX */ 2198dbcf02cSchristos 2208dbcf02cSchristos #ifdef EAP_SERVER_PSK 2218dbcf02cSchristos if (ret == 0) 2228dbcf02cSchristos ret = eap_server_psk_register(); 2238dbcf02cSchristos #endif /* EAP_SERVER_PSK */ 2248dbcf02cSchristos 2258dbcf02cSchristos #ifdef EAP_SERVER_SAKE 2268dbcf02cSchristos if (ret == 0) 2278dbcf02cSchristos ret = eap_server_sake_register(); 2288dbcf02cSchristos #endif /* EAP_SERVER_SAKE */ 2298dbcf02cSchristos 2308dbcf02cSchristos #ifdef EAP_SERVER_GPSK 2318dbcf02cSchristos if (ret == 0) 2328dbcf02cSchristos ret = eap_server_gpsk_register(); 2338dbcf02cSchristos #endif /* EAP_SERVER_GPSK */ 2348dbcf02cSchristos 2358dbcf02cSchristos #ifdef EAP_SERVER_VENDOR_TEST 2368dbcf02cSchristos if (ret == 0) 2378dbcf02cSchristos ret = eap_server_vendor_test_register(); 2388dbcf02cSchristos #endif /* EAP_SERVER_VENDOR_TEST */ 2398dbcf02cSchristos 2408dbcf02cSchristos #ifdef EAP_SERVER_FAST 2418dbcf02cSchristos if (ret == 0) 2428dbcf02cSchristos ret = eap_server_fast_register(); 2438dbcf02cSchristos #endif /* EAP_SERVER_FAST */ 2448dbcf02cSchristos 245*0d69f216Schristos #ifdef EAP_SERVER_TEAP 246*0d69f216Schristos if (ret == 0) 247*0d69f216Schristos ret = eap_server_teap_register(); 248*0d69f216Schristos #endif /* EAP_SERVER_TEAP */ 249*0d69f216Schristos 2508dbcf02cSchristos #ifdef EAP_SERVER_WSC 2518dbcf02cSchristos if (ret == 0) 2528dbcf02cSchristos ret = eap_server_wsc_register(); 2538dbcf02cSchristos #endif /* EAP_SERVER_WSC */ 2548dbcf02cSchristos 2558dbcf02cSchristos #ifdef EAP_SERVER_IKEV2 2568dbcf02cSchristos if (ret == 0) 2578dbcf02cSchristos ret = eap_server_ikev2_register(); 2588dbcf02cSchristos #endif /* EAP_SERVER_IKEV2 */ 2598dbcf02cSchristos 2608dbcf02cSchristos #ifdef EAP_SERVER_TNC 2618dbcf02cSchristos if (ret == 0) 2628dbcf02cSchristos ret = eap_server_tnc_register(); 2638dbcf02cSchristos #endif /* EAP_SERVER_TNC */ 2648dbcf02cSchristos 26542669be3Schristos #ifdef EAP_SERVER_PWD 26642669be3Schristos if (ret == 0) 26742669be3Schristos ret = eap_server_pwd_register(); 26842669be3Schristos #endif /* EAP_SERVER_PWD */ 26942669be3Schristos 2708dbcf02cSchristos return ret; 2718dbcf02cSchristos } 272