--- /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 Tue Aug 31 15:16:37 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 <e32std.h>
+
+#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<KMaxServerExe> ServerName;
+ TBuf<KMaxServerExe> 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.
+