Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux-2.6] / drivers / staging / rt3070 / rtmp_ckipmic.h
1 /*
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
40 typedef 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
49 VOID    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
55 VOID    RTMPCkipMicInit(
56         IN      PMIC_CONTEXT            pContext,
57         IN      PUCHAR                          CK);
58
59 VOID RTMPMicUpdate(
60     IN  PMIC_CONTEXT        pContext,
61     IN  PUCHAR              pOctets,
62     IN  INT                 len);
63
64 ULONG RTMPMicGetCoefficient(
65     IN  PMIC_CONTEXT         pContext);
66
67 VOID xor_128(
68     IN  PUCHAR              a,
69     IN  PUCHAR              b,
70     OUT PUCHAR              out);
71
72 UCHAR RTMPCkipSbox(
73     IN  UCHAR               a);
74
75 VOID xor_32(
76     IN  PUCHAR              a,
77     IN  PUCHAR              b,
78     OUT PUCHAR              out);
79
80 VOID next_key(
81     IN  PUCHAR              key,
82     IN  INT                 round);
83
84 VOID byte_sub(
85     IN  PUCHAR              in,
86     OUT PUCHAR              out);
87
88 VOID shift_row(
89     IN  PUCHAR              in,
90     OUT PUCHAR              out);
91
92 VOID mix_column(
93     IN  PUCHAR              in,
94     OUT PUCHAR              out);
95
96 VOID RTMPAesEncrypt(
97     IN  PUCHAR              key,
98     IN  PUCHAR              data,
99     IN  PUCHAR              ciphertext);
100
101 VOID RTMPMicFinal(
102     IN  PMIC_CONTEXT        pContext,
103     OUT UCHAR               digest[4]);
104
105 VOID 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__