#include "zpm.h"
#include "elf.h"
-#include "sha256.h"
+#include "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);
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;