1 /* ---- HASH FUNCTIONS ---- */
4 ulong64 length, state[8];
6 unsigned char buf[128];
13 unsigned long state[8], curlen;
14 unsigned char buf[64];
21 unsigned long state[5], curlen;
22 unsigned char buf[64];
29 unsigned long state[4], curlen;
30 unsigned char buf[64];
37 unsigned long state[4], curlen;
38 unsigned char buf[64];
44 ulong64 state[3], length;
46 unsigned char buf[64];
52 unsigned char chksum[16], X[48], buf[16];
57 typedef union Hash_state {
59 struct sha512_state sha512;
62 struct sha256_state sha256;
65 struct sha1_state sha1;
77 struct tiger_state tiger;
81 extern struct _hash_descriptor {
84 unsigned long hashsize; /* digest output size in bytes */
85 unsigned long blocksize; /* the block size the hash uses */
86 void (*init)(hash_state *);
87 void (*process)(hash_state *, const unsigned char *, unsigned long);
88 void (*done)(hash_state *, unsigned char *);
93 extern void sha512_init(hash_state * md);
94 extern void sha512_process(hash_state * md, const unsigned char *buf, unsigned long len);
95 extern void sha512_done(hash_state * md, unsigned char *hash);
96 extern int sha512_test(void);
97 extern const struct _hash_descriptor sha512_desc;
101 extern void sha384_init(hash_state * md);
102 extern void sha384_process(hash_state * md, const unsigned char *buf, unsigned long len);
103 extern void sha384_done(hash_state * md, unsigned char *hash);
104 extern int sha384_test(void);
105 extern const struct _hash_descriptor sha384_desc;
109 extern void sha256_init(hash_state * md);
110 extern void sha256_process(hash_state * md, const unsigned char *buf, unsigned long len);
111 extern void sha256_done(hash_state * md, unsigned char *hash);
112 extern int sha256_test(void);
113 extern const struct _hash_descriptor sha256_desc;
117 extern void sha1_init(hash_state * md);
118 extern void sha1_process(hash_state * md, const unsigned char *buf, unsigned long len);
119 extern void sha1_done(hash_state * md, unsigned char *hash);
120 extern int sha1_test(void);
121 extern const struct _hash_descriptor sha1_desc;
125 extern void md5_init(hash_state * md);
126 extern void md5_process(hash_state * md, const unsigned char *buf, unsigned long len);
127 extern void md5_done(hash_state * md, unsigned char *hash);
128 extern int md5_test(void);
129 extern const struct _hash_descriptor md5_desc;
133 extern void md4_init(hash_state * md);
134 extern void md4_process(hash_state * md, const unsigned char *buf, unsigned long len);
135 extern void md4_done(hash_state * md, unsigned char *hash);
136 extern int md4_test(void);
137 extern const struct _hash_descriptor md4_desc;
141 extern void md2_init(hash_state * md);
142 extern void md2_process(hash_state * md, const unsigned char *buf, unsigned long len);
143 extern void md2_done(hash_state * md, unsigned char *hash);
144 extern int md2_test(void);
145 extern const struct _hash_descriptor md2_desc;
149 extern void tiger_init(hash_state * md);
150 extern void tiger_process(hash_state * md, const unsigned char *buf, unsigned long len);
151 extern void tiger_done(hash_state * md, unsigned char *hash);
152 extern int tiger_test(void);
153 extern const struct _hash_descriptor tiger_desc;
156 extern int find_hash(const char *name);
157 extern int find_hash_id(unsigned char ID);
158 extern int register_hash(const struct _hash_descriptor *hash);
159 extern int unregister_hash(const struct _hash_descriptor *hash);
160 extern int hash_is_valid(int idx);
162 extern int hash_memory(int hash, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *outlen);
163 extern int hash_filehandle(int hash, FILE *in, unsigned char *dst, unsigned long *outlen);
164 extern int hash_file(int hash, const char *fname, unsigned char *dst, unsigned long *outlen);
167 typedef struct Hmac_state {
170 unsigned long hashsize; /* here for your reference */
171 hash_state hashstate;
172 unsigned char key[MAXBLOCKSIZE];
175 extern int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen);
176 extern int hmac_process(hmac_state *hmac, const unsigned char *buf, unsigned long len);
177 extern int hmac_done(hmac_state *hmac, unsigned char *hash);
178 extern int hmac_test(void);
179 extern int hmac_memory(int hash, const unsigned char *key, unsigned long keylen,
180 const unsigned char *data, unsigned long len,
181 unsigned char *dst, unsigned long *dstlen);
182 extern int hmac_file(int hash, const char *fname, const unsigned char *key,
183 unsigned long keylen,
184 unsigned char *dst, unsigned long *dstlen);