eapol/eapol_framework/eapol_common/include/eapol_wlan_authentication.h
changeset 52 c23bdf5a328a
parent 33 938269283a16
equal deleted inserted replaced
51:e863583e6720 52:c23bdf5a328a
    14 * Description:  EAP and WLAN authentication protocols.
    14 * Description:  EAP and WLAN authentication protocols.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 /*
    18 /*
    19 * %version: 18 %
    19 * %version: 23 %
    20 */
    20 */
    21 
    21 
    22 #if !defined(_EAPOL_WLAN_AUTHENTICATION_H_)
    22 #if !defined(_EAPOL_WLAN_AUTHENTICATION_H_)
    23 #define _EAPOL_WLAN_AUTHENTICATION_H_
    23 #define _EAPOL_WLAN_AUTHENTICATION_H_
    24 
    24 
    37 
    37 
    38 #if defined(USE_EAP_SIMPLE_CONFIG)
    38 #if defined(USE_EAP_SIMPLE_CONFIG)
    39 #include "abs_eap_configuration_if.h"
    39 #include "abs_eap_configuration_if.h"
    40 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
    40 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
    41 
    41 
       
    42 #include "eap_am_export.h"
       
    43 // Start: added by script change_export_macros.sh.
       
    44 #if defined(EAP_NO_EXPORT_EAPOL_WLAN_AUTHENTICATION_H)
       
    45 	#define EAP_CLASS_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H EAP_NONSHARABLE 
       
    46 	#define EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H 
       
    47 	#define EAP_C_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H 
       
    48 	#define EAP_FUNC_EXPORT_EAPOL_WLAN_AUTHENTICATION_H 
       
    49 	#define EAP_C_FUNC_EXPORT_EAPOL_WLAN_AUTHENTICATION_H 
       
    50 #elif defined(EAP_EXPORT_EAPOL_WLAN_AUTHENTICATION_H)
       
    51 	#define EAP_CLASS_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H EAP_EXPORT 
       
    52 	#define EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H EAP_FUNC_EXPORT 
       
    53 	#define EAP_C_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H EAP_C_FUNC_EXPORT 
       
    54 	#define EAP_FUNC_EXPORT_EAPOL_WLAN_AUTHENTICATION_H EAP_FUNC_EXPORT 
       
    55 	#define EAP_C_FUNC_EXPORT_EAPOL_WLAN_AUTHENTICATION_H EAP_C_FUNC_EXPORT 
       
    56 #else
       
    57 	#define EAP_CLASS_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H EAP_IMPORT 
       
    58 	#define EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H EAP_FUNC_IMPORT 
       
    59 	#define EAP_C_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H EAP_C_FUNC_IMPORT 
       
    60 	#define EAP_FUNC_EXPORT_EAPOL_WLAN_AUTHENTICATION_H 
       
    61 	#define EAP_C_FUNC_EXPORT_EAPOL_WLAN_AUTHENTICATION_H 
       
    62 #endif
       
    63 // End: added by script change_export_macros.sh.
       
    64 
    42 // FORWARD DECLARATIONS
    65 // FORWARD DECLARATIONS
    43 class ethernet_core_c;
    66 class ethernet_core_c;
    44 class eap_am_tools_symbian_c;
    67 class eap_am_tools_symbian_c;
    45 class eap_file_config_c;
    68 class eap_file_config_c;
    46 
    69 
    47 
    70 
    48 // CLASS DECLARATION
    71 // CLASS DECLARATION
    49 class EAP_EXPORT eapol_wlan_authentication_c
    72 class EAP_CLASS_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eapol_wlan_authentication_c
    50 : public abs_eapol_am_wlan_authentication_c
    73 : public abs_eapol_am_wlan_authentication_c
    51 , public abs_ethernet_core_c
    74 , public abs_ethernet_core_c
    52 , public abs_eap_base_timer_c
    75 , public abs_eap_base_timer_c
    53 #if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
    76 #if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
    54 , public eapol_test_stack_if_c
    77 , public eapol_test_stack_if_c
    58 , public abs_eap_configuration_if_c
    81 , public abs_eap_configuration_if_c
    59 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
    82 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
    60 {
    83 {
    61 public:
    84 public:
    62 
    85 
    63 	EAP_FUNC_IMPORT static eapol_wlan_authentication_c * new_eapol_wlan_authentication(
    86 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H static eapol_wlan_authentication_c * new_eapol_wlan_authentication(
    64 		abs_eap_am_tools_c * const tools,
    87 		abs_eap_am_tools_c * const tools,
    65 		abs_eapol_wlan_authentication_c * const partner,
    88 		abs_eapol_wlan_authentication_c * const partner,
    66 		const bool is_client_when_true);
    89 		const bool is_client_when_true);
    67 
    90 
    68 	EAP_FUNC_IMPORT eapol_wlan_authentication_c(
    91 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eapol_wlan_authentication_c(
    69 		abs_eap_am_tools_c * const tools,
    92 		abs_eap_am_tools_c * const tools,
    70 		abs_eapol_wlan_authentication_c * const partner,
    93 		abs_eapol_wlan_authentication_c * const partner,
    71 		eapol_am_wlan_authentication_c * const am_wauth, ///< eapol_wlan_authentication_c must always delete the am_wauth object.
    94 		eapol_am_wlan_authentication_c * const am_wauth, ///< eapol_wlan_authentication_c must always delete the am_wauth object.
    72 		const bool is_client_when_true);
    95 		const bool is_client_when_true);
    73 
    96 
    74 #if defined(EXPORT_DESTRUCTORS)
    97 	// Something in RVCT 2 forces this function cannot be exported.
    75 	EAP_FUNC_IMPORT virtual ~eapol_wlan_authentication_c();	 // For GCC compilation
    98 	virtual ~eapol_wlan_authentication_c();
    76 #else
    99 
    77 	virtual ~eapol_wlan_authentication_c();	 // For RVCT compilation
       
    78 #endif
       
    79 	
       
    80 	
       
    81 	///////////////////////////////////////////////////////////////
   100 	///////////////////////////////////////////////////////////////
    82 	/* These are called from WLM */
   101 	/* These are called from WLM */
    83 
   102 
    84 	/**
   103 	/**
    85 	 * This function checks whether PMKSA is cached to each eap_am_network_id_c object.
   104 	 * This function checks whether PMKSA is cached to each eap_am_network_id_c object.
    87 	 * no cached PMKSA for removes eap_am_network_id_c object.
   106 	 * no cached PMKSA for removes eap_am_network_id_c object.
    88 	 * All eap_am_network_id_c objects that exist in bssid_sta_receive_network_ids
   107 	 * All eap_am_network_id_c objects that exist in bssid_sta_receive_network_ids
    89 	 * after function returns have PMKSA cached and read_reassociation_parameters() can be called
   108 	 * after function returns have PMKSA cached and read_reassociation_parameters() can be called
    90 	 * with those eap_am_network_id_c objects.
   109 	 * with those eap_am_network_id_c objects.
    91 	 */
   110 	 */
    92 	EAP_FUNC_IMPORT eap_status_e check_pmksa_cache(
   111 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e check_pmksa_cache(
    93 		eap_array_c<eap_am_network_id_c> * const bssid_sta_receive_network_ids,
   112 		eap_array_c<eap_am_network_id_c> * const bssid_sta_receive_network_ids,
    94 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type,
   113 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type,
    95 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
   114 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
    96 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite);
   115 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite);
    97 
   116 
    98 	EAP_FUNC_IMPORT eap_status_e start_authentication(
   117 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e start_authentication(
    99 		const eap_variable_data_c * const SSID,
   118 		const eap_variable_data_c * const SSID,
   100 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type,
   119 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type,
   101 		const eap_variable_data_c * const wpa_preshared_key,
   120 		const eap_variable_data_c * const wpa_preshared_key,
   102 		const bool WPA_override_enabled,
   121 		const bool WPA_override_enabled,
   103 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   122 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   104 		);
   123 		);
   105 
   124 
   106 	EAP_FUNC_IMPORT eap_status_e complete_association(
   125 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e complete_association(
   107 		const eapol_wlan_authentication_state_e association_result,
   126 		const eapol_wlan_authentication_state_e association_result,
   108 		const eap_am_network_id_c * const receive_network_id, ///< source includes remote address, destination includes local address.
   127 		const eap_am_network_id_c * const receive_network_id, ///< source includes remote address, destination includes local address.
   109 		const eap_variable_data_c * const received_WPA_IE, // WLM must give only the WPA IE to EAPOL
   128 		const eap_variable_data_c * const received_WPA_IE, // WLM must give only the WPA IE to EAPOL
   110 		const eap_variable_data_c * const sent_WPA_IE,
   129 		const eap_variable_data_c * const sent_WPA_IE,
   111 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
   130 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
   112 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite
   131 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite
   113 		);
   132 		);
   114 	
   133 	
   115 	EAP_FUNC_IMPORT eap_status_e disassociation(
   134 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e disassociation(
   116 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   135 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   117 		);
   136 		);
   118 		
   137 		
   119 	EAP_FUNC_IMPORT eap_status_e start_preauthentication(
   138 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e start_preauthentication(
   120 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   139 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   121 		);
   140 		);
   122 
   141 
   123 	EAP_FUNC_IMPORT eap_status_e start_reassociation(
   142 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e start_reassociation(
   124 		const eap_am_network_id_c * const old_receive_network_id, ///< source includes remote address, destination includes local address.
   143 		const eap_am_network_id_c * const old_receive_network_id, ///< source includes remote address, destination includes local address.
   125 		const eap_am_network_id_c * const new_receive_network_id, ///< source includes remote address, destination includes local address.
   144 		const eap_am_network_id_c * const new_receive_network_id, ///< source includes remote address, destination includes local address.
   126 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type ///< In WPXM this must be the same in old and new APs, other connections can change authentication type.
   145 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type ///< In WPXM this must be the same in old and new APs, other connections can change authentication type.
   127 		);
   146 		);
   128 
   147 
   129 	EAP_FUNC_IMPORT eap_status_e complete_reassociation(
   148 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e complete_reassociation(
   130 		const eapol_wlan_authentication_state_e reassociation_result,
   149 		const eapol_wlan_authentication_state_e reassociation_result,
   131 		const eap_am_network_id_c * const receive_network_id,
   150 		const eap_am_network_id_c * const receive_network_id,
   132 		const eap_variable_data_c * const received_WPA_IE, // WLM must give only the WPA IE to EAPOL
   151 		const eap_variable_data_c * const received_WPA_IE, // WLM must give only the WPA IE to EAPOL
   133 		const eap_variable_data_c * const sent_WPA_IE,
   152 		const eap_variable_data_c * const sent_WPA_IE,
   134 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
   153 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
   135 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite);
   154 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite);
   136 
   155 
   137 	EAP_FUNC_IMPORT eap_status_e start_WPXM_reassociation(
   156 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e start_WPXM_reassociation(
   138 		const eap_am_network_id_c * const old_receive_network_id, ///< source includes remote address, destination includes local address.
   157 		const eap_am_network_id_c * const old_receive_network_id, ///< source includes remote address, destination includes local address.
   139 		const eap_am_network_id_c * const new_receive_network_id, ///< source includes remote address, destination includes local address.
   158 		const eap_am_network_id_c * const new_receive_network_id, ///< source includes remote address, destination includes local address.
   140 		eap_variable_data_c * const send_reassociation_request_ie,
   159 		eap_variable_data_c * const send_reassociation_request_ie,
   141 		const eap_variable_data_c * const received_WPA_ie,
   160 		const eap_variable_data_c * const received_WPA_ie,
   142 		const eap_variable_data_c * const sent_WPA_ie);
   161 		const eap_variable_data_c * const sent_WPA_ie);
   143 
   162 
   144 	EAP_FUNC_IMPORT eap_status_e complete_WPXM_reassociation(
   163 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e complete_WPXM_reassociation(
   145 		const eapol_wlan_authentication_state_e reassociation_result,
   164 		const eapol_wlan_authentication_state_e reassociation_result,
   146 		const eap_am_network_id_c * const receive_network_id,
   165 		const eap_am_network_id_c * const receive_network_id,
   147 		const eap_variable_data_c * const received_reassociation_ie);
   166 		const eap_variable_data_c * const received_reassociation_ie);
   148 
   167 
   149 	EAP_FUNC_IMPORT eap_status_e packet_process(
   168 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e packet_process(
   150 		const eap_am_network_id_c * const receive_network_id, ///< source includes remote address, destination includes local address.
   169 		const eap_am_network_id_c * const receive_network_id, ///< source includes remote address, destination includes local address.
   151 		eap_general_header_base_c * const packet_data,
   170 		eap_general_header_base_c * const packet_data,
   152 		const u32_t packet_length
   171 		const u32_t packet_length
   153 		);
   172 		);
   154 
   173 
   155 	EAP_FUNC_IMPORT eap_status_e tkip_mic_failure(
   174 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e tkip_mic_failure(
   156 		const eap_am_network_id_c * const receive_network_id, ///< source includes remote address, destination includes local address.
   175 		const eap_am_network_id_c * const receive_network_id, ///< source includes remote address, destination includes local address.
   157 		const bool fatal_failure_when_true,
   176 		const bool fatal_failure_when_true,
   158 		const eapol_RSNA_key_header_c::eapol_tkip_mic_failure_type_e tkip_mic_failure_type
   177 		const eapol_RSNA_key_header_c::eapol_tkip_mic_failure_type_e tkip_mic_failure_type
   159 		);
   178 		);
   160 
   179 
   161 	EAP_FUNC_IMPORT eap_status_e eap_acknowledge(
   180 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e eap_acknowledge(
   162 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   181 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   163 		); 
   182 		); 
   164 
   183 
   165 	EAP_FUNC_IMPORT eap_status_e set_eap_database_reference_values(
   184 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e set_eap_database_reference_values(
   166 		const eap_variable_data_c * const reference);
   185 		const eap_variable_data_c * const reference);
   167 
   186 
   168 	/////////////////////////////////////////
   187 	/////////////////////////////////////////
   169 	/* These are called from ethernet_core */
   188 	/* These are called from ethernet_core */
   170 	
   189 	
   171 	/**
   190 	/**
   172 	* Sends packet to lower layers
   191 	* Sends packet to lower layers
   173 	*/
   192 	*/
   174 	EAP_FUNC_IMPORT eap_status_e packet_send(
   193 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e packet_send(
   175 		const eap_am_network_id_c * const send_network_id, ///< source includes local address, destination includes remote address.
   194 		const eap_am_network_id_c * const send_network_id, ///< source includes local address, destination includes remote address.
   176 		eap_buf_chain_wr_c * const sent_packet,
   195 		eap_buf_chain_wr_c * const sent_packet,
   177 		const u32_t header_offset,
   196 		const u32_t header_offset,
   178 		const u32_t data_length,
   197 		const u32_t data_length,
   179 		const u32_t buffer_length); 
   198 		const u32_t buffer_length); 
   180 
   199 
   181 	EAP_FUNC_IMPORT u32_t get_header_offset(
   200 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H u32_t get_header_offset(
   182 		u32_t * const MTU,
   201 		u32_t * const MTU,
   183 		u32_t * const trailer_length);
   202 		u32_t * const trailer_length);
   184 
   203 
   185 	/**
   204 	/**
   186 	* Loads an EAP type plug-in.
   205 	* Loads an EAP type plug-in.
   188 	* @param partner Pointer to the partner class for the EAP type.
   207 	* @param partner Pointer to the partner class for the EAP type.
   189 	* @param eap_type The pointer for the loaded type should be set here.
   208 	* @param eap_type The pointer for the loaded type should be set here.
   190 	* @param is_client_when_true Indicates whether the loaded EAP type should be client or server.
   209 	* @param is_client_when_true Indicates whether the loaded EAP type should be client or server.
   191 	* @param receive_network_id Network address.
   210 	* @param receive_network_id Network address.
   192 	*/
   211 	*/
   193 	EAP_FUNC_IMPORT eap_status_e load_module(
   212 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e load_module(
   194 		const eap_type_value_e type,
   213 		const eap_type_value_e type,
   195 		const eap_type_value_e /* tunneling_type */,
   214 		const eap_type_value_e /* tunneling_type */,
   196 		abs_eap_base_type_c * const partner,
   215 		abs_eap_base_type_c * const partner,
   197 		eap_base_type_c ** const eap_type,
   216 		eap_base_type_c ** const eap_type,
   198 		const bool is_client_when_true,
   217 		const bool is_client_when_true,
   199 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   218 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   200 		);
   219 		);
   201 
   220 
   202 	EAP_FUNC_IMPORT eap_status_e unload_module(const eap_type_value_e type); 	
   221 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e unload_module(const eap_type_value_e type); 	
   203 
   222 
   204 	EAP_FUNC_IMPORT void set_is_valid();
   223 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H void set_is_valid();
   205 
   224 
   206 	EAP_FUNC_IMPORT bool get_is_valid();
   225 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H bool get_is_valid();
   207 
   226 
   208 	EAP_FUNC_IMPORT void increment_authentication_counter();
   227 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H void increment_authentication_counter();
   209 
   228 
   210 	EAP_FUNC_IMPORT u32_t get_authentication_counter();
   229 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H u32_t get_authentication_counter();
   211 
   230 
   212 	EAP_FUNC_IMPORT bool get_is_client();
   231 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H bool get_is_client();
   213 
   232 
   214 	/**
   233 	/**
   215 	* This does the initial configuration of the class.
   234 	* This does the initial configuration of the class.
   216 	*/
   235 	*/
   217 	EAP_FUNC_IMPORT eap_status_e configure();
   236 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e configure();
   218 
   237 
   219 	EAP_FUNC_IMPORT eap_status_e shutdown();
   238 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e shutdown();
   220 
   239 
   221 	/**
   240 	/**
   222 	* Reads a configuration parameter value from the database. 
   241 	* Reads a configuration parameter value from the database. 
   223 	* In Symbian this function is only a TRAP wrapper for read_configure_L.
   242 	* In Symbian this function is only a TRAP wrapper for read_configure_L.
   224 	*/
   243 	*/
   225 	EAP_FUNC_IMPORT eap_status_e read_configure(
   244 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e read_configure(
   226 		const eap_configuration_field_c * const field,
   245 		const eap_configuration_field_c * const field,
   227 		eap_variable_data_c * const data);
   246 		eap_variable_data_c * const data);
   228 
   247 
   229 	EAP_FUNC_IMPORT eap_status_e write_configure(
   248 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e write_configure(
   230 		const eap_configuration_field_c * const field,
   249 		const eap_configuration_field_c * const field,
   231 		eap_variable_data_c * const data);
   250 		eap_variable_data_c * const data);
   232 
   251 
   233 	// See abs_eap_base_type_c::state_notification().
   252 	// See abs_eap_base_type_c::state_notification().
   234 	EAP_FUNC_IMPORT void state_notification(const abs_eap_state_notification_c * const state);
   253 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H void state_notification(const abs_eap_state_notification_c * const state);
   235 	
   254 	
   236 	EAP_FUNC_IMPORT eap_status_e set_timer(
   255 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e set_timer(
   237 		abs_eap_base_timer_c * const p_initializer, 
   256 		abs_eap_base_timer_c * const p_initializer, 
   238 		const u32_t p_id, 
   257 		const u32_t p_id, 
   239 		void * const p_data,
   258 		void * const p_data,
   240 		const u32_t p_time_ms);
   259 		const u32_t p_time_ms);
   241 
   260 
   242 	EAP_FUNC_IMPORT eap_status_e cancel_timer(
   261 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e cancel_timer(
   243 		abs_eap_base_timer_c * const p_initializer, 
   262 		abs_eap_base_timer_c * const p_initializer, 
   244 		const u32_t p_id);
   263 		const u32_t p_id);
   245 
   264 
   246 	EAP_FUNC_IMPORT eap_status_e cancel_all_timers();
   265 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e cancel_all_timers();
   247 
   266 
   248 	EAP_FUNC_IMPORT eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   267 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   249 
   268 
   250 	/**
   269 	/**
   251 	* Forwards the keys to lower layer (= WLM).
   270 	* Forwards the keys to lower layer (= WLM).
   252 	*/
   271 	*/
   253 	EAP_FUNC_IMPORT eap_status_e packet_data_session_key(
   272 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e packet_data_session_key(
   254 		const eap_am_network_id_c * const send_network_id, ///< source includes local address, destination includes remote address.
   273 		const eap_am_network_id_c * const send_network_id, ///< source includes local address, destination includes remote address.
   255 		const eapol_session_key_c * const key);
   274 		const eapol_session_key_c * const key);
   256 
   275 
   257 	EAP_FUNC_IMPORT eap_status_e timer_expired(const u32_t id, void *data);
   276 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e timer_expired(const u32_t id, void *data);
   258 
   277 
   259 	EAP_FUNC_IMPORT eap_status_e timer_delete_data(const u32_t id, void *data);
   278 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e timer_delete_data(const u32_t id, void *data);
   260 
   279 
   261 	EAP_FUNC_IMPORT eap_status_e get_eap_type_list(
   280 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e get_eap_type_list(
   262 		eap_array_c<eap_type_value_e> * const eap_type_list);
   281 		eap_array_c<eap_type_value_e> * const eap_type_list);
   263 
   282 
   264 	EAP_FUNC_IMPORT eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   283 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   265 
   284 
   266 	EAP_FUNC_IMPORT u32_t get_current_eap_index();
   285 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H u32_t get_current_eap_index();
   267 
   286 
   268 	EAP_FUNC_IMPORT void set_current_eap_index(u32_t eap_index);
   287 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H void set_current_eap_index(u32_t eap_index);
   269 
   288 
   270 
   289 
   271 #if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
   290 #if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
   272 	/// These are called by testing application.
   291 	/// These are called by testing application.
   273 	EAP_FUNC_IMPORT u32_t get_wrong_send_packet_index();
   292 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H u32_t get_wrong_send_packet_index();
   274 
   293 
   275 	EAP_FUNC_IMPORT void reset_authentication_can_succeed();
   294 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H void reset_authentication_can_succeed();
   276 
   295 
   277 	EAP_FUNC_IMPORT void set_authentication_can_succeed();
   296 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H void set_authentication_can_succeed();
   278 
   297 
   279 	EAP_FUNC_IMPORT void restore_authentication_can_succeed();
   298 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H void restore_authentication_can_succeed();
   280 
   299 
   281 	EAP_FUNC_IMPORT void set_authentication_must_not_succeed(
   300 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H void set_authentication_must_not_succeed(
   282         const u32_t wrong_packet_index,
   301         const u32_t wrong_packet_index,
   283         const u32_t packet_index,
   302         const u32_t packet_index,
   284         const void * const wrong_packet_stack);
   303         const void * const wrong_packet_stack);
   285 #endif //#if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
   304 #endif //#if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
   286 
   305 
   287 #if defined(USE_EAP_SIMPLE_CONFIG)
   306 #if defined(USE_EAP_SIMPLE_CONFIG)
   288 	EAP_FUNC_IMPORT eap_status_e save_simple_config_session(
   307 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e save_simple_config_session(
   289 		const simple_config_state_e state,
   308 		const simple_config_state_e state,
   290 		EAP_TEMPLATE_CONST eap_array_c<simple_config_credential_c> * const credential_array,
   309 		EAP_TEMPLATE_CONST eap_array_c<simple_config_credential_c> * const credential_array,
   291 		const eap_variable_data_c * const new_password,
   310 		const eap_variable_data_c * const new_password,
   292 		const simple_config_Device_Password_ID_e Device_Password_ID,
   311 		const simple_config_Device_Password_ID_e Device_Password_ID,
   293 		const simple_config_payloads_c * const other_configuration);
   312 		const simple_config_payloads_c * const other_configuration);
   294 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
   313 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
   295 
   314 
   296 	EAP_FUNC_IMPORT eap_status_e complete_get_802_11_authentication_mode(
   315 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e complete_get_802_11_authentication_mode(
   297 		const eap_status_e completion_status,
   316 		const eap_status_e completion_status,
   298 		const eap_am_network_id_c * const receive_network_id,
   317 		const eap_am_network_id_c * const receive_network_id,
   299 		const eapol_key_802_11_authentication_mode_e mode);
   318 		const eapol_key_802_11_authentication_mode_e mode);
   300 
   319 
   301 	EAP_FUNC_IMPORT eap_status_e complete_disassociation(
   320 	EAP_FUNC_VISIBILITY_EAPOL_WLAN_AUTHENTICATION_H eap_status_e complete_disassociation(
   302 		const bool complete_to_lower_layer,
   321 		const bool complete_to_lower_layer,
   303 		const eap_am_network_id_c * const receive_network_id);
   322 		const eap_am_network_id_c * const receive_network_id);
   304 
   323 
   305 private:
   324 private:
   306 
   325