threads / patch / 22973

patchdarwin: Use CommonCrypto to compute SHA1

Subject: [PATCH] darwin: Use CommonCrypto to compute SHA1

## tl;dr

2 messages between Mar 10, 2010 and Mar 10, 2010. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Jeremy Huddleston· Mar 10, 2010, 00:01 UTC · lore
 From d5b06f19d5043a261ff007f19dfe88ae0ddde00f Mon Sep 17 00:00:00 2001
From: Jeremy Huddleston <jeremyhu@apple.com>
Date: Mon, 8 Mar 2010 15:10:54 -0800
Subject: [PATCH] darwin: Use CommonCrypto to compute SHA1
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Reviewed-by: Kevin Van Vechten <kvv@apple.com>
---
  Makefile |   14 ++++++++++++++
  cache.h  |    7 +++++++
  2 files changed, 21 insertions(+), 0 deletions(-)
Show changes to 2 files +21 −0

Makefile, cache.h

diff --git a/Makefile b/Makefile
index f64610a..bb4a1f0 100644
--- a/Makefile
+++ b/Makefile
@@ -91,6 +91,10 @@ all::
  # Define PPC_SHA1 environment variable when running make to make use  
of
  # a bundled SHA1 routine optimized for PowerPC.
  #
+# Define COMMONCRYPTO_SHA1 environment variable when running make to  
make
+# use of the Darwin/Mac OS X Common Cryptography library for SHA1
+# computation (instead of libcrypto).
+#
  # Define NEEDS_CRYPTO_WITH_SSL if you need -lcrypto when using -lssl  
(Darwin).
  #
  # Define NEEDS_SSL_WITH_CRYPTO if you need -lssl when using -lcrypto  
(Darwin).
@@ -775,6 +779,7 @@ ifeq ($(uname_S),SCO_SV)
  	TAR = gtar
  endif
  ifeq ($(uname_S),Darwin)
+	COMMONCRYPTO_SHA1 = YesPlease
  	NEEDS_CRYPTO_WITH_SSL = YesPlease
  	NEEDS_SSL_WITH_CRYPTO = YesPlease
  	NEEDS_LIBICONV = YesPlease
@@ -1155,7 +1160,11 @@ ifndef NO_OPENSSL
  	endif
  else
  	BASIC_CFLAGS += -DNO_OPENSSL
+ifndef COMMONCRYPTO_SHA1
+ifndef PPC_SHA1
  	BLK_SHA1 = 1
+endif
+endif
  	OPENSSL_LIBSSL =
  endif
  ifdef NEEDS_SSL_WITH_CRYPTO
@@ -1313,10 +1322,15 @@ ifdef PPC_SHA1
  	LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
  	LIB_H += ppc/sha1.h
  else
+ifdef COMMONCRYPTO_SHA1
+	SHA1_HEADER = <CommonCrypto/CommonDigest.h>
+	BASIC_CFLAGS += -DUSE_COMMONCRYPTO_SHA1
+else
  	SHA1_HEADER = <openssl/sha.h>
  	EXTLIBS += $(LIB_4_CRYPTO)
  endif
  endif
+endif
  ifdef NO_PERL_MAKEMAKER
  	export NO_PERL_MAKEMAKER
  endif
diff --git a/cache.h b/cache.h
index 89f6a40..135b25e 100644
--- a/cache.h
+++ b/cache.h
@@ -8,11 +8,18 @@

  #include SHA1_HEADER
  #ifndef git_SHA_CTX
+#ifdef USE_COMMONCRYPTO_SHA1
+#define git_SHA_CTX	CC_SHA1_CTX
+#define git_SHA1_Init	CC_SHA1_Init
+#define git_SHA1_Update	CC_SHA1_Update
+#define git_SHA1_Final	CC_SHA1_Final
+#else
  #define git_SHA_CTX	SHA_CTX
  #define git_SHA1_Init	SHA1_Init
  #define git_SHA1_Update	SHA1_Update
  #define git_SHA1_Final	SHA1_Final
  #endif
+#endif

  #include <zlib.h>
  #if defined(NO_DEFLATE_BOUND) || ZLIB_VERNUM < 0x1200
-- 
1.6.3.1





From d5b06f19d5043a261ff007f19dfe88ae0ddde00f Mon Sep 17 00:00:00 2001
From: Jeremy Huddleston <jeremyhu@apple.com>
Date: Mon, 8 Mar 2010 15:10:54 -0800
Subject: [PATCH] darwin: Use CommonCrypto to compute SHA1

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Reviewed-by: Kevin Van Vechten <kvv@apple.com>
---
 Makefile |   14 ++++++++++++++
 cache.h  |    7 +++++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index f64610a..bb4a1f0 100644
--- a/Makefile
+++ b/Makefile
@@ -91,6 +91,10 @@ all::
 # Define PPC_SHA1 environment variable when running make to make use of
 # a bundled SHA1 routine optimized for PowerPC.
 #
+# Define COMMONCRYPTO_SHA1 environment variable when running make to make
+# use of the Darwin/Mac OS X Common Cryptography library for SHA1
+# computation (instead of libcrypto).
+#
 # Define NEEDS_CRYPTO_WITH_SSL if you need -lcrypto when using -lssl (Darwin).
 #
 # Define NEEDS_SSL_WITH_CRYPTO if you need -lssl when using -lcrypto (Darwin).
@@ -775,6 +779,7 @@ ifeq ($(uname_S),SCO_SV)
 	TAR = gtar
 endif
 ifeq ($(uname_S),Darwin)
+	COMMONCRYPTO_SHA1 = YesPlease
 	NEEDS_CRYPTO_WITH_SSL = YesPlease
 	NEEDS_SSL_WITH_CRYPTO = YesPlease
 	NEEDS_LIBICONV = YesPlease
@@ -1155,7 +1160,11 @@ ifndef NO_OPENSSL
 	endif
 else
 	BASIC_CFLAGS += -DNO_OPENSSL
+ifndef COMMONCRYPTO_SHA1
+ifndef PPC_SHA1
 	BLK_SHA1 = 1
+endif
+endif
 	OPENSSL_LIBSSL =
 endif
 ifdef NEEDS_SSL_WITH_CRYPTO
@@ -1313,10 +1322,15 @@ ifdef PPC_SHA1
 	LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
 	LIB_H += ppc/sha1.h
 else
+ifdef COMMONCRYPTO_SHA1
+	SHA1_HEADER = <CommonCrypto/CommonDigest.h>
+	BASIC_CFLAGS += -DUSE_COMMONCRYPTO_SHA1
+else
 	SHA1_HEADER = <openssl/sha.h>
 	EXTLIBS += $(LIB_4_CRYPTO)
 endif
 endif
+endif
 ifdef NO_PERL_MAKEMAKER
 	export NO_PERL_MAKEMAKER
 endif
diff --git a/cache.h b/cache.h
index 89f6a40..135b25e 100644
--- a/cache.h
+++ b/cache.h
@@ -8,11 +8,18 @@
 
 #include SHA1_HEADER
 #ifndef git_SHA_CTX
+#ifdef USE_COMMONCRYPTO_SHA1
+#define git_SHA_CTX	CC_SHA1_CTX
+#define git_SHA1_Init	CC_SHA1_Init
+#define git_SHA1_Update	CC_SHA1_Update
+#define git_SHA1_Final	CC_SHA1_Final
+#else
 #define git_SHA_CTX	SHA_CTX
 #define git_SHA1_Init	SHA1_Init
 #define git_SHA1_Update	SHA1_Update
 #define git_SHA1_Final	SHA1_Final
 #endif
+#endif
 
 #include <zlib.h>
 #if defined(NO_DEFLATE_BOUND) || ZLIB_VERNUM < 0x1200
-- 
1.6.3.1
Geert Bosch· Mar 10, 2010, 04:00 UTC · re: Jeremy Huddleston · lore

Re: [PATCH] darwin: Use CommonCrypto to compute SHA1

On Mar 9, 2010, at 19:01, Jeremy Huddleston wrote:
Show 23 quoted lines
> From: Jeremy Huddleston <jeremyhu@apple.com>
> Date: Mon, 8 Mar 2010 15:10:54 -0800
> Subject: [PATCH] darwin: Use CommonCrypto to compute SHA1
> 
> Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
> Reviewed-by: Kevin Van Vechten <kvv@apple.com>
> ---
> Makefile |   14 ++++++++++++++
> cache.h  |    7 +++++++
> 2 files changed, 21 insertions(+), 0 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index f64610a..bb4a1f0 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -91,6 +91,10 @@ all::
> # Define PPC_SHA1 environment variable when running make to make use of
> # a bundled SHA1 routine optimized for PowerPC.
> #
> +# Define COMMONCRYPTO_SHA1 environment variable when running make to make
> +# use of the Darwin/Mac OS X Common Cryptography library for SHA1
> +# computation (instead of libcrypto).
> +#

You're missing an argument of why this would be an improvement over the status quo. If the argument is performance, you'd better show some convincing numbers, both of SHA-1 heavy tasks and situations where program initialization is an important factor.

By default, increasing the number of different ways we use to compute the SHA1 is a negative development. There has to be a strong reason to do so, such as: for my workload X this saves me Y seconds each time I do Z.

  -Geert

← back to recent threads