diff -r 000000000000 -r c8830336c852 eapol/eapol_framework/eapol_common/include/eapol_key_types.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eapol/eapol_framework/eapol_common/include/eapol_key_types.h Thu Dec 17 08:47:43 2009 +0200 @@ -0,0 +1,432 @@ +/* +* Copyright (c) 2001-2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: EAP and WLAN authentication protocols. +* +*/ + + + +#if !defined(_EAPOL_KEY_TYPES_H_) +#define _EAPOL_KEY_TYPES_H_ + +#include "eap_configuration_field.h" + +//-------------------------------------------------------------------------------------------------- + +enum eapol_wpa_psk_constants_e +{ + EAPOL_WPA_PSK_LENGTH_BYTES = 32ul, +}; + +/** + * Enumeration of EAPOL ethernet type. + */ +enum eapol_ethernet_type_e +{ + eapol_ethernet_type_none = 0, + eapol_ethernet_type_pae = 0x888e, ///< Ethernet type Port Access Entity (PAE) + eapol_ethernet_type_preauthentication = 0x88c7, ///< Ethernet type Preauthentication +#if defined(USE_WAPI_CORE) + eapol_ethernet_type_wapi = 0x88b4, ///< Ethernet type WAPI +#endif //#if defined(USE_WAPI_CORE) +}; + +/** + * This is enumeration of key types. + * NOTE, do not change the values, these are used in interface. + * These values are used in for loop. + */ +enum eapol_key_type_e +{ + eapol_key_type_broadcast = 0, + eapol_key_type_unicast = 1, +#if defined(EAP_USE_WPXM) + eapol_key_type_wpxm_wpxk1 = 2, + eapol_key_type_wpxm_wpxk2 = 3, +#endif //#if defined(EAP_USE_WPXM) + eapol_key_type_pmkid = 4, + eapol_key_type_last_type, ///< Keep this the last one. +}; + +/// Enumeration of RC4 Key flag field. +/// NOTE, do not change the values, these are used in interface. +enum eapol_RC4_key_flags_e +{ + eapol_RC4_key_flag_broadcast = 0, + eapol_RC4_key_flag_unicast = 1, + eapol_RC4_key_flag_none = 0xff +}; + + +/// NOTE, do not change the values, these are used in interface. +enum eapol_wlan_authentication_state_e +{ + eapol_wlan_authentication_state_none = 0, ///< Initial value. + eapol_wlan_authentication_state_association_ok = 1, ///< Successfull association. + eapol_wlan_authentication_state_this_ap_failed = 2, ///< Still other authentication could be tested. + eapol_wlan_authentication_state_failed_completely = 3, ///< No more options to try. + eapol_wlan_authentication_state_802_11_auth_algorithm_not_supported = 4, + eapol_wlan_authentication_state_authenticating = 5, ///< This is temporary build fix, do not use this anymore. Instead use eapol_wlan_authentication_state_eap_authentication_running or eapol_wlan_authentication_state_4_way_handshake_running. @{ remove after integrated with WLAN engine.} + eapol_wlan_authentication_state_eap_authentication_running = 6, + eapol_wlan_authentication_state_no_response = 7, + eapol_wlan_authentication_state_4_way_handshake_running = 8, + eapol_wlan_authentication_state_authentication_successfull = 9, + eapol_wlan_authentication_state_authentication_cancelled = 10, // When user cancels the password prompt. + eapol_wlan_authentication_state_immediate_reconnect = 11, ///< This was a provisioning of credentials. Immediately reconnect so the credentials can be used. +#if defined(USE_WAPI_CORE) + eapol_wlan_authentication_state_wapi_authentication_running = 12, +#endif //#if defined(USE_WAPI_CORE) +}; + +/** + * This is enumeration of authentication types. + * NOTE, do not change the values, these are used in interface. + */ +enum eapol_key_authentication_type_e +{ + eapol_key_authentication_type_none = 0, + eapol_key_authentication_type_RSNA_EAP = 1, ///< Authentication is RSNA 802.11i EAP-authentication, 4-Way, Group Key and STAKey Handshakes. + eapol_key_authentication_type_RSNA_PSK = 2, ///< Authentication is RNSA 802.11i PSK (pre shared key), 4-Way and Group Key Handshakes. + eapol_key_authentication_type_WPA_EAP = 3, ///< Authentication is WPA EAP-authentication, 4-Way and Group Key Handshakes. + eapol_key_authentication_type_WPA_PSK = 4, ///< Authentication is WPA PSK (pre shared key), 4-Way and Group Key Handshakes. + eapol_key_authentication_type_802_1X = 5, ///< Authentication is dynamic WEP (802.1X). EAP-authentication with simple EAPOL RC4 key message. + eapol_key_authentication_type_WPXM = 6, ///< Authentication is WPXM. + eapol_key_authentication_type_WFA_SC = 7, ///< Authentication is Wi-Fi Alliance Simple Configure. +#if defined(USE_WAPI_CORE) + eapol_key_authentication_type_WAI_PSK = 8, ///< Authentication is WAI PSK. + eapol_key_authentication_type_WAI_certificate = 9, ///< Authentication is WAI certificate. +#endif //#if defined(USE_WAPI_CORE) +}; + +/** + * This is enumeration of 802.11 authentication modes. + * NOTE, do not change the values, these are used in interface. + */ +enum eapol_key_802_11_authentication_mode_e +{ + eapol_key_802_11_authentication_mode_none = 0, + eapol_key_802_11_authentication_mode_open = 1, ///< Authentication is 802.11 open authentication. + eapol_key_802_11_authentication_mode_shared = 2, ///< Authentication is 802.11 shared authentication. + eapol_key_802_11_authentication_mode_leap = 3, ///< Authentication is LEAP-authentication. +}; + +/** + * This is enumeration of EAPOL handshake types. + * NOTE, do not change the values, these are used in interface. + */ +enum eapol_key_handshake_type_e +{ + eapol_key_handshake_type_none = 0, + eapol_key_handshake_type_4_way_handshake = 1, + eapol_key_handshake_type_group_key_handshake = 2, + eapol_key_handshake_type_STAKey_handshake = 3, + eapol_key_handshake_type_802_11i_handshake = 4, + eapol_key_handshake_type_dynamic_WEP = 5, +#if defined(EAP_USE_WPXM) + eapol_key_handshake_type_WPXM_reassociation = 6, +#endif //#if defined(EAP_USE_WPXM) +#if defined(USE_WAPI_CORE) + eapol_key_handshake_type_wai_handshake = 7, +#endif //#if defined(USE_WAPI_CORE) +}; + +/** + * This is enumeration of EAPOL states. + * NOTE, do not change the values, these are used in interface. + */ +enum eapol_key_state_e +{ + eapol_key_state_none = 0, + + eapol_key_state_preauthenticated = 1, + + eapol_key_state_eap_authentication_running = 2, + + eapol_key_state_wait_4_way_handshake_start = 3, + eapol_key_state_wait_4_way_handshake_message_1 = 4, + eapol_key_state_wait_4_way_handshake_message_2 = 5, + eapol_key_state_wait_4_way_handshake_message_3 = 6, + eapol_key_state_wait_4_way_handshake_message_4 = 7, + eapol_key_state_4_way_handshake_running = 8, + eapol_key_state_4_way_handshake_failed = 9, + eapol_key_state_4_way_handshake_successfull = 10, + + eapol_key_state_wait_group_key_handshake_message_1 = 11, + eapol_key_state_wait_group_key_handshake_message_2 = 12, + eapol_key_state_group_key_handshake_failed = 13, + eapol_key_state_group_key_handshake_successfull = 14, + + eapol_key_state_wait_rc4_key_message = 15, + + eapol_key_state_802_11i_authentication_terminated_unsuccessfull = 16, + eapol_key_state_802_11i_authentication_finished_successfull = 17, + + eapol_key_state_reassociation_failed = 18, + +#if defined(EAP_USE_WPXM) + eapol_key_state_wpxm_reassociation_finished_successfull = 19, +#endif //#if defined(EAP_USE_WPXM) + +#if defined(USE_WAPI_CORE) + eapol_key_state_wapi_authentication_terminated_unsuccessfull = 20, + eapol_key_state_wapi_authentication_finished_successfull = 21, + eapol_key_state_wapi_authentication_running = 22, +#endif //#if defined(USE_WAPI_CORE) + +}; + +/** + * This is enumeration of authentication server. + * NOTE, do not change the values, these are used in interface. + */ +enum eapol_authentication_server_state_e +{ + eapol_authentication_server_state_none = 0, + eapol_authentication_server_state_authentication_successfull = 1, +}; + +//-------------------------------------------------------------------------------------------------- + +/** + * @defgroup EAPOL_key_state_config_options Configuration options of EAPOL Key State. + * The following configuration options are read through abs_eap_base_type_c::read_configure() function. + * @{ + */ + +/** + * This is u32_t configuration option. + * This is the maximum count EAPOL key state Authenticator resents EAPOL-Key message again. + * This is used in simulator testing. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_retransmission_counter, + "EAPOL_key_state_retransmission_counter", + eap_configure_type_u32_t, + false); + +/** + * This is u32_t configuration option. + * This is the time after EAPOL ket state Authenticator resents message again. + * Time is in milli seconds. + * This is used in simulator testing. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_retransmission_time, + "EAPOL_key_state_retransmission_time", + eap_configure_type_u32_t, + false); + +/** + * This is u32_t configuration option. + * This is the maximum time EAPOL-Key Handshake could succeed. + * EAPOL-Key Handshake is terminated after this time elapses. + * Time is in milli seconds. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_handshake_timeout, + "EAPOL_key_state_handshake_timeout", + eap_configure_type_u32_t, + false); + +#if defined(EAP_USE_WPXM) +/** + * This is u32_t configuration option. + * This is the maximum time WPXM reassociation could succeed. + * WPXM reassociation is terminated after this time elapses. + * Time is in milli seconds. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_wpxm_reassociate_timeout, + "EAPOL_key_state_wpxm_reassociate_timeout", + eap_configure_type_u32_t, + false); +#endif //#if defined(EAP_USE_WPXM) + +/** + * This is u32_t configuration option. + * This is the maximum time EAPOL-Key PMKSA is cached. + * Time is in milli seconds. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_pmksa_caching_timeout, + "EAPOL_key_state_pmksa_caching_timeout", + eap_configure_type_u32_t, + false); + +/** + * This string configuration option value selects the test authentication and key management. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type, + "EAPOL_key_authentication_type", + eap_configure_type_string, + false); + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type_config_value_RSNA_EAP, + "RSNA_EAP", + eap_configure_type_string, + false); + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type_config_value_RSNA_PSK, + "RSNA_PSK", + eap_configure_type_string, + false); + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type_config_value_WPA_EAP, + "WPA_EAP", + eap_configure_type_string, + false); + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type_config_value_WPA_PSK, + "WPA_PSK", + eap_configure_type_string, + false); + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type_config_value_dynamic_WEP, + "dynamic_WEP", + eap_configure_type_string, + false); + +#if defined(EAP_USE_WPXM) +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type_config_value_WPXM, + "WPXM", + eap_configure_type_string, + false); +#endif //#if defined(EAP_USE_WPXM) + +#if defined(EAP_USE_WPXM) +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_WPXM_type, + "EAPOL_WPXM_type", + eap_configure_type_string, + false); +#endif //#if defined(EAP_USE_WPXM) + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type_config_value_WFA_SC, + "WFA_SC", + eap_configure_type_string, + false); + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type_config_value_WAI_PSK, + "WAI_PSK", + eap_configure_type_string, + false); + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_authentication_type_config_value_WAI_certificate, + "WAI_certificate", + eap_configure_type_string, + false); + + +/** + * This string configuration option value selects the test pairwise cipher. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_pairwise_cipher, + "EAPOL_key_pairwise_cipher", + eap_configure_type_string, + false); + +/** + * This string configuration option value selects the test group cipher. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_group_cipher, + "EAPOL_key_group_cipher", + eap_configure_type_string, + false); + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_cipher_CCMP, + "CCMP", + eap_configure_type_string, + false); + +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_cipher_TKIP, + "TKIP", + eap_configure_type_string, + false); + + +/** + * This is boolean configuration option. + * This flag tells whether broken 4-Way Handshake message 1 without PMKID is allowed (true) or dropped (false). + * Default value id false. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_allow_missing_PMKID_in_message_1, + "EAPOL_key_state_allow_missing_PMKID_in_message_1", + eap_configure_type_boolean, + false); + +/** + * This is boolean configuration option. + * This flag tells whether broken 4-Way Handshake message 1 without PMKID is created (true) or not (false). + * Default value id false. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_skip_PMKID_key_data_in_message_1, + "EAPOL_key_state_skip_PMKID_key_data_in_message_1", + eap_configure_type_boolean, + false); + +/** + * This is boolean configuration option. + * This flag activates group key update test (true) or not (false). + * Default value id false. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_TEST_group_key_update, + "EAPOL_key_state_TEST_group_key_update", + eap_configure_type_boolean, + false); + + +/** + * This is boolean configuration option. + * This flag tells whether broken 4-Way Handshake message 1 with non zero MIC is allowed (true) or dropped (false). + * Default value id false. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_allow_non_zero_mic_in_message_1, + "EAPOL_key_state_allow_non_zero_mic_in_message_1", + eap_configure_type_boolean, + false); + +/** + * This is boolean configuration option. + * This flag tells the EAPOL must indicate PMKID to lower layers (true) or not (false). + * Default value id false. + */ +EAP_CONFIGURATION_FIELD( + cf_str_EAPOL_key_state_indicate_pmkid_to_lower_layer, + "EAPOL_key_state_indicate_pmkid_to_lower_layer", + eap_configure_type_boolean, + false); + +/** @} */ // End of group EAPOK_key_state_config_options. + +//-------------------------------------------------------------------------------------------------- + +#endif //#if !defined(_EAPOL_KEY_TYPES_)