diff -r 9e85e1ec1155 -r 268157722a0e libidav/utils.c --- a/libidav/utils.c Thu Mar 28 18:09:31 2019 +0100 +++ b/libidav/utils.c Thu Mar 28 18:23:22 2019 +0100 @@ -874,3 +874,25 @@ path[len-1] = '\0'; } } + +char* util_file_hash(const char *path) { + FILE *in = fopen(path, "r"); + if(!in) { + return NULL; + } + + DAV_SHA_CTX *sha = dav_hash_init(); + char *buf = malloc(16384); + + size_t r; + while((r = fread(buf, 1, 16384, in)) > 0) { + dav_hash_update(sha, buf, r); + } + + char hash[DAV_SHA256_DIGEST_LENGTH]; + dav_hash_final(sha, hash); + free(buf); + fclose(in); + + return util_hexstr(hash, DAV_SHA256_DIGEST_LENGTH); +} \ No newline at end of file