blob: a3d949a39d3908a3234f97b385ddfff67166aeb6 [file] [log] [blame]
Greg Kroah-Hartmanc55519f2008-12-17 17:04:23 -08001/*
2 *************************************************************************
3 * Ralink Tech Inc.
4 * 5F., No.36, Taiyuan St., Jhubei City,
5 * Hsinchu County 302,
6 * Taiwan, R.O.C.
7 *
8 * (c) Copyright 2002-2007, Ralink Technology, Inc.
9 *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 * This program is distributed in the hope that it will be useful, *
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
18 * GNU General Public License for more details. *
19 * *
20 * You should have received a copy of the GNU General Public License *
21 * along with this program; if not, write to the *
22 * Free Software Foundation, Inc., *
23 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
24 * *
25 *************************************************************************
26
27 Module Name:
28 rtmp_ckipmic.h
29
30 Abstract:
31
32 Revision History:
33 Who When What
34 -------- ---------- ----------------------------------------------
35 Name Date Modification logs
36*/
37#ifndef __RTMP_CKIPMIC_H__
38#define __RTMP_CKIPMIC_H__
39
40typedef struct _MIC_CONTEXT {
41 /* --- MMH context */
42 UCHAR CK[16]; /* the key */
43 UCHAR coefficient[16]; /* current aes counter mode coefficients */
44 ULONGLONG accum; /* accumulated mic, reduced to u32 in final() */
45 UINT position; /* current position (byte offset) in message */
46 UCHAR part[4]; /* for conversion of message to u32 for mmh */
47} MIC_CONTEXT, *PMIC_CONTEXT;
48
49VOID CKIP_key_permute(
50 OUT UCHAR *PK, /* output permuted key */
51 IN UCHAR *CK, /* input CKIP key */
52 IN UCHAR toDsFromDs, /* input toDs/FromDs bits */
53 IN UCHAR *piv); /* input pointer to IV */
54
55VOID RTMPCkipMicInit(
56 IN PMIC_CONTEXT pContext,
57 IN PUCHAR CK);
58
59VOID RTMPMicUpdate(
60 IN PMIC_CONTEXT pContext,
61 IN PUCHAR pOctets,
62 IN INT len);
63
64ULONG RTMPMicGetCoefficient(
65 IN PMIC_CONTEXT pContext);
66
67VOID xor_128(
68 IN PUCHAR a,
69 IN PUCHAR b,
70 OUT PUCHAR out);
71
72UCHAR RTMPCkipSbox(
73 IN UCHAR a);
74
75VOID xor_32(
76 IN PUCHAR a,
77 IN PUCHAR b,
78 OUT PUCHAR out);
79
80VOID next_key(
81 IN PUCHAR key,
82 IN INT round);
83
84VOID byte_sub(
85 IN PUCHAR in,
86 OUT PUCHAR out);
87
88VOID shift_row(
89 IN PUCHAR in,
90 OUT PUCHAR out);
91
92VOID mix_column(
93 IN PUCHAR in,
94 OUT PUCHAR out);
95
96VOID RTMPAesEncrypt(
97 IN PUCHAR key,
98 IN PUCHAR data,
99 IN PUCHAR ciphertext);
100
101VOID RTMPMicFinal(
102 IN PMIC_CONTEXT pContext,
103 OUT UCHAR digest[4]);
104
105VOID RTMPCkipInsertCMIC(
106 IN PRTMP_ADAPTER pAd,
107 OUT PUCHAR pMIC,
108 IN PUCHAR p80211hdr,
109 IN PNDIS_PACKET pPacket,
110 IN PCIPHER_KEY pKey,
111 IN PUCHAR mic_snap);
112
113#endif //__RTMP_CKIPMIC_H__