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_cipher_any.c 15 Find a cipher in the descriptor tables, Tom St Denis 16 */ 17 18 /** 19 Find a cipher flexibly. First by name then if not present by block and key size 20 @param name The name of the cipher desired 21 @param blocklen The minimum length of the block cipher desired (octets) 22 @param keylen The minimum length of the key size desired (octets) 23 @return >= 0 if found, -1 if not present 24 */ 25 int find_cipher_any(const char *name, int blocklen, int keylen) 26 { 27 int x; 28 29 LTC_ARGCHK(name != NULL); 30 31 x = find_cipher(name); 32 if (x != -1) return x; 33 34 LTC_MUTEX_LOCK(<c_cipher_mutex); 35 for (x = 0; x < TAB_SIZE; x++) { 36 if (cipher_descriptor[x].name == NULL) { 37 continue; 38 } 39 if (blocklen <= (int)cipher_descriptor[x].block_length && keylen <= (int)cipher_descriptor[x].max_key_length) { 40 LTC_MUTEX_UNLOCK(<c_cipher_mutex); 41 return x; 42 } 43 } 44 LTC_MUTEX_UNLOCK(<c_cipher_mutex); 45 return -1; 46 } 47 48 /* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c,v $ */ 49 /* $Revision: 1.5 $ */ 50 /* $Date: 2006/03/31 14:15:35 $ */ 51