172 |
195 |
173 /** |
196 /** |
174 * The set_is_valid() function sets the state of the object valid. |
197 * The set_is_valid() function sets the state of the object valid. |
175 * The creator of this object calls this function after it is initialized. |
198 * The creator of this object calls this function after it is initialized. |
176 */ |
199 */ |
177 EAP_FUNC_IMPORT void set_is_valid(); |
200 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H void set_is_valid(); |
178 |
201 |
179 EAP_FUNC_IMPORT eap_status_e create_eap_success_failure_in_forward_to_tunnel( |
202 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_eap_success_failure_in_forward_to_tunnel( |
180 const eap_am_network_id_c * const receive_network_id, |
203 const eap_am_network_id_c * const receive_network_id, |
181 const eap_code_value_e forwarded_eap_code, |
204 const eap_code_value_e forwarded_eap_code, |
182 const u8_t received_eap_identifier); |
205 const u8_t received_eap_identifier); |
183 |
206 |
184 EAP_FUNC_IMPORT eap_status_e check_ttls_eap_payloads( |
207 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e check_ttls_eap_payloads( |
185 eap_diameter_payloads_c * const payloads, |
208 eap_diameter_payloads_c * const payloads, |
186 eap_ttls_tunneled_message_type_e * const message_type); |
209 eap_ttls_tunneled_message_type_e * const message_type); |
187 |
210 |
188 |
211 |
189 EAP_FUNC_IMPORT eap_status_e ttls_server_handles_pap_response( |
212 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_server_handles_pap_response( |
190 eap_diameter_payloads_c * const payloads, |
213 eap_diameter_payloads_c * const payloads, |
191 const u8_t received_eap_identifier); |
214 const u8_t received_eap_identifier); |
192 |
215 |
193 EAP_FUNC_IMPORT eap_status_e ttls_server_handles_pap_reply_message( |
216 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_server_handles_pap_reply_message( |
194 eap_diameter_payloads_c * const payloads, |
217 eap_diameter_payloads_c * const payloads, |
195 const u8_t received_eap_identifier); |
218 const u8_t received_eap_identifier); |
196 |
219 |
197 EAP_FUNC_IMPORT eap_status_e check_ttls_plain_pap_payloads( |
220 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e check_ttls_plain_pap_payloads( |
198 eap_diameter_payloads_c * const payloads, |
221 eap_diameter_payloads_c * const payloads, |
199 eap_ttls_tunneled_message_type_e * const message_type); |
222 eap_ttls_tunneled_message_type_e * const message_type); |
200 |
223 |
201 EAP_FUNC_IMPORT eap_status_e handle_ttls_plain_pap_payloads( |
224 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e handle_ttls_plain_pap_payloads( |
202 eap_diameter_payloads_c * const payloads, |
225 eap_diameter_payloads_c * const payloads, |
203 const eap_ttls_tunneled_message_type_e message_type, |
226 const eap_ttls_tunneled_message_type_e message_type, |
204 const u8_t received_eap_identifier); |
227 const u8_t received_eap_identifier); |
205 |
228 |
206 |
229 |
207 #if defined(EAP_USE_TTLS_PLAIN_MS_CHAP_V2_HACK) |
230 #if defined(EAP_USE_TTLS_PLAIN_MS_CHAP_V2_HACK) |
208 |
231 |
209 EAP_FUNC_IMPORT eap_status_e create_ttls_diameter_avp( |
232 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_ttls_diameter_avp( |
210 eap_variable_data_c * const avp, |
233 eap_variable_data_c * const avp, |
211 const eap_variable_data_c * const data, |
234 const eap_variable_data_c * const data, |
212 eap_diameter_avp_code_c code, |
235 eap_diameter_avp_code_c code, |
213 const bool include_vendor_id); |
236 const bool include_vendor_id); |
214 |
237 |
215 |
238 |
216 EAP_FUNC_IMPORT eap_status_e check_ttls_plain_mschapv2_payloads( |
239 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e check_ttls_plain_mschapv2_payloads( |
217 eap_diameter_payloads_c * const payloads, |
240 eap_diameter_payloads_c * const payloads, |
218 eap_ttls_tunneled_message_type_e * const message_type); |
241 eap_ttls_tunneled_message_type_e * const message_type); |
219 |
242 |
220 EAP_FUNC_IMPORT eap_status_e handle_ttls_plain_mschapv2_payloads( |
243 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e handle_ttls_plain_mschapv2_payloads( |
221 eap_diameter_payloads_c * const payloads, |
244 eap_diameter_payloads_c * const payloads, |
222 const eap_ttls_tunneled_message_type_e message_type, |
245 const eap_ttls_tunneled_message_type_e message_type, |
223 const u8_t received_eap_identifier); |
246 const u8_t received_eap_identifier); |
224 |
247 |
225 |
248 |
226 EAP_FUNC_IMPORT eap_status_e ttls_server_handles_ms_chapv2_response( |
249 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_server_handles_ms_chapv2_response( |
227 eap_diameter_payloads_c * const payloads, |
250 eap_diameter_payloads_c * const payloads, |
228 const u8_t received_eap_identifier); |
251 const u8_t received_eap_identifier); |
229 |
252 |
230 EAP_FUNC_IMPORT eap_status_e ttls_server_handles_ms_chapv2_change_password( |
253 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_server_handles_ms_chapv2_change_password( |
231 eap_diameter_payloads_c * const payloads, |
254 eap_diameter_payloads_c * const payloads, |
232 const u8_t received_eap_identifier); |
255 const u8_t received_eap_identifier); |
233 |
256 |
234 EAP_FUNC_IMPORT eap_status_e ttls_client_handles_ms_chapv2_success( |
257 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_client_handles_ms_chapv2_success( |
235 eap_diameter_payloads_c * const payloads, |
258 eap_diameter_payloads_c * const payloads, |
236 const u8_t received_eap_identifier); |
259 const u8_t received_eap_identifier); |
237 |
260 |
238 EAP_FUNC_IMPORT eap_status_e ttls_client_handles_ms_chapv2_error( |
261 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_client_handles_ms_chapv2_error( |
239 eap_diameter_payloads_c * const payloads, |
262 eap_diameter_payloads_c * const payloads, |
240 const u8_t received_eap_identifier); |
263 const u8_t received_eap_identifier); |
241 |
264 |
242 |
265 |
243 EAP_FUNC_IMPORT eap_status_e send_ttls_ms_chapv2_packet( |
266 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e send_ttls_ms_chapv2_packet( |
244 eap_header_wr_c * const sent_eap_packet); |
267 eap_header_wr_c * const sent_eap_packet); |
245 |
268 |
246 |
269 |
247 EAP_FUNC_IMPORT eap_status_e ttls_tunneled_message_state_process_identity_response( |
270 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_tunneled_message_state_process_identity_response( |
248 eap_header_wr_c * const sent_eap_packet); |
271 eap_header_wr_c * const sent_eap_packet); |
249 |
272 |
250 EAP_FUNC_IMPORT eap_status_e ttls_tunneled_message_state_process_response( |
273 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_tunneled_message_state_process_response( |
251 eap_header_wr_c * const sent_eap_packet); |
274 eap_header_wr_c * const sent_eap_packet); |
252 |
275 |
253 EAP_FUNC_IMPORT eap_status_e ttls_tunneled_message_state_process_change_password_response( |
276 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_tunneled_message_state_process_change_password_response( |
254 eap_header_wr_c * const sent_eap_packet); |
277 eap_header_wr_c * const sent_eap_packet); |
255 |
278 |
256 EAP_FUNC_IMPORT eap_status_e ttls_tunneled_message_state_process_identity_request( |
279 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_tunneled_message_state_process_identity_request( |
257 eap_header_wr_c * const sent_eap_packet); |
280 eap_header_wr_c * const sent_eap_packet); |
258 |
281 |
259 EAP_FUNC_IMPORT eap_status_e ttls_tunneled_message_state_process_challenge_request( |
282 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_tunneled_message_state_process_challenge_request( |
260 eap_header_wr_c * const sent_eap_packet); |
283 eap_header_wr_c * const sent_eap_packet); |
261 |
284 |
262 EAP_FUNC_IMPORT eap_status_e ttls_tunneled_message_state_process_success_request( |
285 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_tunneled_message_state_process_success_request( |
263 eap_header_wr_c * const sent_eap_packet); |
286 eap_header_wr_c * const sent_eap_packet); |
264 |
287 |
265 EAP_FUNC_IMPORT eap_status_e ttls_tunneled_message_state_complete_success_request( |
288 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_tunneled_message_state_complete_success_request( |
266 eap_header_wr_c * const sent_eap_packet); |
289 eap_header_wr_c * const sent_eap_packet); |
267 |
290 |
268 EAP_FUNC_IMPORT eap_status_e ttls_tunneled_message_state_process_error_request( |
291 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_tunneled_message_state_process_error_request( |
269 eap_header_wr_c * const sent_eap_packet); |
292 eap_header_wr_c * const sent_eap_packet); |
270 |
293 |
271 EAP_FUNC_IMPORT eap_status_e ttls_tunneled_message_state_complete_error_request( |
294 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e ttls_tunneled_message_state_complete_error_request( |
272 eap_header_wr_c * const sent_eap_packet); |
295 eap_header_wr_c * const sent_eap_packet); |
273 |
296 |
274 |
297 |
275 #endif //#if defined(EAP_USE_TTLS_PLAIN_MS_CHAP_V2_HACK) |
298 #endif //#if defined(EAP_USE_TTLS_PLAIN_MS_CHAP_V2_HACK) |
276 |
299 |
279 * This function processes the received packet of TTLS. |
302 * This function processes the received packet of TTLS. |
280 * @param packet includes the received packet. |
303 * @param packet includes the received packet. |
281 * @param received_eap_identifier is the EAP-identifier field of the PEAP packet. |
304 * @param received_eap_identifier is the EAP-identifier field of the PEAP packet. |
282 * @param forwarded_eap_packet includes created EAP-packet that is forwarded to eap_core_c object. |
305 * @param forwarded_eap_packet includes created EAP-packet that is forwarded to eap_core_c object. |
283 */ |
306 */ |
284 EAP_FUNC_IMPORT eap_status_e packet_process_ttls( |
307 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e packet_process_ttls( |
285 eap_variable_data_c * const received_eap_message, |
308 eap_variable_data_c * const received_eap_message, |
286 const u8_t received_eap_identifier, |
309 const u8_t received_eap_identifier, |
287 u32_t * const eap_packet_length); |
310 u32_t * const eap_packet_length); |
288 |
311 |
289 /** |
312 /** |
290 * This function processes the received packet of XP PEAPv0. |
313 * This function processes the received packet of XP PEAPv0. |
291 * @param packet includes the received packet. |
314 * @param packet includes the received packet. |
292 * @param received_eap_identifier is the EAP-identifier field of the PEAP packet. |
315 * @param received_eap_identifier is the EAP-identifier field of the PEAP packet. |
293 * @param forwarded_eap_packet includes created EAP-packet that is forwarded to eap_core_c object. |
316 * @param forwarded_eap_packet includes created EAP-packet that is forwarded to eap_core_c object. |
294 */ |
317 */ |
295 EAP_FUNC_IMPORT eap_status_e packet_process_xp_peap_v0( |
318 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e packet_process_xp_peap_v0( |
296 eap_variable_data_c * const packet, |
319 eap_variable_data_c * const packet, |
297 const u8_t received_eap_identifier, |
320 const u8_t received_eap_identifier, |
298 u32_t * const eap_packet_length); |
321 u32_t * const eap_packet_length); |
299 |
322 |
300 /** |
323 /** |
301 * This function processes the received packet of PEAPv1. |
324 * This function processes the received packet of PEAPv1. |
302 */ |
325 */ |
303 EAP_FUNC_IMPORT eap_status_e packet_process_peap_v1( |
326 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e packet_process_peap_v1( |
304 eap_variable_data_c * const received_eap_message, |
327 eap_variable_data_c * const received_eap_message, |
305 const u8_t received_eap_identifier, |
328 const u8_t received_eap_identifier, |
306 u32_t * const eap_packet_length); |
329 u32_t * const eap_packet_length); |
307 |
330 |
308 EAP_FUNC_IMPORT eap_status_e finish_successfull_authentication_peap_v2( |
331 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e finish_successfull_authentication_peap_v2( |
309 const u8_t received_eap_identifier); |
332 const u8_t received_eap_identifier); |
310 |
333 |
311 EAP_FUNC_IMPORT eap_status_e store_nonce_peap_v2( |
334 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e store_nonce_peap_v2( |
312 const bool is_client_when_true, |
335 const bool is_client_when_true, |
313 peap_tlv_payloads_c * const peapv2_tlv_payloads); |
336 peap_tlv_payloads_c * const peapv2_tlv_payloads); |
314 |
337 |
315 /** |
338 /** |
316 * This function processes the received packet of PEAPv2. |
339 * This function processes the received packet of PEAPv2. |
317 * @param packet includes the received packet. |
340 * @param packet includes the received packet. |
318 * @param received_eap_identifier is the EAP-identifier field of the PEAP packet. |
341 * @param received_eap_identifier is the EAP-identifier field of the PEAP packet. |
319 * @param forwarded_eap_packet includes created EAP-packet that is forwarded to eap_core_c object. |
342 * @param forwarded_eap_packet includes created EAP-packet that is forwarded to eap_core_c object. |
320 */ |
343 */ |
321 EAP_FUNC_IMPORT eap_status_e packet_process_peap_v2( |
344 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e packet_process_peap_v2( |
322 eap_variable_data_c * const packet, |
345 eap_variable_data_c * const packet, |
323 const u8_t received_eap_identifier, |
346 const u8_t received_eap_identifier, |
324 u32_t * const eap_packet_length); |
347 u32_t * const eap_packet_length); |
325 |
348 |
326 /** |
349 /** |
327 * This function verifies the previously received and parsed packet of PEAPv2. |
350 * This function verifies the previously received and parsed packet of PEAPv2. |
328 */ |
351 */ |
329 EAP_FUNC_IMPORT eap_status_e verify_tunneled_acknowledge_peap_v2(); |
352 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e verify_tunneled_acknowledge_peap_v2(); |
330 |
353 |
331 |
354 |
332 /** |
355 /** |
333 * This function sends XP-PEAPv0 protected EAP-Success or EAP-Failure messages. |
356 * This function sends XP-PEAPv0 protected EAP-Success or EAP-Failure messages. |
334 */ |
357 */ |
335 EAP_FUNC_IMPORT eap_status_e send_tunneled_acknowledge_xp_peap_v0( |
358 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e send_tunneled_acknowledge_xp_peap_v0( |
336 const eap_code_value_e result_eap_code, |
359 const eap_code_value_e result_eap_code, |
337 const u8_t eap_identifier); |
360 const u8_t eap_identifier); |
338 |
361 |
339 /** |
362 /** |
340 * This function sends PEAPv2 protected EAP-Success or EAP-Failure messages. |
363 * This function sends PEAPv2 protected EAP-Success or EAP-Failure messages. |
341 */ |
364 */ |
342 EAP_FUNC_IMPORT eap_status_e send_tunneled_acknowledge_peap_v2( |
365 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e send_tunneled_acknowledge_peap_v2( |
343 const eap_code_value_e result_eap_code, |
366 const eap_code_value_e result_eap_code, |
344 const u8_t eap_identifier); |
367 const u8_t eap_identifier); |
345 |
368 |
346 |
369 |
347 EAP_FUNC_IMPORT eap_status_e create_nonce( |
370 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_nonce( |
348 eap_variable_data_c * const nonce); |
371 eap_variable_data_c * const nonce); |
349 |
372 |
350 EAP_FUNC_IMPORT eap_status_e create_nonce_peap_v2( |
373 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_nonce_peap_v2( |
351 const bool create_client_nonce_when_true); |
374 const bool create_client_nonce_when_true); |
352 |
375 |
353 EAP_FUNC_IMPORT eap_status_e create_compound_mac_key_peap_v2( |
376 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_compound_mac_key_peap_v2( |
354 const bool create_client_CMK_when_true); |
377 const bool create_client_CMK_when_true); |
355 |
378 |
356 EAP_FUNC_IMPORT eap_status_e create_compound_session_key_peap_v2(); |
379 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_compound_session_key_peap_v2(); |
357 |
380 |
358 |
381 |
359 EAP_FUNC_IMPORT eap_status_e create_crypto_binding_compound_mac( |
382 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_crypto_binding_compound_mac( |
360 const eap_variable_data_c * const peap_v2_CMK, |
383 const eap_variable_data_c * const peap_v2_CMK, |
361 const tls_peap_tlv_header_c * const crypto_binding_tlv, |
384 const tls_peap_tlv_header_c * const crypto_binding_tlv, |
362 eap_variable_data_c * const mac_data); |
385 eap_variable_data_c * const mac_data); |
363 |
386 |
364 |
387 |
365 EAP_FUNC_IMPORT eap_status_e create_result_tlv_message( |
388 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_result_tlv_message( |
366 eap_buf_chain_wr_c * const packet, |
389 eap_buf_chain_wr_c * const packet, |
367 const eap_code_value_e result_eap_code, |
390 const eap_code_value_e result_eap_code, |
368 const u8_t eap_identifier, |
391 const u8_t eap_identifier, |
369 const tls_peap_tlv_type_e tlv_type); |
392 const tls_peap_tlv_type_e tlv_type); |
370 |
393 |
371 EAP_FUNC_IMPORT eap_status_e create_intermediate_result_tlv_message( |
394 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_intermediate_result_tlv_message( |
372 eap_buf_chain_wr_c * const packet, |
395 eap_buf_chain_wr_c * const packet, |
373 const eap_code_value_e result_eap_code, |
396 const eap_code_value_e result_eap_code, |
374 const u8_t eap_identifier); |
397 const u8_t eap_identifier); |
375 |
398 |
376 EAP_FUNC_IMPORT eap_status_e create_eap_payload_tlv_message( |
399 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_eap_payload_tlv_message( |
377 eap_buf_chain_wr_c * const packet, |
400 eap_buf_chain_wr_c * const packet, |
378 const eap_header_wr_c * const sent_eap_packet, |
401 const eap_header_wr_c * const sent_eap_packet, |
379 const u8_t eap_identifier); |
402 const u8_t eap_identifier); |
380 |
403 |
381 EAP_FUNC_IMPORT eap_status_e create_crypto_binding_tlv_message( |
404 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_crypto_binding_tlv_message( |
382 eap_buf_chain_wr_c * const packet, |
405 eap_buf_chain_wr_c * const packet, |
383 const eap_code_value_e result_eap_code, |
406 const eap_code_value_e result_eap_code, |
384 const u8_t eap_identifier, |
407 const u8_t eap_identifier, |
385 const eap_variable_data_c * const nonce, |
408 const eap_variable_data_c * const nonce, |
386 const u8_t received_version); |
409 const u8_t received_version); |
387 |
410 |
388 EAP_FUNC_IMPORT eap_status_e create_eap_diameter_avp_message( |
411 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e create_eap_diameter_avp_message( |
389 eap_buf_chain_wr_c * const packet, |
412 eap_buf_chain_wr_c * const packet, |
390 const eap_header_wr_c * const sent_eap_packet, |
413 const eap_header_wr_c * const sent_eap_packet, |
391 const u8_t eap_identifier); |
414 const u8_t eap_identifier); |
392 |
415 |
393 EAP_FUNC_IMPORT eap_status_e parse_generic_payload( |
416 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e parse_generic_payload( |
394 const tls_peap_tlv_type_e current_payload, |
417 const tls_peap_tlv_type_e current_payload, |
395 const tls_peap_tlv_header_c * const payload, |
418 const tls_peap_tlv_header_c * const payload, |
396 peap_tlv_payloads_c * const p_peap_tlv_payloads); |
419 peap_tlv_payloads_c * const p_peap_tlv_payloads); |
397 |
420 |
398 EAP_FUNC_IMPORT eap_status_e parse_peap_tlv_payload( |
421 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e parse_peap_tlv_payload( |
399 u8_t * const buffer, |
422 u8_t * const buffer, |
400 u32_t * const buffer_length, |
423 u32_t * const buffer_length, |
401 peap_tlv_payloads_c * const peap_tlv_payloads); |
424 peap_tlv_payloads_c * const peap_tlv_payloads); |
402 |
425 |
403 EAP_FUNC_IMPORT void trace_tunneled_packet( |
426 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H void trace_tunneled_packet( |
404 eap_const_string prefix, |
427 eap_const_string prefix, |
405 const eap_header_wr_c * const eap_packet); |
428 const eap_header_wr_c * const eap_packet); |
406 |
429 |
407 EAP_FUNC_IMPORT eap_status_e packet_forward_to_tunnel( |
430 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e packet_forward_to_tunnel( |
408 const eap_am_network_id_c * const receive_network_id, |
431 const eap_am_network_id_c * const receive_network_id, |
409 eap_header_wr_c * const forwarded_eap_packet, |
432 eap_header_wr_c * const forwarded_eap_packet, |
410 const u32_t eap_packet_length); |
433 const u32_t eap_packet_length); |
411 |
434 |
412 #if defined(EAP_USE_TTLS_PLAIN_MS_CHAP_V2_HACK) |
435 #if defined(EAP_USE_TTLS_PLAIN_MS_CHAP_V2_HACK) |
426 //-------------------------------------------------- |
449 //-------------------------------------------------- |
427 |
450 |
428 /** |
451 /** |
429 * The destructor of the tls_application_eap_core_c class does nothing special. |
452 * The destructor of the tls_application_eap_core_c class does nothing special. |
430 */ |
453 */ |
431 EAP_FUNC_IMPORT virtual ~tls_application_eap_core_c(); |
454 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H virtual ~tls_application_eap_core_c(); |
432 |
455 |
433 /** |
456 /** |
434 * The constructor of the tls_application_eap_core_c class simply initializes the attributes. |
457 * The constructor of the tls_application_eap_core_c class simply initializes the attributes. |
435 * @param tools is pointer to the tools class. @see abs_eap_am_tools_c. |
458 * @param tools is pointer to the tools class. @see abs_eap_am_tools_c. |
436 * @param partner is back pointer to object which created this object. |
459 * @param partner is back pointer to object which created this object. |
437 * @param eap_core is pointer to EAP-core object. |
460 * @param eap_core is pointer to EAP-core object. |
438 * The tls_application_eap_core_c object sends packets to the network using m_type_partner object. |
461 * The tls_application_eap_core_c object sends packets to the network using m_type_partner object. |
439 */ |
462 */ |
440 EAP_FUNC_IMPORT tls_application_eap_core_c( |
463 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H tls_application_eap_core_c( |
441 abs_eap_am_tools_c * const tools, |
464 abs_eap_am_tools_c * const tools, |
442 eap_core_c * const eap_core, |
465 eap_core_c * const eap_core, |
443 const bool free_eap_core, |
466 const bool free_eap_core, |
444 const bool is_client_when_true, |
467 const bool is_client_when_true, |
445 const eap_type_value_e eap_type, |
468 const eap_type_value_e eap_type, |
446 const eap_am_network_id_c * const receive_network_id); |
469 const eap_am_network_id_c * const receive_network_id); |
447 |
470 |
448 /** |
471 /** |
449 * This function sets the PEAP version. |
472 * This function sets the PEAP version. |
450 */ |
473 */ |
451 EAP_FUNC_IMPORT void set_peap_version( |
474 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H void set_peap_version( |
452 const peap_version_e peap_version, |
475 const peap_version_e peap_version, |
453 const bool use_tppd_tls_peap, |
476 const bool use_tppd_tls_peap, |
454 const bool use_tppd_peapv1_acknowledge_hack); |
477 const bool use_tppd_peapv1_acknowledge_hack); |
455 |
478 |
456 /** |
479 /** |
457 * The configure() function is called after the constructor of the |
480 * The configure() function is called after the constructor of the |
458 * object is successfully executed. During the function call the object |
481 * object is successfully executed. During the function call the object |
459 * could query the configuration. Each derived class must define this function. |
482 * could query the configuration. Each derived class must define this function. |
460 */ |
483 */ |
461 EAP_FUNC_IMPORT eap_status_e configure(); |
484 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e configure(); |
462 |
485 |
463 /** |
486 /** |
464 * The shutdown() function is called before the destructor of the |
487 * The shutdown() function is called before the destructor of the |
465 * object is executed. During the function call the object |
488 * object is executed. During the function call the object |
466 * could shutdown the operations, for example cancel timers. |
489 * could shutdown the operations, for example cancel timers. |
467 * Each derived class must define this function. |
490 * Each derived class must define this function. |
468 */ |
491 */ |
469 EAP_FUNC_IMPORT eap_status_e shutdown(); |
492 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e shutdown(); |
470 |
493 |
471 /** |
494 /** |
472 * This function processes the received packet. |
495 * This function processes the received packet. |
473 * @param packet includes the received packet. |
496 * @param packet includes the received packet. |
474 * @param received_eap_identifier is the EAP-identifier field of the PEAP packet. |
497 * @param received_eap_identifier is the EAP-identifier field of the PEAP packet. |
475 */ |
498 */ |
476 EAP_FUNC_IMPORT eap_status_e packet_process( |
499 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e packet_process( |
477 eap_variable_data_c * const packet, |
500 eap_variable_data_c * const packet, |
478 const u8_t received_eap_identifier); |
501 const u8_t received_eap_identifier); |
479 |
502 |
480 /** |
503 /** |
481 * This function indicates the plain text EAP-Success or EAP-Failure packet is received. |
504 * This function indicates the plain text EAP-Success or EAP-Failure packet is received. |
482 * @param receive_network_id includes the addresses (network identity) and packet type. |
505 * @param receive_network_id includes the addresses (network identity) and packet type. |
483 * @param received_eap_identifier is the EAP-Identifier of the received EAP-Success packet. |
506 * @param received_eap_identifier is the EAP-Identifier of the received EAP-Success packet. |
484 */ |
507 */ |
485 EAP_FUNC_IMPORT eap_status_e plain_eap_success_failure_packet_received( |
508 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e plain_eap_success_failure_packet_received( |
486 const eap_am_network_id_c * const receive_network_id, |
509 const eap_am_network_id_c * const receive_network_id, |
487 const eap_code_value_e received_eap_code, |
510 const eap_code_value_e received_eap_code, |
488 const u8_t received_eap_identifier); |
511 const u8_t received_eap_identifier); |
489 |
512 |
490 /** |
513 /** |
491 * This function indicates the empty Ack packet is received. |
514 * This function indicates the empty Ack packet is received. |
492 * This is used in TTLS. |
515 * This is used in TTLS. |
493 * @param receive_network_id includes the addresses (network identity) and packet type. |
516 * @param receive_network_id includes the addresses (network identity) and packet type. |
494 * @param received_eap_identifier is the EAP-Identifier of the received EAP-Success packet. |
517 * @param received_eap_identifier is the EAP-Identifier of the received EAP-Success packet. |
495 */ |
518 */ |
496 EAP_FUNC_IMPORT eap_status_e empty_ack_packet_received( |
519 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e empty_ack_packet_received( |
497 const eap_am_network_id_c * const receive_network_id, |
520 const eap_am_network_id_c * const receive_network_id, |
498 const u8_t received_eap_identifier); |
521 const u8_t received_eap_identifier); |
499 |
522 |
500 /** |
523 /** |
501 * This function starts TTLS tunneled authentication. |
524 * This function starts TTLS tunneled authentication. |
502 */ |
525 */ |
503 EAP_FUNC_IMPORT eap_status_e start_ttls_tunneled_authentication( |
526 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e start_ttls_tunneled_authentication( |
504 const eap_am_network_id_c * const receive_network_id, |
527 const eap_am_network_id_c * const receive_network_id, |
505 const u8_t received_eap_identifier); |
528 const u8_t received_eap_identifier); |
506 |
529 |
507 /** |
530 /** |
508 * Object must indicate it's validity. |
531 * Object must indicate it's validity. |
509 * If object initialization fails this function must return false. |
532 * If object initialization fails this function must return false. |
510 * @return This function returns the validity of this object. |
533 * @return This function returns the validity of this object. |
511 */ |
534 */ |
512 EAP_FUNC_IMPORT bool get_is_valid(); |
535 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H bool get_is_valid(); |
513 |
536 |
514 /** |
537 /** |
515 * This function must reset the state of object to same as |
538 * This function must reset the state of object to same as |
516 * state was after the configure() function call. |
539 * state was after the configure() function call. |
517 * If object reset succeeds this function must return eap_status_ok. |
540 * If object reset succeeds this function must return eap_status_ok. |
518 * If object reset fails this function must return corresponding error status. |
541 * If object reset fails this function must return corresponding error status. |
519 * @return This function returns the status of reset operation. |
542 * @return This function returns the status of reset operation. |
520 */ |
543 */ |
521 EAP_FUNC_IMPORT eap_status_e reset(); |
544 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e reset(); |
522 |
545 |
523 |
546 |
524 /** |
547 /** |
525 * This function starts the tunneled EAP-type within PEAP. |
548 * This function starts the tunneled EAP-type within PEAP. |
526 */ |
549 */ |
527 EAP_FUNC_IMPORT eap_status_e start_peap_tunneled_authentication( |
550 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e start_peap_tunneled_authentication( |
528 const eap_am_network_id_c * const receive_network_id, |
551 const eap_am_network_id_c * const receive_network_id, |
529 const bool is_client_when_true, |
552 const bool is_client_when_true, |
530 const u8_t received_eap_identifier, |
553 const u8_t received_eap_identifier, |
531 const tls_session_type_e tls_session_type, |
554 const tls_session_type_e tls_session_type, |
532 const bool tls_peap_server_authenticates_client_action); |
555 const bool tls_peap_server_authenticates_client_action); |
533 |
556 |
534 /// @see abs_eap_core_c::packet_send(). |
557 /// @see abs_eap_core_c::packet_send(). |
535 EAP_FUNC_IMPORT eap_status_e packet_send( |
558 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e packet_send( |
536 const eap_am_network_id_c * const network_id, |
559 const eap_am_network_id_c * const network_id, |
537 eap_buf_chain_wr_c * const sent_packet, |
560 eap_buf_chain_wr_c * const sent_packet, |
538 const u32_t header_offset, |
561 const u32_t header_offset, |
539 const u32_t data_length, |
562 const u32_t data_length, |
540 const u32_t buffer_length); |
563 const u32_t buffer_length); |
541 |
564 |
542 /// @see abs_eap_core_c::get_header_offset(). |
565 /// @see abs_eap_core_c::get_header_offset(). |
543 EAP_FUNC_IMPORT u32_t get_header_offset( |
566 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H u32_t get_header_offset( |
544 u32_t * const MTU, |
567 u32_t * const MTU, |
545 u32_t * const trailer_length); |
568 u32_t * const trailer_length); |
546 |
569 |
547 /// @see abs_eap_core_c::load_module(). |
570 /// @see abs_eap_core_c::load_module(). |
548 EAP_FUNC_IMPORT eap_status_e load_module( |
571 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e load_module( |
549 const eap_type_value_e type, |
572 const eap_type_value_e type, |
550 const eap_type_value_e /* tunneling_type */, |
573 const eap_type_value_e /* tunneling_type */, |
551 abs_eap_base_type_c * const partner, |
574 abs_eap_base_type_c * const partner, |
552 eap_base_type_c ** const eap_type, |
575 eap_base_type_c ** const eap_type, |
553 const bool is_client_when_true, |
576 const bool is_client_when_true, |
554 const eap_am_network_id_c * const receive_network_id); |
577 const eap_am_network_id_c * const receive_network_id); |
555 |
578 |
556 /// @see abs_eap_core_c::unload_module(). |
579 /// @see abs_eap_core_c::unload_module(). |
557 EAP_FUNC_IMPORT eap_status_e unload_module(const eap_type_value_e type); |
580 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e unload_module(const eap_type_value_e type); |
558 |
581 |
559 /// @see abs_eap_core_c::restart_authentication(). |
582 /// @see abs_eap_core_c::restart_authentication(). |
560 EAP_FUNC_IMPORT eap_status_e restart_authentication( |
583 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e restart_authentication( |
561 const eap_am_network_id_c * const receive_network_id, |
584 const eap_am_network_id_c * const receive_network_id, |
562 const bool is_client_when_true, |
585 const bool is_client_when_true, |
563 const bool force_clean_restart, |
586 const bool force_clean_restart, |
564 const bool from_timer = false); |
587 const bool from_timer = false); |
565 |
588 |
566 /// @see abs_eap_core_c::packet_data_crypto_keys(). |
589 /// @see abs_eap_core_c::packet_data_crypto_keys(). |
567 EAP_FUNC_IMPORT eap_status_e packet_data_crypto_keys( |
590 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e packet_data_crypto_keys( |
568 const eap_am_network_id_c * const send_network_id, |
591 const eap_am_network_id_c * const send_network_id, |
569 const eap_master_session_key_c * const master_session_key |
592 const eap_master_session_key_c * const master_session_key |
570 ); |
593 ); |
571 |
594 |
572 /// @see abs_eap_core_c::read_configure(). |
595 /// @see abs_eap_core_c::read_configure(). |
573 EAP_FUNC_IMPORT eap_status_e read_configure( |
596 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e read_configure( |
574 const eap_configuration_field_c * const field, |
597 const eap_configuration_field_c * const field, |
575 eap_variable_data_c * const data); |
598 eap_variable_data_c * const data); |
576 |
599 |
577 /// @see abs_eap_core_c::write_configure(). |
600 /// @see abs_eap_core_c::write_configure(). |
578 EAP_FUNC_IMPORT eap_status_e write_configure( |
601 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e write_configure( |
579 const eap_configuration_field_c * const field, |
602 const eap_configuration_field_c * const field, |
580 eap_variable_data_c * const data); |
603 eap_variable_data_c * const data); |
581 |
604 |
582 /// @see abs_eap_core_c::state_notification(). |
605 /// @see abs_eap_core_c::state_notification(). |
583 EAP_FUNC_IMPORT void state_notification( |
606 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H void state_notification( |
584 const abs_eap_state_notification_c * const state); |
607 const abs_eap_state_notification_c * const state); |
585 |
608 |
586 /// @see abs_eap_core_c::asynchronous_init_remove_eap_session(). |
609 /// @see abs_eap_core_c::asynchronous_init_remove_eap_session(). |
587 EAP_FUNC_IMPORT eap_status_e asynchronous_init_remove_eap_session( |
610 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e asynchronous_init_remove_eap_session( |
588 const eap_am_network_id_c * const send_network_id); |
611 const eap_am_network_id_c * const send_network_id); |
589 |
612 |
590 /// @see abs_eap_core_c::set_timer(). |
613 /// @see abs_eap_core_c::set_timer(). |
591 EAP_FUNC_IMPORT eap_status_e set_timer( |
614 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e set_timer( |
592 abs_eap_base_timer_c * const initializer, |
615 abs_eap_base_timer_c * const initializer, |
593 const u32_t id, |
616 const u32_t id, |
594 void * const data, |
617 void * const data, |
595 const u32_t p_time_ms); |
618 const u32_t p_time_ms); |
596 |
619 |
597 /// @see abs_eap_core_c::cancel_timer(). |
620 /// @see abs_eap_core_c::cancel_timer(). |
598 EAP_FUNC_IMPORT eap_status_e cancel_timer( |
621 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e cancel_timer( |
599 abs_eap_base_timer_c * const initializer, |
622 abs_eap_base_timer_c * const initializer, |
600 const u32_t id); |
623 const u32_t id); |
601 |
624 |
602 /// @see abs_eap_core_c::check_is_valid_eap_type(). |
625 /// @see abs_eap_core_c::check_is_valid_eap_type(). |
603 EAP_FUNC_IMPORT eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type); |
626 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type); |
604 |
627 |
605 /// @see abs_eap_core_c::get_eap_type_list(). |
628 /// @see abs_eap_core_c::get_eap_type_list(). |
606 EAP_FUNC_IMPORT eap_status_e get_eap_type_list( |
629 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e get_eap_type_list( |
607 eap_array_c<eap_type_value_e> * const eap_type_list); |
630 eap_array_c<eap_type_value_e> * const eap_type_list); |
608 |
631 |
609 /// @see tls_base_application_c::get_application_partner(). |
632 /// @see tls_base_application_c::get_application_partner(). |
610 EAP_FUNC_IMPORT abs_tls_base_application_c * get_application_partner(); |
633 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H abs_tls_base_application_c * get_application_partner(); |
611 |
634 |
612 /// @see tls_base_application_c::set_application_partner(). |
635 /// @see tls_base_application_c::set_application_partner(). |
613 EAP_FUNC_IMPORT eap_status_e set_application_partner(abs_tls_base_application_c * const partner); |
636 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e set_application_partner(abs_tls_base_application_c * const partner); |
614 |
637 |
615 /// @see tls_base_application_c::peap_tunnel_ready(). |
638 /// @see tls_base_application_c::peap_tunnel_ready(). |
616 EAP_FUNC_IMPORT eap_status_e peap_tunnel_ready(); |
639 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e peap_tunnel_ready(); |
617 |
640 |
618 EAP_FUNC_IMPORT eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list); |
641 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list); |
619 |
642 |
620 // This is documented in tls_base_application_c::set_session_timeout(). |
643 // This is documented in tls_base_application_c::set_session_timeout(). |
621 EAP_FUNC_IMPORT eap_status_e set_session_timeout( |
644 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e set_session_timeout( |
622 const u32_t session_timeout_ms); |
645 const u32_t session_timeout_ms); |
623 |
646 |
624 EAP_FUNC_IMPORT void set_tunneled_state( |
647 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H void set_tunneled_state( |
625 const tls_session_type_e tls_session_type); |
648 const tls_session_type_e tls_session_type); |
626 |
649 |
627 // This is commented in tls_base_record_c::read_authority_identity(). |
650 // This is commented in tls_base_record_c::read_authority_identity(). |
628 EAP_FUNC_IMPORT eap_status_e read_authority_identity(eap_variable_data_c * const authority_identity_payload); |
651 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e read_authority_identity(eap_variable_data_c * const authority_identity_payload); |
629 |
652 |
630 // This is commented in tls_base_record_c::save_user_authorization_pac_opaque(). |
653 // This is commented in tls_base_record_c::save_user_authorization_pac_opaque(). |
631 EAP_FUNC_IMPORT eap_status_e save_user_authorization_pac_opaque(const tls_extension_c * const extension); |
654 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e save_user_authorization_pac_opaque(const tls_extension_c * const extension); |
632 |
655 |
633 // This is commented in tls_base_record_c::query_tunnel_PAC(). |
656 // This is commented in tls_base_record_c::query_tunnel_PAC(). |
634 EAP_FUNC_IMPORT eap_status_e query_tunnel_PAC( |
657 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e query_tunnel_PAC( |
635 const eap_fast_variable_data_c * const in_A_ID_TLV); |
658 const eap_fast_variable_data_c * const in_A_ID_TLV); |
636 |
659 |
637 // This is commented in tls_base_record_c::cancel_query_tunnel_PAC(). |
660 // This is commented in tls_base_record_c::cancel_query_tunnel_PAC(). |
638 EAP_FUNC_IMPORT eap_status_e cancel_query_tunnel_PAC(); |
661 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e cancel_query_tunnel_PAC(); |
639 |
662 |
640 EAP_FUNC_IMPORT eap_status_e complete_query_ttls_pap_username_and_password( |
663 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e complete_query_ttls_pap_username_and_password( |
641 const eap_variable_data_c * const ttls_pap_username, |
664 const eap_variable_data_c * const ttls_pap_username, |
642 const eap_variable_data_c * const ttls_pap_password, |
665 const eap_variable_data_c * const ttls_pap_password, |
643 const eap_status_e query_result); |
666 const eap_status_e query_result); |
644 |
667 |
645 EAP_FUNC_IMPORT eap_status_e complete_verify_ttls_pap_username_and_password( |
668 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e complete_verify_ttls_pap_username_and_password( |
646 const eap_status_e authentication_result, |
669 const eap_status_e authentication_result, |
647 const eap_variable_data_c * const ttls_pap_reply_message); |
670 const eap_variable_data_c * const ttls_pap_reply_message); |
648 |
671 |
649 /** |
672 /** |
650 * This function is called when TLS-Alert message is received. |
673 * This function is called when TLS-Alert message is received. |
651 * Adaptation module could record this event. |
674 * Adaptation module could record this event. |
652 */ |
675 */ |
653 EAP_FUNC_IMPORT eap_status_e alert_received( |
676 EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H eap_status_e alert_received( |
654 const tls_alert_level_e alert_level, |
677 const tls_alert_level_e alert_level, |
655 const tls_alert_description_e alert_description); |
678 const tls_alert_description_e alert_description); |
656 |
679 |
657 //-------------------------------------------------- |
680 //-------------------------------------------------- |
658 }; // class tls_application_eap_core_c |
681 }; // class tls_application_eap_core_c |