From: Linus Torvalds Date: Fri, 8 Apr 2005 22:01:15 +0000 (-0700) Subject: Add "check_sha1_signature()" helper function X-Git-Tag: v0.99~948 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=2ade9340262cb87163b5c5c270268175ff3b3c15;p=git.git Add "check_sha1_signature()" helper function And fix up header declarations. --- diff --git a/cache.h b/cache.h index 173285976..864f70bfe 100644 --- a/cache.h +++ b/cache.h @@ -82,6 +82,7 @@ extern int write_sha1_buffer(unsigned char *sha1, void *buf, unsigned int size); /* Read and unpack a sha1 file into memory, write memory to a sha1 file */ extern void * map_sha1_file(unsigned char *sha1, unsigned long *size); +extern void * unpack_sha1_file(void *map, unsigned long mapsize, char *type, unsigned long *size); extern void * read_sha1_file(unsigned char *sha1, char *type, unsigned long *size); extern int write_sha1_file(char *buf, unsigned len); extern int check_sha1_signature(unsigned char *sha1, void *buf, unsigned long size); diff --git a/read-cache.c b/read-cache.c index 4d750506e..2ede67dbe 100644 --- a/read-cache.c +++ b/read-cache.c @@ -84,6 +84,17 @@ char *sha1_file_name(unsigned char *sha1) return base; } +int check_sha1_signature(unsigned char *sha1, void *map, unsigned long size) +{ + unsigned char real_sha1[20]; + SHA_CTX c; + + SHA1_Init(&c); + SHA1_Update(&c, map, size); + SHA1_Final(real_sha1, &c); + return memcmp(sha1, real_sha1, 20) ? -1 : 0; +} + void *map_sha1_file(unsigned char *sha1, unsigned long *size) { char *filename = sha1_file_name(sha1);