summaryrefslogtreecommitdiff
path: root/wl1271/stad/src/Sta_Management/authSm.c
diff options
context:
space:
mode:
Diffstat (limited to 'wl1271/stad/src/Sta_Management/authSm.c')
-rw-r--r--wl1271/stad/src/Sta_Management/authSm.c624
1 files changed, 0 insertions, 624 deletions
diff --git a/wl1271/stad/src/Sta_Management/authSm.c b/wl1271/stad/src/Sta_Management/authSm.c
deleted file mode 100644
index 7260f63..0000000
--- a/wl1271/stad/src/Sta_Management/authSm.c
+++ /dev/null
@@ -1,624 +0,0 @@
-/*
- * authSm.c
- *
- * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name Texas Instruments nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** \file authSM.c
- * \brief 802.11 authentication SM source
- *
- * \see authSM.h
- */
-
-
-/***************************************************************************/
-/* */
-/* MODULE: authSM.c */
-/* PURPOSE: 802.11 authentication SM source */
-/* */
-/***************************************************************************/
-
-#define __FILE_ID__ FILE_ID_64
-#include "osApi.h"
-
-#include "paramOut.h"
-#include "fsm.h"
-#include "report.h"
-#include "timer.h"
-#include "mlmeApi.h"
-#include "mlmeBuilder.h"
-#include "authSm.h"
-#include "openAuthSm.h"
-#include "sharedKeyAuthSm.h"
-#include "DrvMainModules.h"
-
-/* Constants */
-
-/** number of states in the state machine */
-#define AUTH_SM_MAX_NUM_STATES 4
-
-/** number of events in the state machine */
-#define AUTH_SM_MAX_NUM_EVENTS 8
-
-/* Enumerations */
-
-/* Typedefs */
-
-/* Structures */
-
-/* External data definitions */
-
-/* External functions definitions */
-
-/* Global variables */
-
-/* Local function prototypes */
-
-/* functions */
-
-/**
-*
-* auth_create - allocate memory for authentication SM
-*
-* \b Description:
-*
-* Allocate memory for authentication SM. \n
-* Allocates memory for Association context. \n
-* Allocates memory for authentication timer. \n
-* Allocates memory for authentication SM matrix. \n
-*
-* \b ARGS:
-*
-* I - hOs - OS context \n
-*
-* \b RETURNS:
-*
-* TI_OK if successful, TI_NOK otherwise.
-*
-* \sa rsn_mainSecSmKeysOnlyStop()
-*/
-TI_HANDLE auth_create(TI_HANDLE hOs)
-{
- auth_t *pHandle;
- TI_STATUS status;
-
- /* allocate authentication context memory */
- pHandle = (auth_t*)os_memoryAlloc(hOs, sizeof(auth_t));
- if (pHandle == NULL)
- {
- return NULL;
- }
-
- os_memoryZero(hOs, pHandle, sizeof(auth_t));
-
- pHandle->hOs = hOs;
-
- /* allocate memory for authentication state machine */
- status = fsm_Create(hOs, &pHandle->pAuthSm, AUTH_SM_MAX_NUM_STATES, AUTH_SM_MAX_NUM_EVENTS);
- if (status != TI_OK)
- {
- os_memoryFree(hOs, pHandle, sizeof(auth_t));
- return NULL;
- }
-
- return pHandle;
-}
-
-
-/**
-*
-* auth_unload - unload authentication SM from memory
-*
-* \b Description:
-*
-* Unload authentication SM from memory
-*
-* \b ARGS:
-*
-* I - hAuth - Authentication SM context \n
-*
-* \b RETURNS:
-*
-* TI_OK if successful, TI_NOK otherwise.
-*
-* \sa rsn_mainSecSmKeysOnlyStop()
-*/
-TI_STATUS auth_unload(TI_HANDLE hAuth)
-{
- TI_STATUS status;
- auth_t *pHandle;
-
- pHandle = (auth_t*)hAuth;
-
- status = fsm_Unload(pHandle->hOs, pHandle->pAuthSm);
- if (status != TI_OK)
- {
- /* report failure but don't stop... */
-TRACE0(pHandle->hReport, REPORT_SEVERITY_ERROR, "AUTH_SM: Error releasing FSM memory \n");
- }
-
- if (pHandle->hAuthSmTimer)
- {
- tmr_DestroyTimer (pHandle->hAuthSmTimer);
- }
-
- os_memoryFree(pHandle->hOs, pHandle, sizeof(auth_t));
-
- return TI_OK;
-}
-
-/**
-*
-* auth_init - Init required handles and module variables,
-*
-* \b Description:
-*
-* Init required handles and module variables,
-*
-* \b ARGS:
-*
-* I - pStadHandles - The driver modules handles \n
-*
-* \b RETURNS:
-*
-* void
-*
-* \sa auth_Create, auth_Unload
-*/
-void auth_init (TStadHandlesList *pStadHandles)
-{
- auth_t *pHandle = (auth_t*)(pStadHandles->hAuth);
-
- pHandle->hMlme = pStadHandles->hMlmeSm;
- pHandle->hRsn = pStadHandles->hRsn;
- pHandle->hReport = pStadHandles->hReport;
- pHandle->hOs = pStadHandles->hOs;
- pHandle->hTimer = pStadHandles->hTimer;
-}
-
-
-TI_STATUS auth_SetDefaults (TI_HANDLE hAuth, authInitParams_t *pAuthInitParams)
-{
- auth_t *pHandle = (TI_HANDLE) hAuth;
-
- pHandle->timeout = pAuthInitParams->authResponseTimeout;
- pHandle->maxCount = pAuthInitParams->authMaxRetryCount;
-
- pHandle->retryCount = 0;
- pHandle->authRejectCount = 0;
- pHandle->authTimeoutCount = 0;
-
- pHandle->authType = AUTH_LEGACY_NONE;
-
- /* allocate OS timer memory */
- pHandle->hAuthSmTimer = tmr_CreateTimer (pHandle->hTimer);
- if (pHandle->hAuthSmTimer == NULL)
- {
- TRACE0(pHandle->hReport, REPORT_SEVERITY_ERROR, "auth_SetDefaults(): Failed to create hAuthSmTimer!\n");
- return TI_NOK;
- }
-
- return TI_OK;
-}
-
-
-/**
-*
-* auth_start - Start event for the authentication SM
-*
-* \b Description:
-*
-* Start event for the authentication SM
-*
-* \b ARGS:
-*
-* I - hAuth - Authentication SM context \n
-*
-* \b RETURNS:
-*
-* TI_OK if successful, TI_NOK otherwise.
-*
-* \sa auth_Stop, auth_Recv
-*/
-TI_STATUS auth_start(TI_HANDLE hAuth)
-{
- auth_t *pHandle = (auth_t*)hAuth;
-
- if (pHandle == NULL)
- {
- return TI_NOK;
- }
-
- if (pHandle->authType == AUTH_LEGACY_NONE)
- {
- TRACE0(pHandle->hReport, REPORT_SEVERITY_ERROR, "auth_start: pHandle->authType == AUTH_LEGACY_NONE\n");
- return TI_NOK;
- }
-
- switch (pHandle->authType)
- {
- case AUTH_LEGACY_RESERVED1:
- case AUTH_LEGACY_OPEN_SYSTEM:
- return auth_osSMEvent(&pHandle->currentState, OPEN_AUTH_SM_EVENT_START, pHandle);
-
- case AUTH_LEGACY_SHARED_KEY:
- return auth_skSMEvent(&pHandle->currentState, SHARED_KEY_AUTH_SM_EVENT_START, pHandle);
-
- default:
- TRACE0(pHandle->hReport, REPORT_SEVERITY_ERROR, "auth_start: pHandle->authType unknown.\n");
- return TI_NOK;
- }
-}
-
-/**
-*
-* auth_stop - Stop event for the authentication SM
-*
-* \b Description:
-*
-* Stop event for the authentication SM
-*
-* \b ARGS:
-*
-* I - hAuth - Authentication SM context \n
-*
-* \b RETURNS:
-*
-* TI_OK if successful, TI_NOK otherwise.
-*
-* \sa auth_Start, auth_Recv
-*/
-TI_STATUS auth_stop(TI_HANDLE hAuth, TI_BOOL sendDeAuth, mgmtStatus_e reason )
-{
- auth_t *pHandle;
-
- pHandle = (auth_t*)hAuth;
-
- if (pHandle == NULL)
- return TI_NOK;
-
- if (pHandle->authType == AUTH_LEGACY_NONE)
- return TI_NOK;
-
- if( sendDeAuth == TI_TRUE )
- {
- deAuth_t deAuth;
- deAuth.reason = ENDIAN_HANDLE_WORD(reason);
- mlmeBuilder_sendFrame(pHandle->hMlme, DE_AUTH, (TI_UINT8*)&deAuth, sizeof(deAuth_t), 0);
- }
-
- switch (pHandle->authType)
- {
- case AUTH_LEGACY_RESERVED1:
- case AUTH_LEGACY_OPEN_SYSTEM:
- return auth_osSMEvent(&pHandle->currentState, OPEN_AUTH_SM_EVENT_STOP, pHandle);
-
- case AUTH_LEGACY_SHARED_KEY:
- return auth_skSMEvent(&pHandle->currentState, SHARED_KEY_AUTH_SM_EVENT_STOP, pHandle);
-
- default:
- return TI_NOK;
- }
-}
-
-/**
-*
-* auth_recv - Recive a message from the AP
-*
-* \b Description:
-*
-* Parse a message form the AP and perform the appropriate event.
-*
-* \b ARGS:
-*
-* I - hAuth - Authentication SM context \n
-*
-* \b RETURNS:
-*
-* TI_OK if successful, TI_NOK otherwise.
-*
-* \sa auth_Start, auth_Stop
-*/
-TI_STATUS auth_recv(TI_HANDLE hAuth, mlmeFrameInfo_t *pFrame)
-{
- auth_t *pHandle;
-
- pHandle = (auth_t*)hAuth;
-
- if (pHandle == NULL)
- return TI_NOK;
-
- if (pFrame->subType != AUTH)
- return TI_NOK;
-
- if (pHandle->authType == AUTH_LEGACY_NONE)
- return TI_NOK;
-
- if (pFrame->content.auth.status != STATUS_SUCCESSFUL)
- pHandle->authRejectCount++;
-
- switch (pHandle->authType)
- {
- case AUTH_LEGACY_RESERVED1:
- case AUTH_LEGACY_OPEN_SYSTEM:
- return openAuth_Recv(hAuth, pFrame);
-
- case AUTH_LEGACY_SHARED_KEY:
- return sharedKeyAuth_Recv(hAuth, pFrame);
-
- default:
- return TI_OK;
- }
-}
-
-/**
-*
-* auth_getParam - Get a specific parameter from the authentication SM
-*
-* \b Description:
-*
-* Get a specific parameter from the authentication SM.
-*
-* \b ARGS:
-*
-* I - hAuth - Authentication SM context \n
-* I/O - pParam - Parameter \n
-*
-* \b RETURNS:
-*
-* TI_OK if successful, TI_NOK otherwise.
-*
-* \sa auth_Start, auth_Stop
-*/
-TI_STATUS auth_getParam(TI_HANDLE hAuth, paramInfo_t *pParam)
-{
- auth_t *pHandle;
-
- pHandle = (auth_t*)hAuth;
-
- if ((pHandle == NULL) || (pParam == NULL))
- {
- return TI_NOK;
- }
-
- switch (pParam->paramType)
- {
- case AUTH_RESPONSE_TIMEOUT_PARAM:
- pParam->content.authResponseTimeout = pHandle->timeout;
- break;
-
- case AUTH_COUNTERS_PARAM:
- pParam->content.siteMgrTiWlanCounters.AuthRejects = pHandle->authRejectCount;
- pParam->content.siteMgrTiWlanCounters.AuthTimeouts = pHandle->authTimeoutCount;
- break;
-
- case AUTH_LEGACY_TYPE_PARAM:
- pParam->content.authLegacyAuthType = pHandle->authType;
- break;
-
- default:
- return TI_NOK;
- }
-
- return TI_OK;
-}
-
-/**
-*
-* auth_setParam - Set a specific parameter to the authentication SM
-*
-* \b Description:
-*
-* Set a specific parameter to the authentication SM.
-*
-* \b ARGS:
-*
-* I - hAuth - Authentication SM context \n
-* I/O - pParam - Parameter \n
-*
-* \b RETURNS:
-*
-* TI_OK if successful, TI_NOK otherwise.
-*
-* \sa auth_Start, auth_Stop
-*/
-TI_STATUS auth_setParam(TI_HANDLE hAuth, paramInfo_t *pParam)
-{
- auth_t *pHandle;
-
- pHandle = (auth_t*)hAuth;
-
- if ((pHandle == NULL) || (pParam == NULL))
- {
- return TI_NOK;
- }
-
- switch (pParam->paramType)
- {
- case AUTH_LEGACY_TYPE_PARAM:
- pHandle->authType = pParam->content.authLegacyAuthType;
-
- switch (pHandle->authType)
- {
- case AUTH_LEGACY_RESERVED1:
- case AUTH_LEGACY_OPEN_SYSTEM:
- openAuth_Config(hAuth, pHandle->hOs);
- break;
-
- case AUTH_LEGACY_SHARED_KEY:
- sharedKeyAuth_Config(hAuth, pHandle->hOs);
- break;
-
- default:
- return TI_NOK;
- }
- break;
-
- case AUTH_RESPONSE_TIMEOUT_PARAM:
- if ((pParam->content.authResponseTimeout >= AUTH_RESPONSE_TIMEOUT_MIN) &&
- (pParam->content.authResponseTimeout <= AUTH_RESPONSE_TIMEOUT_MAX))
- {
- pHandle->timeout = pParam->content.authResponseTimeout;
- }
- else
- {
- return TI_NOK;
- }
- break;
-
- default:
- return TI_NOK;
- }
-
- return TI_OK;
-}
-
-/**
-*
-* auth_smTimeout - Set a specific parameter to the authentication SM
-*
-* \b Description:
-*
-* Set a specific parameter to the authentication SM.
-*
-* \b ARGS:
-*
-* I - hAuth - authentication SM context \n
-* I - bTwdInitOccured - Indicates if TWDriver recovery occured since timer started \n
-*
-* \b RETURNS:
-*
-* TI_OK if successful, TI_NOK otherwise.
-*
-* \sa auth_Start, auth_Stop
-*/
-void auth_smTimeout (TI_HANDLE hAuth, TI_BOOL bTwdInitOccured)
-{
- auth_t *pHandle;
-
- pHandle = (auth_t*)hAuth;
-
- if (pHandle == NULL)
- return;
-
- if (pHandle->authType == AUTH_LEGACY_NONE)
- return;
-
- pHandle->authTimeoutCount++;
-
- switch (pHandle->authType)
- {
- case AUTH_LEGACY_RESERVED1:
- case AUTH_LEGACY_OPEN_SYSTEM:
- openAuth_Timeout(pHandle);
- break;
-
- case AUTH_LEGACY_SHARED_KEY:
- sharedKey_Timeout(pHandle);
- break;
-
- default:
- break;
- }
-}
-
-/*****************************************************************************
-**
-** Authentication messages builder/Parser
-**
-*****************************************************************************/
-
-/**
-*
-* auth_smMsgBuild - Build an authentication message and send it to the mlme builder
-*
-* \b Description:
-*
-* Build an authentication message and send it to the mlme builder.
-*
-* \b ARGS:
-*
-* I - pAssoc - Association SM context \n
-* I/O - pParam - Parameter \n
-*
-* \b RETURNS:
-*
-* TI_OK if successful, TI_NOK otherwise.
-*
-* \sa auth_Start, auth_Stop
-*/
-TI_STATUS auth_smMsgBuild(auth_t *pCtx, TI_UINT16 seq, TI_UINT16 statusCode, TI_UINT8* pChallange, TI_UINT8 challangeLen)
-{
- TI_STATUS status;
- TI_UINT8 len;
- TI_UINT8 authMsg[MAX_AUTH_MSG_LEN];
- authMsg_t *pAuthMsg;
- dot11_CHALLENGE_t *pDot11Challenge;
- TI_UINT8 wepOpt;
-
- wepOpt = 0;
-
- pAuthMsg = (authMsg_t*)authMsg;
-
- /* insert algorithm */
- pAuthMsg->authAlgo = (TI_UINT16)pCtx->authType;
-
- /* insert sequense */
- pAuthMsg->seqNum = ENDIAN_HANDLE_WORD(seq);
-
- /* insert status code */
- pAuthMsg->status = ENDIAN_HANDLE_WORD(statusCode);
-
- len = sizeof(pAuthMsg->authAlgo) + sizeof(pAuthMsg->seqNum) + sizeof(pAuthMsg->status);
-
- if (pChallange != NULL)
- {
- pDot11Challenge = (dot11_CHALLENGE_t*)&authMsg[len];
-
- pDot11Challenge->hdr[0] = CHALLANGE_TEXT_IE_ID;
- pDot11Challenge->hdr[1] = challangeLen;
-
- os_memoryCopy(pCtx->hOs, (void *)pDot11Challenge->text, pChallange, challangeLen);
- len += challangeLen + 2;
-
- wepOpt = 1;
- }
-
- status = mlmeBuilder_sendFrame(pCtx->hMlme, AUTH, authMsg, len, wepOpt);
-
- return status;
-}
-
-
-
-
-
-
-