comparison libtomcrypt/src/headers/tomcrypt_hash.h @ 382:0cbe8f6dbf9e

propagate from branch 'au.asn.ucc.matt.ltc.dropbear' (head 2af22fb4e878750b88f80f90d439b316d229796f) to branch 'au.asn.ucc.matt.dropbear' (head 02c413252c90e9de8e03d91e9939dde3029f5c0a)
author Matt Johnston <matt@ucc.asn.au>
date Thu, 11 Jan 2007 02:41:05 +0000
parents 1b9e69c058d2
children f849a5ca2efc
comparison
equal deleted inserted replaced
379:b66a00272a90 382:0cbe8f6dbf9e
68 unsigned char buf[64]; 68 unsigned char buf[64];
69 ulong32 curlen, state[5]; 69 ulong32 curlen, state[5];
70 }; 70 };
71 #endif 71 #endif
72 72
73 #ifdef RIPEMD256
74 struct rmd256_state {
75 ulong64 length;
76 unsigned char buf[64];
77 ulong32 curlen, state[8];
78 };
79 #endif
80
81 #ifdef RIPEMD320
82 struct rmd320_state {
83 ulong64 length;
84 unsigned char buf[64];
85 ulong32 curlen, state[10];
86 };
87 #endif
88
73 #ifdef WHIRLPOOL 89 #ifdef WHIRLPOOL
74 struct whirlpool_state { 90 struct whirlpool_state {
75 ulong64 length, state[8]; 91 ulong64 length, state[8];
76 unsigned char buf[64]; 92 unsigned char buf[64];
77 ulong32 curlen; 93 ulong32 curlen;
85 ulong32 curlen; 101 ulong32 curlen;
86 }; 102 };
87 #endif 103 #endif
88 104
89 typedef union Hash_state { 105 typedef union Hash_state {
106 char dummy[1];
90 #ifdef CHC_HASH 107 #ifdef CHC_HASH
91 struct chc_state chc; 108 struct chc_state chc;
92 #endif 109 #endif
93 #ifdef WHIRLPOOL 110 #ifdef WHIRLPOOL
94 struct whirlpool_state whirlpool; 111 struct whirlpool_state whirlpool;
118 struct rmd128_state rmd128; 135 struct rmd128_state rmd128;
119 #endif 136 #endif
120 #ifdef RIPEMD160 137 #ifdef RIPEMD160
121 struct rmd160_state rmd160; 138 struct rmd160_state rmd160;
122 #endif 139 #endif
140 #ifdef RIPEMD256
141 struct rmd256_state rmd256;
142 #endif
143 #ifdef RIPEMD320
144 struct rmd320_state rmd320;
145 #endif
123 void *data; 146 void *data;
124 } hash_state; 147 } hash_state;
125 148
149 /** hash descriptor */
126 extern struct ltc_hash_descriptor { 150 extern struct ltc_hash_descriptor {
127 /** name of hash */ 151 /** name of hash */
128 char *name; 152 char *name;
129 /** internal ID */ 153 /** internal ID */
130 unsigned char ID; 154 unsigned char ID;
157 int (*done)(hash_state *hash, unsigned char *out); 181 int (*done)(hash_state *hash, unsigned char *out);
158 /** Self-test 182 /** Self-test
159 @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled 183 @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled
160 */ 184 */
161 int (*test)(void); 185 int (*test)(void);
186
187 /* accelerated hmac callback: if you need to-do multiple packets just use the generic hmac_memory and provide a hash callback */
188 int (*hmac_block)(const unsigned char *key, unsigned long keylen,
189 const unsigned char *in, unsigned long inlen,
190 unsigned char *out, unsigned long *outlen);
191
162 } hash_descriptor[]; 192 } hash_descriptor[];
163 193
164 #ifdef CHC_HASH 194 #ifdef CHC_HASH
165 int chc_register(int cipher); 195 int chc_register(int cipher);
166 int chc_init(hash_state * md); 196 int chc_init(hash_state * md);
270 int rmd160_done(hash_state * md, unsigned char *hash); 300 int rmd160_done(hash_state * md, unsigned char *hash);
271 int rmd160_test(void); 301 int rmd160_test(void);
272 extern const struct ltc_hash_descriptor rmd160_desc; 302 extern const struct ltc_hash_descriptor rmd160_desc;
273 #endif 303 #endif
274 304
305 #ifdef RIPEMD256
306 int rmd256_init(hash_state * md);
307 int rmd256_process(hash_state * md, const unsigned char *in, unsigned long inlen);
308 int rmd256_done(hash_state * md, unsigned char *hash);
309 int rmd256_test(void);
310 extern const struct ltc_hash_descriptor rmd256_desc;
311 #endif
312
313 #ifdef RIPEMD320
314 int rmd320_init(hash_state * md);
315 int rmd320_process(hash_state * md, const unsigned char *in, unsigned long inlen);
316 int rmd320_done(hash_state * md, unsigned char *hash);
317 int rmd320_test(void);
318 extern const struct ltc_hash_descriptor rmd320_desc;
319 #endif
320
321
275 int find_hash(const char *name); 322 int find_hash(const char *name);
276 int find_hash_id(unsigned char ID); 323 int find_hash_id(unsigned char ID);
324 int find_hash_oid(const unsigned long *ID, unsigned long IDlen);
277 int find_hash_any(const char *name, int digestlen); 325 int find_hash_any(const char *name, int digestlen);
278 int register_hash(const struct ltc_hash_descriptor *hash); 326 int register_hash(const struct ltc_hash_descriptor *hash);
279 int unregister_hash(const struct ltc_hash_descriptor *hash); 327 int unregister_hash(const struct ltc_hash_descriptor *hash);
280 int hash_is_valid(int idx); 328 int hash_is_valid(int idx);
281 329
282 LTC_MUTEX_PROTO(ltc_hash_mutex); 330 LTC_MUTEX_PROTO(ltc_hash_mutex)
283 331
284 int hash_memory(int hash, 332 int hash_memory(int hash,
285 const unsigned char *in, unsigned long inlen, 333 const unsigned char *in, unsigned long inlen,
286 unsigned char *out, unsigned long *outlen); 334 unsigned char *out, unsigned long *outlen);
287 int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen, 335 int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen,
325 } \ 373 } \
326 return CRYPT_OK; \ 374 return CRYPT_OK; \
327 } 375 }
328 376
329 /* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_hash.h,v $ */ 377 /* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_hash.h,v $ */
330 /* $Revision: 1.12 $ */ 378 /* $Revision: 1.19 $ */
331 /* $Date: 2005/06/19 18:00:28 $ */ 379 /* $Date: 2006/11/05 01:36:43 $ */