diff -r e03a3db4489e -r 9abfd4f00d37 eapol/eapol_framework/eapol_symbian/eap_if/src/eap_am_message_if_symbian.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eapol/eapol_framework/eapol_symbian/eap_if/src/eap_am_message_if_symbian.cpp Mon May 24 20:32:47 2010 +0300 @@ -0,0 +1,249 @@ +/* +* 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: 19 % +*/ + +// INCLUDES +#include + +#include "abs_eap_am_message_if.h" +#include "eap_am_message_if.h" +#include "eap_am_message_if_symbian.h" +#include "eap_variable_data.h" +#include "eap_automatic_variable.h" +#include "EapServerStrings.h" + +//----------------------------------------------------------------------------------------- + +/** + * C++ default constructor. + */ +EAP_FUNC_EXPORT eap_am_message_if_symbian_c::eap_am_message_if_symbian_c( + abs_eap_am_tools_c * const tools, + const TEapRequests if_request) +: m_am_tools(tools) +, m_partner(0) +, m_if_request(if_request) +, m_is_valid(false) +{ + EAP_TRACE_DEBUG( + m_am_tools, + EAP_TRACE_FLAGS_MESSAGE_DATA, + (EAPL("eap_am_message_if_symbian_c::eap_am_message_if_symbian_c(): this = 0x%08x.\n"), + this)); + + EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_am_message_if_symbian_c::eap_am_message_if_symbian_c()"); + + if (m_am_tools == 0 + || m_am_tools->get_is_valid() == false) + { + return; + } + + m_is_valid = true; +} + +//----------------------------------------------------------------------------------------- + +/** + * Destructor. + */ +EAP_FUNC_EXPORT eap_am_message_if_symbian_c::~eap_am_message_if_symbian_c() +{ + EAP_TRACE_DEBUG( + m_am_tools, + EAP_TRACE_FLAGS_MESSAGE_DATA, + (EAPL("eap_am_message_if_symbian_c::~eap_am_message_if_symbian_c(): this = 0x%08x.\n"), + this)); + + EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_am_message_if_symbian_c::~eap_am_message_if_symbian_c()"); + + m_partner = 0; +} + +//----------------------------------------------------------------------------------------- + +EAP_FUNC_EXPORT void eap_am_message_if_symbian_c::set_partner(abs_eap_am_message_if_c * const client) +{ + EAP_TRACE_DEBUG( + m_am_tools, + EAP_TRACE_FLAGS_MESSAGE_DATA, + (EAPL("eap_am_message_if_symbian_c::set_partner(): this = 0x%08x.\n"), + this)); + + EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_am_message_if_symbian_c::set_partner()"); + + m_partner = client; + + if (m_partner == 0) + { + m_is_valid = false; + } + +} + +//----------------------------------------------------------------------------------------- + +EAP_FUNC_EXPORT eap_status_e eap_am_message_if_symbian_c::configure( + const eap_variable_data_c * const client_configuration) +{ + EAP_TRACE_DEBUG( + m_am_tools, + EAP_TRACE_FLAGS_MESSAGE_DATA, + (EAPL("eap_am_message_if_symbian_c::configure(): this = 0x%08x.\n"), + this)); + + EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_am_message_if_symbian_c::configure()"); + + TBuf ServerName; + TBuf ServerExe; + + GetServerNameAndExe(&ServerName, &ServerExe); + + const void * aConfigurationData = 0; + TInt aConfigurationDataLength = 0ul; + + if (client_configuration != 0) + { + aConfigurationData = client_configuration->get_data(); + aConfigurationDataLength = client_configuration->get_data_length(); + } + + TRAPD(err, iSession.ConnectL(m_am_tools, this, ServerName, ServerExe, aConfigurationData, aConfigurationDataLength, m_if_request)); + + if(err) + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("eap_am_message_if_symbian_c::configure(): - iSession.ConnectL err=%d\n"), err )); + } + + return EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(err)); +} + +//----------------------------------------------------------------------------------------- + +EAP_FUNC_EXPORT eap_status_e eap_am_message_if_symbian_c::shutdown() +{ + EAP_TRACE_DEBUG( + m_am_tools, + EAP_TRACE_FLAGS_MESSAGE_DATA, + (EAPL("eap_am_message_if_symbian_c::shutdown(): this = 0x%08x.\n"), + this)); + + EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_am_message_if_symbian_c::shutdown()"); + + iSession.Close(); + + return EAP_STATUS_RETURN(m_am_tools, eap_status_ok); +} + +//----------------------------------------------------------------------------------------- + +EAP_FUNC_EXPORT eap_status_e eap_am_message_if_symbian_c::process_data(const void * const data, const u32_t length) +{ + EAP_TRACE_DEBUG( + m_am_tools, + EAP_TRACE_FLAGS_MESSAGE_DATA, + (EAPL("eap_am_message_if_symbian_c::process_data(): this = 0x%08x, m_if_request=%d=%s.\n"), + this, + m_if_request, + EapServerStrings::GetEapRequestsString(m_if_request))); + + EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_am_message_if_symbian_c::process_data()"); + + TEapRequests aRequest(EEapNone); + + if (m_if_request == EEapPluginNew) + { + aRequest = EEapPluginProcessData; + } + else if (m_if_request == EEapSettingsNew) + { + aRequest = EEapSettingsProcessData; + } + else if (m_if_request == EEapPacStoreNew) + { + aRequest = EEapPacStoreProcessData; + } + else if (m_if_request == EWapiCoreIfNew) + { + aRequest = EWapiCoreProcessData; + } + else if (m_if_request == EWapiSettingsNew) + { + aRequest = EWapiSettingsProcessData; + } + + EAP_TRACE_DEBUG( + m_am_tools, + EAP_TRACE_FLAGS_MESSAGE_DATA, + (EAPL("eap_am_message_if_symbian_c::process_data(): calls iSession.process_data(), this = 0x%08x, aRequest=%d=%s.\n"), + this, + aRequest, + EapServerStrings::GetEapRequestsString(aRequest))); + + return EAP_STATUS_RETURN( + m_am_tools, + m_am_tools->convert_am_error_to_eapol_error( + iSession.process_data(aRequest, data, length))); +} + +//----------------------------------------------------------------------------------------- + +EAP_FUNC_EXPORT bool eap_am_message_if_symbian_c::get_is_valid() +{ + EAP_TRACE_DEBUG( + m_am_tools, + EAP_TRACE_FLAGS_MESSAGE_DATA, + (EAPL("eap_am_message_if_symbian_c::get_is_valid(): this = 0x%08x.\n"), + this)); + + EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_am_message_if_symbian_c::get_is_valid()"); + + return m_is_valid; +} + +//----------------------------------------------------------------------------------------- + +/// Function sends the data message to lower layer. +/// Data is formatted to Attribute-Value Pairs. +/// Look at eap_tlv_header_c and eap_tlv_message_data_c. +EAP_FUNC_EXPORT eap_status_e eap_am_message_if_symbian_c::send_data(const TDesC8& message) +{ + EAP_TRACE_DEBUG( + m_am_tools, + EAP_TRACE_FLAGS_MESSAGE_DATA, + (EAPL("eap_am_message_if_symbian_c::send_data(): this = 0x%08x, data=0x%08x, length=%d.\n"), + this, + message.Ptr(), + message.Length())); + + EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_am_message_if_symbian_c::send_data()"); + + return EAP_STATUS_RETURN( + m_am_tools, + m_partner->send_data(message.Ptr(), message.Length())); +} + +//----------------------------------------------------------------------------------------- + +// End of file. +