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*/
25int 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