mirror of
https://github.com/git/git
synced 2024-08-28 20:20:07 +00:00
![Atousa Pahlevan Duprat](/assets/img/avatar_default.png)
The git source uses git_SHA1_Update() and friends to call into the code that computes the hashes. Traditionally, we used to map these directly to underlying implementation of the SHA-1 hash (e.g. SHA1_Update() from OpenSSL or blk_SHA1_Update() from block-sha1/). This arrangement however makes it hard to tweak behaviour of the underlying implementation without fully replacing. If we want to introduce a tweaked_SHA1_Update() wrapper to implement the "Update" in a slightly different way, for example, the implementation of the wrapper still would want to call into the underlying implementation, but tweaked_SHA1_Update() cannot call git_SHA1_Update() to get to the underlying implementation (often but not always SHA1_Update()). Add another level of indirection that maps platform_SHA1_Update() and friends to their underlying implementations, and by default make git_SHA1_Update() and friends map to platform_SHA1_* functions. Doing it this way will later allow us to map git_SHA1_Update() to tweaked_SHA1_Update(), and the latter can use platform_SHA1_Update() in its implementation. Signed-off-by: Atousa Pahlevan Duprat <apahlevan@ieee.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
26 lines
579 B
C
26 lines
579 B
C
/*
|
|
* SHA-1 implementation.
|
|
*
|
|
* Copyright (C) 2005 Paul Mackerras <paulus@samba.org>
|
|
*/
|
|
#include <stdint.h>
|
|
|
|
typedef struct {
|
|
uint32_t hash[5];
|
|
uint32_t cnt;
|
|
uint64_t len;
|
|
union {
|
|
unsigned char b[64];
|
|
uint64_t l[8];
|
|
} buf;
|
|
} ppc_SHA_CTX;
|
|
|
|
int ppc_SHA1_Init(ppc_SHA_CTX *c);
|
|
int ppc_SHA1_Update(ppc_SHA_CTX *c, const void *p, unsigned long n);
|
|
int ppc_SHA1_Final(unsigned char *hash, ppc_SHA_CTX *c);
|
|
|
|
#define platform_SHA_CTX ppc_SHA_CTX
|
|
#define platform_SHA1_Init ppc_SHA1_Init
|
|
#define platform_SHA1_Update ppc_SHA1_Update
|
|
#define platform_SHA1_Final ppc_SHA1_Final
|