1 /* LibTomCrypt, modular cryptographic library -- Tom St Denis 2 * 3 * LibTomCrypt is a library that provides various cryptographic 4 * algorithms in a highly modular and flexible manner. 5 * 6 * The library is free for all purposes without any express 7 * guarantee it works. 8 * 9 * Tom St Denis, tomstdenis (at) gmail.com, http://libtomcrypt.com 10 */ 11 #include "tomcrypt.h" 12 13 /** 14 @file crypt_find_hash_any.c 15 Find a hash, Tom St Denis 16 */ 17 18 /** 19 Find a hash flexibly. First by name then if not present by digest size 20 @param name The name of the hash desired 21 @param digestlen The minimum length of the digest size (octets) 22 @return >= 0 if found, -1 if not present 23 */int find_hash_any(const char *name, int digestlen) 24 { 25 int x, y, z; 26 LTC_ARGCHK(name != NULL); 27 28 x = find_hash(name); 29 if (x != -1) return x; 30 31 LTC_MUTEX_LOCK(<c_hash_mutex); 32 y = MAXBLOCKSIZE+1; 33 z = -1; 34 for (x = 0; x < TAB_SIZE; x++) { 35 if (hash_descriptor[x].name == NULL) { 36 continue; 37 } 38 if ((int)hash_descriptor[x].hashsize >= digestlen && (int)hash_descriptor[x].hashsize < y) { 39 z = x; 40 y = hash_descriptor[x].hashsize; 41 } 42 } 43 LTC_MUTEX_UNLOCK(<c_hash_mutex); 44 return z; 45 } 46 47 /* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c,v $ */ 48 /* $Revision: 1.5 $ */ 49 /* $Date: 2006/03/31 14:15:35 $ */ 50