blob: 9cff06156fb15f9c85d90997ffef67dead05b159 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Jeff Johnson32d95a32012-09-10 13:15:23 -07002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -07003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 *
24 * Airgo Networks, Inc proprietary. All rights reserved.
25 * This file limSecurityUtils.h contains the utility definitions
26 * related to WEP encryption/decryption etc.
27 * Author: Chandra Modumudi
28 * Date: 02/13/02
29 * History:-
30 * Date Modified by Modification Information
31 * --------------------------------------------------------------------
32 */
33#ifndef __LIM_SECURITY_UTILS_H
34#define __LIM_SECURITY_UTILS_H
35#include "sirMacProtDef.h" //for tSirMacAuthFrameBody
36
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -080037#define LIM_ENCR_AUTH_BODY_LEN (sizeof(tSirMacAuthFrameBody) + \
Jeff Johnson295189b2012-06-20 16:38:30 -070038 SIR_MAC_WEP_IV_LENGTH + \
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -080039 SIR_MAC_WEP_ICV_LENGTH)
Jeff Johnson295189b2012-06-20 16:38:30 -070040struct tLimPreAuthNode;
41
42#ifdef WLAN_SOFTAP_FEATURE
43tANI_U8 limIsAuthAlgoSupported(tpAniSirGlobal, tAniAuthType, tpPESession);
44#else
45tANI_U8 limIsAuthAlgoSupported(tpAniSirGlobal, tAniAuthType);
46#endif
47
48// MAC based authentication related functions
49void limInitPreAuthList(tpAniSirGlobal);
50void limDeletePreAuthList(tpAniSirGlobal);
51struct tLimPreAuthNode *limSearchPreAuthList(tpAniSirGlobal, tSirMacAddr);
52void limAddPreAuthNode(tpAniSirGlobal, struct tLimPreAuthNode *);
53void limDeletePreAuthNode(tpAniSirGlobal, tSirMacAddr);
54void limReleasePreAuthNode(tpAniSirGlobal pMac, tpLimPreAuthNode pAuthNode);
55void limRestoreFromAuthState(tpAniSirGlobal,
56 tSirResultCodes, tANI_U16,tpPESession);
57
58// Encryption/Decryption related functions
59tCfgWepKeyEntry *limLookUpKeyMappings(tSirMacAddr);
60void limComputeCrc32(tANI_U8 *, tANI_U8 *, tANI_U8);
61void limRC4(tANI_U8 *, tANI_U8 *, tANI_U8 *, tANI_U32, tANI_U16);
62void limEncryptAuthFrame(tpAniSirGlobal, tANI_U8, tANI_U8 *, tANI_U8 *, tANI_U8 *, tANI_U32);
63tANI_U8 limDecryptAuthFrame(tpAniSirGlobal, tANI_U8 *, tANI_U8 *, tANI_U8 *, tANI_U32, tANI_U16);
64
65void limSendSetBssKeyReq( tpAniSirGlobal, tLimMlmSetKeysReq *,tpPESession );
66void limSendSetStaKeyReq( tpAniSirGlobal, tLimMlmSetKeysReq *, tANI_U16, tANI_U8,tpPESession);
67void limPostSmeSetKeysCnf( tpAniSirGlobal, tLimMlmSetKeysReq *, tLimMlmSetKeysCnf * );
68
69void limSendRemoveBssKeyReq(tpAniSirGlobal pMac, tLimMlmRemoveKeyReq * pMlmRemoveKeyReq,tpPESession);
70void limSendRemoveStaKeyReq(tpAniSirGlobal pMac, tLimMlmRemoveKeyReq * pMlmRemoveKeyReq, tANI_U16 staIdx,tpPESession);
Jeff Johnsone7245742012-09-05 17:12:55 -070071void limPostSmeRemoveKeyCnf(tpAniSirGlobal pMac, tpPESession psessionEntry, tLimMlmRemoveKeyReq * pMlmRemoveKeyReq, tLimMlmRemoveKeyCnf * mlmRemoveKeyCnf);
Jeff Johnson295189b2012-06-20 16:38:30 -070072
73#define PTAPS 0xedb88320
74
75static inline tANI_U32
76limCrcUpdate(tANI_U32 crc, tANI_U8 x)
77{
78
79 // Update CRC computation for 8 bits contained in x
80 //
81 tANI_U32 z;
82 tANI_U32 fb;
83 int i;
84
85 z = crc^x;
86 for (i=0; i<8; i++) {
87 fb = z & 1;
88 z >>= 1;
89 if (fb) z ^= PTAPS;
90 }
91 return z;
92}
93
94#endif /* __LIM_SECURITY_UTILS_H */