1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * keyParser.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 keyParser.c 35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief KEY parser module implementation. 36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \see keyParser.h 38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * 42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * MODULE: KEY parser * 43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * PURPOSE: KEY parser implementation * 44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * 45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __FILE_ID__ FILE_ID_33 48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "osApi.h" 49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "report.h" 50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "rsnApi.h" 51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "keyParser.h" 53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "keyParserExternal.h" 54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "keyParserWep.h" 55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 56a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParserNone_config(keyParser_t *pKeyParser); 57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Function - Init KEY Parser module. 61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Called by RSN Manager. 65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Registers the function 'rsn_keyParserRecv()' at the distributor to receive KEY frames upon receiving a KEY_RECV event. 66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_STATUS - 0 on success, any other value on failure. 73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 76a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtkeyParser_t* keyParser_create(TI_HANDLE hOs) 77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyParser_t *pKeyParser; 79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* allocate key parser context memory */ 81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser = (keyParser_t*)os_memoryCAlloc(hOs, 1, sizeof(keyParser_t)); 82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pKeyParser == NULL) 83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return NULL; 85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->hOs = hOs; 88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return pKeyParser; 90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Function - Init KEY Parser module. 95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Called by RSN Manager. 99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Registers the function 'rsn_keyParserRecv()' at the distributor to receive KEY frames upon receiving a KEY_RECV event. 100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_STATUS - 0 on success, any other value on failure. 107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 110a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParser_unload(struct _keyParser_t *pKeyParser) 111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* free key parser context memory */ 113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryFree(pKeyParser->hOs, pKeyParser, sizeof(keyParser_t)); 114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Function - Init KEY Parser module. 121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Called by RSN Manager. 125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Registers the function 'rsn_keyParserRecv()' at the distributor to receive KEY frames upon receiving a KEY_RECV event. 126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_STATUS - 0 on success, any other value on failure. 133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 136a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParser_config(struct _keyParser_t *pKeyParser, 137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRsnPaeConfig *pPaeConfig, 138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt struct _unicastKey_t *pUcastKey, 139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt struct _broadcastKey_t *pBcastKey, 140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt struct _mainKeys_t *pParent, 141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hReport, 142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hOs, 143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hCtrlData) 144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->pParent = pParent; 147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->pUcastKey = pUcastKey; 148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->pBcastKey = pBcastKey; 149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->pPaeConfig = pPaeConfig; 150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->hReport = hReport; 152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->hOs = hOs; 153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->hCtrlData = hCtrlData; 154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyParserExternal_config(pKeyParser); 156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 162a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParserNone_config(keyParser_t *pKeyParser) 163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->recv = NULL; 165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pKeyParser->replayReset = NULL; 166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 172a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParser_nop(keyParser_t *pKeyParser) 173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 174a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTRACE0(pKeyParser->hReport, REPORT_SEVERITY_INFORMATION, "KEY_PARSER: nop \n"); 175a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 180