eapol/eapol_framework/eapol_symbian/eap_server/src/eap_am_stack_symbian.cpp
branchRCL_3
changeset 46 c74b3d9f6b9e
parent 45 bad0cc58d154
child 55 9c2aa05919d9
--- a/eapol/eapol_framework/eapol_symbian/eap_server/src/eap_am_stack_symbian.cpp	Tue Aug 31 15:16:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1563 +0,0 @@
-/*
-* Copyright (c) 2001-2010 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.
-*
-*/
-
-/*
-* %version: 49 %
-*/
-
-#include "eap_am_stack_symbian.h"
-#include "eap_array_algorithms.h"
-#include "eap_base_type.h"
-#include "eap_header_string.h"
-#include "EapConversion.h"
-#include "eapol_key_state_string.h"
-#include "eap_type_tls_peap_types.h"
-#include "EapPluginDbDefaults.h"
-#include "EapConfigToolsSymbian.h"
-#include "eap_am_general_settings_symbian.h"
-
-class CEapTypePlugin;
-
-// LOCAL CONSTANTS
-const TUint KMaxSqlQueryLength = 2048;
-
-const TUint KExpandedEAPSize = 8;
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_am_stack_symbian_c::eap_am_stack_symbian_c(class abs_eap_am_tools_c * tools, bool is_client_when_true)
-	: CActive(0)
-	, iTools (tools)
-	, iIsClient(is_client_when_true)
-	, iPartner(0)
-	, m_client_config(tools)
-	, iFileconfig(0)
-	, iEnabledEapMethodsArray(tools)
-	, iDisabledEapMethodsArray(tools)
-	, m_eap_type_array(tools)
-	, iConfigurationIf(0)
-	, iIndexType(ELan)
-	, iIndex(0UL)
-	, iCurrentEapIndex(0)
-	, m_selected_eapol_key_authentication_type(eapol_key_authentication_type_none)
-{
-    EAP_TRACE_DEBUG(
-        tools, 
-        TRACE_FLAGS_DEFAULT, 
-        (EAPL("eap_am_stack_symbian_c::eap_am_stack_symbian_c()\n")));
-
-    EAP_TRACE_RETURN_STRING(tools, "returns: eap_am_stack_symbian_c::eap_am_stack_symbian_c()");
-
-    iIsValid = ETrue;
-    
-    return;
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_am_stack_symbian_c::~eap_am_stack_symbian_c()
-    {
-    EAP_TRACE_DEBUG(
-        iTools, 
-        TRACE_FLAGS_DEFAULT, 
-        (EAPL("eap_am_stack_symbian_c::~eap_am_stack_symbian_c()\n")));
-
-	Cancel();
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::~eap_am_stack_symbian_c()");
-    }
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT bool eap_am_stack_symbian_c::get_is_valid()
-    {
-    return iIsValid;
-    }
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::set_partner(abs_eap_am_stack_c * partner, abs_eap_configuration_if_c * configuration_if)
-    {
-    eap_status_e aStatus(eap_status_ok);
-    iPartner = partner;
-    iConfigurationIf = configuration_if;
-    return aStatus;
-    }
-
-//--------------------------------------------------
-
-eap_status_e eap_am_stack_symbian_c::reset_eap_configuration()
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	EAP_TRACE_DEBUG(
-		iTools, 
-		TRACE_FLAGS_DEFAULT, 
-		(EAPL("eap_am_stack_symbian_c::reset_eap_configuration(): %s, this = 0x%08x\n"),
-		 (iIsClient == true) ? "client": "server",
-		 this));
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::reset_eap_configuration()");
-
-	eap_status_e status(eap_status_ok);
-
-	TRAPD(error, ReadEAPSettingsL());
-	if (error != KErrNone)
-	{
-		EAP_TRACE_ERROR(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("EAP settings reading from CommDb failed or cancelled(error %d).\n"), error));
-
-		status = iTools->convert_am_error_to_eapol_error(error);
-	}
-
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-	return EAP_STATUS_RETURN(iTools, status);
-}
-
-//--------------------------------------------------
-
-// This is documented in abs_eap_stack_interface_c::configure().
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::configure(
-	const eap_variable_data_c * const client_configuration)
-    {
-    EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-    EAP_TRACE_DEBUG(
-        iTools, 
-        TRACE_FLAGS_DEFAULT, 
-        (EAPL("eap_am_stack_symbian_c::configure(): %s, this = 0x%08x => 0x%08x\n"),
-         (iIsClient == true) ? "client": "server",
-         this,
-         dynamic_cast<abs_eap_base_timer_c *>(this)));
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::configure()");
-
-    TInt error(KErrNone);
-	eap_status_e status(eap_status_ok);
-
-	// - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	if (client_configuration != 0
-		&& client_configuration->get_is_valid_data() == true)
-	{
-		status = m_client_config.read_configuration_message(client_configuration);
-		if (status != eap_status_ok)
-		{
-			EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-			return EAP_STATUS_RETURN(iTools, status);
-		}
-	}
-	
-	// - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-    // Open the database session
-    error = iSession.Connect();
-    if (error != KErrNone)
-    {
-        status = EAP_STATUS_RETURN(iTools, iTools->convert_am_error_to_eapol_error(error));
-
-        EAP_TRACE_DEBUG(
-            iTools,
-            TRACE_FLAGS_DEFAULT,
-            (EAPL("RDbs::Connect() failed %d.\n"),
-            status));
-        EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-        return EAP_STATUS_RETURN(iTools, status);
-    }
-
-    EAP_TRACE_DEBUG(
-        iTools,
-        TRACE_FLAGS_DEFAULT,
-        (EAPL("Database session initialized...\n")));
-
-    // Connect to FS
-    error = iFs.Connect();
-    if (error != KErrNone)
-    {
-        status = EAP_STATUS_RETURN(iTools, iTools->convert_am_error_to_eapol_error(error));
-
-        EAP_TRACE_DEBUG(
-            iTools,
-            TRACE_FLAGS_DEFAULT,
-            (EAPL("RFs::Connect() failed %d.\n"),
-            status));
-        EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-        return EAP_STATUS_RETURN(iTools, status);
-    }
-
-    EAP_TRACE_DEBUG(
-        iTools,
-        TRACE_FLAGS_DEFAULT,
-        (EAPL("Fileserver session initialized...\n")));
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	status = EapConfigToolsSymbian::EapReadDefaultConfigFileSymbian(
-		iTools,
-		&iFileconfig);
-	if (status != eap_status_ok)
-	{
-		EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
-		return EAP_STATUS_RETURN(iTools, status);
-	}
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-#if defined(USE_EAP_FILE_TRACE)
-    {
-        eap_variable_data_c trace_output_file(iTools);
-
-        status = read_configure(
-            cf_str_EAP_TRACE_output_file_name.get_field(),
-            &trace_output_file);
-        if (status == eap_status_ok
-            && trace_output_file.get_is_valid_data() == true)
-        {
-            status = iTools->set_trace_file_name(&trace_output_file);
-            if (status == eap_status_ok)
-            {
-                // OK, set the default trace mask.
-                iTools->set_trace_mask(
-                    eap_am_tools_c::eap_trace_mask_debug
-                    | eap_am_tools_c::eap_trace_mask_always
-                    | eap_am_tools_c::eap_trace_mask_error
-                    | eap_am_tools_c::eap_trace_mask_message_data);
-            }
-        }
-    }
-#endif //#if defined(USE_EAP_FILE_TRACE)
-
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	{
-		eap_variable_data_c EAP_TRACE_enable_timer_traces(iTools);
-
-		status = read_configure(
-			cf_str_EAP_TRACE_enable_timer_traces.get_field(),
-			&EAP_TRACE_enable_timer_traces);
-		if (status == eap_status_ok
-			&& EAP_TRACE_enable_timer_traces.get_is_valid_data() == true)
-		{
-			u32_t *enable_timer_traces = reinterpret_cast<u32_t *>(
-				EAP_TRACE_enable_timer_traces.get_data(sizeof(u32_t)));
-			if (enable_timer_traces != 0
-				&& *enable_timer_traces != 0)
-			{
-				iTools->set_trace_mask(
-					iTools->get_trace_mask()
-					| TRACE_FLAGS_TIMER
-					);
-			}
-		}
-	}
-
-	// - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	{
-		eap_variable_data_c EAP_TRACE_enable_timer_queue_traces(iTools);
-
-		status = read_configure(
-			cf_str_EAP_TRACE_enable_timer_queue_traces.get_field(),
-			&EAP_TRACE_enable_timer_queue_traces);
-		if (status == eap_status_ok
-			&& EAP_TRACE_enable_timer_queue_traces.get_is_valid_data() == true)
-		{
-			u32_t *enable_timer_queue_traces = reinterpret_cast<u32_t *>(
-				EAP_TRACE_enable_timer_queue_traces.get_data(sizeof(u32_t)));
-			if (enable_timer_queue_traces != 0
-				&& *enable_timer_queue_traces != 0)
-			{
-				iTools->set_trace_mask(
-					iTools->get_trace_mask()
-					| TRACE_FLAGS_TIMER_QUEUE
-					);
-			}
-		}
-	}
-
-    {
-        eap_variable_data_c EAP_TRACE_enable_function_traces(iTools);
-
-        status = read_configure(
-            cf_str_EAP_TRACE_enable_function_traces.get_field(),
-            &EAP_TRACE_enable_function_traces);
-        if (status == eap_status_ok
-            && EAP_TRACE_enable_function_traces.get_is_valid_data() == true)
-        {
-            u32_t *enable_function_traces = reinterpret_cast<u32_t *>(
-                EAP_TRACE_enable_function_traces.get_data(sizeof(u32_t)));
-            if (enable_function_traces != 0
-                && *enable_function_traces != 0)
-            {
-                iTools->set_trace_mask(
-                    iTools->get_trace_mask()
-                    | eap_am_tools_c::eap_trace_mask_functions
-                    );
-            }
-        }
-    }
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-    EAP_TRACE_DEBUG(
-        iTools,
-        TRACE_FLAGS_DEFAULT,
-        (EAPL("Created timer...\n")));
-
-    EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-    return EAP_STATUS_RETURN(iTools, eap_status_ok);
-  
-    }
-
-//--------------------------------------------------
-
-eap_status_e eap_am_stack_symbian_c::reset_eap_plugins()
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	EAP_TRACE_DEBUG(
-		iTools, 
-		TRACE_FLAGS_DEFAULT, 
-		(EAPL("eap_am_stack_symbian_c::reset_eap_plugins(): %s, this = 0x%08x => 0x%08x\n"),
-		 (iIsClient == true) ? "client": "server",
-		 this,
-		 dynamic_cast<abs_eap_base_timer_c *>(this)));
-
-	// Unload all loaded plugins
-	for(int ind = 0; ind < m_plugin_if_array.Count(); ind++)
-	{
-		delete m_plugin_if_array[ind];
-	}
-
-	m_plugin_if_array.Close();
-
-
-	iEnabledEapMethodsArray.reset();
-	iDisabledEapMethodsArray.reset();
-
-	
-	m_eap_type_array.reset();
-	
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-	return EAP_STATUS_RETURN(iTools, eap_status_ok);
-}
-
-//--------------------------------------------------
-
-// This is documented in abs_eap_stack_interface_c::shutdown().
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::shutdown()
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	EAP_TRACE_ALWAYS(
-		iTools, 
-		TRACE_FLAGS_DEFAULT, 
-		(EAPL("eap_am_stack_symbian_c::shutdown(): %s, this = 0x%08x => 0x%08x\n"),
-		 (iIsClient == true) ? "client": "server",
-		 this,
-		 dynamic_cast<abs_eap_base_timer_c *>(this)));
-
-	delete iFileconfig;
-	iFileconfig = 0;
-
-	(void) reset_eap_plugins();
-
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-	return EAP_STATUS_RETURN(iTools, eap_status_ok);
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::read_configure(
-    const eap_configuration_field_c * const field,
-    eap_variable_data_c * const data) 
-{
-    EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-    EAP_ASSERT_ALWAYS_TOOLS(iTools, data != NULL);
-    
-    EAP_TRACE_DEBUG(
-        iTools, 
-        TRACE_FLAGS_DEFAULT, 
-        (EAPL("eap_am_stack_symbian_c::read_configure(): %s, %d=%s, this = 0x%08x => 0x%08x\n"),
-         (iIsClient == true) ? "client": "server",
-		 m_selected_eapol_key_authentication_type,
-		 eapol_key_state_string_c::get_eapol_key_authentication_type_string(m_selected_eapol_key_authentication_type),
-         this,
-         dynamic_cast<abs_eap_base_timer_c *>(this)));
-    
-	EAP_TRACE_DATA_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("eap_am_stack_symbian_c::read_configure()"),
-		 field->get_field(),
-		 field->get_field_length()));
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::read_configure()");
-
-    // Trap must be set here because the OS independent portion of EAPOL
-    // that calls this function does not know anything about Symbian.   
-    eap_status_e status(eap_status_ok);
-
-    // Check if the wanted parameter is default type
-	if (field->compare(iTools, cf_str_EAP_default_type_hex_data.get_field()) == true)
-	{
-		// First check do we have read configuration from databases.
-		if (m_selected_eapol_key_authentication_type == eapol_key_authentication_type_WPS)
-		{
-			EAP_TRACE_DEBUG(
-				iTools,
-				TRACE_FLAGS_DEFAULT,
-				(EAPL("m_selected_eapol_key_authentication_type = eapol_key_authentication_type_WPS\n")));
-
-			status = eap_expanded_type_simple_config.get_type().get_expanded_type_data(
-				iTools,
-				data);
-
-			if (status == eap_status_ok)
-			{
-				set_current_eap_index(0);
-			}
-
-			EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-			return EAP_STATUS_RETURN(iTools, status);
-		}
-		else if (iEnabledEapMethodsArray.get_object_count() == 0ul)
-		{
-			EAP_TRACE_ERROR(
-				iTools,
-				TRACE_FLAGS_DEFAULT,
-				(EAPL("EAP settings not read from CommsDat\n")));
-
-			EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);	
-			return EAP_STATUS_RETURN(iTools, eap_status_process_general_error);
-		}
-
-		// Now we need to return here the next EAP type we should try
-
-		TInt ind = get_current_eap_index(); 
-
-
-		if (get_current_eap_index() < iEnabledEapMethodsArray.get_object_count())
-		{
-			eap_type_value_e * const next_eap_method = iEnabledEapMethodsArray.get_object(get_current_eap_index());
-			if (next_eap_method != 0
-				&& next_eap_method->get_is_valid() == true)
-			{
-				status = data->set_buffer_length(eap_expanded_type_c::get_eap_expanded_type_size());
-				if (status != eap_status_ok)
-				{
-					EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-					return EAP_STATUS_RETURN(iTools, eap_status_allocation_error);
-				}
-
-				status = data->set_data_length(eap_expanded_type_c::get_eap_expanded_type_size());
-				if (status != eap_status_ok)
-				{
-					EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-					return EAP_STATUS_RETURN(iTools, status);
-				}
-
-				status = eap_expanded_type_c::write_type(
-					iTools,
-					0ul,
-					data->get_data(),
-					data->get_data_length(),
-					true,
-					*next_eap_method);
-				if (status != eap_status_ok)
-				{
-					EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-					return EAP_STATUS_RETURN(iTools, status);
-				}
-			}
-		}
-
-
-
-		if (ind >= iEnabledEapMethodsArray.get_object_count())
-		{
-			// Not found any other EAP type as enabled.
-			// Send WLM notification because there is no way that the authentication
-			// can be successful if we don't have any EAP types to use...
-			if (iIsClient)
-			{
-				EAP_TRACE_ERROR(
-					iTools,
-					TRACE_FLAGS_DEFAULT,
-					(EAPL("ERROR: read_configure: No configured EAP types or all tried unsuccessfully.\n")));
-			}
-
-			EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-			return EAP_STATUS_RETURN(iTools, eap_status_illegal_configure_field);
-		}
-
-		EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-		return EAP_STATUS_RETURN(iTools, status);
-
-	} // if ()
-
-
-#if defined(USE_EAP_FILECONFIG)
-    {
-		status = m_client_config.read_configure(field, data);
-		if (status != eap_status_ok)
-		{
-			if (iFileconfig != 0
-				&& iFileconfig->get_is_valid() == true)
-			{
-				// Here we could try the final configuration option.
-				status = iFileconfig->read_configure(
-					field,
-					data);
-			}
-		}
-    }
-#endif //#if defined(USE_EAP_FILECONFIG)
-
-
-    iTools->trace_configuration(
-        status,
-        field,
-        data);
-
-    EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-    return EAP_STATUS_RETURN(iTools, status);
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::set_timer(
-    abs_eap_base_timer_c * const p_initializer, 
-    const u32_t p_id, 
-    void * const p_data,
-    const u32_t p_time_ms) 
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	const eap_status_e status = iTools->am_set_timer(
-		p_initializer, 
-		p_id, 
-		p_data,
-		p_time_ms);
-
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-	return EAP_STATUS_RETURN(iTools, status);
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::cancel_timer(
-    abs_eap_base_timer_c * const p_initializer, 
-    const u32_t p_id) 
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	const eap_status_e status = iTools->am_cancel_timer(
-		p_initializer, 
-		p_id);
-
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-	return EAP_STATUS_RETURN(iTools, status);
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::check_is_valid_eap_type(
-    const eap_type_value_e eap_type) 
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("eap_am_stack_symbian_c::check_is_valid_eap_type():  %s, %d=%s, this = 0x%08x => 0x%08x, EAP-type=0xfe%06x%08x=%s\n"),
-		(iIsClient == true) ? "client": "server",
-		m_selected_eapol_key_authentication_type,
-		eapol_key_state_string_c::get_eapol_key_authentication_type_string(m_selected_eapol_key_authentication_type),
-		this,
-		dynamic_cast<abs_eap_base_timer_c *>(this),
-		eap_type.get_vendor_id(),
-		eap_type.get_vendor_type(),
-		eap_header_string_c::get_eap_type_string(eap_type)));
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::check_is_valid_eap_type()");
-
-	if (m_selected_eapol_key_authentication_type == eapol_key_authentication_type_WPS
-		&& eap_type == eap_expanded_type_simple_config.get_type())
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT, (EAPL("eap_am_stack_symbian_c::check_is_valid_eap_type(): WPS does not use CommDbIf anymore.\n")));
-
-		return EAP_STATUS_RETURN(iTools, eap_status_ok);
-	}
-
-
-	for (int ind = 0; ind < iEnabledEapMethodsArray.get_object_count(); ++ind)
-	{
-		const eap_type_value_e * const allowed_eap_method = iEnabledEapMethodsArray.get_object(ind);
-
-		if (allowed_eap_method != 0
-			&& eap_type == *allowed_eap_method)
-		{
-			// This is Allowed and Valid.
-			EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-			return EAP_STATUS_RETURN(iTools, eap_status_ok);
-		}
-	} // for()
-
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("ERROR: %s: check_is_valid_eap_type(): not supported EAP-type=0xfe%06x%08x=%s\n"),
-		 (iIsClient == true ? "client": "server"),
-		 eap_type.get_vendor_id(),
-		 eap_type.get_vendor_type(),
-		 eap_header_string_c::get_eap_type_string(eap_type)));
-
-
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-	return EAP_STATUS_RETURN(iTools, eap_status_illegal_eap_type);
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::get_eap_type_list(
-    eap_array_c<eap_type_value_e> * const eap_type_list) 
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	EAP_TRACE_DEBUG(
-		iTools, 
-		TRACE_FLAGS_DEFAULT, 
-		(EAPL("eap_am_stack_symbian_c::get_eap_type_list(): %s, %d=%s, this = 0x%08x => 0x%08x\n"),
-		 (iIsClient == true) ? "client": "server",
-		 m_selected_eapol_key_authentication_type,
-		 eapol_key_state_string_c::get_eapol_key_authentication_type_string(m_selected_eapol_key_authentication_type),
-		 this,
-		 dynamic_cast<abs_eap_base_timer_c *>(this)));
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::get_eap_type_list()");
-
-	eap_status_e status(eap_status_illegal_eap_type);
-
-	status = eap_type_list->reset();
-	if (status != eap_status_ok)
-	{
-		EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-		return EAP_STATUS_RETURN(iTools, status);
-	}
-
-	if (m_selected_eapol_key_authentication_type == eapol_key_authentication_type_WPS)
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT, (EAPL("eap_am_stack_symbian_c::get_eap_type_list(): WPS does not use CommDbIf anymore.\n")));
-
-		// This is for one expanded EAP type (for the above one).
-		eap_expanded_type_c * expandedEAPType = new eap_type_value_e(eap_expanded_type_simple_config.get_type());
-
-		// Add WPS EAP-type to list.		
-		status = eap_type_list->add_object(expandedEAPType, true);
-		if (status != eap_status_ok)
-		{
-			EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-			return EAP_STATUS_RETURN(iTools, status);
-		}
-
-		return EAP_STATUS_RETURN(iTools, eap_status_ok);
-	}
-
-	// This function is same as get_selected_eap_types in behavior.
-
-	// We need to return only the EAP types available as enabled types.
-	// It means only the ones available in m_enabled_expanded_eap_array.
-	
-
-	for (TInt ind = 0; ind < iEnabledEapMethodsArray.get_object_count(); ++ind)
-	{	
-		const eap_type_value_e * const allowed_eap_method = iEnabledEapMethodsArray.get_object(ind);
-
-		if (allowed_eap_method != 0
-			&& allowed_eap_method->get_is_valid() == true)
-		{
-			EAP_TRACE_DEBUG(
-				iTools, 
-				TRACE_FLAGS_DEFAULT, 
-				(EAPL("eap_am_stack_symbian_c::ReadEAPSettingsL(): Enabled expanded EAP type at index=%d, EAP-type=0xfe%06x%08x\n"),
-				 ind,
-				 allowed_eap_method->get_vendor_id(),
-				 allowed_eap_method->get_vendor_type()));
-
-			status = eap_type_list->add_object(allowed_eap_method->copy(), true);
-			if (status != eap_status_ok)
-			{
-				EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-				return EAP_STATUS_RETURN(iTools, status);
-			}
-		}
-	} // for()
-
-
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-	return EAP_STATUS_RETURN(iTools, status);
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::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,
-    const bool is_client_when_true,
-    const eap_am_network_id_c * const receive_network_id) 
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("eap_am_stack_symbian_c::load_module(type %d=%s, tunneling_type %d=%s)\n"),
-		convert_eap_type_to_u32_t(type),
-		eap_header_string_c::get_eap_type_string(type),
-		convert_eap_type_to_u32_t(tunneling_type),
-		eap_header_string_c::get_eap_type_string(tunneling_type)));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::load_module()");
-
-	eap_status_e status(eap_status_process_general_error);
-
-	CEapTypePlugin* eapType = 0;
-	TInt error(KErrNone);
-
-	// Check if this EAP type has already been loaded
-	TInt eapArrayIndex = find<eap_type_value_e>(
-		&m_eap_type_array,
-		&type,
-		iTools);
-
-	if (eapArrayIndex >= 0)
-	{
-		// We found the entry in the array.
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("eap_am_stack_symbian_c::load_module(type %d=%s, tunneling_type %d=%s) already loaded.\n"),
-			convert_eap_type_to_u32_t(type),
-			eap_header_string_c::get_eap_type_string(type),
-			convert_eap_type_to_u32_t(tunneling_type),
-			eap_header_string_c::get_eap_type_string(tunneling_type)));
-
-		// Yep. It was loaded already.
-		eapType = m_plugin_if_array[eapArrayIndex];     
-	}
-	else 
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("eap_am_stack_symbian_c::load_module(type %d=%s, tunneling_type %d=%s) load new, iIndexType=%d, iIndex=%d.\n"),
-			convert_eap_type_to_u32_t(type),
-			eap_header_string_c::get_eap_type_string(type),
-			convert_eap_type_to_u32_t(tunneling_type),
-			eap_header_string_c::get_eap_type_string(tunneling_type),
-			iIndexType,
-			iIndex));
-
-		TBuf8<KExpandedEAPSize> expanded_type;
-    
-		// Some indirect way of forming the 8 byte string of an EAP type for the cue is needed here.        
-		TUint8 tmp_expanded_type[KExpandedEAPSize];
-
-		// This is to make the tmp_expanded_type in 8 byte string with correct vendor type and vendor id details.
-		status = eap_expanded_type_c::write_type(iTools,
-												0, // index should be zero here.
-												tmp_expanded_type,
-												KExpandedEAPSize,
-												true,
-												type);
-		if (status != eap_status_ok)
-		{
-			EAP_TRACE_DEBUG(
-				iTools,
-				TRACE_FLAGS_DEFAULT,
-				(EAPL("load_module: eap_expanded_type_c::write_type(): failed status=%d=%s\n"),
-				status,
-				eap_status_string_c::get_status_string(status)));
-    
-			EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-			return EAP_STATUS_RETURN(iTools, status);
-		}
-    
-		// Now copy the 8 byte string to the real expanded cue.
-		expanded_type.Copy(tmp_expanded_type, KExpandedEAPSize);
-
-		EAP_TRACE_DATA_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("EAPOL:eap_am_stack_symbian_c::load_module(): expanded_type:"),
-			expanded_type.Ptr(),
-			expanded_type.Size()));
-
-
-		// We must have a trap here since the EAPOL core knows nothing about Symbian.
-		TRAP(error, (eapType = CEapTypePlugin::NewL(
-			expanded_type,
-			iIndexType,
-			iIndex)));   
-		if (error != KErrNone
-			|| eapType == 0)
-		{
-			// Interface not found or implementation creation function failed
-			status = iTools->convert_am_error_to_eapol_error(error);
-			if (status == eap_status_ok)
-			{
-				status = eap_status_allocation_error;
-			}
-
-			EAP_TRACE_DEBUG(
-				iTools,
-				TRACE_FLAGS_DEFAULT,
-				(EAPL("ERROR: ECom could not find/initiate implementation, error=%d, status=%d=%s.\n"),
-				error,
-				status,
-				eap_status_string_c::get_status_string(status)));
-
-			EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-			return EAP_STATUS_RETURN(iTools, status);
-		}
-	}
-
-
-	{
-		TEapExpandedType expanded_type;
-    
-		error = CEapConversion::ConvertInternalTypeToExpandedEAPType(
-				&tunneling_type,
-				&expanded_type);
-		if (error != KErrNone)
-		{
-			status = iTools->convert_am_error_to_eapol_error(error);
-			EAP_TRACE_DEBUG(
-				iTools,
-				TRACE_FLAGS_DEFAULT,
-				(EAPL("ERROR: CEapConversion::ConvertInternalTypeToExpandedEAPType(): failed error=%d, status=%d=%s\n"),
-				error,
-				status,
-				eap_status_string_c::get_status_string(status)));
-			EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-			return EAP_STATUS_RETURN(iTools, status);
-		}
-
-		eapType->SetTunnelingType(expanded_type);
-	}
-
-	// Create the EAP protocol interface implementation.
-
-	TRAP(error, (*eap_type = eapType->GetStackInterfaceL(iTools, 
-		partner, 
-		is_client_when_true, 
-		receive_network_id,
-		this)));
-
-	if (error != KErrNone 
-		|| *eap_type == 0 
-		|| (*eap_type)->get_is_valid() == false)
-	{
-		status = iTools->convert_am_error_to_eapol_error(error);
-		if (status == eap_status_ok)
-		{
-			status = eap_status_allocation_error;
-		}
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("ERROR: Could not create EAP type interface instance. error=%d, status=%d=%s\n"),
-			error,
-			status,
-			eap_status_string_c::get_status_string(status)));
-
-		if  (eapArrayIndex == KErrNotFound)
-		{
-			// No need to call shutdown here because GetStackInterfaceL has done it.
-			delete eapType;
-		}
-		// Note: even in error cases eap_core_c deletes eap_type
-	}
-	else
-	{
-		status = eap_status_ok;
-		if (eapArrayIndex  == KErrNotFound)
-		{
-			// Add plugin information to the member arrays. There is no need to store eap_type pointer because
-			// the stack takes care of its deletion.
-			if (m_plugin_if_array.Append(eapType) != KErrNone)
-			{
-				delete eapType;
-				status = eap_status_allocation_error;
-				EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-				return EAP_STATUS_RETURN(iTools, status);               
-			}
-
-			eap_type_value_e * tmpEAPType = new eap_type_value_e();
-			if(tmpEAPType == NULL)
-			{
-				EAP_TRACE_DEBUG(
-					iTools,
-					TRACE_FLAGS_DEFAULT,
-					(EAPL("ERROR: eap_am_stack_symbian_c::load_module() eap_type_value_e creation failed\n")));
-				EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-				return EAP_STATUS_RETURN(iTools, eap_status_allocation_error);              
-			}
-        
-			*tmpEAPType = type;
-        
-			status = m_eap_type_array.add_object(tmpEAPType, true);
-        
-			if (status != eap_status_ok)            
-			{
-				// Remove the eap type added just previously
-				m_plugin_if_array.Remove(m_plugin_if_array.Count() - 1);
-				delete eapType;
-				status = eap_status_allocation_error;
-				EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-				return EAP_STATUS_RETURN(iTools, status);               
-			}
-		} 
-	}
-
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-	return EAP_STATUS_RETURN(iTools, status);
-}
-
-//--------------------------------------------------
-
-void eap_am_stack_symbian_c::RunL()
-{
-    EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);   
-    EAP_TRACE_DEBUG(
-        iTools,
-        TRACE_FLAGS_DEFAULT,
-        (EAPL("eap_am_stack_symbian_c::RunL(): iStatus.Int() = %d\n"),
-        iStatus.Int()));
-
-    if (iStatus.Int() != KErrNone)
-    {
-        EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-        return;
-    }
-
-    // Authentication cancelled.
-    EAP_TRACE_ALWAYS(
-        iTools,
-        TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT,
-        (EAPL("Authentication cancelled.\n")));
-
-    // Reset index of current EAP-type.
-    set_current_eap_index(0ul);
-
-    EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT); 
-}
-
-//--------------------------------------------------
-
-void eap_am_stack_symbian_c::read_configureL(
-    const TDesC& aDbName,
-    const TDesC& aTableName,
-    eap_config_string field,
-    const u32_t /*field_length*/,
-    eap_variable_data_c * const data)
-{   
-    EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-    
-    EAP_TRACE_DEBUG(
-        iTools, 
-        TRACE_FLAGS_DEFAULT, 
-        (EAPL("eap_am_stack_symbian_c::read_configureL(): %s, %d=%s, this = 0x%08x => 0x%08x\n"),
-         (iIsClient == true) ? "client": "server",
-		 m_selected_eapol_key_authentication_type,
-		 eapol_key_state_string_c::get_eapol_key_authentication_type_string(m_selected_eapol_key_authentication_type),
-         this,
-         dynamic_cast<abs_eap_base_timer_c *>(this)));
-    
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::read_configureL()");
-
-	if (m_selected_eapol_key_authentication_type == eapol_key_authentication_type_WPS)
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT, (EAPL("eap_am_stack_symbian_c::read_configureL(): WPS does not use CommDbIf anymore.\n")));
-		User::Leave(KErrNotSupported);
-	}
-
-    // Open database
-    RDbNamedDatabase db;
-
-    User::LeaveIfError(db.Open(iSession, aDbName, KEapSecureUIDFormat));  
-    
-    CleanupClosePushL(db);
-
-	const TUint BUFFER_SIZE = 128ul;
-
-    // Create a buffer for the ascii strings - initialised with the argument
-    HBufC8* asciibuf = HBufC8::NewLC(BUFFER_SIZE);
-    TPtr8 asciiString = asciibuf->Des();
-    asciiString.Copy(reinterpret_cast<const unsigned char *>(field));
-        
-    // Buffer for unicode parameter
-    HBufC* unicodebuf = HBufC::NewLC(BUFFER_SIZE);
-    TPtr unicodeString = unicodebuf->Des();
-    
-    // Convert to unicode 
-    unicodeString.Copy(asciiString);
-
-    // Now do the database query
-    HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
-    TPtr sqlStatement = buf->Des();
-    _LIT(KSQLQueryRow, "SELECT %S FROM %S");
-    sqlStatement.Format( KSQLQueryRow, &unicodeString, &aTableName );
-    
-    RDbView view;
-    User::LeaveIfError(view.Prepare(db, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
-    CleanupClosePushL(view);
-    User::LeaveIfError(view.EvaluateAll()); 
-    if (view.FirstL())
-    {
-        eap_status_e status(eap_status_process_general_error);
-		const TDbColNo FIRST_COLUMN = 1ul;
-        view.GetL();        
-        switch (view.ColType(FIRST_COLUMN))
-        {
-        case EDbColText:                
-            {
-                unicodeString = view.ColDes(FIRST_COLUMN);
-                // Convert to 8-bit
-                asciiString.Copy(unicodeString);
-                if (asciiString.Size() > 0)
-                {
-                    status = data->set_copy_of_buffer(asciiString.Ptr(), asciiString.Size());
-                    if (status != eap_status_ok)
-                    {
-                        User::Leave(KErrNoMemory);
-                    }
-                } 
-            }
-            break;
-        case EDbColUint32:
-            {
-                TUint value;
-                value = view.ColUint32(FIRST_COLUMN);
-                status = data->set_copy_of_buffer((const unsigned char *) &value, sizeof(value));
-                if (status != eap_status_ok)
-                {
-                    User::Leave(KErrNoMemory);
-                }
-            }
-            break;
-        default:
-            EAP_TRACE_DEBUG(
-                iTools,
-                TRACE_FLAGS_DEFAULT,
-                (EAPL("read_configureL: Unexpected column type.\n")));
-            User::Panic(_L("EAPOL"), 1);            
-        }
-    } 
-    else 
-    {
-        // Could not find parameter
-        EAP_TRACE_DEBUG(
-            iTools,
-            TRACE_FLAGS_DEFAULT,
-            (EAPL("read_configureL: Could not find configuration parameter.\n")));
-        User::Leave(KErrNotFound);
-    }       
-    
-    // Close database
-    CleanupStack::PopAndDestroy(&view);
-    CleanupStack::PopAndDestroy(buf);
-    CleanupStack::PopAndDestroy(unicodebuf);
-    CleanupStack::PopAndDestroy(asciibuf);
-    CleanupStack::PopAndDestroy(&db);
-
-
-    EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-}
-
-//--------------------------------------------------
-
-//
-void eap_am_stack_symbian_c::DoCancel()
-{   
-    EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-    EAP_TRACE_DEBUG(
-        iTools,
-        TRACE_FLAGS_DEFAULT,
-        (EAPL("eap_am_stack_symbian_c::DoCancel()\n")));
-
-    EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT); 
-}
-
-//----------------------------------------------------------------------------
-
-TInt eap_am_stack_symbian_c::RunError(TInt aError)
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("eap_am_stack_symbian_c::RunError(): aError=%d, this=0x%08x\n"),
-		aError,
-		this));
-
-	return aError;
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::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)
-{
-    EAP_TRACE_DEBUG(
-        iTools,
-        TRACE_FLAGS_DEFAULT,
-        (EAPL("%s: eap_am_stack_symbian_c::save_simple_config_session()\n"),
-        (iIsClient == true ? "client": "server")));
-
-    eap_status_e status(eap_status_ok);
-
-    status = iConfigurationIf->save_simple_config_session(
-        state,
-        credential_array,
-        new_password,
-        Device_Password_ID,
-        other_configuration);
-
-    EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-    return EAP_STATUS_RETURN(iTools, status);
-}
-
-//--------------------------------------------------
-
-//
-void eap_am_stack_symbian_c::ReadEAPSettingsL()
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	EAP_TRACE_DEBUG(
-		iTools, 
-		TRACE_FLAGS_DEFAULT, 
-		(EAPL("eap_am_stack_symbian_c::ReadEAPSettingsL(): %s, %d=%s, this = 0x%08x => 0x%08x\n"),
-		 (iIsClient == true) ? "client": "server",
-		 m_selected_eapol_key_authentication_type,
-		 eapol_key_state_string_c::get_eapol_key_authentication_type_string(m_selected_eapol_key_authentication_type),
-		 this,
-		 dynamic_cast<abs_eap_base_timer_c *>(this)));
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::ReadEAPSettingsL()");
-
-	eap_status_e status(eap_status_ok);
-
-	if (m_selected_eapol_key_authentication_type == eapol_key_authentication_type_WPS
-		|| iIndex == 0)
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT, (EAPL("eap_am_stack_symbian_c::ReadEAPSettingsL(): WPS does not use CommDbIf anymore.\n")));
-		return;
-	}
-
-	status = reset_eap_plugins();
-	if (status != eap_status_ok)
-	{
-		EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-		User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, status)));
-	}
-
-	if (iIndexType == ELan
-		|| iIndexType == EVpn)
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("eap_am_stack_symbian_c::ReadEAPSettingsL(): Beginning to read IAP settings - Type: %d, Index: %d.\n"), iIndexType, iIndex));
-
-
-		{
-			{
-				eap_am_general_settings_symbian_c * const general_setting = new eap_am_general_settings_symbian_c(iTools);
-
-				if (general_setting == 0)
-				{
-					User::Leave(KErrNoMemory);
-				}
-				if (general_setting->get_is_valid() == false)
-				{
-					general_setting->shutdown();
-					delete general_setting;
-					User::Leave(KErrNoMemory);
-				}
-
-				status = general_setting->configure();
-				if (status != eap_status_ok)
-				{
-					general_setting->shutdown();
-					delete general_setting;
-					User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, status)));
-				}
-
-				status = general_setting->read_eap_methods_synchronously(
-					iIndexType,
-					iIndex,
-					&iEnabledEapMethodsArray,
-					&iDisabledEapMethodsArray);
-
-				general_setting->shutdown();
-				delete general_setting;
-			}
-
-			if (status != eap_status_ok)
-			{
-				User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, status)));
-			}
-
-			// Trace enabled.
-			for (TInt ind = 0; ind < iEnabledEapMethodsArray.get_object_count(); ++ind)
-			{	
-				const eap_type_value_e * const allowed_eap_method = iEnabledEapMethodsArray.get_object(ind);
-
-				if (allowed_eap_method != 0
-					&& allowed_eap_method->get_is_valid() == true)
-				{
-					EAP_TRACE_DEBUG(
-						iTools, 
-						TRACE_FLAGS_DEFAULT, 
-						(EAPL("eap_am_stack_symbian_c::ReadEAPSettingsL(): Enabled expanded EAP type at index=%d, EAP-type=0xfe%06x%08x\n"),
-						 ind,
-						 allowed_eap_method->get_vendor_id(),
-						 allowed_eap_method->get_vendor_type()));
-				}
-			} // for()
-
-			// Trace disabled.
-			for (TInt ind = 0; ind < iDisabledEapMethodsArray.get_object_count(); ++ind)
-			{	
-				const eap_type_value_e * const allowed_eap_method = iDisabledEapMethodsArray.get_object(ind);
-
-				if (allowed_eap_method != 0
-					&& allowed_eap_method->get_is_valid() == true)
-				{
-					EAP_TRACE_DEBUG(
-						iTools, 
-						TRACE_FLAGS_DEFAULT, 
-						(EAPL("eap_am_stack_symbian_c::ReadEAPSettingsL(): Disabled expanded EAP type at index=%d, EAP-type=0xfe%06x%08x\n"),
-						 ind,
-						 allowed_eap_method->get_vendor_id(),
-						 allowed_eap_method->get_vendor_type()));
-				}
-			} // for()
-		}
-
-
-	} 
-	else
-	{
-		// Unsupported bearer.
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("ERROR: eap_am_stack_symbian_c::ReadEAPSettingsL() - LEAVE - unsupported bearer\n")));
-
-		User::Leave(KErrNotSupported);
-	}
-
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-}
-
-//--------------------------------------------------
-
-void eap_am_stack_symbian_c::SetToTopPriorityL(const eap_type_value_e /* aEapType */)
-{
-	EAP_TRACE_BEGIN(iTools, TRACE_FLAGS_DEFAULT);
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("eap_am_stack_symbian_c::SetToTopPriorityL() - for EXP EAP types, %d=%s\n"),
-		 m_selected_eapol_key_authentication_type,
-		 eapol_key_state_string_c::get_eapol_key_authentication_type_string(m_selected_eapol_key_authentication_type)));
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::SetToTopPriorityL()");
-
-	if (m_selected_eapol_key_authentication_type == eapol_key_authentication_type_WPS)
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT, (EAPL("eap_am_stack_symbian_c::SetToTopPriorityL(): WPS does not use CommDbIf anymore.\n")));
-		return;
-	}
-
-	if (iIndexType == ELan
-		|| iIndexType == EVpn)
-	{
-
-
-
-	} 
-	else
-	{
-		// Unsupported bearer.
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("ERROR: eap_am_stack_symbian_c::SetToTopPriorityL() - LEAVE - unsupported bearer\n")));
-		
-		User::Leave(KErrNotSupported);
-	}
-		
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::set_eap_database_reference_values(
-                const eap_variable_data_c * const reference)
-{
-    eap_status_e status(eap_status_ok);
-
-	EAP_TRACE_DEBUG(
-		iTools, 
-		TRACE_FLAGS_DEFAULT, 
-		(EAPL("eap_am_stack_symbian_c::set_eap_database_reference_values(): %s, this = 0x%08x => 0x%08x\n"),
-		 (iIsClient == true) ? "client": "server",
-		 this,
-		 dynamic_cast<abs_eap_base_timer_c *>(this)));
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::set_eap_database_reference_values()");
-
-	const eapol_wlan_database_reference_values_s * const database_reference_values
-		= reinterpret_cast<eapol_wlan_database_reference_values_s *>(
-		reference->get_data(sizeof(eapol_wlan_database_reference_values_s)));
-	if (database_reference_values == 0)
-	{
-		EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-		return EAP_STATUS_RETURN(iTools, eap_status_allocation_error);
-	}
-
-	iIndexType = static_cast<TIndexType>(database_reference_values->m_database_index_type);
-	iIndex = database_reference_values->m_database_index;
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("eap_am_stack_symbian_c::set_eap_database_reference_values(): iIndexType=%d, iIndex=%d.\n"),
-		 iIndexType,
-		 iIndex));
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-    return EAP_STATUS_RETURN(iTools, status);
-}
-
-//--------------------------------------------------
-
-TInt eap_am_stack_symbian_c::get_current_eap_index()
-{
-	return iCurrentEapIndex;
-}
-
-//--------------------------------------------------
-
-void eap_am_stack_symbian_c::set_current_eap_index(const TInt ind)
-{
-	iCurrentEapIndex = ind;
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_status_e eap_am_stack_symbian_c::get_802_11_authentication_mode(
-	const eap_am_network_id_c * const receive_network_id,
-	const eapol_key_authentication_type_e authentication_type)
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("%s: eap_am_stack_symbian_c::get_802_11_authentication_mode(): %d=%s\n"),
-		("client"),
-		 authentication_type,
-		 eapol_key_state_string_c::get_eapol_key_authentication_type_string(authentication_type)));
-
-    EAP_TRACE_RETURN_STRING(iTools, "returns: eap_am_stack_symbian_c::get_802_11_authentication_mode()");
-
-	eap_status_e status(eap_status_ok);
-	eap_expanded_type_c expandedEAPType(eap_type_none);
-	u32_t ind_type = 0ul;
-
-	m_selected_eapol_key_authentication_type = authentication_type;
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	status = reset_eap_configuration();
-    if (status != eap_status_ok)
-    {
-        EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-        return EAP_STATUS_RETURN(iTools, status);
-    }
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-	for (ind_type = 0; ind_type < iEnabledEapMethodsArray.get_object_count(); ++ind_type)
-	{	
-		const eap_type_value_e * const allowed_eap_method = iEnabledEapMethodsArray.get_object(ind_type);
-
-		if (allowed_eap_method != 0
-			&& allowed_eap_method->get_is_valid() == true)
-		{
-			EAP_TRACE_DEBUG(
-				iTools, 
-				TRACE_FLAGS_DEFAULT, 
-				(EAPL("eap_am_stack_symbian_c::ReadEAPSettingsL(): Enabled expanded EAP type at index=%d, EAP-type=0xfe%06x%08x\n"),
-				 ind_type,
-				 allowed_eap_method->get_vendor_id(),
-				 allowed_eap_method->get_vendor_type()));
-
-			if (*allowed_eap_method != eap_type_none)
-			{
-				expandedEAPType = *allowed_eap_method;
-				break;
-			}
-		}
-	} // for()
-
-
-	if (m_selected_eapol_key_authentication_type == eapol_key_authentication_type_WPS)
-	{
-		expandedEAPType = eap_expanded_type_simple_config.get_type();
-	}
-	else if (ind_type >= iEnabledEapMethodsArray.get_object_count())
-	{
-		// No enabled EAP types.
-		EAP_TRACE_ALWAYS(
-			iTools,
-			TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT,
-			(EAPL("ERROR: No enabled EAP types.\n")));
-		EAP_TRACE_ALWAYS(
-			iTools,
-			TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT,
-			(EAPL("ERROR: Indication sent to WLM: eap_status_failed_completely.\n")));
-
-		status = iPartner->complete_get_802_11_authentication_mode(
-			eap_status_illegal_eap_type,
-			receive_network_id,
-			eapol_key_802_11_authentication_mode_none);
-
-		EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);	
-		return EAP_STATUS_RETURN(iTools, status);
-	}	
-
-	eapol_key_802_11_authentication_mode_e a802_11_authentication_mode(eapol_key_802_11_authentication_mode_none);
-
-	if (expandedEAPType == eap_type_leap)
-	{
-		if (authentication_type == eapol_key_authentication_type_dynamic_WEP)
-		{
-			// LEAP uses it's own 802.11 authentication mode when 802.1X (dynamic WEP) is used.
-			a802_11_authentication_mode = eapol_key_802_11_authentication_mode_leap;
-
-			EAP_TRACE_ALWAYS(
-				iTools,
-				TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT, 
-				(EAPL("start_authentication(): Trying auth mode LEAP (802.1x mode).\n")));
-		}
-		else
-		{
-			// If security mode is WPA or RSNA then even LEAP uses open authentication!
-			a802_11_authentication_mode = eapol_key_802_11_authentication_mode_open;
-
-			EAP_TRACE_ALWAYS(
-				iTools,
-				TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT, 
-				(EAPL("start_authentication(): Trying auth mode OPEN (LEAP in WPA mode).\n")));
-		}
-
-	}
-	else
-	{
-		a802_11_authentication_mode = eapol_key_802_11_authentication_mode_open;
-
-		EAP_TRACE_ALWAYS(
-			iTools,
-			TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT, 
-			(EAPL("start_authentication(): Trying auth mode OPEN.\n")));
-	}
-
-	status = iPartner->complete_get_802_11_authentication_mode(
-		status,
-		receive_network_id,
-		a802_11_authentication_mode);
-
-	EAP_TRACE_END(iTools, TRACE_FLAGS_DEFAULT);
-	return EAP_STATUS_RETURN(iTools, status);
-}
-
-//--------------------------------------------------
-
-EAP_FUNC_EXPORT eap_am_stack_c * new_eap_am_stack_c(class abs_eap_am_tools_c * tools, bool is_client_when_true)
-{
-    eap_am_stack_symbian_c * am_stack = new eap_am_stack_symbian_c(tools, is_client_when_true);
-
-	eap_automatic_variable_c<eap_am_stack_c> automatic_am_stack(
-		tools,
-		am_stack);
-
-	if (am_stack == 0
-		|| am_stack->get_is_valid() == false)
-	{
-		// ERROR.
-		if (am_stack != 0)
-		{
-			EAP_TRACE_DEBUG(
-				tools,
-				TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT, 
-				(EAPL("calls: new_eap_am_stack_c(): am_stack->shutdown(): %s.\n"),
-				(is_client_when_true == true) ? "client": "server"));
-
-			am_stack->shutdown();
-		}
-		return 0;
-	}
-
-	automatic_am_stack.do_not_free_variable();
-
-    return am_stack;
-}
-
-//--------------------------------------------------
-// end
-