Merge branch 'ab/sha1dc'

The "collission-detecting" implementation of SHA-1 hash we borrowed
from is replaced by directly binding the upstream project as our
submodule.  Glitches on minority platforms are still being worked out.

* ab/sha1dc:
  sha1collisiondetection: automatically enable when submodule is populated
  sha1dc: optionally use sha1collisiondetection as a submodule
This commit is contained in:
Junio C Hamano 2017-07-10 13:42:51 -07:00
commit 2db87328ef
4 changed files with 25 additions and 0 deletions

4
.gitmodules vendored Normal file
View File

@ -0,0 +1,4 @@
[submodule "sha1collisiondetection"]
path = sha1collisiondetection
url = https://github.com/cr-marcstevens/sha1collisiondetection.git
branch = master

View File

@ -162,6 +162,12 @@ all::
# algorithm. This is slower, but may detect attempted collision attacks. # algorithm. This is slower, but may detect attempted collision attacks.
# Takes priority over other *_SHA1 knobs. # Takes priority over other *_SHA1 knobs.
# #
# Define DC_SHA1_SUBMODULE in addition to DC_SHA1 to use the
# sha1collisiondetection shipped as a submodule instead of the
# non-submodule copy in sha1dc/. This is an experimental option used
# by the git project to migrate to using sha1collisiondetection as a
# submodule.
#
# Define OPENSSL_SHA1 environment variable when running make to link # Define OPENSSL_SHA1 environment variable when running make to link
# with the SHA1 routine from openssl library. # with the SHA1 routine from openssl library.
# #
@ -1004,6 +1010,10 @@ EXTLIBS =
GIT_USER_AGENT = git/$(GIT_VERSION) GIT_USER_AGENT = git/$(GIT_VERSION)
ifeq ($(wildcard sha1collisiondetection/lib/sha1.h),sha1collisiondetection/lib/sha1.h)
DC_SHA1_SUBMODULE = auto
endif
include config.mak.uname include config.mak.uname
-include config.mak.autogen -include config.mak.autogen
-include config.mak -include config.mak
@ -1449,8 +1459,14 @@ ifdef APPLE_COMMON_CRYPTO
BASIC_CFLAGS += -DSHA1_APPLE BASIC_CFLAGS += -DSHA1_APPLE
else else
DC_SHA1 := YesPlease DC_SHA1 := YesPlease
ifdef DC_SHA1_SUBMODULE
LIB_OBJS += sha1collisiondetection/lib/sha1.o
LIB_OBJS += sha1collisiondetection/lib/ubc_check.o
BASIC_CFLAGS += -DDC_SHA1_SUBMODULE
else
LIB_OBJS += sha1dc/sha1.o LIB_OBJS += sha1dc/sha1.o
LIB_OBJS += sha1dc/ubc_check.o LIB_OBJS += sha1dc/ubc_check.o
endif
BASIC_CFLAGS += \ BASIC_CFLAGS += \
-DSHA1_DC \ -DSHA1_DC \
-DSHA1DC_NO_STANDARD_INCLUDES \ -DSHA1DC_NO_STANDARD_INCLUDES \

4
hash.h
View File

@ -8,7 +8,11 @@
#elif defined(SHA1_OPENSSL) #elif defined(SHA1_OPENSSL)
#include <openssl/sha.h> #include <openssl/sha.h>
#elif defined(SHA1_DC) #elif defined(SHA1_DC)
#ifdef DC_SHA1_SUBMODULE
#include "sha1collisiondetection/lib/sha1.h"
#else
#include "sha1dc/sha1.h" #include "sha1dc/sha1.h"
#endif
#else /* SHA1_BLK */ #else /* SHA1_BLK */
#include "block-sha1/sha1.h" #include "block-sha1/sha1.h"
#endif #endif

@ -0,0 +1 @@
Subproject commit 19d97bf5af05312267c2e874ee6bcf584d9e9681