1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*
2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * sharedKeyAuthSm.c
3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
4a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
5a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * All rights reserved.
6a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
7a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Redistribution and use in source and binary forms, with or without
8a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * modification, are permitted provided that the following conditions
9a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * are met:
10a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
11a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions of source code must retain the above copyright
12a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer.
13a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions in binary form must reproduce the above copyright
14a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer in
15a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    the documentation and/or other materials provided with the
16a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    distribution.
17a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Neither the name Texas Instruments nor the names of its
18a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    contributors may be used to endorse or promote products derived
19a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    from this software without specific prior written permission.
20a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
21a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
33a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
34a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \file sharedKeyAuthSm.c
35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \brief shared key 802.11 authentication SM source
36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \see sharedKeyAuthSm.h
38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/
42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*																		   */
43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*		MODULE:	sharedKeyAuthSm.c										   */
44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*    PURPOSE:	shared key 802.11 authentication SM source				   */
45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*																	 	   */
46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/
47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __FILE_ID__  FILE_ID_83
49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "osApi.h"
50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "paramOut.h"
51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "timer.h"
52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "fsm.h"
53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "report.h"
54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "mlmeApi.h"
55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "authSm.h"
56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "sharedKeyAuthSm.h"
57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Constants */
59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** number of states in the state machine */
61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define	SHARED_KEY_AUTH_SM_NUM_STATES		4
62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** number of events in the state machine */
64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define	SHARED_KEY_AUTH_SM_NUM_EVENTS		8
65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Enumerations */
67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Typedefs */
69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Structures */
71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External data definitions */
73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External functions definitions */
75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Global variables */
77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Local function prototypes */
79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* functions */
81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* sharedKeyAuth_smConfig - configure a new authentication SM
85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description:
87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Configure a new authentication SM.
89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS:
91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - hAuth - Association SM context  \n
93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - hMlme - MLME SM context  \n
94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - hSiteMgr - Site manager context  \n
95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - hCtrlData - Control data context  \n
96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - hTxData - TX data context  \n
97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - hHalCtrl - Hal control context  \n
98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - hReport - Report context  \n
99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - hOs - OS context  \n
100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - authTimeout - Association SM timeout \n
101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - authMaxCount - Max number of authentication requests to send  \n
102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS:
104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  TI_OK if successful, TI_NOK otherwise.
106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa sharedKeyAuth_Create, sharedKeyAuth_Unload
108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/
109a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_Config(TI_HANDLE hAuth, TI_HANDLE hOs)
110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	auth_t		*pHandle;
112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/** Main 802.1X State Machine matrix */
114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	fsm_actionCell_t	sharedKeyAuth_smMatrix[SHARED_KEY_AUTH_SM_NUM_STATES][SHARED_KEY_AUTH_SM_NUM_EVENTS] =
115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		/* next state and actions for IDLE state */
117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		{{SHARED_KEY_AUTH_SM_STATE_WAIT_1, (fsm_Action_t)sharedKeyAuth_smStartIdle},
118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smActionUnexpected}
125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		},
126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		/* next state and actions for WAIT_1 state */
127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		{{SHARED_KEY_AUTH_SM_STATE_WAIT_1, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smStopWait},
129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_WAIT_2, (fsm_Action_t)sharedKeyAuth_smSuccess1Wait1},
130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smFailure1Wait1},
131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_WAIT_1, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_WAIT_1, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_WAIT_1, (fsm_Action_t)sharedKeyAuth_smTimeoutWait1},
134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smMaxRetryWait}
135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		},
136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		/* next state and actions for WAIT_2 state */
137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		{{SHARED_KEY_AUTH_SM_STATE_WAIT_2, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smStopWait},
139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_WAIT_2, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_WAIT_2, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_AUTH, (fsm_Action_t)sharedKeyAuth_smSuccess2Wait2},
142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smFailure2Wait2},
143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_WAIT_2, (fsm_Action_t)sharedKeyAuth_smTimeoutWait2},
144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smMaxRetryWait}
145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		},
146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		/* next state and actions for AUTH state */
147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		{{SHARED_KEY_AUTH_SM_STATE_AUTH, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_IDLE, (fsm_Action_t)sharedKeyAuth_smStopAuth},
149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_AUTH, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_AUTH, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_AUTH, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_AUTH, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_AUTH, (fsm_Action_t)sharedKeyAuth_smActionUnexpected},
154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 {SHARED_KEY_AUTH_SM_STATE_AUTH, (fsm_Action_t)sharedKeyAuth_smActionUnexpected}
155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		}};
156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (hAuth == NULL)
159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	pHandle = (auth_t*)hAuth;
164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = fsm_Config(pHandle->pAuthSm, &sharedKeyAuth_smMatrix[0][0],
166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt						SHARED_KEY_AUTH_SM_NUM_STATES, SHARED_KEY_AUTH_SM_NUM_EVENTS, auth_skSMEvent, hOs);
167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (status != TI_OK)
168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	pHandle->currentState = SHARED_KEY_AUTH_SM_STATE_IDLE;
173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
175a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
178a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS auth_skSMEvent(TI_UINT8 *currentState, TI_UINT8 event, TI_HANDLE hAuth)
179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt   auth_t *pAuth = (auth_t *)hAuth;
181a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS 		status;
182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT8		nextState;
183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
184a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = fsm_GetNextState(pAuth->pAuthSm, *currentState, event, &nextState);
185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (status != TI_OK)
186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		TRACE0(pAuth->hReport, REPORT_SEVERITY_SM, "State machine error, failed getting next state\n");
188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return(TI_NOK);
189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TRACE3(pAuth->hReport, REPORT_SEVERITY_INFORMATION, "auth_skSMEvent: <currentState = %d, event = %d> --> nextState = %d\n", *currentState, event, nextState);
192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
193a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = fsm_Event(pAuth->pAuthSm, currentState, event, (void *)pAuth);
194a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
195a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
196a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
197a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
198a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
199a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
200a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
201a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* sharedKeyAuth_Recv - Recive a message from the AP
202a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
203a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description:
204a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
205a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Parse a message form the AP and perform the appropriate event.
206a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
207a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS:
208a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
209a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  I   - hAuth - Association SM context  \n
210a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
211a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS:
212a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
213a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  TI_OK if successful, TI_NOK otherwise.
214a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
215a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa sharedKeyAuth_Start, sharedKeyAuth_Stop
216a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/
217a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_Recv(TI_HANDLE hAuth, mlmeFrameInfo_t *pFrame)
218a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
219a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS 			status = TI_NOK;
220a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	auth_t			*pHandle;
221a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT16			authAlgo;
222a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT16			rspSeq;
223a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
224a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	pHandle = (auth_t*)hAuth;
225a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
226a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (pHandle == NULL)
227a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
228a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
229a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
230a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
231a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* check response status */
232a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	authAlgo = ENDIAN_HANDLE_WORD(pFrame->content.auth.authAlgo);
233a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (authAlgo != AUTH_LEGACY_SHARED_KEY)
234a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
235a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTRACE0(pHandle->hReport, REPORT_SEVERITY_SM, "SHARED_KEY_AUTH_SM: DEBUG recieved authentication message with wrong algorithm \n");
236a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
237a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
238a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
239a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* check response status */
240a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	rspSeq  = pFrame->content.auth.seqNum;
241a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
242a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pHandle->authData.status = pFrame->content.auth.status;
243a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pHandle->authData.pChalange = (char *)(pFrame->content.auth.pChallenge->text);
244a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pHandle->authData.challangeLen = pFrame->content.auth.pChallenge->hdr[1];
245a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
246a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (pHandle->authData.status == STATUS_SUCCESSFUL)
247a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
248a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		switch (rspSeq)
249a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		{
250a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		case 2:
251a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTRACE0(pHandle->hReport, REPORT_SEVERITY_SM, "SHARED_KEY_AUTH_SM: DEBUG Success authenticating to AP stage 1\n");
252a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
253a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			if (pFrame->content.auth.pChallenge->hdr[0] != CHALLANGE_TEXT_IE_ID)
254a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{
255a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTRACE0(pHandle->hReport, REPORT_SEVERITY_ERROR, "SHARED_KEY_AUTH_SM: Wrong element ID for challange \n");
256a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt				status = TI_NOK;
257a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt				break;
258a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			}
259a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
260a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			status = auth_skSMEvent(&pHandle->currentState, SHARED_KEY_AUTH_SM_EVENT_SUCCESS_1, hAuth);
261a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			break;
262a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
263a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		case 4:
264a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTRACE0(pHandle->hReport, REPORT_SEVERITY_SM, "SHARED_KEY_AUTH_SM: DEBUG Success authenticating to AP stage 2\n");
265a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
266a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			status = auth_skSMEvent(&pHandle->currentState, SHARED_KEY_AUTH_SM_EVENT_SUCCESS_2, hAuth);
267a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			break;
268a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
269a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		default:
270a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTRACE0(pHandle->hReport, REPORT_SEVERITY_ERROR, "SHARED_KEY_AUTH_SM: Wrong sequence number \n");
271a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			status = TI_NOK;
272a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			break;
273a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		}
274a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
275a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
276a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	else
277a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
278a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		switch (rspSeq)
279a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		{
280a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		case 2:
281a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			status = auth_skSMEvent(&pHandle->currentState, SHARED_KEY_AUTH_SM_EVENT_FAIL_1, hAuth);
282a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			break;
283a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
284a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		case 4:
285a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			status = auth_skSMEvent(&pHandle->currentState, SHARED_KEY_AUTH_SM_EVENT_FAIL_2, hAuth);
286a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			break;
287a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
288a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		default:
289a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			status = TI_NOK;
290a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			break;
291a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		}
292a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
293a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
294a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
295a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
296a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
297a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* state machine functions */
298a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
299a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smStartIdle(auth_t *hAuth)
300a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
301a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
302a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
303a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smResetRetry(hAuth);
304a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smSendAuth1(hAuth);
305a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smStartTimer(hAuth);
306a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smIncRetry(hAuth);
307a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
308a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
309a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
310a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
311a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smStopWait(auth_t *hAuth)
312a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
313a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
314a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
315a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smStopTimer(hAuth);
316a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
317a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
318a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
319a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
320a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smSuccess1Wait1(auth_t *hAuth)
321a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
322a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
323a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
324a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smResetRetry(hAuth);
325a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (status != TI_OK)
326a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return status;
327a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smStopTimer(hAuth);
328a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (status != TI_OK)
329a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return status;
330a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smSendAuth2(hAuth);
331a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (status != TI_OK)
332a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return status;
333a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smStartTimer(hAuth);
334a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (status != TI_OK)
335a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return status;
336a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smIncRetry(hAuth);
337a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
338a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
339a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
340a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
341a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smFailure1Wait1(auth_t *hAuth)
342a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
343a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
344a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
345a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smStopTimer(hAuth);
346a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smReportFailure(hAuth);
347a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
348a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
349a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
350a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
351a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smTimeoutWait1(auth_t *hAuth)
352a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
353a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
354a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
355a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smSendAuth1(hAuth);
356a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smStartTimer(hAuth);
357a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smIncRetry(hAuth);
358a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
359a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
360a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
361a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
362a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smMaxRetryWait(auth_t *hAuth)
363a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
364a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
365a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
366a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smReportFailure(hAuth);
367a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
368a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
369a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
370a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
371a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smSuccess2Wait2(auth_t *hAuth)
372a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
373a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
374a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
375a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smStopTimer(hAuth);
376a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smReportSuccess(hAuth);
377a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
378a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
379a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
380a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
381a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smFailure2Wait2(auth_t *hAuth)
382a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
383a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
384a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
385a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smStopTimer(hAuth);
386a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smReportFailure(hAuth);
387a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
388a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
389a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
390a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
391a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smTimeoutWait2(auth_t *hAuth)
392a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
393a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
394a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
395a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smSendAuth2(hAuth);
396a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smStartTimer(hAuth);
397a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = sharedKeyAuth_smIncRetry(hAuth);
398a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
399a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
400a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
401a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
402a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* action routines for authentication SM */
403a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
404a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smSendAuth1(auth_t *hAuth)
405a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
406a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
407a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
408a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = auth_smMsgBuild(hAuth, 1, 0, NULL, 0);
409a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
410a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
411a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
412a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
413a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smSendAuth2(auth_t *hAuth)
414a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
415a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		status;
416a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
417a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* GET SECRET  */
418a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
419a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* ENCRYPT CHALLANGE WITH SECRET */
420a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
421a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = auth_smMsgBuild(hAuth, 3, 0, (TI_UINT8 *)(hAuth->authData.pChalange), hAuth->authData.challangeLen);
422a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
423a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
424a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
425a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
426a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smStopAuth(auth_t *hAuth)
427a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
428a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
429a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
430a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
431a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smActionUnexpected(auth_t *hAuth)
432a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
433a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
434a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
435a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
436a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* local functions */
437a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
438a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
439a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smResetRetry(auth_t *hAuth)
440a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
441a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (hAuth == NULL)
442a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
443a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
444a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
445a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
446a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	hAuth->retryCount = 0;
447a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
448a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
449a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
450a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
451a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smIncRetry(auth_t *hAuth)
452a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
453a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (hAuth == NULL)
454a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
455a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
456a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
457a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
458a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	hAuth->retryCount++;
459a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
460a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
461a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
462a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
463a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smReportSuccess(auth_t *hAuth)
464a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
465a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS 		status;
466a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
467a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (hAuth == NULL)
468a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
469a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
470a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
471a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
472a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = mlme_reportAuthStatus(hAuth->hMlme, hAuth->authData.status);
473a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
474a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
475a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
476a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
477a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smReportFailure(auth_t *hAuth)
478a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
479a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS 		status;
480a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
481a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (hAuth == NULL)
482a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
483a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
484a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
485a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
486a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	status = mlme_reportAuthStatus(hAuth->hMlme, hAuth->authData.status);
487a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
488a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return status;
489a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
490a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
491a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smStartTimer(auth_t *hAuth)
492a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
493a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (hAuth == NULL)
494a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
495a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
496a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
497a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
498a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tmr_StartTimer (hAuth->hAuthSmTimer,
499a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    auth_smTimeout,
500a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    (TI_HANDLE)hAuth,
501a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    hAuth->timeout,
502a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    TI_FALSE);
503a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
504a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
505a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
506a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
507a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKeyAuth_smStopTimer(auth_t *hAuth)
508a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
509a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (hAuth == NULL)
510a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
511a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_NOK;
512a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
513a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
514a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	tmr_StopTimer (hAuth->hAuthSmTimer);
515a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
516a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
517a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
518a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
519a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS sharedKey_Timeout(auth_t *pAuth)
520a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
521a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (pAuth->retryCount >= pAuth->maxCount)
522a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
523a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		pAuth->authData.status = STATUS_PACKET_REJ_TIMEOUT;
524a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return auth_skSMEvent(&pAuth->currentState, SHARED_KEY_AUTH_SM_EVENT_MAX_RETRY, pAuth);
525a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
526a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
527a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return auth_skSMEvent(&pAuth->currentState, SHARED_KEY_AUTH_SM_EVENT_TIMEOUT, pAuth);
528a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
529a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
530a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
531