--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/eapol/eapol_framework/eapol_common/type/securid/core/eap_type_securid_state.cpp Thu Dec 17 08:47:43 2009 +0200
@@ -0,0 +1,192 @@
+/*
+* 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 117
+ #undef EAP_FILE_NUMBER_DATE
+ #define EAP_FILE_NUMBER_DATE 1127594498
+#endif //#if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
+
+#include "eap_type_securid_state.h"
+
+eap_type_securid_state_c::eap_type_securid_state_c(const bool client)
+{
+ m_is_client = client;
+
+ if (m_is_client)
+ {
+ m_state = eap_type_securid_state_none;
+ m_prev_state = eap_type_securid_state_none;
+ m_next_state = eap_type_securid_state_identity_query;
+ }
+ else
+ {
+ m_state = eap_type_securid_state_none;
+ m_prev_state = eap_type_securid_state_none;
+ m_next_state = eap_type_securid_state_identity_response;
+ }
+}
+
+eap_type_securid_state_c::~eap_type_securid_state_c()
+{
+}
+
+eap_type_securid_state_variable_e eap_type_securid_state_c::get_state() const
+{
+ return m_state;
+}
+
+void eap_type_securid_state_c::set_state(const eap_type_securid_state_variable_e new_state)
+{
+ set_state(new_state, eap_type_securid_state_none);
+}
+
+void eap_type_securid_state_c::set_state(
+ const eap_type_securid_state_variable_e new_state,
+ const eap_type_securid_state_variable_e new_next_state)
+
+{
+ m_prev_state = m_state;
+ m_state = new_state;
+ m_next_state = new_next_state;
+}
+
+bool eap_type_securid_state_c::is_valid_state(const eap_type_securid_state_variable_e new_state) const
+{
+ if (m_is_client) // Client
+ {
+ if (new_state == eap_type_securid_state_identity_query)
+ {
+ return true;
+ }
+
+ // Check validity against (current) state.
+ // If it fails then against previous state (in case of resending)
+
+ switch (m_state)
+ {
+ case eap_type_securid_state_none:
+ if (new_state == eap_type_securid_state_identity_query
+ || new_state == eap_type_securid_state_gtc_user_input_query)
+ {
+ return true;
+ }
+ break;
+
+ case eap_type_securid_state_identity_query:
+ if (new_state == eap_type_securid_state_passcode_query)
+ {
+ return true;
+ }
+ break;
+
+ case eap_type_securid_state_passcode_query:
+ if (new_state == eap_type_securid_state_success
+ || new_state == eap_type_securid_state_failure)
+ {
+ return true;
+ }
+ break;
+
+ case eap_type_securid_state_gtc_user_input_query:
+ if (new_state == eap_type_securid_state_gtc_user_input_query
+ || new_state == eap_type_securid_state_success
+ || new_state == eap_type_securid_state_failure)
+ {
+ return true;
+ }
+ break;
+
+ case eap_type_securid_state_success:
+ case eap_type_securid_state_failure:
+ // Session is ended
+ return false;
+
+ default:
+ ;
+ }
+
+ }
+
+ else // Server
+ {
+ if (new_state == eap_type_securid_state_identity_response)
+ {
+ return true;
+ }
+
+ switch (m_state)
+ {
+ case eap_type_securid_state_none:
+ //if (new_state == eap_type_securid_state_identity_response) See 8 lines up.
+ //{
+ // return true;
+ //}
+ break;
+
+ case eap_type_securid_state_identity_response:
+ if (new_state == eap_type_securid_state_passcode_response
+ || new_state == eap_type_securid_state_gtc_response)
+ {
+ return true;
+ }
+ break;
+
+ case eap_type_securid_state_passcode_response:
+ if (m_next_state == new_state)
+ {
+ return true;
+ }
+ if (m_next_state == eap_type_securid_state_passcode_response)
+ {
+ return true;
+ }
+ break;
+
+ case eap_type_securid_state_gtc_response:
+ if (new_state == eap_type_securid_state_gtc_response)
+ {
+ return true;
+ }
+ break;
+
+ default:
+ ;
+ }
+ }
+ return false;
+}
+
+void eap_type_securid_state_c::set_failure_message_received()
+{
+}
+
+void eap_type_securid_state_c::unset_failure_message_received()
+{
+}
+
+void eap_type_securid_state_c::cancel_eap_failure_timer()
+{
+}
+
+//--------------------------------------------------
+
+
+// End.