diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-08-05 16:13:20 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-08-05 19:28:21 -0700 |
commit | d7c208a92e6b15cdcd159e30cd1fc0177fd967e9 (patch) | |
tree | 3b7d2da701bff17012d47ea631e6672c280671db /block-sha1/sha1.h | |
parent | 3f55e4107f7906134df029f9a5c44864f9258110 (diff) | |
download | git-d7c208a92e6b15cdcd159e30cd1fc0177fd967e9.tar.gz |
Add new optimized C 'block-sha1' routines
Based on the mozilla SHA1 routine, but doing the input data accesses a
word at a time and with 'htonl()' instead of loading bytes and shifting.
It requires an architecture that is ok with unaligned 32-bit loads and a
fast htonl().
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'block-sha1/sha1.h')
-rw-r--r-- | block-sha1/sha1.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/block-sha1/sha1.h b/block-sha1/sha1.h new file mode 100644 index 0000000000..7be2d93a2a --- /dev/null +++ b/block-sha1/sha1.h @@ -0,0 +1,21 @@ +/* + * Based on the Mozilla SHA1 (see mozilla-sha1/sha1.h), + * optimized to do word accesses rather than byte accesses, + * and to avoid unnecessary copies into the context array. + */ + +typedef struct { + unsigned int H[5]; + unsigned int W[16]; + int lenW; + unsigned long long size; +} blk_SHA_CTX; + +void blk_SHA1_Init(blk_SHA_CTX *ctx); +void blk_SHA1_Update(blk_SHA_CTX *ctx, const void *dataIn, unsigned long len); +void blk_SHA1_Final(unsigned char hashout[20], blk_SHA_CTX *ctx); + +#define git_SHA_CTX blk_SHA_CTX +#define git_SHA1_Init blk_SHA1_Init +#define git_SHA1_Update blk_SHA1_Update +#define git_SHA1_Final blk_SHA1_Final |