eapol/eapol_framework/eapol_common/include/eapol_core.h
branchRCL_3
changeset 46 c74b3d9f6b9e
parent 45 bad0cc58d154
--- a/eapol/eapol_framework/eapol_common/include/eapol_core.h	Tue Aug 31 15:16:37 2010 +0300
+++ b/eapol/eapol_framework/eapol_common/include/eapol_core.h	Wed Sep 01 12:23:57 2010 +0100
@@ -16,7 +16,7 @@
 */
 
 /*
-* %version: 47 %
+* %version: 28.1.3 %
 */
 
 #if !defined(_EAPOL_CORE_H_)
@@ -24,19 +24,22 @@
 
 #include "eap_tools.h"
 #include "eap_am_export.h"
-#include "abs_eap_session_core.h"
+#include "abs_eap_core.h"
 #include "eap_core.h"
 #include "abs_eapol_core.h"
 #include "eap_base_type.h"
 #include "eap_variable_data.h"
 #include "abs_eap_am_mutex.h"
-#include "eap_session_core_base.h"
+#if !defined(NO_EAP_SESSION_CORE)
+	#include "eap_session_core.h"
+#endif
 #include "abs_eap_stack_interface.h"
 #include "abs_eapol_key_state.h"
 #include "eapol_rsna_key_header.h"
-#include "eapol_key_state.h"
-#include "abs_eapol_key_state_map.h"
-#include "eap_database_reference_if.h"
+#if defined(USE_EAPOL_KEY_STATE)
+	#include "eapol_key_state.h"
+	#include "abs_eapol_key_state_map.h"
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 
 
 /** @file */
@@ -71,12 +74,13 @@
 
 /// A eapol_core_c class implements the basic functionality of EAPOL.
 class EAP_EXPORT eapol_core_c
-: public abs_eap_session_core_c
+: public abs_eap_core_c
 , public abs_eap_base_timer_c
 , public abs_eap_stack_interface_c
+#if defined(USE_EAPOL_KEY_STATE)
 , public abs_eapol_key_state_c
 , public abs_eapol_key_state_map_c
-, public eap_database_reference_if_c
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 {
 
 private:
@@ -88,11 +92,17 @@
 	/// This is pointer to the eap_core object. The eapol_core object gives
 	/// the received packets to the eap_core object. The eap_core object sends
 	/// packets through the eapol_core object.
-	eap_session_core_base_c * m_eap_core;
+#if !defined(NO_EAP_SESSION_CORE)
+	eap_session_core_c * const m_eap_core;
+#else
+	eap_core_c * const m_eap_core;
+#endif
 
+#if defined(USE_EAPOL_KEY_STATE)
 	/// This stores eapol_key_state_c objects using eap_variable_data selector.
 	/// Selector data includes send addresses of the Ethernet packet.
 	eap_core_map_c<eapol_key_state_c, abs_eapol_key_state_map_c, eap_variable_data_c> m_eapol_key_state_map;
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 
 	/// This is pointer to the tools class.
 	abs_eap_am_tools_c * const m_am_tools;
@@ -131,10 +141,13 @@
 
 	bool m_block_state_notifications;
 
+#if defined(USE_EAPOL_KEY_STATE)
 	/// This flag will skip start of 4-Way Handshake with true value.
 	bool m_skip_start_4_way_handshake;
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 
 
+#if defined(USE_EAPOL_KEY_STATE)
 	EAP_FUNC_IMPORT eap_status_e indicate_eapol_key_state_started_eap_authentication(
 		const eap_am_network_id_c * const send_network_id);
 
@@ -142,8 +155,7 @@
 		const eap_am_network_id_c * const send_network_id);
 
 	EAP_FUNC_IMPORT eap_status_e remove_eapol_key_state(
-		const eap_am_network_id_c * const send_network_id,
-		const bool force_remove);
+		const eap_am_network_id_c * const send_network_id);
 
 	eap_status_e copy_eapol_key_state(
 		const eap_am_network_id_c * const old_receive_network_id, ///< source includes remote address, destination includes local address.
@@ -155,6 +167,7 @@
 		const eap_am_network_id_c * const old_receive_network_id, ///< source includes remote address, destination includes local address.
 		const eap_am_network_id_c * const new_receive_network_id ///< source includes remote address, destination includes local address.
 		);
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 
 	//--------------------------------------------------
 protected:
@@ -443,17 +456,24 @@
 		const u32_t p_id);
 
 	//
+	EAP_FUNC_IMPORT eap_status_e cancel_all_timers();
+
+	//
 	EAP_FUNC_IMPORT eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
 
 	// See abs_eap_core_c::get_eap_type_list().
 	EAP_FUNC_IMPORT eap_status_e get_eap_type_list(
 		eap_array_c<eap_type_value_e> * const eap_type_list);
 
+#if defined(USE_EAPOL_KEY_STATE)
 	// See abs_eapol_key_state_c::get_and_increment_global_key_counter().
 	EAP_FUNC_IMPORT eap_status_e get_and_increment_global_key_counter(
 		eap_variable_data_c * const key_counter);
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 
 
+#if defined(USE_EAPOL_KEY_STATE) && defined(USE_EAPOL_KEY_STATE_OPTIMIZED_4_WAY_HANDSHAKE)
+
 	/**
 	 * Function creates a state for later use. This is for optimazing 4-Way Handshake.
 	 * @param receive_network_id carries the MAC addresses.
@@ -466,6 +486,11 @@
 		const eapol_key_authentication_type_e authentication_type
 		);
 
+#endif //#if defined(USE_EAPOL_KEY_STATE) && defined(USE_EAPOL_KEY_STATE_OPTIMIZED_4_WAY_HANDSHAKE)
+
+
+#if defined(USE_EAPOL_KEY_STATE)
+
 	/**
 	 * This function need to be called when client STA (re)associates to AP.
 	 * @param receive_network_id carries the MAC addresses.
@@ -485,25 +510,35 @@
 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e eapol_group_cipher,
 		const eap_variable_data_c * const pre_shared_key);
 
+#endif //#if defined(USE_EAPOL_KEY_STATE)
+
+
+#if defined(USE_EAPOL_KEY_STATE)
 	/**
 	 * This function need to be called when client STA disassociates from AP.
 	 * @param receive_network_id carries the MAC addresses.
 	 * MAC address of Authenticator should be in source address. MAC address of Supplicant should be in destination address.
 	 */
 	EAP_FUNC_IMPORT eap_status_e disassociation(
-		const bool complete_to_lower_layer,
 		const eap_am_network_id_c * const receive_network_id);
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 
+#if defined(USE_EAPOL_KEY_STATE)
 	EAP_FUNC_IMPORT eap_status_e asynchronous_init_remove_eapol_key_state(
 		const eap_am_network_id_c * const send_netword_id);
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 
+#if defined(USE_EAPOL_KEY_STATE)
 	EAP_FUNC_IMPORT static eap_status_e shutdown_operation(
 		eapol_key_state_c * const handler,
 		abs_eap_am_tools_c * const m_am_tools);
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 
+#if defined(USE_EAPOL_KEY_STATE)
 	EAP_FUNC_IMPORT static eap_status_e cancel_authentication_session(
 		eapol_key_state_c * const handler,
 		abs_eap_am_tools_c * const m_am_tools);
+#endif //#if defined(USE_EAPOL_KEY_STATE)
 
 	/// @see abs_eap_core_c::add_rogue_ap().
 	EAP_FUNC_IMPORT eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
@@ -517,37 +552,25 @@
 	EAP_FUNC_IMPORT eap_status_e set_session_timeout(
 		const u32_t session_timeout_ms);
 
-#if defined(USE_EAP_SIMPLE_CONFIG)
-
-	EAP_FUNC_IMPORT eap_status_e save_simple_config_session(
-		const simple_config_state_e state,
-		EAP_TEMPLATE_CONST eap_array_c<simple_config_credential_c> * const credential_array,
-		const eap_variable_data_c * const new_password,
-		const simple_config_Device_Password_ID_e Device_Password_ID,
-		const simple_config_payloads_c * const other_configuration);
-
-#endif // #if defined(USE_EAP_SIMPLE_CONFIG)
-
-	EAP_FUNC_IMPORT eap_status_e set_eap_database_reference_values(
-		const eap_variable_data_c * const reference);
-
-	EAP_FUNC_IMPORT eap_status_e get_802_11_authentication_mode(
-		const eap_am_network_id_c * const receive_network_id,
-		const eapol_key_authentication_type_e authentication_type,
-		const eap_variable_data_c * const SSID,
-		const eap_variable_data_c * const preshared_key);
-
-	EAP_FUNC_IMPORT eap_status_e complete_get_802_11_authentication_mode(
-		const eap_status_e completion_status,
-		const eap_am_network_id_c * const receive_network_id,
-		const eapol_key_802_11_authentication_mode_e mode);
-
-	EAP_FUNC_IMPORT eap_status_e complete_remove_eap_session(
-		const bool complete_to_lower_layer,
-		const eap_am_network_id_c * const receive_network_id);
-
 private:
 
+
+#if !defined(USE_EAPOL_KEY_STATE)
+	/**
+	 * The handle_RC4_key_descriptor() function parses the EAPOL-Key frame 
+	 * that includes RC4 Key Descriptor.
+	 * This function retrieves the traffic encryption key from it. It forwards the key
+	 * to lower layers. The format of EAPOL-Key frame is described in
+	 * draft-congdon-radius-8021x-23.txt (RFC ????)
+	 * @param eapol is the received packet
+	 * @param packet_length is the length of the packet
+	 */
+	eap_status_e handle_RC4_key_descriptor(
+		const eap_am_network_id_c * const receive_network_id,
+		eapol_RC4_key_header_c * const eapol,
+		const u32_t packet_length);
+#endif //#if !defined(USE_EAPOL_KEY_STATE)
+	
 	//--------------------------------------------------
 }; // class eapol_core_c