Browse Source
Using the previous commit's inredirection mechanism for SHA1, support a chunked implementation of SHA1_Update() that limits the amount of data in the chunk passed to SHA1_Update(). This is enabled by using the Makefile variable SHA1_MAX_BLOCK_SIZE to specify chunk size. When using Apple's CommonCrypto library this is set to 1GiB (the implementation cannot handle more 4GiB). Signed-off-by: Atousa Pahlevan Duprat <apahlevan@ieee.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
Atousa Pahlevan Duprat
9 years ago
committed by
Junio C Hamano
5 changed files with 44 additions and 0 deletions
@ -0,0 +1,19 @@ |
|||||||
|
#include "cache.h" |
||||||
|
|
||||||
|
int git_SHA1_Update_Chunked(platform_SHA_CTX *c, const void *data, size_t len) |
||||||
|
{ |
||||||
|
size_t nr; |
||||||
|
size_t total = 0; |
||||||
|
const char *cdata = (const char*)data; |
||||||
|
|
||||||
|
while (len) { |
||||||
|
nr = len; |
||||||
|
if (nr > SHA1_MAX_BLOCK_SIZE) |
||||||
|
nr = SHA1_MAX_BLOCK_SIZE; |
||||||
|
platform_SHA1_Update(c, cdata, nr); |
||||||
|
total += nr; |
||||||
|
cdata += nr; |
||||||
|
len -= nr; |
||||||
|
} |
||||||
|
return total; |
||||||
|
} |
Loading…
Reference in new issue