diff -r 000000000000 -r c8830336c852 eapol/eapol_framework/eapol_common/type/tls_peap/tls/src/tls_application_data_message.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eapol/eapol_framework/eapol_common/type/tls_peap/tls/src/tls_application_data_message.cpp Thu Dec 17 08:47:43 2009 +0200 @@ -0,0 +1,213 @@ +/* +* 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. +* +*/ + + +// This is enumeration of EAPOL source code. +#if defined(USE_EAP_MINIMUM_RELEASE_TRACES) + #undef EAP_FILE_NUMBER_ENUM + #define EAP_FILE_NUMBER_ENUM 123 + #undef EAP_FILE_NUMBER_DATE + #define EAP_FILE_NUMBER_DATE 1127594498 +#endif //#if defined(USE_EAP_MINIMUM_RELEASE_TRACES) + + + +#include "eap_tools.h" +#include "eap_array.h" +#include "eap_array_algorithms.h" +#include "tls_application_data_message.h" +#include "tls_record_header.h" +#include "eap_buffer.h" +#include "tls_peap_types.h" + + +/** @file */ + +//-------------------------------------------------- + +EAP_FUNC_EXPORT tls_application_data_message_c::~tls_application_data_message_c() +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); +} + +//-------------------------------------------------- + +EAP_FUNC_EXPORT tls_application_data_message_c::tls_application_data_message_c( + abs_eap_am_tools_c * const tools, + const bool is_client) +: m_am_tools(tools) +, m_application_data(tools) +, m_is_client(is_client) +, m_is_analysed(false) +, m_is_valid(false) +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + + set_is_valid(); + + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); +} + +//-------------------------------------------------- + +EAP_FUNC_EXPORT void tls_application_data_message_c::set_is_valid() +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + + m_is_valid = true; + + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); +} + +//-------------------------------------------------- + +EAP_FUNC_EXPORT bool tls_application_data_message_c::get_is_valid() +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return m_is_valid; +} + +//-------------------------------------------------- + +EAP_FUNC_EXPORT void tls_application_data_message_c::set_is_analysed() +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + + m_is_analysed = true; + + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); +} + +//-------------------------------------------------- + +EAP_FUNC_EXPORT bool tls_application_data_message_c::get_is_analysed() +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return m_is_analysed; +} + +//-------------------------------------------------- + +EAP_FUNC_EXPORT eap_status_e tls_application_data_message_c::set_application_data( + const u8_t * const packet, + const u32_t packet_length) +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("\n"))); + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("TLS: data_function: tls_application_data_message_c::set_application_data()\n"))); + + eap_status_e status = eap_status_not_supported; + + m_application_data.reset(); + + if (m_application_data.get_is_valid() == false) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + + status = m_application_data.add_data( + packet, + packet_length); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); +} + +//-------------------------------------------------- + +EAP_FUNC_EXPORT eap_variable_data_c * tls_application_data_message_c::get_application_data() +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return &m_application_data; +} + +//-------------------------------------------------- + +EAP_FUNC_EXPORT eap_status_e tls_application_data_message_c::add_message_data( + eap_variable_data_c * const tls_message_buffer) +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("\n"))); + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("TLS: %s: data_function: tls_application_data_message_c::add_message_data()\n"), + (m_is_client == true ? "client": "server"))); + + eap_status_e status = eap_status_not_supported; + + u32_t data_length_start = tls_message_buffer->get_data_length(); + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + { + status = tls_message_buffer->add_data( + m_application_data.get_data(m_application_data.get_data_length()), + m_application_data.get_data_length()); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + if (status == eap_status_ok) + { + u32_t application_data_length = tls_message_buffer->get_data_length() - data_length_start; + EAP_UNREFERENCED_PARAMETER(application_data_length); // in release + + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("application data length %d bytes.\n"), + application_data_length)); + + EAP_TRACE_DATA_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("TLS-application data"), + tls_message_buffer->get_data_offset(data_length_start, application_data_length), + application_data_length)); + } + + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); +} + +//-------------------------------------------------- + + + +// End.