eapol/eapol_framework/eapol_common/type/tls_peap/tls/include/tls_application_eap_core.h
changeset 49 43351a4f2da3
parent 26 9abfd4f00d37
equal deleted inserted replaced
47:712b4ffd76bb 49:43351a4f2da3
    27 #include "tls_peap_types.h"
    27 #include "tls_peap_types.h"
    28 #include "tls_peap_tlv_header.h"
    28 #include "tls_peap_tlv_header.h"
    29 #include "tls_peap_tlv_payloads.h"
    29 #include "tls_peap_tlv_payloads.h"
    30 #include "eap_master_session_key.h"
    30 #include "eap_master_session_key.h"
    31 #include "eap_diameter_payloads.h"
    31 #include "eap_diameter_payloads.h"
       
    32 #include "eap_am_export.h"
       
    33 // Start: added by script change_export_macros.sh.
       
    34 #if defined(EAP_NO_EXPORT_TLS_APPLICATION_EAP_CORE_H)
       
    35 	#define EAP_CLASS_VISIBILITY_TLS_APPLICATION_EAP_CORE_H EAP_NONSHARABLE 
       
    36 	#define EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H 
       
    37 	#define EAP_C_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H 
       
    38 	#define EAP_FUNC_EXPORT_TLS_APPLICATION_EAP_CORE_H 
       
    39 	#define EAP_C_FUNC_EXPORT_TLS_APPLICATION_EAP_CORE_H 
       
    40 #elif defined(EAP_EXPORT_TLS_APPLICATION_EAP_CORE_H)
       
    41 	#define EAP_CLASS_VISIBILITY_TLS_APPLICATION_EAP_CORE_H EAP_EXPORT 
       
    42 	#define EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H EAP_FUNC_EXPORT 
       
    43 	#define EAP_C_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H EAP_C_FUNC_EXPORT 
       
    44 	#define EAP_FUNC_EXPORT_TLS_APPLICATION_EAP_CORE_H EAP_FUNC_EXPORT 
       
    45 	#define EAP_C_FUNC_EXPORT_TLS_APPLICATION_EAP_CORE_H EAP_C_FUNC_EXPORT 
       
    46 #else
       
    47 	#define EAP_CLASS_VISIBILITY_TLS_APPLICATION_EAP_CORE_H EAP_IMPORT 
       
    48 	#define EAP_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H EAP_FUNC_IMPORT 
       
    49 	#define EAP_C_FUNC_VISIBILITY_TLS_APPLICATION_EAP_CORE_H EAP_C_FUNC_IMPORT 
       
    50 	#define EAP_FUNC_EXPORT_TLS_APPLICATION_EAP_CORE_H 
       
    51 	#define EAP_C_FUNC_EXPORT_TLS_APPLICATION_EAP_CORE_H 
       
    52 #endif
       
    53 // End: added by script change_export_macros.sh.
       
    54 
    32 
    55 
    33 class abs_tls_base_application_c;
    56 class abs_tls_base_application_c;
    34 class abs_eap_am_tools_c;
    57 class abs_eap_am_tools_c;
    35 class eap_am_network_id_c;
    58 class eap_am_network_id_c;
    36 class tls_record_header_c;
    59 class tls_record_header_c;
    38 class peap_tlv_payloads_c;
    61 class peap_tlv_payloads_c;
    39 class eap_diameter_payloads_c;
    62 class eap_diameter_payloads_c;
    40 
    63 
    41 
    64 
    42 /// The tls_application_eap_core_c class is a implementation of tls_base_application_c.
    65 /// The tls_application_eap_core_c class is a implementation of tls_base_application_c.
    43 class EAP_EXPORT tls_application_eap_core_c
    66 class EAP_CLASS_VISIBILITY_TLS_APPLICATION_EAP_CORE_H tls_application_eap_core_c
    44 : public tls_base_application_c
    67 : public tls_base_application_c
    45 , public abs_eap_core_c
    68 , public abs_eap_core_c
    46 {
    69 {
    47 private:
    70 private:
    48 	//--------------------------------------------------
    71 	//--------------------------------------------------
   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