{"thread":{"id":"22973","subject":"[PATCH] darwin: Use CommonCrypto to compute SHA1","startedAt":"2010-03-10T00:01:52Z","lastAt":"2010-03-10T04:00:33Z","messageCount":2,"participants":["Jeremy Huddleston","Geert Bosch"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"136481","messageId":"9AE94716-A53B-40A6-A7D9-CCD39B820390@apple.com","threadId":"22973","inReplyTo":null,"subject":"[PATCH] darwin: Use CommonCrypto to compute SHA1","fromName":"Jeremy Huddleston","fromEmail":"jeremyhu@apple.com","sentAt":"2010-03-10T00:01:52Z","receivedAt":"2010-03-10T00:01:52Z","isPatch":true,"sender":{"key":"jeremyhu@apple.com","avatar":"https://avatars.githubusercontent.com/u/1258676?v=4"},"body":" From d5b06f19d5043a261ff007f19dfe88ae0ddde00f Mon Sep 17 00:00:00 2001\nFrom: Jeremy Huddleston <jeremyhu@apple.com>\nDate: Mon, 8 Mar 2010 15:10:54 -0800\nSubject: [PATCH] darwin: Use CommonCrypto to compute SHA1\n\nSigned-off-by: Jeremy Huddleston <jeremyhu@apple.com>\nReviewed-by: Kevin Van Vechten <kvv@apple.com>\n---\n  Makefile |   14 ++++++++++++++\n  cache.h  |    7 +++++++\n  2 files changed, 21 insertions(+), 0 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex f64610a..bb4a1f0 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -91,6 +91,10 @@ all::\n  # Define PPC_SHA1 environment variable when running make to make use  \nof\n  # a bundled SHA1 routine optimized for PowerPC.\n  #\n+# Define COMMONCRYPTO_SHA1 environment variable when running make to  \nmake\n+# use of the Darwin/Mac OS X Common Cryptography library for SHA1\n+# computation (instead of libcrypto).\n+#\n  # Define NEEDS_CRYPTO_WITH_SSL if you need -lcrypto when using -lssl  \n(Darwin).\n  #\n  # Define NEEDS_SSL_WITH_CRYPTO if you need -lssl when using -lcrypto  \n(Darwin).\n@@ -775,6 +779,7 @@ ifeq ($(uname_S),SCO_SV)\n  \tTAR = gtar\n  endif\n  ifeq ($(uname_S),Darwin)\n+\tCOMMONCRYPTO_SHA1 = YesPlease\n  \tNEEDS_CRYPTO_WITH_SSL = YesPlease\n  \tNEEDS_SSL_WITH_CRYPTO = YesPlease\n  \tNEEDS_LIBICONV = YesPlease\n@@ -1155,7 +1160,11 @@ ifndef NO_OPENSSL\n  \tendif\n  else\n  \tBASIC_CFLAGS += -DNO_OPENSSL\n+ifndef COMMONCRYPTO_SHA1\n+ifndef PPC_SHA1\n  \tBLK_SHA1 = 1\n+endif\n+endif\n  \tOPENSSL_LIBSSL =\n  endif\n  ifdef NEEDS_SSL_WITH_CRYPTO\n@@ -1313,10 +1322,15 @@ ifdef PPC_SHA1\n  \tLIB_OBJS += ppc/sha1.o ppc/sha1ppc.o\n  \tLIB_H += ppc/sha1.h\n  else\n+ifdef COMMONCRYPTO_SHA1\n+\tSHA1_HEADER = <CommonCrypto/CommonDigest.h>\n+\tBASIC_CFLAGS += -DUSE_COMMONCRYPTO_SHA1\n+else\n  \tSHA1_HEADER = <openssl/sha.h>\n  \tEXTLIBS += $(LIB_4_CRYPTO)\n  endif\n  endif\n+endif\n  ifdef NO_PERL_MAKEMAKER\n  \texport NO_PERL_MAKEMAKER\n  endif\ndiff --git a/cache.h b/cache.h\nindex 89f6a40..135b25e 100644\n--- a/cache.h\n+++ b/cache.h\n@@ -8,11 +8,18 @@\n\n  #include SHA1_HEADER\n  #ifndef git_SHA_CTX\n+#ifdef USE_COMMONCRYPTO_SHA1\n+#define git_SHA_CTX\tCC_SHA1_CTX\n+#define git_SHA1_Init\tCC_SHA1_Init\n+#define git_SHA1_Update\tCC_SHA1_Update\n+#define git_SHA1_Final\tCC_SHA1_Final\n+#else\n  #define git_SHA_CTX\tSHA_CTX\n  #define git_SHA1_Init\tSHA1_Init\n  #define git_SHA1_Update\tSHA1_Update\n  #define git_SHA1_Final\tSHA1_Final\n  #endif\n+#endif\n\n  #include <zlib.h>\n  #if defined(NO_DEFLATE_BOUND) || ZLIB_VERNUM < 0x1200\n-- \n1.6.3.1\n\n\n\n\n\nFrom d5b06f19d5043a261ff007f19dfe88ae0ddde00f Mon Sep 17 00:00:00 2001\nFrom: Jeremy Huddleston <jeremyhu@apple.com>\nDate: Mon, 8 Mar 2010 15:10:54 -0800\nSubject: [PATCH] darwin: Use CommonCrypto to compute SHA1\n\nSigned-off-by: Jeremy Huddleston <jeremyhu@apple.com>\nReviewed-by: Kevin Van Vechten <kvv@apple.com>\n---\n Makefile |   14 ++++++++++++++\n cache.h  |    7 +++++++\n 2 files changed, 21 insertions(+), 0 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex f64610a..bb4a1f0 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -91,6 +91,10 @@ all::\n # Define PPC_SHA1 environment variable when running make to make use of\n # a bundled SHA1 routine optimized for PowerPC.\n #\n+# Define COMMONCRYPTO_SHA1 environment variable when running make to make\n+# use of the Darwin/Mac OS X Common Cryptography library for SHA1\n+# computation (instead of libcrypto).\n+#\n # Define NEEDS_CRYPTO_WITH_SSL if you need -lcrypto when using -lssl (Darwin).\n #\n # Define NEEDS_SSL_WITH_CRYPTO if you need -lssl when using -lcrypto (Darwin).\n@@ -775,6 +779,7 @@ ifeq ($(uname_S),SCO_SV)\n \tTAR = gtar\n endif\n ifeq ($(uname_S),Darwin)\n+\tCOMMONCRYPTO_SHA1 = YesPlease\n \tNEEDS_CRYPTO_WITH_SSL = YesPlease\n \tNEEDS_SSL_WITH_CRYPTO = YesPlease\n \tNEEDS_LIBICONV = YesPlease\n@@ -1155,7 +1160,11 @@ ifndef NO_OPENSSL\n \tendif\n else\n \tBASIC_CFLAGS += -DNO_OPENSSL\n+ifndef COMMONCRYPTO_SHA1\n+ifndef PPC_SHA1\n \tBLK_SHA1 = 1\n+endif\n+endif\n \tOPENSSL_LIBSSL =\n endif\n ifdef NEEDS_SSL_WITH_CRYPTO\n@@ -1313,10 +1322,15 @@ ifdef PPC_SHA1\n \tLIB_OBJS += ppc/sha1.o ppc/sha1ppc.o\n \tLIB_H += ppc/sha1.h\n else\n+ifdef COMMONCRYPTO_SHA1\n+\tSHA1_HEADER = <CommonCrypto/CommonDigest.h>\n+\tBASIC_CFLAGS += -DUSE_COMMONCRYPTO_SHA1\n+else\n \tSHA1_HEADER = <openssl/sha.h>\n \tEXTLIBS += $(LIB_4_CRYPTO)\n endif\n endif\n+endif\n ifdef NO_PERL_MAKEMAKER\n \texport NO_PERL_MAKEMAKER\n endif\ndiff --git a/cache.h b/cache.h\nindex 89f6a40..135b25e 100644\n--- a/cache.h\n+++ b/cache.h\n@@ -8,11 +8,18 @@\n \n #include SHA1_HEADER\n #ifndef git_SHA_CTX\n+#ifdef USE_COMMONCRYPTO_SHA1\n+#define git_SHA_CTX\tCC_SHA1_CTX\n+#define git_SHA1_Init\tCC_SHA1_Init\n+#define git_SHA1_Update\tCC_SHA1_Update\n+#define git_SHA1_Final\tCC_SHA1_Final\n+#else\n #define git_SHA_CTX\tSHA_CTX\n #define git_SHA1_Init\tSHA1_Init\n #define git_SHA1_Update\tSHA1_Update\n #define git_SHA1_Final\tSHA1_Final\n #endif\n+#endif\n \n #include <zlib.h>\n #if defined(NO_DEFLATE_BOUND) || ZLIB_VERNUM < 0x1200\n-- \n1.6.3.1\n\n"},{"id":"136485","messageId":"392914AB-CF6D-4094-969D-6057608F86F8@adacore.com","threadId":"22973","inReplyTo":"9AE94716-A53B-40A6-A7D9-CCD39B820390@apple.com","subject":"Re: [PATCH] darwin: Use CommonCrypto to compute SHA1","fromName":"Geert Bosch","fromEmail":"bosch@adacore.com","sentAt":"2010-03-10T04:00:33Z","receivedAt":"2010-03-10T04:00:33Z","isPatch":true,"sender":{"key":"bosch@adacore.com","avatar":null},"body":"\nOn Mar 9, 2010, at 19:01, Jeremy Huddleston wrote:\n> From: Jeremy Huddleston <jeremyhu@apple.com>\n> Date: Mon, 8 Mar 2010 15:10:54 -0800\n> Subject: [PATCH] darwin: Use CommonCrypto to compute SHA1\n> \n> Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>\n> Reviewed-by: Kevin Van Vechten <kvv@apple.com>\n> ---\n> Makefile |   14 ++++++++++++++\n> cache.h  |    7 +++++++\n> 2 files changed, 21 insertions(+), 0 deletions(-)\n> \n> diff --git a/Makefile b/Makefile\n> index f64610a..bb4a1f0 100644\n> --- a/Makefile\n> +++ b/Makefile\n> @@ -91,6 +91,10 @@ all::\n> # Define PPC_SHA1 environment variable when running make to make use of\n> # a bundled SHA1 routine optimized for PowerPC.\n> #\n> +# Define COMMONCRYPTO_SHA1 environment variable when running make to make\n> +# use of the Darwin/Mac OS X Common Cryptography library for SHA1\n> +# computation (instead of libcrypto).\n> +#\n\nYou're missing an argument of why this would be an improvement over\nthe status quo. If the argument is performance, you'd better show\nsome convincing numbers, both of SHA-1 heavy tasks and situations\nwhere program initialization is an important factor.\n\nBy default, increasing the number of different ways we use to\ncompute the SHA1 is a negative development. There has to be a\nstrong reason to do so, such as: for my workload X this saves \nme Y seconds each time I do Z.\n\n  -Geert\n"}]}