blob: e379bc2a370c8be3bf240a0cd9a09635f0710cbf [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Edhar, Mahesh Kumar0d82c212015-02-03 17:47:16 +05302 * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved.
Kiet Lam842dad02014-02-18 18:44:02 -08003 *
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.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam842dad02014-02-18 18:44:02 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080028/*
Jeff Johnson295189b2012-06-20 16:38:30 -070029 *
Jeff Johnson295189b2012-06-20 16:38:30 -070030 * This file limSecurityUtils.h contains the utility definitions
31 * related to WEP encryption/decryption etc.
32 * Author: Chandra Modumudi
33 * Date: 02/13/02
34 * History:-
35 * Date Modified by Modification Information
36 * --------------------------------------------------------------------
37 */
38#ifndef __LIM_SECURITY_UTILS_H
39#define __LIM_SECURITY_UTILS_H
40#include "sirMacProtDef.h" //for tSirMacAuthFrameBody
41
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -080042#define LIM_ENCR_AUTH_BODY_LEN (sizeof(tSirMacAuthFrameBody) + \
Jeff Johnson295189b2012-06-20 16:38:30 -070043 SIR_MAC_WEP_IV_LENGTH + \
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -080044 SIR_MAC_WEP_ICV_LENGTH)
Jeff Johnson295189b2012-06-20 16:38:30 -070045struct tLimPreAuthNode;
46
Jeff Johnson295189b2012-06-20 16:38:30 -070047tANI_U8 limIsAuthAlgoSupported(tpAniSirGlobal, tAniAuthType, tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -070048
49// MAC based authentication related functions
50void limInitPreAuthList(tpAniSirGlobal);
51void limDeletePreAuthList(tpAniSirGlobal);
52struct tLimPreAuthNode *limSearchPreAuthList(tpAniSirGlobal, tSirMacAddr);
53void limAddPreAuthNode(tpAniSirGlobal, struct tLimPreAuthNode *);
54void limDeletePreAuthNode(tpAniSirGlobal, tSirMacAddr);
55void limReleasePreAuthNode(tpAniSirGlobal pMac, tpLimPreAuthNode pAuthNode);
56void limRestoreFromAuthState(tpAniSirGlobal,
57 tSirResultCodes, tANI_U16,tpPESession);
Edhar, Mahesh Kumar0d82c212015-02-03 17:47:16 +053058tANI_U8 limDeleteOpenAuthPreAuthNode(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -070059
60// Encryption/Decryption related functions
61tCfgWepKeyEntry *limLookUpKeyMappings(tSirMacAddr);
62void limComputeCrc32(tANI_U8 *, tANI_U8 *, tANI_U8);
63void limRC4(tANI_U8 *, tANI_U8 *, tANI_U8 *, tANI_U32, tANI_U16);
64void limEncryptAuthFrame(tpAniSirGlobal, tANI_U8, tANI_U8 *, tANI_U8 *, tANI_U8 *, tANI_U32);
65tANI_U8 limDecryptAuthFrame(tpAniSirGlobal, tANI_U8 *, tANI_U8 *, tANI_U8 *, tANI_U32, tANI_U16);
66
67void limSendSetBssKeyReq( tpAniSirGlobal, tLimMlmSetKeysReq *,tpPESession );
68void limSendSetStaKeyReq( tpAniSirGlobal, tLimMlmSetKeysReq *, tANI_U16, tANI_U8,tpPESession);
69void limPostSmeSetKeysCnf( tpAniSirGlobal, tLimMlmSetKeysReq *, tLimMlmSetKeysCnf * );
70
71void limSendRemoveBssKeyReq(tpAniSirGlobal pMac, tLimMlmRemoveKeyReq * pMlmRemoveKeyReq,tpPESession);
72void limSendRemoveStaKeyReq(tpAniSirGlobal pMac, tLimMlmRemoveKeyReq * pMlmRemoveKeyReq, tANI_U16 staIdx,tpPESession);
Jeff Johnsone7245742012-09-05 17:12:55 -070073void limPostSmeRemoveKeyCnf(tpAniSirGlobal pMac, tpPESession psessionEntry, tLimMlmRemoveKeyReq * pMlmRemoveKeyReq, tLimMlmRemoveKeyCnf * mlmRemoveKeyCnf);
Jeff Johnson295189b2012-06-20 16:38:30 -070074
75#define PTAPS 0xedb88320
76
77static inline tANI_U32
78limCrcUpdate(tANI_U32 crc, tANI_U8 x)
79{
80
81 // Update CRC computation for 8 bits contained in x
82 //
83 tANI_U32 z;
84 tANI_U32 fb;
85 int i;
86
87 z = crc^x;
88 for (i=0; i<8; i++) {
89 fb = z & 1;
90 z >>= 1;
91 if (fb) z ^= PTAPS;
92 }
93 return z;
94}
95
96#endif /* __LIM_SECURITY_UTILS_H */