1e28a4053SRui Paulo /*
2e28a4053SRui Paulo  * EAP method registration
3e28a4053SRui Paulo  * Copyright (c) 2004-2009, Jouni Malinen <j@w1.fi>
4e28a4053SRui Paulo  *
5f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
6f05cddf9SRui Paulo  * See README for more details.
7e28a4053SRui Paulo  */
8e28a4053SRui Paulo 
9e28a4053SRui Paulo #include "includes.h"
10e28a4053SRui Paulo 
11e28a4053SRui Paulo #include "common.h"
12e28a4053SRui Paulo #include "eap_peer/eap_methods.h"
13e28a4053SRui Paulo #include "eap_server/eap_methods.h"
14f05cddf9SRui Paulo #include "wpa_supplicant_i.h"
15e28a4053SRui Paulo 
16e28a4053SRui Paulo 
17e28a4053SRui Paulo /**
18e28a4053SRui Paulo  * eap_register_methods - Register statically linked EAP methods
19e28a4053SRui Paulo  * Returns: 0 on success, -1 or -2 on failure
20e28a4053SRui Paulo  *
21e28a4053SRui Paulo  * This function is called at program initialization to register all EAP
22e28a4053SRui Paulo  * methods that were linked in statically.
23e28a4053SRui Paulo  */
24e28a4053SRui Paulo int eap_register_methods(void)
25e28a4053SRui Paulo {
26e28a4053SRui Paulo 	int ret = 0;
27e28a4053SRui Paulo 
28e28a4053SRui Paulo #ifdef EAP_MD5
29e28a4053SRui Paulo 	if (ret == 0)
30e28a4053SRui Paulo 		ret = eap_peer_md5_register();
31e28a4053SRui Paulo #endif /* EAP_MD5 */
32e28a4053SRui Paulo 
33e28a4053SRui Paulo #ifdef EAP_TLS
34e28a4053SRui Paulo 	if (ret == 0)
35e28a4053SRui Paulo 		ret = eap_peer_tls_register();
36e28a4053SRui Paulo #endif /* EAP_TLS */
37e28a4053SRui Paulo 
38f05cddf9SRui Paulo #ifdef EAP_UNAUTH_TLS
39f05cddf9SRui Paulo 	if (ret == 0)
40f05cddf9SRui Paulo 		ret = eap_peer_unauth_tls_register();
41f05cddf9SRui Paulo #endif /* EAP_UNAUTH_TLS */
42f05cddf9SRui Paulo 
43*5b9c547cSRui Paulo #ifdef EAP_TLS
44*5b9c547cSRui Paulo #ifdef CONFIG_HS20
45*5b9c547cSRui Paulo 	if (ret == 0)
46*5b9c547cSRui Paulo 		ret = eap_peer_wfa_unauth_tls_register();
47*5b9c547cSRui Paulo #endif /* CONFIG_HS20 */
48*5b9c547cSRui Paulo #endif /* EAP_TLS */
49*5b9c547cSRui Paulo 
50e28a4053SRui Paulo #ifdef EAP_MSCHAPv2
51e28a4053SRui Paulo 	if (ret == 0)
52e28a4053SRui Paulo 		ret = eap_peer_mschapv2_register();
53e28a4053SRui Paulo #endif /* EAP_MSCHAPv2 */
54e28a4053SRui Paulo 
55e28a4053SRui Paulo #ifdef EAP_PEAP
56e28a4053SRui Paulo 	if (ret == 0)
57e28a4053SRui Paulo 		ret = eap_peer_peap_register();
58e28a4053SRui Paulo #endif /* EAP_PEAP */
59e28a4053SRui Paulo 
60e28a4053SRui Paulo #ifdef EAP_TTLS
61e28a4053SRui Paulo 	if (ret == 0)
62e28a4053SRui Paulo 		ret = eap_peer_ttls_register();
63e28a4053SRui Paulo #endif /* EAP_TTLS */
64e28a4053SRui Paulo 
65e28a4053SRui Paulo #ifdef EAP_GTC
66e28a4053SRui Paulo 	if (ret == 0)
67e28a4053SRui Paulo 		ret = eap_peer_gtc_register();
68e28a4053SRui Paulo #endif /* EAP_GTC */
69e28a4053SRui Paulo 
70e28a4053SRui Paulo #ifdef EAP_OTP
71e28a4053SRui Paulo 	if (ret == 0)
72e28a4053SRui Paulo 		ret = eap_peer_otp_register();
73e28a4053SRui Paulo #endif /* EAP_OTP */
74e28a4053SRui Paulo 
75e28a4053SRui Paulo #ifdef EAP_SIM
76e28a4053SRui Paulo 	if (ret == 0)
77e28a4053SRui Paulo 		ret = eap_peer_sim_register();
78e28a4053SRui Paulo #endif /* EAP_SIM */
79e28a4053SRui Paulo 
80e28a4053SRui Paulo #ifdef EAP_LEAP
81e28a4053SRui Paulo 	if (ret == 0)
82e28a4053SRui Paulo 		ret = eap_peer_leap_register();
83e28a4053SRui Paulo #endif /* EAP_LEAP */
84e28a4053SRui Paulo 
85e28a4053SRui Paulo #ifdef EAP_PSK
86e28a4053SRui Paulo 	if (ret == 0)
87e28a4053SRui Paulo 		ret = eap_peer_psk_register();
88e28a4053SRui Paulo #endif /* EAP_PSK */
89e28a4053SRui Paulo 
90e28a4053SRui Paulo #ifdef EAP_AKA
91e28a4053SRui Paulo 	if (ret == 0)
92e28a4053SRui Paulo 		ret = eap_peer_aka_register();
93e28a4053SRui Paulo #endif /* EAP_AKA */
94e28a4053SRui Paulo 
95e28a4053SRui Paulo #ifdef EAP_AKA_PRIME
96e28a4053SRui Paulo 	if (ret == 0)
97e28a4053SRui Paulo 		ret = eap_peer_aka_prime_register();
98e28a4053SRui Paulo #endif /* EAP_AKA_PRIME */
99e28a4053SRui Paulo 
100e28a4053SRui Paulo #ifdef EAP_FAST
101e28a4053SRui Paulo 	if (ret == 0)
102e28a4053SRui Paulo 		ret = eap_peer_fast_register();
103e28a4053SRui Paulo #endif /* EAP_FAST */
104e28a4053SRui Paulo 
105e28a4053SRui Paulo #ifdef EAP_PAX
106e28a4053SRui Paulo 	if (ret == 0)
107e28a4053SRui Paulo 		ret = eap_peer_pax_register();
108e28a4053SRui Paulo #endif /* EAP_PAX */
109e28a4053SRui Paulo 
110e28a4053SRui Paulo #ifdef EAP_SAKE
111e28a4053SRui Paulo 	if (ret == 0)
112e28a4053SRui Paulo 		ret = eap_peer_sake_register();
113e28a4053SRui Paulo #endif /* EAP_SAKE */
114e28a4053SRui Paulo 
115e28a4053SRui Paulo #ifdef EAP_GPSK
116e28a4053SRui Paulo 	if (ret == 0)
117e28a4053SRui Paulo 		ret = eap_peer_gpsk_register();
118e28a4053SRui Paulo #endif /* EAP_GPSK */
119e28a4053SRui Paulo 
120e28a4053SRui Paulo #ifdef EAP_WSC
121e28a4053SRui Paulo 	if (ret == 0)
122e28a4053SRui Paulo 		ret = eap_peer_wsc_register();
123e28a4053SRui Paulo #endif /* EAP_WSC */
124e28a4053SRui Paulo 
125e28a4053SRui Paulo #ifdef EAP_IKEV2
126e28a4053SRui Paulo 	if (ret == 0)
127e28a4053SRui Paulo 		ret = eap_peer_ikev2_register();
128e28a4053SRui Paulo #endif /* EAP_IKEV2 */
129e28a4053SRui Paulo 
130e28a4053SRui Paulo #ifdef EAP_VENDOR_TEST
131e28a4053SRui Paulo 	if (ret == 0)
132e28a4053SRui Paulo 		ret = eap_peer_vendor_test_register();
133e28a4053SRui Paulo #endif /* EAP_VENDOR_TEST */
134e28a4053SRui Paulo 
135e28a4053SRui Paulo #ifdef EAP_TNC
136e28a4053SRui Paulo 	if (ret == 0)
137e28a4053SRui Paulo 		ret = eap_peer_tnc_register();
138e28a4053SRui Paulo #endif /* EAP_TNC */
139e28a4053SRui Paulo 
140f05cddf9SRui Paulo #ifdef EAP_PWD
141f05cddf9SRui Paulo 	if (ret == 0)
142f05cddf9SRui Paulo 		ret = eap_peer_pwd_register();
143f05cddf9SRui Paulo #endif /* EAP_PWD */
144e28a4053SRui Paulo 
145*5b9c547cSRui Paulo #ifdef EAP_EKE
146*5b9c547cSRui Paulo 	if (ret == 0)
147*5b9c547cSRui Paulo 		ret = eap_peer_eke_register();
148*5b9c547cSRui Paulo #endif /* EAP_EKE */
149*5b9c547cSRui Paulo 
150e28a4053SRui Paulo #ifdef EAP_SERVER_IDENTITY
151e28a4053SRui Paulo 	if (ret == 0)
152e28a4053SRui Paulo 		ret = eap_server_identity_register();
153e28a4053SRui Paulo #endif /* EAP_SERVER_IDENTITY */
154e28a4053SRui Paulo 
155e28a4053SRui Paulo #ifdef EAP_SERVER_MD5
156e28a4053SRui Paulo 	if (ret == 0)
157e28a4053SRui Paulo 		ret = eap_server_md5_register();
158e28a4053SRui Paulo #endif /* EAP_SERVER_MD5 */
159e28a4053SRui Paulo 
160e28a4053SRui Paulo #ifdef EAP_SERVER_TLS
161e28a4053SRui Paulo 	if (ret == 0)
162e28a4053SRui Paulo 		ret = eap_server_tls_register();
163e28a4053SRui Paulo #endif /* EAP_SERVER_TLS */
164e28a4053SRui Paulo 
165f05cddf9SRui Paulo #ifdef EAP_SERVER_UNAUTH_TLS
166f05cddf9SRui Paulo 	if (ret == 0)
167f05cddf9SRui Paulo 		ret = eap_server_unauth_tls_register();
168f05cddf9SRui Paulo #endif /* EAP_SERVER_UNAUTH_TLS */
169f05cddf9SRui Paulo 
170e28a4053SRui Paulo #ifdef EAP_SERVER_MSCHAPV2
171e28a4053SRui Paulo 	if (ret == 0)
172e28a4053SRui Paulo 		ret = eap_server_mschapv2_register();
173e28a4053SRui Paulo #endif /* EAP_SERVER_MSCHAPV2 */
174e28a4053SRui Paulo 
175e28a4053SRui Paulo #ifdef EAP_SERVER_PEAP
176e28a4053SRui Paulo 	if (ret == 0)
177e28a4053SRui Paulo 		ret = eap_server_peap_register();
178e28a4053SRui Paulo #endif /* EAP_SERVER_PEAP */
179e28a4053SRui Paulo 
180e28a4053SRui Paulo #ifdef EAP_SERVER_TLV
181e28a4053SRui Paulo 	if (ret == 0)
182e28a4053SRui Paulo 		ret = eap_server_tlv_register();
183e28a4053SRui Paulo #endif /* EAP_SERVER_TLV */
184e28a4053SRui Paulo 
185e28a4053SRui Paulo #ifdef EAP_SERVER_GTC
186e28a4053SRui Paulo 	if (ret == 0)
187e28a4053SRui Paulo 		ret = eap_server_gtc_register();
188e28a4053SRui Paulo #endif /* EAP_SERVER_GTC */
189e28a4053SRui Paulo 
190e28a4053SRui Paulo #ifdef EAP_SERVER_TTLS
191e28a4053SRui Paulo 	if (ret == 0)
192e28a4053SRui Paulo 		ret = eap_server_ttls_register();
193e28a4053SRui Paulo #endif /* EAP_SERVER_TTLS */
194e28a4053SRui Paulo 
195e28a4053SRui Paulo #ifdef EAP_SERVER_SIM
196e28a4053SRui Paulo 	if (ret == 0)
197e28a4053SRui Paulo 		ret = eap_server_sim_register();
198e28a4053SRui Paulo #endif /* EAP_SERVER_SIM */
199e28a4053SRui Paulo 
200e28a4053SRui Paulo #ifdef EAP_SERVER_AKA
201e28a4053SRui Paulo 	if (ret == 0)
202e28a4053SRui Paulo 		ret = eap_server_aka_register();
203e28a4053SRui Paulo #endif /* EAP_SERVER_AKA */
204e28a4053SRui Paulo 
205e28a4053SRui Paulo #ifdef EAP_SERVER_AKA_PRIME
206e28a4053SRui Paulo 	if (ret == 0)
207e28a4053SRui Paulo 		ret = eap_server_aka_prime_register();
208e28a4053SRui Paulo #endif /* EAP_SERVER_AKA_PRIME */
209e28a4053SRui Paulo 
210e28a4053SRui Paulo #ifdef EAP_SERVER_PAX
211e28a4053SRui Paulo 	if (ret == 0)
212e28a4053SRui Paulo 		ret = eap_server_pax_register();
213e28a4053SRui Paulo #endif /* EAP_SERVER_PAX */
214e28a4053SRui Paulo 
215e28a4053SRui Paulo #ifdef EAP_SERVER_PSK
216e28a4053SRui Paulo 	if (ret == 0)
217e28a4053SRui Paulo 		ret = eap_server_psk_register();
218e28a4053SRui Paulo #endif /* EAP_SERVER_PSK */
219e28a4053SRui Paulo 
220e28a4053SRui Paulo #ifdef EAP_SERVER_SAKE
221e28a4053SRui Paulo 	if (ret == 0)
222e28a4053SRui Paulo 		ret = eap_server_sake_register();
223e28a4053SRui Paulo #endif /* EAP_SERVER_SAKE */
224e28a4053SRui Paulo 
225e28a4053SRui Paulo #ifdef EAP_SERVER_GPSK
226e28a4053SRui Paulo 	if (ret == 0)
227e28a4053SRui Paulo 		ret = eap_server_gpsk_register();
228e28a4053SRui Paulo #endif /* EAP_SERVER_GPSK */
229e28a4053SRui Paulo 
230e28a4053SRui Paulo #ifdef EAP_SERVER_VENDOR_TEST
231e28a4053SRui Paulo 	if (ret == 0)
232e28a4053SRui Paulo 		ret = eap_server_vendor_test_register();
233e28a4053SRui Paulo #endif /* EAP_SERVER_VENDOR_TEST */
234e28a4053SRui Paulo 
235e28a4053SRui Paulo #ifdef EAP_SERVER_FAST
236e28a4053SRui Paulo 	if (ret == 0)
237e28a4053SRui Paulo 		ret = eap_server_fast_register();
238e28a4053SRui Paulo #endif /* EAP_SERVER_FAST */
239e28a4053SRui Paulo 
240e28a4053SRui Paulo #ifdef EAP_SERVER_WSC
241e28a4053SRui Paulo 	if (ret == 0)
242e28a4053SRui Paulo 		ret = eap_server_wsc_register();
243e28a4053SRui Paulo #endif /* EAP_SERVER_WSC */
244e28a4053SRui Paulo 
245e28a4053SRui Paulo #ifdef EAP_SERVER_IKEV2
246e28a4053SRui Paulo 	if (ret == 0)
247e28a4053SRui Paulo 		ret = eap_server_ikev2_register();
248e28a4053SRui Paulo #endif /* EAP_SERVER_IKEV2 */
249e28a4053SRui Paulo 
250e28a4053SRui Paulo #ifdef EAP_SERVER_TNC
251e28a4053SRui Paulo 	if (ret == 0)
252e28a4053SRui Paulo 		ret = eap_server_tnc_register();
253e28a4053SRui Paulo #endif /* EAP_SERVER_TNC */
254e28a4053SRui Paulo 
255f05cddf9SRui Paulo #ifdef EAP_SERVER_PWD
256f05cddf9SRui Paulo 	if (ret == 0)
257f05cddf9SRui Paulo 		ret = eap_server_pwd_register();
258f05cddf9SRui Paulo #endif /* EAP_SERVER_PWD */
259f05cddf9SRui Paulo 
260e28a4053SRui Paulo 	return ret;
261e28a4053SRui Paulo }
262