libidav/utils.c

changeset 545
268157722a0e
parent 544
9e85e1ec1155
child 558
1a9e6a5c1e79
--- 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

mercurial