eapol/eapol_framework/eapol_symbian/am/include/eapol_am_wlan_authentication_symbian.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/eapol/eapol_framework/eapol_symbian/am/include/eapol_am_wlan_authentication_symbian.h Thu Dec 17 08:47:43 2009 +0200
@@ -0,0 +1,339 @@
+/*
+* 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_AM_WLAN_AUTHENTICATION_SYMBIAN_H_)
+#define _EAPOL_AM_WLAN_AUTHENTICATION_SYMBIAN_H_
+
+#include "eap_am_export.h"
+#include "eapol_am_wlan_authentication.h"
+#include "eapol_wlan_database_reference.h"
+#include "eap_am_network_id.h"
+#include "eap_array_algorithms.h"
+
+#if defined(USE_EAP_SIMPLE_CONFIG)
+#include "abs_eap_configuration_if.h"
+#include "simple_config_credential.h"
+#include "abs_eap_configuration_if.h"
+#endif // #if defined(USE_EAP_SIMPLE_CONFIG)
+
+#include <e32base.h>
+#include <e32std.h>
+#include <d32dbms.h>
+
+#include <wdbifwlansettings.h>
+
+#include <EapType.h> // For TIndexType
+
+
+#ifdef SYMBIAN_SECURE_DBMS
+// For EAP TLS, PEAP, TTLS, FAST secure databases.
+// Full path is not needed. The database eaptls.dat will be saved in the
+// data cage path for DBMS. So it will be in "\private\100012a5\eaptls.dat" in C: drive.
+// The maximum length of database name is 0x40 (KDbMaxName) , which is defined in d32dbms.h.
+
+_LIT(KFastDatabaseName, "c:eapfast.dat");
+
+
+#else
+
+#ifdef USE_EAP_FAST_TYPE
+_LIT(KFastDatabaseName, "c:\\system\\data\\eapfast.dat");
+#endif
+
+#endif // #ifdef SYMBIAN_SECURE_DBMS
+
+
+class CEapType;
+class abs_eapol_am_wlan_authentication_c;
+class abs_eap_am_tools_c;
+class eap_file_config_c;
+
+const TInt KMaxWPAPSKPasswordLength = 64;
+const TInt KWPAPSKLength = 32;
+// Just to make this different of already existing constant.
+const TUint K_Max_SSID_Length = 32;
+
+
+/// This class declares the simulator adaptation module of eapol_am_wlan_authentication_c.
+/// See comments of the functions from eapol_am_wlan_authentication_c.
+class EAP_EXPORT eapol_am_wlan_authentication_symbian_c
+: public CActive
+, public eapol_am_wlan_authentication_c
+#if defined(USE_EAP_SIMPLE_CONFIG)
+, public abs_eap_configuration_if_c
+#endif // #if defined(USE_EAP_SIMPLE_CONFIG)
+{
+private:
+ //--------------------------------------------------
+
+ abs_eapol_am_wlan_authentication_c * m_am_partner;
+
+#if defined(USE_EAP_SIMPLE_CONFIG)
+ abs_eap_configuration_if_c * m_configuration_if;
+#endif // #if defined(USE_EAP_SIMPLE_CONFIG)
+
+ abs_eap_am_tools_c * m_am_tools;
+
+ /// This is object to handle file configuration.
+ eap_file_config_c * m_fileconfig;
+
+ /// SSID of current network.
+ eap_variable_data_c m_SSID;
+
+ /// WPA(2)-PSK
+ eap_variable_data_c m_wpa_preshared_key;
+
+ /// HAHS of WPA(2)-PSK
+ eap_variable_data_c m_wpa_preshared_key_hash;
+
+ /// This pointer is abstract interface to reference of WLAN database of the current connection.
+ const abs_eapol_wlan_database_reference_if_c * m_wlan_database_reference;
+
+ /// Handle of database session.
+ RDbs m_session;
+
+ /// Handle of database file.
+ RFs m_fs;
+
+ /// Array for storing the loaded EAP types.
+ RPointerArray<CEapType> m_plugin_if_array;
+
+#ifdef USE_EAP_EXPANDED_TYPES
+
+ /// Enabled expanded EAP configuration data from CommsDat
+ // This is for the outer most EAP (not tunneled)
+ RExpandedEapTypeArray m_enabled_expanded_eap_array;
+
+ /// Disabled expanded EAP configuration data from CommsDat
+ // This is for the outer most EAP (not tunneled)
+ RExpandedEapTypeArray m_disabled_expanded_eap_array;
+
+ /// Array which corresponds with m_plugin_if_array and indicates the types of the loaded EAP types.
+ eap_array_c<eap_type_value_e> m_eap_type_array;
+
+#else
+
+ /// EAP configuration data from CommDb
+ TEapArray m_iap_eap_array;
+
+ /// Array which corresponds with m_plugin_if_array and indicates the types of the loaded EAP types.
+ RArray<eap_type_value_e> m_eap_type_array;
+
+#endif //#ifdef USE_EAP_EXPANDED_TYPES
+
+ /// Network identity of current connection.
+ eap_am_network_id_c m_receive_network_id;
+
+ /// WLAN security mode as defined in Symbian platform.
+ EWlanSecurityMode m_security_mode;
+
+ /// WLAN authentication type.
+ eapol_key_authentication_type_e m_selected_eapol_key_authentication_type;
+
+ /// WPA(2)-PSK override.
+ bool m_WPA_override_enabled;
+
+ /// This object is client (true).
+ bool m_is_client;
+
+ /// This object is valid (true).
+ bool m_is_valid;
+
+ //--------------------------------------------------
+
+ /// This struct is used in WPA(2)-PSK setting handling.
+ struct TPSKEntry
+ {
+ TIndexType indexType;
+ TUint index;
+ TBuf8<K_Max_SSID_Length> ssid;
+ TBuf8<KMaxWPAPSKPasswordLength> password;
+ TBuf8<KWPAPSKLength> psk;
+ };
+
+ /// This function tries to initialize database.
+ void TryInitDatabaseL();
+
+ /// This function tries to initialize database or if it fails
+ /// tries to create new database.
+ void InitDatabaseL();
+
+ /// Function reads one configuration value from database.
+ void read_configureL(
+ const TDesC& aDbName,
+ const TDesC& aTableName,
+ eap_config_string field,
+ const u32_t /*field_length*/,
+ eap_variable_data_c * const data);
+
+ /// Control function of this active-object.
+ void RunL();
+
+ /// Cancel function for active-object.
+ void DoCancel();
+
+ /// This function reads WPA(2)-PSK from database.
+ void RetrievePSKL(TPSKEntry& entry);
+
+ /// This function saves WPA(2)-PSK to database.
+ void SavePSKL(TPSKEntry& entry);
+
+ /// This function reads EAP-settings from database.
+ void ReadEAPSettingsL();
+
+#ifdef USE_EAP_EXPANDED_TYPES
+
+ /// This function set the EAP-type to highest in priority.
+ void SetToTopPriorityL(const eap_type_value_e aEapType);
+
+#else // For normal EAP types.
+
+ /// This function set the EAP-type to highest in priority.
+ void SetToTopPriorityL(const TEap* const aEapType);
+
+#endif // #ifdef USE_EAP_EXPANDED_TYPES
+
+ /// THis function reads the references to active Internet Access Point (IAP).
+ eap_status_e read_database_reference_values(
+ TIndexType * const type,
+ TUint * const index);
+
+ /// This function resets all EAP-plugings.
+ eap_status_e reset_eap_plugins();
+
+ /// This function sends error notification to partner object.
+ void send_error_notification(const eap_status_e error);
+
+ //--------------------------------------------------
+public:
+ //--------------------------------------------------
+
+ //
+ EAP_FUNC_IMPORT virtual ~eapol_am_wlan_authentication_symbian_c();
+
+ //
+ EAP_FUNC_IMPORT eapol_am_wlan_authentication_symbian_c(
+ abs_eap_am_tools_c * const tools,
+ const bool is_client_when_true,
+ const abs_eapol_wlan_database_reference_if_c * const wlan_database_reference);
+
+
+ /// See comments of the functions from eapol_am_wlan_authentication_c.
+
+ EAP_FUNC_IMPORT bool get_is_valid();
+
+ EAP_FUNC_IMPORT eap_status_e configure();
+
+ EAP_FUNC_IMPORT eap_status_e shutdown();
+
+ EAP_FUNC_IMPORT eap_status_e set_am_partner(
+ abs_eapol_am_wlan_authentication_c * am_partner
+#if defined(USE_EAP_SIMPLE_CONFIG)
+ , abs_eap_configuration_if_c * const configuration_if
+#endif // #if defined(USE_EAP_SIMPLE_CONFIG)
+ );
+
+ EAP_FUNC_IMPORT eap_status_e reset_eap_configuration();
+
+ EAP_FUNC_IMPORT eap_status_e set_wlan_parameters(
+ const eap_variable_data_c * const SSID,
+ const bool WPA_override_enabled,
+ const eap_variable_data_c * const wpa_preshared_key,
+ const eapol_key_authentication_type_e selected_eapol_key_authentication_type);
+
+ EAP_FUNC_IMPORT eap_status_e association(
+ const eap_am_network_id_c * const receive_network_id);
+
+ EAP_FUNC_IMPORT eap_status_e disassociation(
+ const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
+ );
+
+ EAP_FUNC_IMPORT eap_status_e get_selected_eap_types(
+ eap_array_c<eap_type_selection_c> * const selected_eap_types);
+
+ EAP_FUNC_IMPORT eap_status_e get_wlan_configuration(
+ eap_variable_data_c * const wpa_preshared_key_hash);
+
+ EAP_FUNC_IMPORT eap_status_e authentication_finished(
+ const bool when_true_successfull,
+ const eap_type_value_e eap_type,
+ const eapol_key_authentication_type_e authentication_type);
+
+ EAP_FUNC_IMPORT eap_status_e load_module(
+ const eap_type_value_e type,
+ const eap_type_value_e tunneling_type,
+ abs_eap_base_type_c * const partner,
+ eap_base_type_c ** const eap_type_if,
+ const bool is_client_when_true,
+ const eap_am_network_id_c * const receive_network_id ///< source includes remote address, destination includes local address.
+ );
+
+ EAP_FUNC_IMPORT eap_status_e unload_module(
+ const eap_type_value_e type);
+
+ EAP_FUNC_IMPORT eap_status_e read_configure(
+ const eap_configuration_field_c * const field,
+ eap_variable_data_c * const data);
+
+ EAP_FUNC_IMPORT eap_status_e write_configure(
+ const eap_configuration_field_c * const field,
+ eap_variable_data_c * const data);
+
+ EAP_FUNC_IMPORT eap_status_e set_timer(
+ abs_eap_base_timer_c * const initializer,
+ const u32_t id,
+ void * const data,
+ const u32_t p_time_ms);
+
+ EAP_FUNC_IMPORT eap_status_e cancel_timer(
+ abs_eap_base_timer_c * const initializer,
+ const u32_t 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);
+
+ EAP_FUNC_IMPORT eap_status_e get_eap_type_list(
+ eap_array_c<eap_type_value_e> * const eap_type_list);
+
+ EAP_FUNC_IMPORT void state_notification(
+ const abs_eap_state_notification_c * const state);
+
+#if defined(USE_EAP_SIMPLE_CONFIG)
+
+ EAP_FUNC_EXPORT 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)
+
+ //--------------------------------------------------
+}; // class eapol_am_wlan_authentication_symbian_c
+
+#endif //#if !defined(_EAPOL_AM_WLAN_AUTHENTICATION_SYMBIAN_H_)
+
+//--------------------------------------------------
+
+
+
+// End.