diff options
author | Atousa Pahlevan Duprat <apahlevan@ieee.org> | 2015-11-04 22:38:42 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-11-05 10:35:11 -0800 |
commit | 001fd7a90b5851f62e700510729a5e09706f9b63 (patch) | |
tree | 125503b4986b65ef3da657d506a4adb2ec1add8c /compat/sha1-chunked.c | |
parent | 3bc72fde3f35b988c902abf5a0bc027f2e54d0c1 (diff) | |
download | git-001fd7a90b5851f62e700510729a5e09706f9b63.tar.gz |
sha1: allow limiting the size of the data passed to SHA1_Update()ad/sha1-update-chunked
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>
Diffstat (limited to 'compat/sha1-chunked.c')
-rw-r--r-- | compat/sha1-chunked.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/compat/sha1-chunked.c b/compat/sha1-chunked.c new file mode 100644 index 0000000000..6adfcfd540 --- /dev/null +++ b/compat/sha1-chunked.c @@ -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; +} |