Skip to content

Commit

Permalink
sha1dc: build git plumbing code more explicitly
Browse files Browse the repository at this point in the history
The plumbing code between sha1dc and git is defined in
sha1dc_git.[ch], but these aren't compiled / included directly but
only via the indirect inclusion from sha1dc code.  This is slightly
confusing when you try to trace the build flow.

This patch brings the following changes for simplification:

  - Make sha1dc_git.c stand-alone and build from Makefile

  - sha1dc_git.h is the common header to include further sha1.h
    depending on the build condition

  - Move comments for plumbing codes from the header to definitions

This is also meant as a preliminary work for further plumbing with
external sha1dc shlib.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
tiwai authored and gitster committed Aug 16, 2017
1 parent 5800c63 commit 36f048c
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 22 deletions.
5 changes: 2 additions & 3 deletions Makefile
Expand Up @@ -1472,6 +1472,8 @@ ifdef APPLE_COMMON_CRYPTO
BASIC_CFLAGS += -DSHA1_APPLE
else
DC_SHA1 := YesPlease
BASIC_CFLAGS += -DSHA1_DC
LIB_OBJS += sha1dc_git.o
ifdef DC_SHA1_SUBMODULE
LIB_OBJS += sha1collisiondetection/lib/sha1.o
LIB_OBJS += sha1collisiondetection/lib/ubc_check.o
Expand All @@ -1481,12 +1483,9 @@ else
LIB_OBJS += sha1dc/ubc_check.o
endif
BASIC_CFLAGS += \
-DSHA1_DC \
-DSHA1DC_NO_STANDARD_INCLUDES \
-DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 \
-DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"cache.h\"" \
-DSHA1DC_CUSTOM_TRAILING_INCLUDE_SHA1_C="\"sha1dc_git.c\"" \
-DSHA1DC_CUSTOM_TRAILING_INCLUDE_SHA1_H="\"sha1dc_git.h\"" \
-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\""
endif
endif
Expand Down
6 changes: 1 addition & 5 deletions hash.h
Expand Up @@ -8,11 +8,7 @@
#elif defined(SHA1_OPENSSL)
#include <openssl/sha.h>
#elif defined(SHA1_DC)
#ifdef DC_SHA1_SUBMODULE
#include "sha1collisiondetection/lib/sha1.h"
#else
#include "sha1dc/sha1.h"
#endif
#include "sha1dc_git.h"
#else /* SHA1_BLK */
#include "block-sha1/sha1.h"
#endif
Expand Down
9 changes: 6 additions & 3 deletions sha1dc_git.c
@@ -1,8 +1,8 @@
#include "cache.h"

/*
* This code is included at the end of sha1dc/sha1.c with the
* SHA1DC_CUSTOM_TRAILING_INCLUDE_SHA1_C macro.
* Same as SHA1DCFinal, but convert collision attack case into a verbose die().
*/

void git_SHA1DCFinal(unsigned char hash[20], SHA1_CTX *ctx)
{
if (!SHA1DCFinal(hash, ctx))
Expand All @@ -11,6 +11,9 @@ void git_SHA1DCFinal(unsigned char hash[20], SHA1_CTX *ctx)
sha1_to_hex(hash));
}

/*
* Same as SHA1DCUpdate, but adjust types to match git's usual interface.
*/
void git_SHA1DCUpdate(SHA1_CTX *ctx, const void *vdata, unsigned long len)
{
const char *data = vdata;
Expand Down
18 changes: 7 additions & 11 deletions sha1dc_git.h
@@ -1,16 +1,12 @@
/*
* This code is included at the end of sha1dc/sha1.h with the
* SHA1DC_CUSTOM_TRAILING_INCLUDE_SHA1_H macro.
*/
/* Plumbing with collition-detecting SHA1 code */

/*
* Same as SHA1DCFinal, but convert collision attack case into a verbose die().
*/
void git_SHA1DCFinal(unsigned char [20], SHA1_CTX *);
#ifdef DC_SHA1_SUBMODULE
#include "sha1collisiondetection/lib/sha1.h"
#else
#include "sha1dc/sha1.h"
#endif

/*
* Same as SHA1DCUpdate, but adjust types to match git's usual interface.
*/
void git_SHA1DCFinal(unsigned char [20], SHA1_CTX *);
void git_SHA1DCUpdate(SHA1_CTX *ctx, const void *data, unsigned long len);

#define platform_SHA_CTX SHA1_CTX
Expand Down

0 comments on commit 36f048c

Please sign in to comment.