Mercurial > dropbear
comparison src/headers/tomcrypt_hash.h @ 210:4768b55c5240 libtomcrypt
propagate from branch 'au.asn.ucc.matt.ltc-orig' (head 33c416b902f1a44913d825bae7ad9a160f703ed3)
to branch 'au.asn.ucc.matt.dropbear.ltc' (head 4d6aec6e6121e13f68c11c149b6579c41cb63e74)
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 06 Jul 2005 12:10:23 +0000 |
parents | 39d5d58461d6 |
children |
comparison
equal
deleted
inserted
replaced
199:8be64e2c86f4 | 210:4768b55c5240 |
---|---|
130 unsigned char ID; | 130 unsigned char ID; |
131 /** Size of digest in octets */ | 131 /** Size of digest in octets */ |
132 unsigned long hashsize; | 132 unsigned long hashsize; |
133 /** Input block size in octets */ | 133 /** Input block size in octets */ |
134 unsigned long blocksize; | 134 unsigned long blocksize; |
135 /** ASN.1 DER identifier */ | 135 /** ASN.1 OID */ |
136 unsigned char DER[64]; | 136 unsigned long OID[16]; |
137 /** Length of DER encoding */ | 137 /** Length of DER encoding */ |
138 unsigned long DERlen; | 138 unsigned long OIDlen; |
139 | |
139 /** Init a hash state | 140 /** Init a hash state |
140 @param hash The hash to initialize | 141 @param hash The hash to initialize |
141 @return CRYPT_OK if successful | 142 @return CRYPT_OK if successful |
142 */ | 143 */ |
143 int (*init)(hash_state *hash); | 144 int (*init)(hash_state *hash); |
276 int find_hash_any(const char *name, int digestlen); | 277 int find_hash_any(const char *name, int digestlen); |
277 int register_hash(const struct ltc_hash_descriptor *hash); | 278 int register_hash(const struct ltc_hash_descriptor *hash); |
278 int unregister_hash(const struct ltc_hash_descriptor *hash); | 279 int unregister_hash(const struct ltc_hash_descriptor *hash); |
279 int hash_is_valid(int idx); | 280 int hash_is_valid(int idx); |
280 | 281 |
282 LTC_MUTEX_PROTO(ltc_hash_mutex); | |
283 | |
281 int hash_memory(int hash, | 284 int hash_memory(int hash, |
282 const unsigned char *in, unsigned long inlen, | 285 const unsigned char *in, unsigned long inlen, |
283 unsigned char *out, unsigned long *outlen); | 286 unsigned char *out, unsigned long *outlen); |
284 int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen, | 287 int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen, |
285 const unsigned char *in, unsigned long inlen, ...); | 288 const unsigned char *in, unsigned long inlen, ...); |
290 #define HASH_PROCESS(func_name, compress_name, state_var, block_size) \ | 293 #define HASH_PROCESS(func_name, compress_name, state_var, block_size) \ |
291 int func_name (hash_state * md, const unsigned char *in, unsigned long inlen) \ | 294 int func_name (hash_state * md, const unsigned char *in, unsigned long inlen) \ |
292 { \ | 295 { \ |
293 unsigned long n; \ | 296 unsigned long n; \ |
294 int err; \ | 297 int err; \ |
295 LTC_ARGCHK(md != NULL); \ | 298 LTC_ARGCHK(md != NULL); \ |
296 LTC_ARGCHK(in != NULL); \ | 299 LTC_ARGCHK(in != NULL); \ |
297 if (md-> state_var .curlen > sizeof(md-> state_var .buf)) { \ | 300 if (md-> state_var .curlen > sizeof(md-> state_var .buf)) { \ |
298 return CRYPT_INVALID_ARG; \ | 301 return CRYPT_INVALID_ARG; \ |
299 } \ | 302 } \ |
300 while (inlen > 0) { \ | 303 while (inlen > 0) { \ |
301 if (md-> state_var .curlen == 0 && inlen >= block_size) { \ | 304 if (md-> state_var .curlen == 0 && inlen >= block_size) { \ |
302 if ((err = compress_name (md, (unsigned char *)in)) != CRYPT_OK) { \ | 305 if ((err = compress_name (md, (unsigned char *)in)) != CRYPT_OK) { \ |
303 return err; \ | 306 return err; \ |
304 } \ | 307 } \ |
305 md-> state_var .length += block_size * 8; \ | 308 md-> state_var .length += block_size * 8; \ |
306 in += block_size; \ | 309 in += block_size; \ |
307 inlen -= block_size; \ | 310 inlen -= block_size; \ |
308 } else { \ | 311 } else { \ |
309 n = MIN(inlen, (block_size - md-> state_var .curlen)); \ | 312 n = MIN(inlen, (block_size - md-> state_var .curlen)); \ |
310 memcpy(md-> state_var .buf + md-> state_var.curlen, in, (size_t)n); \ | 313 memcpy(md-> state_var .buf + md-> state_var.curlen, in, (size_t)n); \ |
311 md-> state_var .curlen += n; \ | 314 md-> state_var .curlen += n; \ |
312 in += n; \ | 315 in += n; \ |
313 inlen -= n; \ | 316 inlen -= n; \ |
314 if (md-> state_var .curlen == block_size) { \ | 317 if (md-> state_var .curlen == block_size) { \ |
315 if ((err = compress_name (md, md-> state_var .buf)) != CRYPT_OK) {\ | 318 if ((err = compress_name (md, md-> state_var .buf)) != CRYPT_OK) { \ |
316 return err; \ | 319 return err; \ |
317 } \ | 320 } \ |
318 md-> state_var .length += 8*block_size; \ | 321 md-> state_var .length += 8*block_size; \ |
319 md-> state_var .curlen = 0; \ | 322 md-> state_var .curlen = 0; \ |
320 } \ | 323 } \ |
321 } \ | 324 } \ |
322 } \ | 325 } \ |
323 return CRYPT_OK; \ | 326 return CRYPT_OK; \ |
324 } | 327 } |
328 | |
329 /* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_hash.h,v $ */ | |
330 /* $Revision: 1.12 $ */ | |
331 /* $Date: 2005/06/19 18:00:28 $ */ |