2009-08-05 23:13:20 +00:00
|
|
|
/*
|
2009-08-18 00:09:56 +00:00
|
|
|
* SHA1 routine optimized to do word accesses rather than byte accesses,
|
2009-08-05 23:13:20 +00:00
|
|
|
* and to avoid unnecessary copies into the context array.
|
2009-08-18 00:09:56 +00:00
|
|
|
*
|
|
|
|
* This was initially based on the Mozilla SHA1 implementation, although
|
|
|
|
* none of the original Mozilla code remains.
|
2009-08-05 23:13:20 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
typedef struct {
|
2009-08-18 00:18:23 +00:00
|
|
|
unsigned long long size;
|
2009-08-05 23:13:20 +00:00
|
|
|
unsigned int H[5];
|
|
|
|
unsigned int W[16];
|
|
|
|
} blk_SHA_CTX;
|
|
|
|
|
|
|
|
void blk_SHA1_Init(blk_SHA_CTX *ctx);
|
2020-11-13 05:07:17 +00:00
|
|
|
void blk_SHA1_Update(blk_SHA_CTX *ctx, const void *dataIn, size_t len);
|
2009-08-05 23:13:20 +00:00
|
|
|
void blk_SHA1_Final(unsigned char hashout[20], blk_SHA_CTX *ctx);
|
|
|
|
|
sha1: do not redefine `platform_SHA_CTX` and friends
Our in-tree SHA-1 wrappers all define platform_SHA_CTX and related
macros to point at the opaque "context" type, init, update, and similar
functions for each specific implementation.
In hash.h, we use these platform_ variables to set up the function
pointers for, e.g., the_hash_algo->init_fn(), etc.
But while these header files have a header-specific macro that prevents
them declaring their structs / functions multiple times, they
unconditionally define the platform variables, making it impossible to
load multiple SHA-1 implementations at once.
As a prerequisite for loading a separate SHA-1 implementation for
non-cryptographic uses, only define the platform_ variables if they have
not already been defined.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-09-26 15:22:44 +00:00
|
|
|
#ifndef platform_SHA_CTX
|
2015-11-05 06:38:41 +00:00
|
|
|
#define platform_SHA_CTX blk_SHA_CTX
|
|
|
|
#define platform_SHA1_Init blk_SHA1_Init
|
|
|
|
#define platform_SHA1_Update blk_SHA1_Update
|
|
|
|
#define platform_SHA1_Final blk_SHA1_Final
|
sha1: do not redefine `platform_SHA_CTX` and friends
Our in-tree SHA-1 wrappers all define platform_SHA_CTX and related
macros to point at the opaque "context" type, init, update, and similar
functions for each specific implementation.
In hash.h, we use these platform_ variables to set up the function
pointers for, e.g., the_hash_algo->init_fn(), etc.
But while these header files have a header-specific macro that prevents
them declaring their structs / functions multiple times, they
unconditionally define the platform variables, making it impossible to
load multiple SHA-1 implementations at once.
As a prerequisite for loading a separate SHA-1 implementation for
non-cryptographic uses, only define the platform_ variables if they have
not already been defined.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-09-26 15:22:44 +00:00
|
|
|
#endif
|