git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 2/2] sha1dc: optionally use sha1collisiondetection as a submodule

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
May 20, 2017, 11:54 UTC
Message-ID
<20170520115429.12289-3-avarab@gmail.com>
In-Reply-To
<20170520115429.12289-1-avarab@gmail.com>

Add an option to use the sha1collisiondetection library from the submodule in sha1collisiondetection/ instead of in the copy in the sha1dc/ directory.

This allows us to try out the submodule in sha1collisiondetection without breaking the build for anyone who's not expecting them as we work out any kinks.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 .gitmodules            |  4 ++++
 Makefile               | 12 ++++++++++++
 hash.h                 |  4 ++++
 sha1collisiondetection |  1 +
 4 files changed, 21 insertions(+)
 create mode 100644 .gitmodules
 create mode 160000 sha1collisiondetection
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000..cbeebdab7a
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "sha1collisiondetection"]
+	path = sha1collisiondetection
+	url = https://github.com/cr-marcstevens/sha1collisiondetection.git
+	branch = master
diff --git a/Makefile b/Makefile
index ffa6da71b7..6baad1669e 100644
--- a/Makefile
+++ b/Makefile
@@ -144,6 +144,12 @@ all::
 # algorithm. This is slower, but may detect attempted collision attacks.
 # 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
 # with the SHA1 routine from openssl library.
 #
@@ -1412,8 +1418,14 @@ ifdef APPLE_COMMON_CRYPTO
 	BASIC_CFLAGS += -DSHA1_APPLE
 else
 	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/ubc_check.o
+endif
 	BASIC_CFLAGS += \
 		-DSHA1_DC \
 		-DSHA1DC_NO_STANDARD_INCLUDES \
diff --git a/hash.h b/hash.h
index a11fc9233f..bef3e630a0 100644
--- a/hash.h
+++ b/hash.h
@@ -8,7 +8,11 @@
 #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
 #else /* SHA1_BLK */
 #include "block-sha1/sha1.h"
 #endif
diff --git a/sha1collisiondetection b/sha1collisiondetection
new file mode 160000
index 0000000000..cc465543b3
--- /dev/null
+++ b/sha1collisiondetection
@@ -0,0 +1 @@
+Subproject commit cc465543b310e5f59a1d534381690052e8509b22
-- 
2.13.0.303.g4ebf302169
Previous: Ævar Arnfjörð BjarmasonNext: Junio C Hamano
Message 7 of 20 in “Update sha1dc from upstream & optionally make it a submodule”
  1. 0/3 Update sha1dc from upstream & optionally make it a submoduleÆvar Arnfjörð Bjarmason, May 18, 2017
  2. 1/3 sha1dc: update from upstreamÆvar Arnfjörð Bjarmason, May 18, 2017
  3. 2/3 sha1dc: use sha1collisiondetection as a submoduleÆvar Arnfjörð Bjarmason, May 18, 2017
  4. Junio C HamanoMay 20, 2017
  5. 0/2 Update sha1dc from upstream & optionally make it a submoduleÆvar Arnfjörð Bjarmason, May 20, 2017
  6. 1/2 sha1dc: update from upstreamÆvar Arnfjörð Bjarmason, May 20, 2017
  7. 2/2 sha1dc: optionally use sha1collisiondetection as a submoduleÆvar Arnfjörð Bjarmason, May 20, 2017
  8. Junio C HamanoMay 22, 2017
  9. Junio C HamanoMay 22, 2017
  10. Ævar Arnfjörð BjarmasonMay 22, 2017
  11. Junio C HamanoMay 22, 2017
  12. Junio C HamanoMay 22, 2017
  13. Stefan BellerMay 22, 2017
  14. Junio C HamanoMay 23, 2017
  15. Ævar Arnfjörð BjarmasonMay 23, 2017
  16. Junio C HamanoMay 23, 2017
  17. Ævar Arnfjörð BjarmasonMay 25, 2017
  18. Junio C HamanoMay 25, 2017
  19. Ævar Arnfjörð BjarmasonMay 25, 2017
  20. 3/3 sha1dc: remove the unused sha1dc/ directoryÆvar Arnfjörð Bjarmason, May 18, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.