]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Support FreeBSD's libmd library for common message digest functions.
authorTim Kientzle <kientzle@gmail.com>
Sat, 22 Oct 2011 22:19:22 +0000 (18:19 -0400)
committerTim Kientzle <kientzle@gmail.com>
Sat, 22 Oct 2011 22:19:22 +0000 (18:19 -0400)
SVN-Revision: 3741

CMakeLists.txt
libarchive/archive_hash.h

index cedef02313a348a871a99805066bc6435dc51859..04aa9a6f40f3467b402e785548f2f486f69aedcb 100644 (file)
@@ -272,6 +272,14 @@ IF(ENABLE_OPENSSL)
   FIND_PACKAGE(OpenSSL)
 ENDIF()
 
+# FreeBSD libmd
+CHECK_LIBRARY_EXISTS(md "MD5Init" "" LIBMD_FOUND)
+IF(LIBMD_FOUND)
+  SET(CMAKE_REQUIRED_LIBRARIES "md")
+  FIND_LIBRARY(LIBMD_LIBRARY NAMES md)
+  LIST(APPEND ADDITIONAL_LIBS ${LIBMD_LIBRARY})
+ENDIF(LIBMD_FOUND)
+
 #
 # How to prove that HASH functions, which have several names on various
 # platforms, can be mapped to archive_{hash name}_init,
@@ -302,6 +310,9 @@ MACRO(CHECK_MD HASH IMPLEMENTATIONS)
            SET(HASH_REQUIRED_LIBS ${OPENSSL_LIBRARIES})
            SET(TRY_HASH_REQUIRED_LIBS
                "-DLINK_LIBRARIES:STRING=${OPENSSL_LIBRARIES}")
+       ELSEIF("${IMPLEMENTATION}" MATCHES "^LIBMD$" AND LIBMD_FOUND)
+           SET(TRY_HASH_REQUIRED_LIBS
+               "-DLINK_LIBRARIES:STRING=${LIBMD_LIBRARY}")
        ENDIF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
 
        SET(SOURCE "#define ${hash}_COMPILE_TEST
@@ -433,12 +444,12 @@ ENDMACRO(CHECK_HASH_WIN HASH_LIST)
 #
 # Check MD5/RMD160/SHA support
 #
-CHECK_MD(MD5 "LIBC;LIBSYSTEM;OPENSSL")
+CHECK_MD(MD5 "LIBC;LIBMD;LIBSYSTEM;OPENSSL")
 CHECK_MD(RMD160 "LIBC;OPENSSL")
-CHECK_MD(SHA1 "LIBC;LIBSYSTEM;OPENSSL")
-CHECK_MD(SHA256 "LIBC;LIBC2;LIBC3;LIBSYSTEM;OPENSSL")
+CHECK_MD(SHA1 "LIBC;LIBMD;LIBSYSTEM;OPENSSL")
+CHECK_MD(SHA256 "LIBC;LIBC2;LIBC3;LIBMD;LIBSYSTEM;OPENSSL")
 CHECK_MD(SHA384 "LIBC;LIBC2;LIBC3;LIBSYSTEM;OPENSSL")
-CHECK_MD(SHA512 "LIBC;LIBC2;LIBC3;LIBSYSTEM;OPENSSL")
+CHECK_MD(SHA512 "LIBC;LIBC2;LIBC3;LIBMD;LIBSYSTEM;OPENSSL")
 CHECK_HASH_WIN("MD5;SHA1;SHA256;SHA384;SHA512")
 
 #
index b180da6714fc6810a8ac58ae3e653e1065fbf32b..da67a3026d6bc5bbcb14e93b56f643dfeca5f3c1 100644 (file)
@@ -79,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_LIBMD)
+#  include <md5.h>
+#  define ARCHIVE_HAS_MD5
+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 <CommonCrypto/CommonDigest.h>
 #  define ARCHIVE_HAS_MD5
@@ -125,6 +132,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_LIBMD)
+#  include <sha.h>
+#  define ARCHIVE_HAS_SHA1
+typedef SHA1_CTX archive_sha1_ctx;
+#  define archive_sha1_init(ctx)               SHA1_Init(ctx)
+#  define archive_sha1_final(ctx, buf)         SHA1_Final(buf, ctx)
+#  define archive_sha1_update(ctx, buf, n)     SHA1_Update(ctx, buf, n)
 #elif defined(ARCHIVE_HASH_SHA1_LIBSYSTEM)
 #  include <CommonCrypto/CommonDigest.h>
 #  define ARCHIVE_HAS_SHA1
@@ -169,6 +183,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_LIBMD)
+#  include <sha256.h>
+#  define ARCHIVE_HAS_SHA256
+typedef SHA256_CTX archive_sha256_ctx;
+#  define archive_sha256_init(ctx)             SHA256_Init(ctx)
+#  define archive_sha256_final(ctx, buf)       SHA256_Final(buf, ctx)
+#  define archive_sha256_update(ctx, buf, n)   SHA256_Update(ctx, buf, n)
 #elif defined(ARCHIVE_HASH_SHA256_LIBSYSTEM)
 #  include <CommonCrypto/CommonDigest.h>
 #  define ARCHIVE_HAS_SHA256
@@ -257,6 +278,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_LIBMD)
+#  include <sha512.h>
+#  define ARCHIVE_HAS_SHA512
+typedef SHA512_CTX archive_sha512_ctx;
+#  define archive_sha512_init(ctx)             SHA512_Init(ctx)
+#  define archive_sha512_final(ctx, buf)       SHA512_Final(buf, ctx)
+#  define archive_sha512_update(ctx, buf, n)   SHA512_Update(ctx, buf, n)
 #elif defined(ARCHIVE_HASH_SHA512_LIBSYSTEM)
 #  include <CommonCrypto/CommonDigest.h>
 #  define ARCHIVE_HAS_SHA512