• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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@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 */
hash_file(int hash,const char * fname,unsigned char * out,unsigned long * outlen)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