eapol/eapol_framework/eapol_common/include/eapol_wlan_authentication.h
branchRCL_3
changeset 46 c74b3d9f6b9e
parent 45 bad0cc58d154
equal deleted inserted replaced
45:bad0cc58d154 46:c74b3d9f6b9e
    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: 6.1.2 %
    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 
    30 #include "eapol_key_types.h"
    30 #include "eapol_key_types.h"
    31 #include "eap_type_selection.h"
    31 #include "eap_type_selection.h"
    32 #include "eap_array.h"
    32 #include "eap_array.h"
    33 #include "eapol_key_state.h"
    33 #include "eapol_key_state.h"
    34 #include "eapol_test_stack_if.h"
    34 #include "eapol_test_stack_if.h"
    35 #include "eap_database_reference_if.h"
       
    36 #include "abs_eap_configuration_if.h"
       
    37 
    35 
    38 #if defined(USE_EAP_SIMPLE_CONFIG)
    36 #if defined(USE_EAP_SIMPLE_CONFIG)
    39 #include "abs_eap_configuration_if.h"
    37 #include "abs_eap_configuration_if.h"
    40 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
    38 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
    41 
    39 
    51 , public abs_ethernet_core_c
    49 , public abs_ethernet_core_c
    52 , public abs_eap_base_timer_c
    50 , public abs_eap_base_timer_c
    53 #if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
    51 #if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
    54 , public eapol_test_stack_if_c
    52 , public eapol_test_stack_if_c
    55 #endif //#if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
    53 #endif //#if defined(USE_TEST_EAPOL_WLAN_AUTHENTICATION)
    56 , public eap_database_reference_if_c
       
    57 #if defined(USE_EAP_SIMPLE_CONFIG)
    54 #if defined(USE_EAP_SIMPLE_CONFIG)
    58 , public abs_eap_configuration_if_c
    55 , public abs_eap_configuration_if_c
    59 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
    56 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
    60 {
    57 {
    61 public:
    58 public:
    62 
    59 
    63 	EAP_FUNC_IMPORT static eapol_wlan_authentication_c * new_eapol_wlan_authentication(
    60 	EAP_FUNC_IMPORT static eapol_wlan_authentication_c * new_eapol_wlan_authentication(
    64 		abs_eap_am_tools_c * const tools,
    61 		abs_eap_am_tools_c * const tools,
    65 		abs_eapol_wlan_authentication_c * const partner,
    62 		abs_eapol_wlan_authentication_c * const partner,
    66 		const bool is_client_when_true);
    63 		const bool is_client_when_true,
       
    64 		const abs_eapol_wlan_database_reference_if_c * const wlan_database_reference);
    67 
    65 
    68 	EAP_FUNC_IMPORT eapol_wlan_authentication_c(
    66 	EAP_FUNC_IMPORT eapol_wlan_authentication_c(
    69 		abs_eap_am_tools_c * const tools,
    67 		abs_eap_am_tools_c * const tools,
    70 		abs_eapol_wlan_authentication_c * const partner,
    68 		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.
    69 		eapol_am_wlan_authentication_c * const am_wauth, ///< eapol_wlan_authentication_c must always delete the am_wauth object.
    97 
    95 
    98 	EAP_FUNC_IMPORT eap_status_e start_authentication(
    96 	EAP_FUNC_IMPORT eap_status_e start_authentication(
    99 		const eap_variable_data_c * const SSID,
    97 		const eap_variable_data_c * const SSID,
   100 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type,
    98 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type,
   101 		const eap_variable_data_c * const wpa_preshared_key,
    99 		const eap_variable_data_c * const wpa_preshared_key,
   102 		const bool WPA_override_enabled,
   100 		const bool WPA_override_enabled
   103 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   101 #if defined(USE_EAPOL_KEY_STATE_OPTIMIZED_4_WAY_HANDSHAKE)
       
   102 		,
       
   103 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
       
   104 #endif //#if defined(USE_EAPOL_KEY_STATE_OPTIMIZED_4_WAY_HANDSHAKE)
   104 		);
   105 		);
   105 
   106 
   106 	EAP_FUNC_IMPORT eap_status_e complete_association(
   107 	EAP_FUNC_IMPORT eap_status_e complete_association(
   107 		const eapol_wlan_authentication_state_e association_result,
   108 		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.
   109 		const eap_am_network_id_c * const receive_network_id, ///< source includes remote address, destination includes local address.
   159 		);
   160 		);
   160 
   161 
   161 	EAP_FUNC_IMPORT eap_status_e eap_acknowledge(
   162 	EAP_FUNC_IMPORT eap_status_e eap_acknowledge(
   162 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   163 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   163 		); 
   164 		); 
   164 
       
   165 	EAP_FUNC_IMPORT eap_status_e set_eap_database_reference_values(
       
   166 		const eap_variable_data_c * const reference);
       
   167 
   165 
   168 	/////////////////////////////////////////
   166 	/////////////////////////////////////////
   169 	/* These are called from ethernet_core */
   167 	/* These are called from ethernet_core */
   170 	
   168 	
   171 	/**
   169 	/**
   291 		const eap_variable_data_c * const new_password,
   289 		const eap_variable_data_c * const new_password,
   292 		const simple_config_Device_Password_ID_e Device_Password_ID,
   290 		const simple_config_Device_Password_ID_e Device_Password_ID,
   293 		const simple_config_payloads_c * const other_configuration);
   291 		const simple_config_payloads_c * const other_configuration);
   294 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
   292 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
   295 
   293 
   296 	EAP_FUNC_IMPORT eap_status_e complete_get_802_11_authentication_mode(
       
   297 		const eap_status_e completion_status,
       
   298 		const eap_am_network_id_c * const receive_network_id,
       
   299 		const eapol_key_802_11_authentication_mode_e mode);
       
   300 
       
   301 	EAP_FUNC_IMPORT eap_status_e complete_disassociation(
       
   302 		const bool complete_to_lower_layer,
       
   303 		const eap_am_network_id_c * const receive_network_id);
       
   304 
       
   305 private:
   294 private:
   306 
   295 
   307 	eap_status_e eapol_indication(
   296 	EAP_FUNC_IMPORT eap_status_e eapol_indication(
   308 		const eap_am_network_id_c * const receive_network_id, ///< source includes remote address, destination includes local address.
   297 		const eap_am_network_id_c * const receive_network_id, ///< source includes remote address, destination includes local address.
   309 		const eapol_wlan_authentication_state_e notification);
   298 		const eapol_wlan_authentication_state_e notification);
   310 
   299 
   311 	eap_status_e create_upper_stack();
   300 	EAP_FUNC_IMPORT eap_status_e create_upper_stack();
   312 
   301 
   313 	eap_status_e disassociation_mutex_must_be_reserved(
   302 	eap_status_e disassociation_mutex_must_be_reserved(
   314 		const bool complete_to_lower_layer,
       
   315 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
       
   316 		);
       
   317 
       
   318 	eap_status_e internal_disassociation(
       
   319 		const bool complete_to_lower_layer,
       
   320 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   303 		const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
   321 		);
   304 		);
   322 
   305 
   323 	eap_status_e cancel_all_authentication_sessions();
   306 	eap_status_e cancel_all_authentication_sessions();
   324 
   307 
   325 	eap_status_e complete_check_pmksa_cache(
   308 private:
   326 		EAP_TEMPLATE_CONST eap_array_c<eap_am_network_id_c> * const bssid_sta_receive_network_ids);
   309 
   327 
   310 
   328 	eap_status_e cancel_timer_this_ap_failed();
   311 	eap_status_e cancel_timer_this_ap_failed();
   329 
   312 
   330 	eap_status_e cancel_timer_failed_completely();
   313 	eap_status_e cancel_timer_failed_completely();
   331 
   314 
   332 	eap_status_e cancel_timer_no_response();
   315 	eap_status_e cancel_timer_no_response();
   333 
   316 
   334 	eap_status_e cancel_timer_authentication_cancelled();
   317 	eap_status_e cancel_timer_authentication_cancelled();
   335 
   318 
   336 private:
   319 
   337 
   320 
   338 	/// Pointer to the lower layer in the stack
   321 	/// Pointer to the lower layer in the stack
   339 	abs_eapol_wlan_authentication_c * m_partner;
   322 	abs_eapol_wlan_authentication_c * m_partner;
   340 
   323 
   341 	/// Pointer to the AM of WAUTH.
   324 	/// Pointer to the AM of WAUTH.
   347 	/// Pointer to the tools class
   330 	/// Pointer to the tools class
   348 	abs_eap_am_tools_c * m_am_tools;
   331 	abs_eap_am_tools_c * m_am_tools;
   349 
   332 
   350 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   333 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   351 
   334 
   352 	//eap_array_c<eap_type_selection_c> m_selected_eap_types;
   335 	eap_array_c<eap_type_selection_c> m_selected_eap_types;
   353 
   336 
   354 	eap_variable_data_c m_wpa_preshared_key_hash;
   337 	eap_variable_data_c m_wpa_preshared_key_hash;
   355 
   338 
   356 	eapol_key_authentication_type_e m_authentication_type;
   339 	eapol_key_authentication_type_e m_authentication_type;
   357 
   340