diff options
| author | Junio C Hamano <gitster@pobox.com> | 2019-01-29 12:47:55 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-01-29 12:47:55 -0800 |
| commit | 33e4ae9c509e0ecdc6508475f2974d275539616e (patch) | |
| tree | 93aa27f2902d3257932d64962f724c66b7a50ef6 /hex.c | |
| parent | 5d3635db19c6dff4fb063fabfa4161fd3b8285f0 (diff) | |
| parent | 4b4e2918099600c1eefe7b5a71bf647803905b7e (diff) | |
| download | git-33e4ae9c509e0ecdc6508475f2974d275539616e.tar.gz | |
Merge branch 'bc/sha-256'
Add sha-256 hash and plug it through the code to allow building Git
with the "NewHash".
* bc/sha-256:
hash: add an SHA-256 implementation using OpenSSL
sha256: add an SHA-256 implementation using libgcrypt
Add a base implementation of SHA-256 support
commit-graph: convert to using the_hash_algo
t/helper: add a test helper to compute hash speed
sha1-file: add a constant for hash block size
t: make the sha1 test-tool helper generic
t: add basic tests for our SHA-1 implementation
cache: make hashcmp and hasheq work with larger hashes
hex: introduce functions to print arbitrary hashes
sha1-file: provide functions to look up hash algorithms
sha1-file: rename algorithm to "sha1"
Diffstat (limited to 'hex.c')
| -rw-r--r-- | hex.c | 30 |
1 files changed, 23 insertions, 7 deletions
@@ -73,14 +73,15 @@ int parse_oid_hex(const char *hex, struct object_id *oid, const char **end) return ret; } -char *sha1_to_hex_r(char *buffer, const unsigned char *sha1) +char *hash_to_hex_algop_r(char *buffer, const unsigned char *hash, + const struct git_hash_algo *algop) { static const char hex[] = "0123456789abcdef"; char *buf = buffer; int i; - for (i = 0; i < the_hash_algo->rawsz; i++) { - unsigned int val = *sha1++; + for (i = 0; i < algop->rawsz; i++) { + unsigned int val = *hash++; *buf++ = hex[val >> 4]; *buf++ = hex[val & 0xf]; } @@ -89,20 +90,35 @@ char *sha1_to_hex_r(char *buffer, const unsigned char *sha1) return buffer; } +char *sha1_to_hex_r(char *buffer, const unsigned char *sha1) +{ + return hash_to_hex_algop_r(buffer, sha1, &hash_algos[GIT_HASH_SHA1]); +} + char *oid_to_hex_r(char *buffer, const struct object_id *oid) { - return sha1_to_hex_r(buffer, oid->hash); + return hash_to_hex_algop_r(buffer, oid->hash, the_hash_algo); } -char *sha1_to_hex(const unsigned char *sha1) +char *hash_to_hex_algop(const unsigned char *hash, const struct git_hash_algo *algop) { static int bufno; static char hexbuffer[4][GIT_MAX_HEXSZ + 1]; bufno = (bufno + 1) % ARRAY_SIZE(hexbuffer); - return sha1_to_hex_r(hexbuffer[bufno], sha1); + return hash_to_hex_algop_r(hexbuffer[bufno], hash, algop); +} + +char *sha1_to_hex(const unsigned char *sha1) +{ + return hash_to_hex_algop(sha1, &hash_algos[GIT_HASH_SHA1]); +} + +char *hash_to_hex(const unsigned char *hash) +{ + return hash_to_hex_algop(hash, the_hash_algo); } char *oid_to_hex(const struct object_id *oid) { - return sha1_to_hex(oid->hash); + return hash_to_hex_algop(oid->hash, the_hash_algo); } |
