eapol/eapol_framework/eapol_common/type/tls_peap/eap/include/eap_type_tls_peap.h
changeset 49 43351a4f2da3
parent 26 9abfd4f00d37
equal deleted inserted replaced
47:712b4ffd76bb 49:43351a4f2da3
    22 #if !defined(_EAP_TYPE_TLS_PEAP_H_)
    22 #if !defined(_EAP_TYPE_TLS_PEAP_H_)
    23 #define _EAP_TYPE_TLS_PEAP_H_
    23 #define _EAP_TYPE_TLS_PEAP_H_
    24 
    24 
    25 #include "eap_tools.h"
    25 #include "eap_tools.h"
    26 #include "eap_am_export.h"
    26 #include "eap_am_export.h"
       
    27 // Start: added by script change_export_macros.sh.
       
    28 #if defined(EAP_NO_EXPORT_EAP_TYPE_TLS_PEAP_H)
       
    29 	#define EAP_CLASS_VISIBILITY_EAP_TYPE_TLS_PEAP_H EAP_NONSHARABLE 
       
    30 	#define EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H 
       
    31 	#define EAP_C_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H 
       
    32 	#define EAP_FUNC_EXPORT_EAP_TYPE_TLS_PEAP_H 
       
    33 	#define EAP_C_FUNC_EXPORT_EAP_TYPE_TLS_PEAP_H 
       
    34 #elif defined(EAP_EXPORT_EAP_TYPE_TLS_PEAP_H)
       
    35 	#define EAP_CLASS_VISIBILITY_EAP_TYPE_TLS_PEAP_H EAP_EXPORT 
       
    36 	#define EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H EAP_FUNC_EXPORT 
       
    37 	#define EAP_C_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H EAP_C_FUNC_EXPORT 
       
    38 	#define EAP_FUNC_EXPORT_EAP_TYPE_TLS_PEAP_H EAP_FUNC_EXPORT 
       
    39 	#define EAP_C_FUNC_EXPORT_EAP_TYPE_TLS_PEAP_H EAP_C_FUNC_EXPORT 
       
    40 #else
       
    41 	#define EAP_CLASS_VISIBILITY_EAP_TYPE_TLS_PEAP_H EAP_IMPORT 
       
    42 	#define EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H EAP_FUNC_IMPORT 
       
    43 	#define EAP_C_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H EAP_C_FUNC_IMPORT 
       
    44 	#define EAP_FUNC_EXPORT_EAP_TYPE_TLS_PEAP_H 
       
    45 	#define EAP_C_FUNC_EXPORT_EAP_TYPE_TLS_PEAP_H 
       
    46 #endif
       
    47 // End: added by script change_export_macros.sh.
    27 #include "abs_eap_am_type_tls_peap.h"
    48 #include "abs_eap_am_type_tls_peap.h"
    28 #include "eap_am_network_id.h"
    49 #include "eap_am_network_id.h"
    29 #include "abs_eap_base_type.h"
    50 #include "abs_eap_base_type.h"
    30 #include "eap_base_type.h"
    51 #include "eap_base_type.h"
    31 #include "eap_variable_data.h"
    52 #include "eap_variable_data.h"
    45 
    66 
    46 //--------------------------------------------------
    67 //--------------------------------------------------
    47 
    68 
    48 
    69 
    49 /// This class is implementation of TLS/PEAP EAP type. See more detailed design and architecture document <a href="../../type/tls_peap/documentation/EAP_TLS_PEAP.doc">EAP_TLS_PEAP.doc</a>.
    70 /// This class is implementation of TLS/PEAP EAP type. See more detailed design and architecture document <a href="../../type/tls_peap/documentation/EAP_TLS_PEAP.doc">EAP_TLS_PEAP.doc</a>.
    50 class EAP_EXPORT eap_type_tls_peap_c
    71 class EAP_CLASS_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_type_tls_peap_c
    51 : public abs_eap_base_timer_c
    72 : public abs_eap_base_timer_c
    52 , public eap_base_type_c
    73 , public eap_base_type_c
    53 , public abs_eap_am_type_tls_peap_c
    74 , public abs_eap_am_type_tls_peap_c
    54 , public abs_tls_base_record_c
    75 , public abs_tls_base_record_c
    55 {
    76 {
   205 
   226 
   206 	bool m_use_eap_expanded_type;
   227 	bool m_use_eap_expanded_type;
   207 
   228 
   208 	//--------------------------------------------------
   229 	//--------------------------------------------------
   209 
   230 
   210 	EAP_FUNC_IMPORT eap_status_e select_peap_version(const u32_t proposed_peap_version);
   231 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e select_peap_version(const u32_t proposed_peap_version);
   211 
   232 
   212 	/**
   233 	/**
   213 	 * This function generates a new NAI from domain and identity.
   234 	 * This function generates a new NAI from domain and identity.
   214 	 */
   235 	 */
   215 	EAP_FUNC_IMPORT eap_status_e generate_nai(
   236 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e generate_nai(
   216 		eap_variable_data_c * const new_nai, ///< This is the new generated NAI.
   237 		eap_variable_data_c * const new_nai, ///< This is the new generated NAI.
   217 		const eap_variable_data_c * const domain, ///< This is the domain part of the NAI.
   238 		const eap_variable_data_c * const domain, ///< This is the domain part of the NAI.
   218 		const eap_variable_data_c * const identity ///< This is identity.
   239 		const eap_variable_data_c * const identity ///< This is identity.
   219 		);
   240 		);
   220 
   241 
   227 	 * See also parse_tls_peap_packet().
   248 	 * See also parse_tls_peap_packet().
   228 	 *
   249 	 *
   229 	 * Third is analysed the TLS/PEAP EAP packet. This includes the payload and values of each payload.
   250 	 * Third is analysed the TLS/PEAP EAP packet. This includes the payload and values of each payload.
   230 	 * See also analyse_tls_peap_packet().
   251 	 * See also analyse_tls_peap_packet().
   231 	 */
   252 	 */
   232 	EAP_FUNC_IMPORT eap_status_e handle_tls_peap_packet(
   253 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e handle_tls_peap_packet(
   233 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   254 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   234 		eap_tls_peap_header_c * const tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   255 		eap_tls_peap_header_c * const tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   235 		const u32_t tls_peap_length ///< This is length of received TLS/PEAP EAP packet.
   256 		const u32_t tls_peap_length ///< This is length of received TLS/PEAP EAP packet.
   236 		);
   257 		);
   237 
   258 
   239 	 * This function analyses the received TLS/PEAP EAP packet.
   260 	 * This function analyses the received TLS/PEAP EAP packet.
   240 	 * Each sub-type is handled in separate function.
   261 	 * Each sub-type is handled in separate function.
   241 	 * @see Client messages are handled in handle_start_request_message() and handle_challenge_request_message(). 
   262 	 * @see Client messages are handled in handle_start_request_message() and handle_challenge_request_message(). 
   242 	 * @see Server messages are handled in handle_start_response_message() and handle_challenge_response_message(). 
   263 	 * @see Server messages are handled in handle_start_response_message() and handle_challenge_response_message(). 
   243 	 */
   264 	 */
   244 	EAP_FUNC_IMPORT eap_status_e analyse_tls_peap_packet(
   265 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e analyse_tls_peap_packet(
   245 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   266 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   246 		eap_tls_peap_header_c * const received_tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   267 		eap_tls_peap_header_c * const received_tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   247 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   268 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   248 		);
   269 		);
   249 
   270 
   253 	 * Payloads are stored to p_tls_peap_payloads.
   274 	 * Payloads are stored to p_tls_peap_payloads.
   254 	 * @return If the length of the buffer and sum of the length of all payloads does not match
   275 	 * @return If the length of the buffer and sum of the length of all payloads does not match
   255 	 * function returns eap_status_header_corrupted.
   276 	 * function returns eap_status_header_corrupted.
   256 	 * Also error is returned when illegal payload attribute is recognised.
   277 	 * Also error is returned when illegal payload attribute is recognised.
   257 	 */
   278 	 */
   258 	EAP_FUNC_IMPORT eap_status_e parse_tls_peap_payload(
   279 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e parse_tls_peap_payload(
   259 		u32_t * const buffer_length ///< This is the length of the buffer. This must match with the length of all payloads.
   280 		u32_t * const buffer_length ///< This is the length of the buffer. This must match with the length of all payloads.
   260 		);
   281 		);
   261 
   282 
   262 	/**
   283 	/**
   263 	 * This function checks the version list payload of the TLS/PEAP EAP packet is correct.
   284 	 * This function checks the version list payload of the TLS/PEAP EAP packet is correct.
   264 	 */
   285 	 */
   265 	EAP_FUNC_IMPORT eap_status_e check_version_list(
   286 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e check_version_list(
   266 		const u16_t version_list_length,
   287 		const u16_t version_list_length,
   267 		u8_t * version_list);
   288 		u8_t * version_list);
   268 
   289 
   269 	/**
   290 	/**
   270 	 * This function parses all payloads of the whole TLS/PEAP EAP packet.
   291 	 * This function parses all payloads of the whole TLS/PEAP EAP packet.
   271 	 * Payloads are stored to p_tls_peap_payloads.
   292 	 * Payloads are stored to p_tls_peap_payloads.
   272 	 * @see parse_tls_peap_payload().
   293 	 * @see parse_tls_peap_payload().
   273 	 */
   294 	 */
   274 	EAP_FUNC_IMPORT eap_status_e parse_tls_peap_packet(
   295 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e parse_tls_peap_packet(
   275 		eap_tls_peap_header_c * const tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   296 		eap_tls_peap_header_c * const tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   276 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   297 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   277 		);
   298 		);
   278 
   299 
   279 	//--------------------------------------------------
   300 	//--------------------------------------------------
   280 
   301 
   281 	/**
   302 	/**
   282 	 * This function returns the domain name, realm part of NAI.
   303 	 * This function returns the domain name, realm part of NAI.
   283 	 */
   304 	 */
   284 	EAP_FUNC_IMPORT eap_variable_data_c * get_nai_realm();
   305 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_variable_data_c * get_nai_realm();
   285 
   306 
   286 	/**
   307 	/**
   287 	 * This function returns the full NAI.
   308 	 * This function returns the full NAI.
   288 	 */
   309 	 */
   289 	EAP_FUNC_IMPORT eap_variable_data_c * get_NAI();
   310 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_variable_data_c * get_NAI();
   290 
   311 
   291 	/**
   312 	/**
   292 	 * This is the situation before the update_buffer_indexes() call.
   313 	 * This is the situation before the update_buffer_indexes() call.
   293 	 * @code
   314 	 * @code
   294 	 * 
   315 	 * 
   319 	 *
   340 	 *
   320 	 * @endcode
   341 	 * @endcode
   321 	 *
   342 	 *
   322 	 * Note maximum_buffer_size could be larger than (m_tls_peap_header_offset + m_MTU + m_trailer_length).
   343 	 * Note maximum_buffer_size could be larger than (m_tls_peap_header_offset + m_MTU + m_trailer_length).
   323 	 */
   344 	 */
   324 	EAP_FUNC_IMPORT void update_buffer_indexes(
   345 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void update_buffer_indexes(
   325 		const u32_t maximum_buffer_size,
   346 		const u32_t maximum_buffer_size,
   326 		const u32_t payload_size,
   347 		const u32_t payload_size,
   327 		u32_t * const buffer_offset,
   348 		u32_t * const buffer_offset,
   328 		u32_t * const buffer_free);
   349 		u32_t * const buffer_free);
   329 
   350 
   366 	 *
   387 	 *
   367 	 * @endcode
   388 	 * @endcode
   368 	 *
   389 	 *
   369 	 * Note maximum_buffer_size could be larger than (m_tls_peap_header_offset + m_MTU + m_trailer_length).
   390 	 * Note maximum_buffer_size could be larger than (m_tls_peap_header_offset + m_MTU + m_trailer_length).
   370 	 */
   391 	 */
   371 	EAP_FUNC_IMPORT void update_payload_indexes(
   392 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void update_payload_indexes(
   372 		const u32_t maximum_buffer_size,
   393 		const u32_t maximum_buffer_size,
   373 		const u32_t eap_header_size,
   394 		const u32_t eap_header_size,
   374 		const u32_t payload_size,
   395 		const u32_t payload_size,
   375 		u32_t * const data_offset,
   396 		u32_t * const data_offset,
   376 		u32_t * const data_free,
   397 		u32_t * const data_free,
   378 		u32_t * const buffer_free);
   399 		u32_t * const buffer_free);
   379 
   400 
   380 	/**
   401 	/**
   381 	 * This function reads the identity payload. Identity is stored to handler->get_identity().
   402 	 * This function reads the identity payload. Identity is stored to handler->get_identity().
   382 	 */
   403 	 */
   383 	EAP_FUNC_IMPORT eap_status_e parse_identity(
   404 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e parse_identity(
   384 		const u8_t * const identity, ///< This is pointer to received EAP-Identity buffer.
   405 		const u8_t * const identity, ///< This is pointer to received EAP-Identity buffer.
   385 		const u32_t identity_length ///< This is length of received EAP-Identity buffer.
   406 		const u32_t identity_length ///< This is length of received EAP-Identity buffer.
   386 		);
   407 		);
   387 
   408 
   388 	/**
   409 	/**
   389 	 * This function handles the received EAP-Response/Identity message.
   410 	 * This function handles the received EAP-Response/Identity message.
   390 	 * First function parses the identity.
   411 	 * First function parses the identity.
   391 	 * The send_start_request_message() function will send the EAP-Request/SIM/Start message.
   412 	 * The send_start_request_message() function will send the EAP-Request/SIM/Start message.
   392 	 */
   413 	 */
   393 	EAP_FUNC_IMPORT eap_status_e handle_identity_response_message(
   414 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e handle_identity_response_message(
   394 		eap_header_rd_c * const eap_header, ///< This is the received EAP-Identity packet, pointer points to the header.
   415 		eap_header_rd_c * const eap_header, ///< This is the received EAP-Identity packet, pointer points to the header.
   395 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   416 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   396 		);
   417 		);
   397 
   418 
   398 	/**
   419 	/**
   399 	 * This function chechs NAI.
   420 	 * This function chechs NAI.
   400 	 */
   421 	 */
   401 	EAP_FUNC_IMPORT eap_status_e check_NAI(
   422 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e check_NAI(
   402 		const u8_t * const identity,
   423 		const u8_t * const identity,
   403 		const u32_t identity_length,
   424 		const u32_t identity_length,
   404 		const u8_t * const at_character);
   425 		const u8_t * const at_character);
   405 
   426 
   406 	/**
   427 	/**
   407 	 * This function traces the EAP packet.
   428 	 * This function traces the EAP packet.
   408 	 */
   429 	 */
   409 	EAP_FUNC_IMPORT void packet_trace(
   430 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void packet_trace(
   410 		eap_const_string prefix,
   431 		eap_const_string prefix,
   411 		const eap_am_network_id_c * const receive_network_id,
   432 		const eap_am_network_id_c * const receive_network_id,
   412 		eap_header_wr_c * const received_eap,
   433 		eap_header_wr_c * const received_eap,
   413 		const u32_t eap_packet_length);
   434 		const u32_t eap_packet_length);
   414 
   435 
   420 	/**
   441 	/**
   421 	 * This function finishes the successfull authentication.
   442 	 * This function finishes the successfull authentication.
   422 	 * Generated keys are offered to lower layer.
   443 	 * Generated keys are offered to lower layer.
   423 	 * Connection handle is initialised.
   444 	 * Connection handle is initialised.
   424 	 */
   445 	 */
   425 	EAP_FUNC_IMPORT eap_status_e finish_successful_authentication(
   446 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e finish_successful_authentication(
   426 		const bool send_tppd_peapv1_empty_acknowledge,
   447 		const bool send_tppd_peapv1_empty_acknowledge,
   427 		const bool do_quiet_finish,
   448 		const bool do_quiet_finish,
   428 		const bool do_send_empty_acknowledge);
   449 		const bool do_send_empty_acknowledge);
   429 
   450 
   430 	/**
   451 	/**
   431 	 * This function sends a notification of possible failed authentication
   452 	 * This function sends a notification of possible failed authentication
   432 	 * to lower layer.
   453 	 * to lower layer.
   433 	 */
   454 	 */
   434 	EAP_FUNC_IMPORT eap_status_e send_final_notification();
   455 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e send_final_notification();
   435 
   456 
   436 
   457 
   437 	/**
   458 	/**
   438 	 * This function returns the state of this authentication session.
   459 	 * This function returns the state of this authentication session.
   439 	 */
   460 	 */
   440 	EAP_FUNC_IMPORT eap_type_tls_peap_state_variable_e get_state() const;
   461 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_type_tls_peap_state_variable_e get_state() const;
   441 
   462 
   442 	/**
   463 	/**
   443 	 * This function sets the new state and notifies the lower layer of this change.
   464 	 * This function sets the new state and notifies the lower layer of this change.
   444 	 */
   465 	 */
   445 	EAP_FUNC_IMPORT void set_state(const eap_type_tls_peap_state_variable_e state);
   466 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void set_state(const eap_type_tls_peap_state_variable_e state);
   446 
   467 
   447 	/**
   468 	/**
   448 	 * This function saves the current m_state to m_saved_previous_state.
   469 	 * This function saves the current m_state to m_saved_previous_state.
   449 	 * The saved state is restored in error case.
   470 	 * The saved state is restored in error case.
   450 	 */
   471 	 */
   451 	EAP_FUNC_IMPORT void save_current_state();
   472 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void save_current_state();
   452 
   473 
   453 	/**
   474 	/**
   454 	 * This function restores the saved state.
   475 	 * This function restores the saved state.
   455 	 */
   476 	 */
   456 	EAP_FUNC_IMPORT void restore_saved_previous_state();
   477 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void restore_saved_previous_state();
   457 
   478 
   458 
   479 
   459 	/**
   480 	/**
   460 	 * This function returns the state of reassembly.
   481 	 * This function returns the state of reassembly.
   461 	 */
   482 	 */
   462 	EAP_FUNC_IMPORT eap_type_tls_peap_reassembly_state_e get_reassembly_state() const;
   483 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_type_tls_peap_reassembly_state_e get_reassembly_state() const;
   463 
   484 
   464 	/**
   485 	/**
   465 	 * This function sets the new reassembly state.
   486 	 * This function sets the new reassembly state.
   466 	 */
   487 	 */
   467 	EAP_FUNC_IMPORT void set_reassembly_state(const eap_type_tls_peap_reassembly_state_e state);
   488 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void set_reassembly_state(const eap_type_tls_peap_reassembly_state_e state);
   468 
   489 
   469 	/**
   490 	/**
   470 	 * This function saves the current m_reassembly_state to m_saved_previous_reassembly_state.
   491 	 * This function saves the current m_reassembly_state to m_saved_previous_reassembly_state.
   471 	 * The saved state is restored in error case.
   492 	 * The saved state is restored in error case.
   472 	 */
   493 	 */
   473 	EAP_FUNC_IMPORT void save_current_reassembly_state();
   494 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void save_current_reassembly_state();
   474 
   495 
   475 	/**
   496 	/**
   476 	 * This function restores the saved reassembly state.
   497 	 * This function restores the saved reassembly state.
   477 	 */
   498 	 */
   478 	EAP_FUNC_IMPORT void restore_saved_reassembly_state();
   499 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void restore_saved_reassembly_state();
   479 
   500 
   480 
   501 
   481 	/**
   502 	/**
   482 	 * This function returns the send network identity of this session.
   503 	 * This function returns the send network identity of this session.
   483 	 */
   504 	 */
   484 	EAP_FUNC_IMPORT eap_am_network_id_c * get_send_network_id();
   505 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_am_network_id_c * get_send_network_id();
   485 
   506 
   486 	/**
   507 	/**
   487 	 * This function stores the last EAP-Identifier.
   508 	 * This function stores the last EAP-Identifier.
   488 	 */
   509 	 */
   489 	EAP_FUNC_IMPORT void set_last_eap_identifier(const u8_t last_eap_identifier);
   510 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void set_last_eap_identifier(const u8_t last_eap_identifier);
   490 
   511 
   491 	/**
   512 	/**
   492 	 * This function returns the last stored EAP-Identifier.
   513 	 * This function returns the last stored EAP-Identifier.
   493 	 */
   514 	 */
   494 	EAP_FUNC_IMPORT u8_t get_last_eap_identifier() const;
   515 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H u8_t get_last_eap_identifier() const;
   495 
   516 
   496 	eap_status_e check_received_eap_identifier(
   517 	eap_status_e check_received_eap_identifier(
   497 		const eap_header_wr_c * const eap_header);
   518 		const eap_header_wr_c * const eap_header);
   498 
   519 
   499 
   520 
   500 	/**
   521 	/**
   501 	 * This function returns string of the current state. This is for trace purposes.
   522 	 * This function returns string of the current state. This is for trace purposes.
   502 	 */
   523 	 */
   503 	EAP_FUNC_IMPORT eap_const_string get_state_string() const;
   524 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_const_string get_state_string() const;
   504 
   525 
   505 	/**
   526 	/**
   506 	 * This function returns string of the current state. This is for trace purposes.
   527 	 * This function returns string of the current state. This is for trace purposes.
   507 	 */
   528 	 */
   508 	EAP_FUNC_IMPORT eap_const_string get_saved_previous_state_string() const;
   529 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_const_string get_saved_previous_state_string() const;
   509 
   530 
   510 	/**
   531 	/**
   511 	 * This function returns string of the current reassembly state. This is for trace purposes.
   532 	 * This function returns string of the current reassembly state. This is for trace purposes.
   512 	 */
   533 	 */
   513 	EAP_FUNC_IMPORT eap_const_string get_reassembly_state_string() const;
   534 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_const_string get_reassembly_state_string() const;
   514 
   535 
   515 
   536 
   516 	/**
   537 	/**
   517 	 * This function sets the m_failure_message_received flag true.
   538 	 * This function sets the m_failure_message_received flag true.
   518 	 */
   539 	 */
   519 	EAP_FUNC_IMPORT void set_failure_message_received();
   540 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void set_failure_message_received();
   520 
   541 
   521 	/**
   542 	/**
   522 	 * This function sets the m_failure_message_received flag false.
   543 	 * This function sets the m_failure_message_received flag false.
   523 	 */
   544 	 */
   524 	EAP_FUNC_IMPORT void unset_failure_message_received();
   545 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void unset_failure_message_received();
   525 
   546 
   526 	/**
   547 	/**
   527 	 * This function returns the m_failure_message_received flag.
   548 	 * This function returns the m_failure_message_received flag.
   528 	 */
   549 	 */
   529 	EAP_FUNC_IMPORT bool get_failure_message_received() const;
   550 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H bool get_failure_message_received() const;
   530 
   551 
   531 	/**
   552 	/**
   532 	 * This function sends an empty EAP-packet.
   553 	 * This function sends an empty EAP-packet.
   533 	 */
   554 	 */
   534 	EAP_FUNC_IMPORT eap_status_e send_empty_eap_ack();
   555 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e send_empty_eap_ack();
   535 
   556 
   536 	/**
   557 	/**
   537 	 * This function sends EAP-TLS/PEAP start message.
   558 	 * This function sends EAP-TLS/PEAP start message.
   538 	 */
   559 	 */
   539 	EAP_FUNC_IMPORT eap_status_e send_tls_peap_start_message(
   560 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e send_tls_peap_start_message(
   540 		const u8_t next_eap_identifier, ///< This is EAP-Identifier of next EAP packet.
   561 		const u8_t next_eap_identifier, ///< This is EAP-Identifier of next EAP packet.
   541 		const eap_variable_data_c * const authority_identity_payload
   562 		const eap_variable_data_c * const authority_identity_payload
   542 		);
   563 		);
   543 
   564 
   544 	/**
   565 	/**
   545 	 * This function sends starts EAP-TLS/PEAP after a start message is received.
   566 	 * This function sends starts EAP-TLS/PEAP after a start message is received.
   546 	 */
   567 	 */
   547 	EAP_FUNC_IMPORT eap_status_e start_tls_peap_authentication(
   568 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e start_tls_peap_authentication(
   548 		const eap_variable_data_c * const received_authority_identity_payload
   569 		const eap_variable_data_c * const received_authority_identity_payload
   549 		);
   570 		);
   550 
   571 
   551 	/**
   572 	/**
   552 	 * This function extracts the TLS-record message from m_tls_message_buffer and forwards it to tls_base_record_c object.
   573 	 * This function extracts the TLS-record message from m_tls_message_buffer and forwards it to tls_base_record_c object.
   553 	 */
   574 	 */
   554 	EAP_FUNC_IMPORT eap_status_e tls_message_process(
   575 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e tls_message_process(
   555 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   576 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   556 		eap_tls_peap_header_c * const received_tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   577 		eap_tls_peap_header_c * const received_tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   557 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   578 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   558 		);
   579 		);
   559 
   580 
   560 	/**
   581 	/**
   561 	 * This function sends the EAP-TLS/PEAP message from rm_tls_reassembly_buffer.
   582 	 * This function sends the EAP-TLS/PEAP message from rm_tls_reassembly_buffer.
   562 	 */
   583 	 */
   563 	EAP_FUNC_IMPORT eap_status_e eap_tls_peap_fragment_send();
   584 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e eap_tls_peap_fragment_send();
   564 
   585 
   565 	EAP_FUNC_IMPORT eap_status_e create_random_eap_identity(
   586 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e create_random_eap_identity(
   566 		eap_variable_data_c * const local_identity);
   587 		eap_variable_data_c * const local_identity);
   567 
   588 
   568 	EAP_FUNC_IMPORT eap_status_e create_eap_fast_mac_identity(
   589 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e create_eap_fast_mac_identity(
   569 		const eap_am_network_id_c * const send_network_id,
   590 		const eap_am_network_id_c * const send_network_id,
   570 		eap_variable_data_c * const mac_identity);
   591 		eap_variable_data_c * const mac_identity);
   571 
   592 
   572 	EAP_FUNC_IMPORT eap_status_e handle_eap_identity_query(
   593 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e handle_eap_identity_query(
   573 		const eap_variable_data_c * const user_certificate_identity,
   594 		const eap_variable_data_c * const user_certificate_identity,
   574 		const eap_am_network_id_c * const receive_network_id,
   595 		const eap_am_network_id_c * const receive_network_id,
   575 		const u8_t eap_identifier,
   596 		const u8_t eap_identifier,
   576 		const bool use_manual_username,
   597 		const bool use_manual_username,
   577 		const eap_variable_data_c * const manual_username,
   598 		const eap_variable_data_c * const manual_username,
   578 		const bool use_manual_realm,
   599 		const bool use_manual_realm,
   579 		const eap_variable_data_c * const manual_realm
   600 		const eap_variable_data_c * const manual_realm
   580 		);
   601 		);
   581 
   602 
   582 	EAP_FUNC_IMPORT tls_session_type_e get_tls_session_type();
   603 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H tls_session_type_e get_tls_session_type();
   583 
   604 
   584 	//--------------------------------------------------
   605 	//--------------------------------------------------
   585 protected:
   606 protected:
   586 	//--------------------------------------------------
   607 	//--------------------------------------------------
   587 
   608 
   590 	//--------------------------------------------------
   611 	//--------------------------------------------------
   591 
   612 
   592 	/**
   613 	/**
   593 	 * Destructor cancels all timers and deletes member attributes.
   614 	 * Destructor cancels all timers and deletes member attributes.
   594 	 */
   615 	 */
   595 	EAP_FUNC_IMPORT virtual ~eap_type_tls_peap_c();
   616 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H virtual ~eap_type_tls_peap_c();
   596 
   617 
   597 	/**
   618 	/**
   598 	 * Constructor initializes all member attributes.
   619 	 * Constructor initializes all member attributes.
   599 	 */
   620 	 */
   600 	EAP_FUNC_IMPORT eap_type_tls_peap_c(
   621 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_type_tls_peap_c(
   601 		abs_eap_am_tools_c * const tools, ///< This is pointer to the tools AM of current platform.
   622 		abs_eap_am_tools_c * const tools, ///< This is pointer to the tools AM of current platform.
   602 		abs_eap_base_type_c * const partner, ///< This is back pointer to object which created this object.
   623 		abs_eap_base_type_c * const partner, ///< This is back pointer to object which created this object.
   603 		eap_am_type_tls_peap_c * const am_type_tls_peap, ///< This is pointer to adaptation module of TLS/PEAP EAP type.
   624 		eap_am_type_tls_peap_c * const am_type_tls_peap, ///< This is pointer to adaptation module of TLS/PEAP EAP type.
   604 		const bool free_am_type_tls_peap,
   625 		const bool free_am_type_tls_peap,
   605 		tls_base_record_c * const tls_record, /// This is pointer to TLS implementation.
   626 		tls_base_record_c * const tls_record, /// This is pointer to TLS implementation.
   610 		);
   631 		);
   611 
   632 
   612 	/**
   633 	/**
   613 	 * This function creates reassembly state string.
   634 	 * This function creates reassembly state string.
   614 	 */
   635 	 */
   615 	EAP_FUNC_IMPORT static eap_const_string get_reassembly_state_string(eap_type_tls_peap_reassembly_state_e state);
   636 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H static eap_const_string get_reassembly_state_string(eap_type_tls_peap_reassembly_state_e state);
   616 
   637 
   617 	/**
   638 	/**
   618 	 * This function creates state string.
   639 	 * This function creates state string.
   619 	 */
   640 	 */
   620 	EAP_FUNC_IMPORT static eap_const_string get_state_string(eap_type_tls_peap_state_variable_e state);
   641 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H static eap_const_string get_state_string(eap_type_tls_peap_state_variable_e state);
   621 
   642 
   622 
   643 
   623 	/**
   644 	/**
   624 	 * This function tells if the object is a client or a server..
   645 	 * This function tells if the object is a client or a server..
   625 	 */
   646 	 */
   626 	EAP_FUNC_IMPORT bool get_is_client();
   647 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H bool get_is_client();
   627 
   648 
   628 	// This is commented in abs_eap_am_type_tls_peap_c::complete_eap_identity_query().
   649 	// This is commented in abs_eap_am_type_tls_peap_c::complete_eap_identity_query().
   629 	EAP_FUNC_IMPORT eap_status_e complete_eap_identity_query(
   650 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e complete_eap_identity_query(
   630 		const eap_variable_data_c * const user_certificate_identity,
   651 		const eap_variable_data_c * const user_certificate_identity,
   631 		const eap_am_network_id_c * const receive_network_id,
   652 		const eap_am_network_id_c * const receive_network_id,
   632 		const u8_t eap_identifier,
   653 		const u8_t eap_identifier,
   633 		const eap_status_e completion_status,
   654 		const eap_status_e completion_status,
   634 		const bool use_manual_username,
   655 		const bool use_manual_username,
   639 
   660 
   640 	/**
   661 	/**
   641 	 * The partner class calls this function when EAP/TLS/PEAP packet is received.
   662 	 * The partner class calls this function when EAP/TLS/PEAP packet is received.
   642 	 * see also eap_base_type_c::packet_process().
   663 	 * see also eap_base_type_c::packet_process().
   643 	 */
   664 	 */
   644 	EAP_FUNC_IMPORT eap_status_e packet_process(
   665 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e packet_process(
   645 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   666 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   646 		eap_header_wr_c * const eap, ///< This is pointer to EAP header and data.
   667 		eap_header_wr_c * const eap, ///< This is pointer to EAP header and data.
   647 		const u32_t eap_packet_length ///< This is length of received EAP packet.
   668 		const u32_t eap_packet_length ///< This is length of received EAP packet.
   648 		);
   669 		);
   649 
   670 
   650 	/**
   671 	/**
   651 	 * This function processes the EAP-Response/Identity.
   672 	 * This function processes the EAP-Response/Identity.
   652 	 */
   673 	 */
   653 	EAP_FUNC_IMPORT eap_status_e eap_identity_response_packet_process(
   674 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e eap_identity_response_packet_process(
   654 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   675 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   655 		eap_header_wr_c * const received_eap, ///< This is pointer to EAP header and data.
   676 		eap_header_wr_c * const received_eap, ///< This is pointer to EAP header and data.
   656 		const u32_t eap_packet_length ///< This is length of received EAP packet.
   677 		const u32_t eap_packet_length ///< This is length of received EAP packet.
   657 		);
   678 		);
   658 
   679 
   659 	/**
   680 	/**
   660 	 * This function processes the TLS/PEAP packets.
   681 	 * This function processes the TLS/PEAP packets.
   661 	 */
   682 	 */
   662 	EAP_FUNC_IMPORT eap_status_e tls_peap_packet_process(
   683 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e tls_peap_packet_process(
   663 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   684 		const eap_am_network_id_c * const receive_network_id, ///< This is the network identity of the received EAP packet.
   664 		eap_tls_peap_header_c * const received_tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   685 		eap_tls_peap_header_c * const received_tls_peap, ///< This is pointer to EAP header including EAP-TLS/PEAP fields.
   665 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   686 		const u32_t tls_peap_packet_length ///< This is length of received TLS/PEAP EAP packet.
   666 		);
   687 		);
   667 
   688 
   668 	// This is commented in abs_eap_base_timer_c::timer_delete_data().
   689 	// This is commented in abs_eap_base_timer_c::timer_delete_data().
   669 	EAP_FUNC_IMPORT eap_status_e timer_expired(
   690 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e timer_expired(
   670 		const u32_t id, void *data
   691 		const u32_t id, void *data
   671 		);
   692 		);
   672 
   693 
   673 	// This is commented in abs_eap_base_timer_c::timer_delete_data().
   694 	// This is commented in abs_eap_base_timer_c::timer_delete_data().
   674 	EAP_FUNC_IMPORT eap_status_e timer_delete_data(
   695 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e timer_delete_data(
   675 		const u32_t id, void *data
   696 		const u32_t id, void *data
   676 		);
   697 		);
   677 
   698 
   678 	// This is commented in eap_base_type_c::set_is_valid().
   699 	// This is commented in eap_base_type_c::set_is_valid().
   679 	EAP_FUNC_IMPORT void set_is_valid();
   700 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void set_is_valid();
   680 
   701 
   681 	// This is commented in eap_base_type_c::get_is_valid().
   702 	// This is commented in eap_base_type_c::get_is_valid().
   682 	EAP_FUNC_IMPORT bool get_is_valid();
   703 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H bool get_is_valid();
   683 
   704 
   684 	// This is commented in eap_base_type_c::configure().
   705 	// This is commented in eap_base_type_c::configure().
   685 	EAP_FUNC_IMPORT eap_status_e configure();
   706 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e configure();
   686 
   707 
   687 	// This is commented in eap_base_type_c::shutdown().
   708 	// This is commented in eap_base_type_c::shutdown().
   688 	EAP_FUNC_IMPORT eap_status_e shutdown();
   709 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e shutdown();
   689 
   710 
   690 	// This is commented in eap_base_type_c::query_eap_identity().
   711 	// This is commented in eap_base_type_c::query_eap_identity().
   691 	EAP_FUNC_IMPORT eap_status_e query_eap_identity(
   712 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e query_eap_identity(
   692 		const bool must_be_synchronous,
   713 		const bool must_be_synchronous,
   693 		eap_variable_data_c * const identity,
   714 		eap_variable_data_c * const identity,
   694 		const eap_am_network_id_c * const receive_network_id,
   715 		const eap_am_network_id_c * const receive_network_id,
   695 		const u8_t eap_identifier);
   716 		const u8_t eap_identifier);
   696 
   717 
   697 	// This is commented in eap_base_type_c::query_eap_identity().
   718 	// This is commented in eap_base_type_c::query_eap_identity().
   698 	EAP_FUNC_IMPORT eap_status_e set_initial_eap_identifier(
   719 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e set_initial_eap_identifier(
   699 		const eap_am_network_id_c * const receive_network_id,
   720 		const eap_am_network_id_c * const receive_network_id,
   700 		const u8_t initial_identifier);
   721 		const u8_t initial_identifier);
   701 
   722 
   702 	// This is commented in eap_base_type_c::eap_acknowledge().
   723 	// This is commented in eap_base_type_c::eap_acknowledge().
   703 	EAP_FUNC_IMPORT eap_status_e eap_acknowledge(
   724 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e eap_acknowledge(
   704 		const eap_am_network_id_c * const receive_network_id);
   725 		const eap_am_network_id_c * const receive_network_id);
   705 
   726 
   706 	/**
   727 	/**
   707 	 * This function must reset the state of object to same as 
   728 	 * This function must reset the state of object to same as 
   708 	 * state was after the configure() function call.
   729 	 * state was after the configure() function call.
   709 	 * If object reset succeeds this function must return eap_status_ok.
   730 	 * If object reset succeeds this function must return eap_status_ok.
   710 	 * If object reset fails this function must return corresponding error status.
   731 	 * If object reset fails this function must return corresponding error status.
   711 	 * @return This function returns the status of reset operation.
   732 	 * @return This function returns the status of reset operation.
   712 	 */
   733 	 */
   713 	EAP_FUNC_IMPORT eap_status_e reset();
   734 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e reset();
   714 
   735 
   715 	EAP_FUNC_IMPORT eap_status_e set_tls_master_secret(
   736 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e set_tls_master_secret(
   716 		const eap_variable_data_c * const eap_tls_master_session_key);
   737 		const eap_variable_data_c * const eap_tls_master_session_key);
   717 
   738 
   718 	/// @see abs_tls_base_record_c::state_notification().
   739 	/// @see abs_tls_base_record_c::state_notification().
   719 	EAP_FUNC_IMPORT void state_notification(
   740 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H void state_notification(
   720 		const abs_eap_state_notification_c * const state
   741 		const abs_eap_state_notification_c * const state
   721 		);
   742 		);
   722 
   743 
   723 	/// @see abs_tls_base_record_c::packet_send().
   744 	/// @see abs_tls_base_record_c::packet_send().
   724 	EAP_FUNC_IMPORT eap_status_e tls_peap_packet_send(
   745 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e tls_peap_packet_send(
   725 		eap_buf_chain_wr_c * const sent_packet,
   746 		eap_buf_chain_wr_c * const sent_packet,
   726 		const u32_t header_offset,
   747 		const u32_t header_offset,
   727 		const u32_t data_length,
   748 		const u32_t data_length,
   728 		const u32_t buffer_length,
   749 		const u32_t buffer_length,
   729 		const bool includes_tls_handshake_message);
   750 		const bool includes_tls_handshake_message);
   730 
   751 
   731 	/// @see abs_tls_base_record_c::packet_send().
   752 	/// @see abs_tls_base_record_c::packet_send().
   732 	EAP_FUNC_IMPORT eap_status_e packet_send(
   753 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e packet_send(
   733 		const eap_am_network_id_c * const network_id,
   754 		const eap_am_network_id_c * const network_id,
   734 		eap_buf_chain_wr_c * const sent_packet,
   755 		eap_buf_chain_wr_c * const sent_packet,
   735 		const u32_t header_offset,
   756 		const u32_t header_offset,
   736 		const u32_t data_length,
   757 		const u32_t data_length,
   737 		const u32_t buffer_length);
   758 		const u32_t buffer_length);
   738 
   759 
   739 	/// @see abs_tls_base_record_c::get_header_offset().
   760 	/// @see abs_tls_base_record_c::get_header_offset().
   740 	EAP_FUNC_IMPORT u32_t get_header_offset(
   761 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H u32_t get_header_offset(
   741 		u32_t * const MTU,
   762 		u32_t * const MTU,
   742 		u32_t * const trailer_length
   763 		u32_t * const trailer_length
   743 		);
   764 		);
   744 
   765 
   745 	/// @see abs_tls_base_record_c::restart_authentication().
   766 	/// @see abs_tls_base_record_c::restart_authentication().
   746 	EAP_FUNC_IMPORT eap_status_e restart_authentication(
   767 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e restart_authentication(
   747 		const eap_am_network_id_c * const receive_network_id,
   768 		const eap_am_network_id_c * const receive_network_id,
   748 		const bool is_client_when_true,
   769 		const bool is_client_when_true,
   749 		const bool force_clean_restart,
   770 		const bool force_clean_restart,
   750 		const bool from_timer);
   771 		const bool from_timer);
   751 
   772 
   752 	/// @see abs_tls_base_record_c::read_configure().
   773 	/// @see abs_tls_base_record_c::read_configure().
   753 	EAP_FUNC_IMPORT virtual eap_status_e read_configure(
   774 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H virtual eap_status_e read_configure(
   754 		const eap_configuration_field_c * const field,
   775 		const eap_configuration_field_c * const field,
   755 		eap_variable_data_c * const data
   776 		eap_variable_data_c * const data
   756 		);
   777 		);
   757 
   778 
   758 	/// @see abs_tls_base_record_c::write_configure().
   779 	/// @see abs_tls_base_record_c::write_configure().
   759 	EAP_FUNC_IMPORT virtual eap_status_e write_configure(
   780 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H virtual eap_status_e write_configure(
   760 		const eap_configuration_field_c * const field,
   781 		const eap_configuration_field_c * const field,
   761 		eap_variable_data_c * const data
   782 		eap_variable_data_c * const data
   762 		);
   783 		);
   763 
   784 
   764 	/// @see abs_tls_base_record_c::set_timer().
   785 	/// @see abs_tls_base_record_c::set_timer().
   765 	EAP_FUNC_IMPORT eap_status_e set_timer(
   786 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e set_timer(
   766 		abs_eap_base_timer_c * const p_initializer, 
   787 		abs_eap_base_timer_c * const p_initializer, 
   767 		const u32_t p_id, 
   788 		const u32_t p_id, 
   768 		void * const p_data,
   789 		void * const p_data,
   769 		const u32_t p_time_ms);
   790 		const u32_t p_time_ms);
   770 
   791 
   771 	/// @see abs_tls_base_record_c::cancel_timer().
   792 	/// @see abs_tls_base_record_c::cancel_timer().
   772 	EAP_FUNC_IMPORT eap_status_e cancel_timer(
   793 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e cancel_timer(
   773 		abs_eap_base_timer_c * const p_initializer, 
   794 		abs_eap_base_timer_c * const p_initializer, 
   774 		const u32_t p_id);
   795 		const u32_t p_id);
   775 
   796 
   776 	/// @see abs_tls_base_record_c::load_module().
   797 	/// @see abs_tls_base_record_c::load_module().
   777 	EAP_FUNC_IMPORT eap_status_e load_module(
   798 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e load_module(
   778 		const eap_type_value_e type,
   799 		const eap_type_value_e type,
   779 		const eap_type_value_e /* tunneling_type */,
   800 		const eap_type_value_e /* tunneling_type */,
   780 		abs_eap_base_type_c * const partner,
   801 		abs_eap_base_type_c * const partner,
   781 		eap_base_type_c ** const eap_type,
   802 		eap_base_type_c ** const eap_type,
   782 		const bool is_client_when_true,
   803 		const bool is_client_when_true,
   783 		const eap_am_network_id_c * const receive_network_id);
   804 		const eap_am_network_id_c * const receive_network_id);
   784 
   805 
   785 	/// @see abs_tls_base_record_c::unload_module().
   806 	/// @see abs_tls_base_record_c::unload_module().
   786 	EAP_FUNC_IMPORT eap_status_e unload_module(const eap_type_value_e type);
   807 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e unload_module(const eap_type_value_e type);
   787 
   808 
   788 	/// @see abs_tls_base_record_c::packet_data_crypto_keys().
   809 	/// @see abs_tls_base_record_c::packet_data_crypto_keys().
   789 	EAP_FUNC_IMPORT eap_status_e packet_data_crypto_keys(
   810 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e packet_data_crypto_keys(
   790 		const eap_am_network_id_c * const send_network_id,
   811 		const eap_am_network_id_c * const send_network_id,
   791 		const eap_master_session_key_c * const master_session_key);
   812 		const eap_master_session_key_c * const master_session_key);
   792 
   813 
   793 	/// @see abs_tls_base_record_c::check_is_valid_eap_type().
   814 	/// @see abs_tls_base_record_c::check_is_valid_eap_type().
   794 	EAP_FUNC_IMPORT eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   815 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   795 
   816 
   796 	/// @see abs_tls_base_record_c::get_eap_type_list().
   817 	/// @see abs_tls_base_record_c::get_eap_type_list().
   797 	EAP_FUNC_IMPORT eap_status_e get_eap_type_list(
   818 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e get_eap_type_list(
   798 		eap_array_c<eap_type_value_e> * const eap_type_list);
   819 		eap_array_c<eap_type_value_e> * const eap_type_list);
   799 
   820 
   800 	/// @see abs_tls_base_record_c::set_session_timeout().
   821 	/// @see abs_tls_base_record_c::set_session_timeout().
   801 	EAP_FUNC_IMPORT eap_status_e set_session_timeout(
   822 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e set_session_timeout(
   802 		const u32_t session_timeout_ms);
   823 		const u32_t session_timeout_ms);
   803 
   824 
   804 	EAP_FUNC_IMPORT eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   825 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   805 
   826 
   806 	EAP_FUNC_IMPORT eap_status_e peap_tunnel_ready();
   827 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e peap_tunnel_ready();
   807 
   828 
   808 	EAP_FUNC_IMPORT eap_status_e set_tls_session_type(const tls_session_type_e tls_session_type);
   829 	EAP_FUNC_VISIBILITY_EAP_TYPE_TLS_PEAP_H eap_status_e set_tls_session_type(const tls_session_type_e tls_session_type);
   809 
   830 
   810 	//--------------------------------------------------
   831 	//--------------------------------------------------
   811 }; // class eap_type_tls_peap_c
   832 }; // class eap_type_tls_peap_c
   812 
   833 
   813 #endif //#if !defined(_EAP_TYPE_TLS_PEAP_H_)
   834 #endif //#if !defined(_EAP_TYPE_TLS_PEAP_H_)