/*
* 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: 9 %
*/
#if !defined(_SAE_COOKIE_H_)
#define _SAE_COOKIE_H_
#include "eap_am_memory.h"
const u32_t SAE_COOKIE_LENGTH = 8u;
class sae_cookie_c
{
private:
u8_t m_bytes[SAE_COOKIE_LENGTH];
public:
sae_cookie_c()
{
}
~sae_cookie_c()
{
}
const u8_t * get_data() const
{
return reinterpret_cast<const u8_t *>(m_bytes);
}
u32_t get_data_length() const
{
return sizeof(m_bytes);
}
void set_bytes(abs_eap_am_tools_c * const m_am_tools, const u8_t * const p_bytes, const u32_t length)
{
EAP_UNREFERENCED_PARAMETER(m_am_tools);
EAP_ASSERT_ALWAYS(length == SAE_COOKIE_LENGTH);
for (u32_t ind = 0u; ind < length; ind++)
{
m_bytes[ind] = p_bytes[ind];
}
}
void set_cookie(abs_eap_am_tools_c * const m_am_tools, const sae_cookie_c * const cookie)
{
set_bytes(m_am_tools, cookie->get_data(), cookie->get_data_length());
}
void reset_cookie()
{
for (u32_t ind = 0u; ind < SAE_COOKIE_LENGTH; ind++)
{
m_bytes[ind] = 0;
}
}
sae_cookie_c * const copy(abs_eap_am_tools_c * const m_am_tools) const
{
sae_cookie_c * const new_cookie = new sae_cookie_c();
if (new_cookie == 0)
{
return 0;
}
new_cookie->set_bytes(m_am_tools, get_data(), get_data_length());
return new_cookie;
}
};
//--------------------------------------------------
#endif //#if !defined(_SAE_COOKIE_H_)
// End.