Commit | Line | Data |
---|---|---|
d9898ee8 | 1 | #ifndef sha1_h |
2 | #define sha1_h | |
3 | ||
4 | /* | |
8d138742 | 5 | ** Copyright 2001-2008 Double Precision, Inc. |
d9898ee8 | 6 | ** See COPYING for distribution information. |
7 | */ | |
8 | ||
d9898ee8 | 9 | |
10 | #if HAVE_CONFIG_H | |
11 | #include "sha1/config.h" | |
12 | #endif | |
13 | ||
14 | #if HAVE_SYS_TYPES_H | |
15 | #include <sys/types.h> | |
16 | #endif | |
17 | ||
18 | #define SHA1_DIGEST_SIZE 20 | |
19 | #define SHA1_BLOCK_SIZE 64 | |
20 | ||
21 | #define SHA256_DIGEST_SIZE 32 | |
22 | #define SHA256_BLOCK_SIZE 64 | |
23 | ||
8d138742 CE |
24 | #define SHA512_DIGEST_SIZE 64 |
25 | #define SHA512_BLOCK_SIZE 128 | |
26 | ||
d9898ee8 | 27 | typedef SHA1_WORD SHA256_WORD; |
28 | ||
29 | #ifdef __cplusplus | |
30 | extern "C" { | |
31 | #endif | |
32 | ||
33 | typedef unsigned char SHA1_DIGEST[20]; | |
34 | typedef unsigned char SHA256_DIGEST[32]; | |
8d138742 | 35 | typedef unsigned char SHA512_DIGEST[64]; |
d9898ee8 | 36 | |
37 | #ifdef SHA1_INTERNAL | |
38 | ||
39 | struct SHA1_CONTEXT { | |
40 | ||
41 | SHA1_WORD H[5]; | |
42 | ||
43 | unsigned char blk[SHA1_BLOCK_SIZE]; | |
44 | unsigned blk_ptr; | |
45 | } ; | |
46 | ||
47 | struct SHA256_CONTEXT { | |
48 | ||
49 | SHA256_WORD H[8]; | |
50 | ||
51 | unsigned char blk[SHA256_BLOCK_SIZE]; | |
52 | unsigned blk_ptr; | |
53 | } ; | |
54 | ||
8d138742 CE |
55 | struct SHA512_CONTEXT { |
56 | ||
57 | SHA512_WORD H[8]; | |
58 | ||
59 | unsigned char blk[SHA512_BLOCK_SIZE]; | |
60 | unsigned blk_ptr; | |
61 | } ; | |
62 | ||
d9898ee8 | 63 | void sha1_context_init(struct SHA1_CONTEXT *); |
64 | void sha1_context_hash(struct SHA1_CONTEXT *, | |
65 | const unsigned char[SHA1_BLOCK_SIZE]); | |
66 | void sha1_context_hashstream(struct SHA1_CONTEXT *, const void *, unsigned); | |
67 | void sha1_context_endstream(struct SHA1_CONTEXT *, unsigned long); | |
68 | void sha1_context_digest(struct SHA1_CONTEXT *, SHA1_DIGEST); | |
69 | void sha1_context_restore(struct SHA1_CONTEXT *, const SHA1_DIGEST); | |
70 | ||
71 | void sha256_context_init(struct SHA256_CONTEXT *); | |
72 | void sha256_context_hash(struct SHA256_CONTEXT *, | |
73 | const unsigned char[SHA256_BLOCK_SIZE]); | |
74 | void sha256_context_hashstream(struct SHA256_CONTEXT *, | |
75 | const void *, unsigned); | |
76 | void sha256_context_endstream(struct SHA256_CONTEXT *, unsigned long); | |
77 | void sha256_context_digest(struct SHA256_CONTEXT *, SHA256_DIGEST); | |
78 | void sha256_context_restore(struct SHA256_CONTEXT *, const SHA256_DIGEST); | |
79 | ||
8d138742 CE |
80 | void sha512_context_init(struct SHA512_CONTEXT *); |
81 | void sha512_context_hash(struct SHA512_CONTEXT *, | |
82 | const unsigned char[SHA512_BLOCK_SIZE]); | |
83 | void sha512_context_hashstream(struct SHA512_CONTEXT *, | |
84 | const void *, unsigned); | |
85 | void sha512_context_endstream(struct SHA512_CONTEXT *, SHA512_WORD); | |
86 | void sha512_context_digest(struct SHA512_CONTEXT *, SHA512_DIGEST); | |
87 | void sha512_context_restore(struct SHA512_CONTEXT *, const SHA512_DIGEST); | |
88 | ||
d9898ee8 | 89 | #endif |
90 | ||
91 | void sha1_digest(const void *, unsigned, SHA1_DIGEST); | |
92 | const char *sha1_hash(const char *); | |
93 | ||
8d138742 CE |
94 | typedef unsigned char SSHA_RAND[4]; |
95 | ||
96 | const char *ssha_hash(const char *, SSHA_RAND); | |
97 | ||
98 | void sha256_digest(const void *, unsigned, SHA256_DIGEST); | |
99 | ||
d9898ee8 | 100 | const char *sha256_hash(const char *); |
101 | ||
8d138742 CE |
102 | void sha512_digest(const void *, unsigned, SHA512_DIGEST); |
103 | ||
104 | const char *sha512_hash(const char *); | |
105 | ||
d9898ee8 | 106 | #ifdef __cplusplus |
107 | } ; | |
108 | #endif | |
109 | ||
110 | #endif |