1 /** \file assocSM.h 2 * \brief 802.11 Association SM 3 * 4 * \see assocSM.c 5 */ 6 7 /**************************************************************************** 8 **+-----------------------------------------------------------------------+** 9 **| |** 10 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 11 **| All rights reserved. |** 12 **| |** 13 **| Redistribution and use in source and binary forms, with or without |** 14 **| modification, are permitted provided that the following conditions |** 15 **| are met: |** 16 **| |** 17 **| * Redistributions of source code must retain the above copyright |** 18 **| notice, this list of conditions and the following disclaimer. |** 19 **| * Redistributions in binary form must reproduce the above copyright |** 20 **| notice, this list of conditions and the following disclaimer in |** 21 **| the documentation and/or other materials provided with the |** 22 **| distribution. |** 23 **| * Neither the name Texas Instruments nor the names of its |** 24 **| contributors may be used to endorse or promote products derived |** 25 **| from this software without specific prior written permission. |** 26 **| |** 27 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 28 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 29 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 30 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 31 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 32 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 33 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 34 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 35 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 36 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 37 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 38 **| |** 39 **+-----------------------------------------------------------------------+** 40 ****************************************************************************/ 41 42 /***************************************************************************/ 43 /* */ 44 /* MODULE: assocSM.h */ 45 /* PURPOSE: 802.11 Association SM */ 46 /* */ 47 /***************************************************************************/ 48 49 #ifndef _RSN_H 50 #define _RSN_H 51 52 #include "rsnApi.h" 53 #include "memMngrEx.h" 54 #include "paramOut.h" 55 #include "siteHash.h" 56 57 /* Constants */ 58 59 #define RSN_MAX_NUMBER_OF_EVENTS 6 60 #define RSN_MAX_NUMBER_OF_BANNED_SITES 16 61 #define RSN_MIC_FAILURE_REPORT_WAIT 500 62 #define RSN_MIC_FAILURE_TIMEOUT (60000 + RSN_MIC_FAILURE_REPORT_WAIT) 63 #define RSN_MAIN_KEYS_SESSION_TIMEOUT RSN_AUTH_FAILURE_TIMEOUT 64 #define RSN_MIC_FAILURE_RE_KEY 3000 65 66 /* Enumerations */ 67 typedef enum 68 { 69 MIC_FAILURE_FALSE, 70 MIC_FAILURE_TRUE, 71 MIC_FAILURE_BLOCK 72 } rsn_micFailureStatus_e; 73 74 typedef enum 75 { 76 GROUP_KEY_UPDATE_FALSE, 77 GROUP_KEY_UPDATE_TRUE 78 } rsn_groupKeyUpdate_e; 79 80 /* Typedefs */ 81 typedef struct _rsn_t rsn_t; 82 83 typedef TI_STATUS (*rsn_eventCallback_t)(void* pCtx, void *pData); 84 typedef TI_STATUS (*rsn_setPaeConfig_t)(rsn_t *pRsn, rsn_paeConfig_t *pPaeConfig); 85 typedef TI_STATUS (*rsn_getNetworkMode_t)(rsn_t *pRsn, rsn_networkMode_t *pNetMode); 86 87 typedef TI_STATUS (*rsn_setKey_t)(rsn_t *pMainSec, securityKeys_t *pKey); 88 typedef TI_STATUS (*rsn_removeKey_t)(rsn_t *pMainSec, securityKeys_t *pKey); 89 typedef TI_STATUS (*rsn_setDefaultKeyId_t)(rsn_t *pMainSec, UINT8 keyId); 90 typedef TI_STATUS (*rsn_reportStatus_t)(rsn_t *pRsn, TI_STATUS rsnStatus); 91 typedef TI_STATUS (*rsn_sendEapol_t)(rsn_t *pRsn, UINT8 *pPacket, UINT32 length); 92 typedef TI_STATUS (*rsn_recvEapol_t)(rsn_t *pRsn, mem_MSDU_T *pMsdu); 93 typedef TI_STATUS (*rsn_getSiteEntry_t)(rsn_t *pRsn, macAddress_t *macAddress, siteEntry_t *curSiteEntry); 94 95 typedef struct 96 { 97 rsn_eventCallback_t eventFunc; 98 void *pCtx; 99 } rsn_eventStruct_t; 100 101 typedef struct 102 { 103 char id[MAX_IDENTITY_LEN]; /**< User identity string */ 104 UINT8 idLength; /**< User identity string length */ 105 char password[MAX_PASSWD_LEN]; /**< User password string */ 106 UINT8 pwdLength; /**< User password string length */ 107 } authIdentity_t; 108 109 typedef struct 110 { 111 rsn_siteBanLevel_e banLevel; 112 UINT32 banStartedMs; 113 UINT32 banDurationMs; 114 macAddress_t siteBssid; 115 } rsn_siteBanEntry_t; 116 117 struct _rsn_t 118 { 119 rsn_eventStruct_t events[RSN_MAX_NUMBER_OF_EVENTS]; 120 rsn_paeConfig_t paeConfig; 121 BOOL PrivacyOptionImplemented; 122 123 securityKeys_t keys[MAX_KEYS_NUM]; 124 BOOL keys_en [MAX_KEYS_NUM]; 125 UINT8 defaultKeyId; 126 BOOL defaultKeysOn; 127 BOOL wepDefaultKeys[MAX_KEYS_NUM]; 128 BOOL wepStaticKey; 129 rsn_groupKeyUpdate_e groupKeyUpdate; 130 OS_802_11_EAP_TYPES eapType; 131 132 rsn_siteBanEntry_t bannedSites[RSN_MAX_NUMBER_OF_BANNED_SITES]; 133 UINT8 numOfBannedSites; 134 135 TI_HANDLE micFailureReportWaitTimer; 136 TI_HANDLE micFailureReKeyTimer; 137 138 struct _admCtrl_t *pAdmCtrl; 139 struct _mainSec_t *pMainSecSm; 140 141 struct _keyParser_t *pKeyParser; 142 143 TI_HANDLE hTx; 144 TI_HANDLE hRx; 145 TI_HANDLE hConn; 146 TI_HANDLE hCtrlData; 147 TI_HANDLE hWhalCtrl; 148 TI_HANDLE hMemMgr; 149 TI_HANDLE hSiteMgr; 150 TI_HANDLE hReport; 151 TI_HANDLE hOs; 152 TI_HANDLE hExcMngr; 153 TI_HANDLE hEvHandler; 154 TI_HANDLE hSmeSm; 155 TI_HANDLE hAPConn; 156 157 rsn_setPaeConfig_t setPaeConfig; 158 rsn_getNetworkMode_t getNetworkMode; 159 rsn_setKey_t setKey; 160 rsn_removeKey_t removeKey; 161 rsn_setDefaultKeyId_t setDefaultKeyId; 162 rsn_reportStatus_t reportStatus; 163 164 UINT32 rsnStartedTs; 165 UINT32 rsnCompletedTs; 166 }; 167 168 /* Structures */ 169 170 /* External data definitions */ 171 172 /* External functions definitions */ 173 174 /* Function prototypes */ 175 176 TI_STATUS rsn_reportStatus(rsn_t *pRsn, TI_STATUS status); 177 178 TI_STATUS rsn_setPaeConfig(rsn_t *pRsn, rsn_paeConfig_t *pPaeConfig); 179 180 TI_STATUS rsn_getNetworkMode(rsn_t *pRsn, rsn_networkMode_t *pNetMode); 181 182 TI_STATUS rsn_setKey(rsn_t *pMainSec, securityKeys_t *pKey); 183 184 TI_STATUS rsn_removeKey(rsn_t *pMainSec, securityKeys_t *pKey); 185 186 TI_STATUS rsn_setDefaultKeyId(rsn_t *pMainSec, UINT8 keyId); 187 188 TI_STATUS rsn_setDefaultKeys(rsn_t *pHandle); 189 190 191 #endif 192 193