/*
* 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.
*
*/

/*
* %version: 10 %
*/

// This is enumeration of EAPOL source code.
#if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
	#undef EAP_FILE_NUMBER_ENUM
	#define EAP_FILE_NUMBER_ENUM 71 
	#undef EAP_FILE_NUMBER_DATE 
	#define EAP_FILE_NUMBER_DATE 1127594498 
#endif //#if defined(USE_EAP_MINIMUM_RELEASE_TRACES)


#include "eap_am_memory.h"
#include "eap_tools.h"
#include "eap_am_export.h"
#include "eap_base_type.h"
#include "eap_variable_data.h"
#include "eap_type_aka_header.h"
#include "eap_type_aka_types.h"
#include "eap_type_aka_payloads.h"
//#include "abs_eap_type_aka_state.h"
#include "abs_eap_base_timer.h"
#include "eap_type_aka_state.h"
#include "eap_crypto_api.h"
#include "eap_state_notification.h"

//--------------------------------------------------


EAP_FUNC_EXPORT eap_type_aka_state_variable_parameters_c::~eap_type_aka_state_variable_parameters_c()
{
}

EAP_FUNC_EXPORT eap_type_aka_state_variable_parameters_c::eap_type_aka_state_variable_parameters_c()
	: m_must_be_initiator(false)
	, m_must_be_responder(false)
	, m_dummy_1_for_alignment(0)
	, m_dummy_2_for_alignment(0)
{
	u32_t ind = 0;
	for (ind = 0; ind < AKA_STATE_MAX_TYPES; ind++)
	{
		m_valid_types[ind] = aka_subtype_NONE;
	}
}


EAP_FUNC_EXPORT bool eap_type_aka_state_variable_parameters_c::check_valid_types(aka_subtype_e type) const
{
	for (u32_t ind = 0u; ind < AKA_STATE_MAX_TYPES; ind++)
	{
		if (type == m_valid_types[ind])
		{
			return true;
		}
	}
	return false;
}

EAP_FUNC_EXPORT bool eap_type_aka_state_variable_parameters_c::check_initiator(const bool is_initiator) const
{
	if (m_must_be_initiator == true && is_initiator == false
		|| m_must_be_responder == true && is_initiator == true)
	{
		return false;
	}
	return true;
}

EAP_FUNC_EXPORT void eap_type_aka_state_variable_parameters_c::init_state(
	const bool must_be_initiator,
	const bool must_be_responder,
	const aka_subtype_e type0,
	const aka_subtype_e type1,
	const aka_subtype_e type2,
	const aka_subtype_e type3,
	const aka_subtype_e type4)
{
	m_must_be_initiator = (must_be_initiator);
	m_must_be_responder = (must_be_responder);
	m_valid_types[0] = (type0);
	m_valid_types[1] = (type1);
	m_valid_types[2] = (type2);
	m_valid_types[3] = (type3);
	m_valid_types[4] = (type4);
}


//-----------------------------------------------




// End.
