diff --git a/libarchive/archive_crypto.c b/libarchive/archive_crypto.c index 8e792e52c..2caf57169 100644 --- a/libarchive/archive_crypto.c +++ b/libarchive/archive_crypto.c @@ -30,6 +30,12 @@ #include "archive.h" #include "archive_crypto_private.h" +/* In particular, force the configure probe to break if it tries + * to test a combination of OpenSSL and libmd. */ +#if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) +#error Cannot use both OpenSSL and libmd. +#endif + /* * Message digest functions for Windows platform. */ diff --git a/libarchive/archive_crypto_private.h b/libarchive/archive_crypto_private.h index 24754a017..f8b1fb3c3 100644 --- a/libarchive/archive_crypto_private.h +++ b/libarchive/archive_crypto_private.h @@ -79,6 +79,14 @@ #endif /* libmd crypto headers */ +#if defined(ARCHIVE_CRYPTO_MD5_LIBMD) ||\ + defined(ARCHIVE_CRYPTO_RMD160_LIBMD) ||\ + defined(ARCHIVE_CRYPTO_SHA1_LIBMD) ||\ + defined(ARCHIVE_CRYPTO_SHA256_LIBMD) ||\ + defined(ARCHIVE_CRYPTO_SHA512_LIBMD) +#define ARCHIVE_CRYPTO_LIBMD 1 +#endif + #if defined(ARCHIVE_CRYPTO_MD5_LIBMD) #include #endif @@ -125,6 +133,7 @@ defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) ||\ defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) ||\ defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) +#define ARCHIVE_CRYPTO_OPENSSL 1 #include #endif