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