From: Michihiro NAKAJIMA Date: Fri, 21 May 2010 16:03:39 +0000 (-0400) Subject: On Mac OS X, HASH functions are available in libSystem, which is the system library... X-Git-Tag: v3.0.0a~994 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8be5e0fa5c0fae73008463044bd48ffe9dbc381e;p=thirdparty%2Flibarchive.git On Mac OS X, HASH functions are available in libSystem, which is the system library and including libc,libinfo,libkvm,libm and libpthread. SVN-Revision: 2415 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ee104407..66ece60e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -431,12 +431,12 @@ ENDMACRO(CHECK_HASH_WIN HASH_LIST) # # Check MD5/RMD160/SHA support # -CHECK_MD(MD5 "LIBC;OPENSSL") +CHECK_MD(MD5 "LIBC;LIBSYSTEM;OPENSSL") CHECK_MD(RMD160 "LIBC;OPENSSL") -CHECK_MD(SHA1 "LIBC;OPENSSL") -CHECK_MD(SHA256 "LIBC;LIBC2;LIBC3;OPENSSL") -CHECK_MD(SHA384 "LIBC;LIBC2;LIBC3;OPENSSL") -CHECK_MD(SHA512 "LIBC;LIBC2;LIBC3;OPENSSL") +CHECK_MD(SHA1 "LIBC;LIBSYSTEM;OPENSSL") +CHECK_MD(SHA256 "LIBC;LIBC2;LIBC3;LIBSYSTEM;OPENSSL") +CHECK_MD(SHA384 "LIBC;LIBC2;LIBC3;LIBSYSTEM;OPENSSL") +CHECK_MD(SHA512 "LIBC;LIBC2;LIBC3;LIBSYSTEM;OPENSSL") CHECK_HASH_WIN("MD5;SHA1;SHA256;SHA384;SHA512") # diff --git a/configure.ac b/configure.ac index 8916101eb..da09e3778 100644 --- a/configure.ac +++ b/configure.ac @@ -299,17 +299,22 @@ main(int argc, char **argv) ]) MD_CHECK(MD5, LIBC, md5) +MD_CHECK(MD5, LIBSYSTEM, md5) MD_CHECK(RMD160, LIBC, rmd160) MD_CHECK(SHA1, LIBC, sha1) +MD_CHECK(SHA1, LIBSYSTEM, sha1) MD_CHECK(SHA256, LIBC, sha256) MD_CHECK(SHA256, LIBC2, sha256) MD_CHECK(SHA256, LIBC3, sha256) +MD_CHECK(SHA256, LIBSYSTEM, sha256) MD_CHECK(SHA384, LIBC, sha384) MD_CHECK(SHA384, LIBC2, sha384) MD_CHECK(SHA384, LIBC3, sha384) +MD_CHECK(SHA384, LIBSYSTEM, sha384) MD_CHECK(SHA512, LIBC, sha512) MD_CHECK(SHA512, LIBC2, sha512) MD_CHECK(SHA512, LIBC3, sha512) +MD_CHECK(SHA512, LIBSYSTEM, sha512) if test "x$with_openssl" != "xno"; then MD_CHECK(MD5, OPENSSL, md5, -lcrypto) diff --git a/libarchive/archive_hash.h b/libarchive/archive_hash.h index 8dfcdb2d3..b180da671 100644 --- a/libarchive/archive_hash.h +++ b/libarchive/archive_hash.h @@ -48,6 +48,9 @@ * - MD5 and SHA1 in libmd: without _ after algorithm name * - SHA256: with _ after algorithm name * + * Mac OS X (10.4 and later): + * - MD5, SHA1 and SHA2 in libSystem: with CC_ prefix and _ after algorithm name + * * OpenSSL: * - MD5, SHA1 and SHA2 in libcrypto: with _ after algorithm name * @@ -76,6 +79,13 @@ typedef MD5_CTX archive_md5_ctx; # define archive_md5_init(ctx) MD5Init(ctx) # define archive_md5_final(ctx, buf) MD5Final(buf, ctx) # define archive_md5_update(ctx, buf, n) MD5Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_MD5_LIBSYSTEM) +# include +# define ARCHIVE_HAS_MD5 +typedef CC_MD5_CTX archive_md5_ctx; +# define archive_md5_init(ctx) CC_MD5_Init(ctx) +# define archive_md5_final(ctx, buf) CC_MD5_Final(buf, ctx) +# define archive_md5_update(ctx, buf, n) CC_MD5_Update(ctx, buf, n) #elif defined(ARCHIVE_HASH_MD5_OPENSSL) # include # define ARCHIVE_HAS_MD5 @@ -115,6 +125,13 @@ typedef SHA1_CTX archive_sha1_ctx; # define archive_sha1_init(ctx) SHA1Init(ctx) # define archive_sha1_final(ctx, buf) SHA1Final(buf, ctx) # define archive_sha1_update(ctx, buf, n) SHA1Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA1_LIBSYSTEM) +# include +# define ARCHIVE_HAS_SHA1 +typedef CC_SHA1_CTX archive_sha1_ctx; +# define archive_sha1_init(ctx) CC_SHA1_Init(ctx) +# define archive_sha1_final(ctx, buf) CC_SHA1_Final(buf, ctx) +# define archive_sha1_update(ctx, buf, n) CC_SHA1_Update(ctx, buf, n) #elif defined(ARCHIVE_HASH_SHA1_OPENSSL) # include # define ARCHIVE_HAS_SHA1 @@ -152,6 +169,13 @@ typedef SHA2_CTX archive_sha256_ctx; # define archive_sha256_init(ctx) SHA256Init(ctx) # define archive_sha256_final(ctx, buf) SHA256Final(buf, ctx) # define archive_sha256_update(ctx, buf, n) SHA256Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA256_LIBSYSTEM) +# include +# define ARCHIVE_HAS_SHA256 +typedef CC_SHA256_CTX archive_shs256_ctx; +# define archive_shs256_init(ctx) CC_SHA256_Init(ctx) +# define archive_shs256_final(ctx, buf) CC_SHA256_Final(buf, ctx) +# define archive_shs256_update(ctx, buf, n) CC_SHA256_Update(ctx, buf, n) #elif defined(ARCHIVE_HASH_SHA256_OPENSSL) # include # define ARCHIVE_HAS_SHA256 @@ -189,6 +213,13 @@ typedef SHA2_CTX archive_sha384_ctx; # define archive_sha384_init(ctx) SHA384Init(ctx) # define archive_sha384_final(ctx, buf) SHA384Final(buf, ctx) # define archive_sha384_update(ctx, buf, n) SHA384Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA384_LIBSYSTEM) +# include +# define ARCHIVE_HAS_SHA384 +typedef CC_SHA512_CTX archive_shs384_ctx; +# define archive_shs384_init(ctx) CC_SHA384_Init(ctx) +# define archive_shs384_final(ctx, buf) CC_SHA384_Final(buf, ctx) +# define archive_shs384_update(ctx, buf, n) CC_SHA384_Update(ctx, buf, n) #elif defined(ARCHIVE_HASH_SHA384_OPENSSL) # include # define ARCHIVE_HAS_SHA384 @@ -226,6 +257,13 @@ typedef SHA2_CTX archive_sha512_ctx; # define archive_sha512_init(ctx) SHA512Init(ctx) # define archive_sha512_final(ctx, buf) SHA512Final(buf, ctx) # define archive_sha512_update(ctx, buf, n) SHA512Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA512_LIBSYSTEM) +# include +# define ARCHIVE_HAS_SHA512 +typedef CC_SHA512_CTX archive_shs512_ctx; +# define archive_shs512_init(ctx) CC_SHA512_Init(ctx) +# define archive_shs512_final(ctx, buf) CC_SHA512_Final(buf, ctx) +# define archive_shs512_update(ctx, buf, n) CC_SHA512_Update(ctx, buf, n) #elif defined(ARCHIVE_HASH_SHA512_OPENSSL) # include # define ARCHIVE_HAS_SHA512