X-Git-Url: https://pd.if.org/git/?p=zpackage;a=blobdiff_plain;f=lib%2Fzpm_hash.c;h=f4c7b67e7f1b0fb0658ec7eeec310abd4552fbcb;hp=a14f7d62597136132486a613a04e847a83aeedbd;hb=2ac486ab18adbbb84563eafc0d67fa8da6ca7822;hpb=4fb490d9107b747c86964d0d3925470b06d97c8c diff --git a/lib/zpm_hash.c b/lib/zpm_hash.c index a14f7d6..f4c7b67 100644 --- a/lib/zpm_hash.c +++ b/lib/zpm_hash.c @@ -13,16 +13,27 @@ #include "zpm.h" #include "elf.h" -#include "sha256.h" +#include "lib/blake2/ref/blake2.h" + +int zpm_hash_mem(void *mem, size_t size, char *hash) { + struct blake2b_state__ blake; + int j; + unsigned char tmp[32]; + + blake2b_init(&blake, sizeof tmp); + blake2b_update(&blake, mem, size); + blake2b_final(&blake, tmp, sizeof tmp); + for (j=0;j<32;j++) { + sprintf(hash+j*2, "%02x", (unsigned)tmp[j]); + } + return 1; +} /* flags 0, close mmap, flags 1, return mmap fd */ int zpm_hash(char *path, char *hash, uint32_t flags) { int fd; void *content; struct stat sbuf; - struct sha256_state md; - int j; - unsigned char tmp[32]; /* mmap the file */ fd = open(path, O_RDONLY); @@ -48,13 +59,7 @@ int zpm_hash(char *path, char *hash, uint32_t flags) { return 0; } - /* get hash */ - sha256_init(&md); - sha256_process(&md, content, sbuf.st_size); - sha256_done(&md, tmp); - for (j=0;j<32;j++) { - sprintf(hash+j*2, "%02x", (unsigned)tmp[j]); - } + zpm_hash_mem(content, sbuf.st_size, hash); hash[64] = 0; munmap(content, sbuf.st_size); return flags ? fd : 1;