|
1 /* |
|
2 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
|
3 * All rights reserved. |
|
4 * |
|
5 * Copyright (c) 2005 Andrey Korotaev <unC0Rr@gmail.com> |
|
6 * |
|
7 * Redistribution and use in source and binary forms, with or without |
|
8 * modification, are permitted provided that the following conditions |
|
9 * are met: |
|
10 * 1. Redistributions of source code must retain the above copyright |
|
11 * notice, this list of conditions and the following disclaimer. |
|
12 * 2. Redistributions in binary form must reproduce the above copyright |
|
13 * notice, this list of conditions and the following disclaimer in the |
|
14 * documentation and/or other materials provided with the distribution. |
|
15 * 3. Neither the name of the project nor the names of its contributors |
|
16 * may be used to endorse or promote products derived from this software |
|
17 * without specific prior written permission. |
|
18 * |
|
19 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
|
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
|
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
|
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|
29 * SUCH DAMAGE. |
|
30 */ |
|
31 /* |
|
32 * FIPS pub 180-1: Secure Hash Algorithm (SHA-1) |
|
33 * based on: http://csrc.nist.gov/fips/fip180-1.txt |
|
34 * implemented by Jun-ichiro itojun Itoh <itojun@itojun.org> |
|
35 */ |
|
36 |
|
37 #include <qglobal.h> |
|
38 |
|
39 #ifdef __cplusplus |
|
40 extern "C" { |
|
41 #endif |
|
42 typedef unsigned char caddr_t[20]; |
|
43 |
|
44 struct sha1_ctxt { |
|
45 union { |
|
46 quint8 b8[20]; |
|
47 quint32 b32[5]; |
|
48 } h; |
|
49 union { |
|
50 quint8 b8[8]; |
|
51 quint64 b64[1]; |
|
52 } c; |
|
53 union { |
|
54 quint8 b8[64]; |
|
55 quint32 b32[16]; |
|
56 } m; |
|
57 quint8 count; |
|
58 }; |
|
59 |
|
60 void sha1_init(struct sha1_ctxt *ctxt); |
|
61 void sha1_pad(struct sha1_ctxt *ctxt); |
|
62 extern void sha1_loop(struct sha1_ctxt *ctxt, const quint8 *input, size_t len); |
|
63 extern void sha1_result(struct sha1_ctxt *ctxt, caddr_t digest0); |
|
64 #ifdef __cplusplus |
|
65 } |
|
66 #endif |
|
67 |
|
68 #define SHA1Init(x) sha1_init((x)) |
|
69 #define SHA1Update(x, y, z) sha1_loop((x), (y), (z)) |
|
70 #define SHA1Final(x, y) sha1_result((y), (x)) |
|
71 |