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 hash_file.c 15 Hash a file, Tom St Denis 16 */ 17 18 /** 19 @param hash The index of the hash desired 20 @param fname The name of the file you wish to hash 21 @param out [out] The destination of the digest 22 @param outlen [in/out] The max size and resulting size of the message digest 23 @result CRYPT_OK if successful 24 */ 25 int hash_file(int hash, const char *fname, unsigned char *out, unsigned long *outlen) 26 { 27 #ifdef LTC_NO_FILE 28 return CRYPT_NOP; 29 #else 30 FILE *in; 31 int err; 32 LTC_ARGCHK(fname != NULL); 33 LTC_ARGCHK(out != NULL); 34 LTC_ARGCHK(outlen != NULL); 35 36 if ((err = hash_is_valid(hash)) != CRYPT_OK) { 37 return err; 38 } 39 40 in = fopen(fname, "rb"); 41 if (in == NULL) { 42 return CRYPT_FILE_NOTFOUND; 43 } 44 45 err = hash_filehandle(hash, in, out, outlen); 46 if (fclose(in) != 0) { 47 return CRYPT_ERROR; 48 } 49 50 return err; 51 #endif 52 } 53 54 55 /* $Source: /cvs/libtom/libtomcrypt/src/hashes/helper/hash_file.c,v $ */ 56 /* $Revision: 1.4 $ */ 57 /* $Date: 2006/03/31 14:15:35 $ */ 58