]> bbs.cooldavid.org Git - net-next-2.6.git/blob - drivers/staging/rt3090/crypt_sha2.h
85c0403d725a3ff803e8113f13259585199a85cd
[net-next-2.6.git] / drivers / staging / rt3090 / crypt_sha2.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     crypt_sha2.h
29
30     Abstract:
31     Miniport generic portion header file
32
33     Revision History:
34     Who         When          What
35     --------    ----------    ----------------------------------------------
36     Eddy        2008/11/24      Create SHA1
37     Eddy        2008/07/23      Create SHA256
38 */
39
40 #ifndef __CRYPT_SHA2_H__
41 #define __CRYPT_SHA2_H__
42
43 #ifdef CRYPT_TESTPLAN
44 #include "crypt_testplan.h"
45 #else
46 #include "rt_config.h"
47 #endif /* CRYPT_TESTPLAN */
48
49 /* Algorithm options */
50 #define SHA1_SUPPORT
51 #define SHA256_SUPPORT
52
53 #ifdef SHA1_SUPPORT
54 #define SHA1_BLOCK_SIZE    64 /* 512 bits = 64 bytes */
55 #define SHA1_DIGEST_SIZE   20 /* 160 bits = 20 bytes */
56 typedef struct _SHA1_CTX_STRUC {
57     UINT32 HashValue[5];  /* 5 = (SHA1_DIGEST_SIZE / 32) */
58     UINT64 MessageLen;    /* total size */
59     UINT8  Block[SHA1_BLOCK_SIZE];
60     UINT   BlockLen;
61 } SHA1_CTX_STRUC, *PSHA1_CTX_STRUC;
62
63 VOID SHA1_Init (
64     IN  SHA1_CTX_STRUC *pSHA_CTX);
65 VOID SHA1_Hash (
66     IN  SHA1_CTX_STRUC *pSHA_CTX);
67 VOID SHA1_Append (
68     IN  SHA1_CTX_STRUC *pSHA_CTX,
69     IN  const UINT8 Message[],
70     IN  UINT MessageLen);
71 VOID SHA1_End (
72     IN  SHA1_CTX_STRUC *pSHA_CTX,
73     OUT UINT8 DigestMessage[]);
74 VOID RT_SHA1 (
75     IN  const UINT8 Message[],
76     IN  UINT MessageLen,
77     OUT UINT8 DigestMessage[]);
78 #endif /* SHA1_SUPPORT */
79
80 #ifdef SHA256_SUPPORT
81 #define SHA256_BLOCK_SIZE   64 /* 512 bits = 64 bytes */
82 #define SHA256_DIGEST_SIZE  32 /* 256 bits = 32 bytes */
83 typedef struct _SHA256_CTX_STRUC {
84     UINT32 HashValue[8];  /* 8 = (SHA256_DIGEST_SIZE / 32) */
85     UINT64 MessageLen;    /* total size */
86     UINT8  Block[SHA256_BLOCK_SIZE];
87     UINT   BlockLen;
88 } SHA256_CTX_STRUC, *PSHA256_CTX_STRUC;
89
90 VOID SHA256_Init (
91     IN  SHA256_CTX_STRUC *pSHA_CTX);
92 VOID SHA256_Hash (
93     IN  SHA256_CTX_STRUC *pSHA_CTX);
94 VOID SHA256_Append (
95     IN  SHA256_CTX_STRUC *pSHA_CTX,
96     IN  const UINT8 Message[],
97     IN  UINT MessageLen);
98 VOID SHA256_End (
99     IN  SHA256_CTX_STRUC *pSHA_CTX,
100     OUT UINT8 DigestMessage[]);
101 VOID RT_SHA256 (
102     IN  const UINT8 Message[],
103     IN  UINT MessageLen,
104     OUT UINT8 DigestMessage[]);
105 #endif /* SHA256_SUPPORT */
106
107 #endif /* __CRYPT_SHA2_H__ */