1 /* 2 * rsn.h 3 * 4 * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * * Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * * Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * * Neither the name Texas Instruments nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 /** \file assocSM.h 35 * \brief 802.11 Association SM 36 * 37 * \see assocSM.c 38 */ 39 40 41 /***************************************************************************/ 42 /* */ 43 /* MODULE: assocSM.h */ 44 /* PURPOSE: 802.11 Association SM */ 45 /* */ 46 /***************************************************************************/ 47 48 #ifndef _RSN_H 49 #define _RSN_H 50 51 #include "rsnApi.h" 52 #include "paramOut.h" 53 #include "siteHash.h" 54 55 /* Constants */ 56 #define RSN_MAX_IDENTITY_LEN 64 57 #define RSN_MAX_PASSWD_LEN 128 58 59 #define RSN_MAX_NUMBER_OF_EVENTS 6 60 #define RSN_MAX_NUMBER_OF_BANNED_SITES 16 61 #define RSN_MIC_FAILURE_REPORT_TIMEOUT 500 62 #define RSN_MIC_FAILURE_TIMEOUT (60000 + RSN_MIC_FAILURE_REPORT_TIMEOUT) 63 #define RSN_MAIN_KEYS_SESSION_TIMEOUT RSN_AUTH_FAILURE_TIMEOUT 64 #define RSN_MIC_FAILURE_RE_KEY_TIMEOUT 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 typedef enum 81 { 82 PAIRWISE_KEY_UPDATE_FALSE, 83 PAIRWISE_KEY_UPDATE_TRUE 84 } rsn_pairwiseKeyUpdate_e; 85 86 87 /* Typedefs */ 88 typedef struct _rsn_t rsn_t; 89 90 typedef TI_STATUS (*rsn_eventCallback_t)(void* pCtx, void *pData); 91 typedef TI_STATUS (*rsn_setPaeConfig_t)(rsn_t *pRsn, TRsnPaeConfig *pPaeConfig); 92 typedef TI_STATUS (*rsn_getNetworkMode_t)(rsn_t *pRsn, ERsnNetworkMode *pNetMode); 93 94 typedef TI_STATUS (*rsn_setKey_t)(rsn_t *pMainSec, TSecurityKeys *pKey); 95 typedef TI_STATUS (*rsn_removeKey_t)(rsn_t *pMainSec, TSecurityKeys *pKey); 96 typedef TI_STATUS (*rsn_setDefaultKeyId_t)(rsn_t *pMainSec, TI_UINT8 keyId); 97 typedef TI_STATUS (*rsn_reportStatus_t)(rsn_t *pRsn, TI_STATUS rsnStatus); 98 typedef TI_STATUS (*rsn_sendEapol_t)(rsn_t *pRsn, TI_UINT8 *pPacket, TI_UINT32 length); 99 typedef TI_STATUS (*rsn_getSiteEntry_t)(rsn_t *pRsn, TMacAddr *macAddress, siteEntry_t *curSiteEntry); 100 typedef TI_BOOL (*rsn_getPortStatus_t)(rsn_t *pRsn); 101 typedef TI_STATUS (*rsn_setPortStatus_t)(TI_HANDLE hRsn, TI_BOOL state); 102 103 typedef struct 104 { 105 rsn_eventCallback_t eventFunc; 106 void *pCtx; 107 } rsn_eventStruct_t; 108 109 typedef struct 110 { 111 char id[RSN_MAX_IDENTITY_LEN]; /**< User identity string */ 112 TI_UINT8 idLength; /**< User identity string length */ 113 char password[RSN_MAX_PASSWD_LEN]; /**< User password string */ 114 TI_UINT8 pwdLength; /**< User password string length */ 115 } authIdentity_t; 116 117 typedef struct 118 { 119 ERsnSiteBanLevel banLevel; 120 TI_UINT32 banStartedMs; 121 TI_UINT32 banDurationMs; 122 TMacAddr siteBssid; 123 } rsn_siteBanEntry_t; 124 125 struct _rsn_t 126 { 127 rsn_eventStruct_t events[RSN_MAX_NUMBER_OF_EVENTS]; 128 TRsnPaeConfig paeConfig; 129 TI_BOOL PrivacyOptionImplemented; 130 131 TSecurityKeys keys[MAX_KEYS_NUM]; 132 TI_BOOL keys_en [MAX_KEYS_NUM]; 133 TI_UINT8 defaultKeyId; 134 TI_BOOL defaultKeysOn; 135 TI_BOOL wepDefaultKeys[MAX_KEYS_NUM]; 136 TI_BOOL wepStaticKey; 137 rsn_groupKeyUpdate_e eGroupKeyUpdate; 138 rsn_pairwiseKeyUpdate_e ePairwiseKeyUpdate; 139 OS_802_11_EAP_TYPES eapType; 140 141 rsnGenericIE_t genericIE; 142 rsn_siteBanEntry_t bannedSites[RSN_MAX_NUMBER_OF_BANNED_SITES]; 143 TI_UINT8 numOfBannedSites; 144 145 TI_HANDLE hMicFailureReportWaitTimer; 146 TI_HANDLE hMicFailureGroupReKeyTimer; 147 TI_HANDLE hMicFailurePairwiseReKeyTimer; 148 TI_BOOL bPairwiseMicFailureFilter; 149 150 struct _admCtrl_t *pAdmCtrl; 151 struct _mainSec_t *pMainSecSm; 152 153 struct _keyParser_t *pKeyParser; 154 155 TI_HANDLE hTxCtrl; 156 TI_HANDLE hRx; 157 TI_HANDLE hConn; 158 TI_HANDLE hCtrlData; 159 TI_HANDLE hTWD; 160 TI_HANDLE hSiteMgr; 161 TI_HANDLE hReport; 162 TI_HANDLE hOs; 163 TI_HANDLE hXCCMngr; 164 TI_HANDLE hEvHandler; 165 TI_HANDLE hSmeSm; 166 TI_HANDLE hAPConn; 167 TI_HANDLE hMlme; 168 TI_HANDLE hPowerMgr; 169 TI_HANDLE hTimer; 170 TI_HANDLE hCurrBss; 171 172 rsn_setPaeConfig_t setPaeConfig; 173 rsn_getNetworkMode_t getNetworkMode; 174 rsn_setKey_t setKey; 175 rsn_removeKey_t removeKey; 176 rsn_setDefaultKeyId_t setDefaultKeyId; 177 rsn_reportStatus_t reportStatus; 178 rsn_setPortStatus_t setPortStatus; 179 rsn_getPortStatus_t getPortStatus; 180 181 TI_UINT32 rsnStartedTs; 182 TI_UINT32 rsnCompletedTs; 183 TI_BOOL bRsnExternalMode; 184 }; 185 186 /* Structures */ 187 188 /* External data definitions */ 189 190 /* External functions definitions */ 191 192 /* Function prototypes */ 193 194 TI_STATUS rsn_reportStatus(rsn_t *pRsn, TI_STATUS status); 195 196 TI_STATUS rsn_setPaeConfig(rsn_t *pRsn, TRsnPaeConfig *pPaeConfig); 197 198 TI_STATUS rsn_getNetworkMode(rsn_t *pRsn, ERsnNetworkMode *pNetMode); 199 200 TI_STATUS rsn_setKey(rsn_t *pMainSec, TSecurityKeys *pKey); 201 202 TI_STATUS rsn_removeKey(rsn_t *pMainSec, TSecurityKeys *pKey); 203 204 TI_STATUS rsn_setDefaultKeyId(rsn_t *pMainSec, TI_UINT8 keyId); 205 206 TI_STATUS rsn_setDefaultKeys(rsn_t *pHandle); 207 208 TI_BOOL rsn_getPortStatus(rsn_t *pRsn); 209 210 TI_STATUS rsn_setPortStatus(TI_HANDLE hRsn, TI_BOOL state); 211 212 TI_STATUS rsn_getGenInfoElement(rsn_t *pRsn, TI_UINT8 *out_buff, TI_UINT32 *out_buf_length); 213 214 void rsn_clearGenInfoElement(rsn_t *pRsn); 215 216 #endif 217 218