From: Michihiro NAKAJIMA Date: Mon, 10 May 2010 15:34:32 +0000 (-0400) Subject: Tweak archive_windows.[ch] for ARCHIVE_HASH_*, new hash detection. X-Git-Tag: v3.0.0a~1017 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2f835787c41724a55d5c4af25750996127896832;p=thirdparty%2Flibarchive.git Tweak archive_windows.[ch] for ARCHIVE_HASH_*, new hash detection. SVN-Revision: 2378 --- diff --git a/libarchive/archive_windows.c b/libarchive/archive_windows.c index fac98a4be..23630d079 100644 --- a/libarchive/archive_windows.c +++ b/libarchive/archive_windows.c @@ -1177,7 +1177,9 @@ la_dosmaperr(unsigned long e) return; } -#if !defined(HAVE_OPENSSL_MD5_H) && !defined(HAVE_OPENSSL_SHA_H) +#if defined(ARCHIVE_HASH_MD5_WIN) ||\ + defined(ARCHIVE_HASH_SHA1) || defined(ARCHIVE_HASH_SHA256_WIN) ||\ + defined(ARCHIVE_HASH_SHA384) || defined(ARCHIVE_HASH_SHA512_WIN) /* * Message digest functions. */ @@ -1247,36 +1249,40 @@ void name ## _Final(unsigned char *buf, Digest_CTX *ctx)\ Digest_Final(buf, size, ctx);\ } +#if defined(ARCHIVE_HASH_MD5_WIN) DIGEST_INIT(MD5, CALG_MD5) DIGEST_UPDATE(MD5) DIGEST_FINAL(MD5, MD5_DIGEST_LENGTH) +#endif +#if defined(ARCHIVE_HASH_SHA1_WIN) DIGEST_INIT(SHA1, CALG_SHA1) DIGEST_UPDATE(SHA1) DIGEST_FINAL(SHA1, SHA1_DIGEST_LENGTH) +#endif /* * SHA256 nor SHA384 nor SHA512 are not supported on Windows XP and Windows 2000. */ -#ifdef CALG_SHA_256 +#if defined(ARCHIVE_HASH_SHA256_WIN) && defined(CALG_SHA_256) DIGEST_INIT(SHA256, CALG_SHA_256) DIGEST_UPDATE(SHA256) DIGEST_FINAL(SHA256, SHA256_DIGEST_LENGTH) #endif -#ifdef CALG_SHA_384 +#if defined(ARCHIVE_HASH_SHA384_WIN) && defined(CALG_SHA_384) DIGEST_INIT(SHA384, CALG_SHA_384) DIGEST_UPDATE(SHA384) DIGEST_FINAL(SHA384, SHA384_DIGEST_LENGTH) #endif -#ifdef CALG_SHA_512 +#if defined(ARCHIVE_HASH_SHA512_WIN) && defined(CALG_SHA_512) DIGEST_INIT(SHA512, CALG_SHA_512) DIGEST_UPDATE(SHA512) DIGEST_FINAL(SHA512, SHA384_DIGEST_LENGTH) #endif -#endif /* !HAVE_OPENSSL_MD5_H && !HAVE_OPENSSL_SHA_H */ +#endif /* defined(ARCHIVE_HASH_*_WIN) */ /* * Create a temporary file. diff --git a/libarchive/archive_windows.h b/libarchive/archive_windows.h index 1c90ddcf0..2d6c80733 100644 --- a/libarchive/archive_windows.h +++ b/libarchive/archive_windows.h @@ -300,7 +300,9 @@ struct _timeval64i32 { #endif /* Message digest define */ -#if !defined(HAVE_OPENSSL_MD5_H) && !defined(HAVE_OPENSSL_SHA_H) +#if defined(ARCHIVE_HASH_MD5_WIN) ||\ + defined(ARCHIVE_HASH_SHA1_WIN) || defined(ARCHIVE_HASH_SHA256_WIN) ||\ + defined(ARCHIVE_HASH_SHA384_WIN) || defined(ARCHIVE_HASH_SHA512_WIN) # if defined(_MSC_VER) && _MSC_VER < 1300 # define _WIN32_WINNT 0x0400 # endif @@ -312,33 +314,26 @@ typedef struct { } Digest_CTX; #endif -#if !defined(HAVE_OPENSSL_MD5_H) && defined(CALG_MD5) +#if defined(ARCHIVE_HASH_MD5_WIN) #define MD5_DIGEST_LENGTH 16 -#define HAVE_MD5 1 #define MD5_CTX Digest_CTX #endif -#ifndef HAVE_OPENSSL_SHA_H -#ifdef CALG_SHA1 +#if defined(ARCHIVE_HASH_SHA1_WIN) #define SHA1_DIGEST_LENGTH 20 -#define HAVE_SHA1 1 #define SHA1_CTX Digest_CTX #endif -#ifdef CALG_SHA_256 +#if defined(ARCHIVE_HASH_SHA256_WIN) #define SHA256_DIGEST_LENGTH 32 -#define HAVE_SHA256 1 #define SHA256_CTX Digest_CTX #endif -#ifdef CALG_SHA_384 +#if defined(ARCHIVE_HASH_SHA384_WIN) #define SHA384_DIGEST_LENGTH 48 -#define HAVE_SHA384 1 #define SHA384_CTX Digest_CTX #endif -#ifdef CALG_SHA_512 +#if defined(ARCHIVE_HASH_SHA512_WIN) #define SHA512_DIGEST_LENGTH 64 -#define HAVE_SHA512 1 #define SHA512_CTX Digest_CTX #endif -#endif /* HAVE_OPENSSL_SHA_H */ /* End of Win32 definitions. */ @@ -384,37 +379,35 @@ extern ssize_t __la_write(int fd, const void *buf, size_t nbytes); #define WEXITSTATUS(sts) (sts & 0x0FF) /* Message digest function */ -#if !defined(HAVE_OPENSSL_MD5_H) && !defined(HAVE_OPENSSL_SHA_H) -#ifdef MD5_DIGEST_LENGTH +#if defined(ARCHIVE_HASH_MD5_WIN) extern void MD5_Init(Digest_CTX *ctx); extern void MD5_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len); extern void MD5_Final(unsigned char *buf, Digest_CTX *ctx); #endif -#ifdef SHA1_DIGEST_LENGTH +#if defined(ARCHIVE_HASH_SHA1_WIN) extern void SHA1_Init(Digest_CTX *ctx); extern void SHA1_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len); extern void SHA1_Final(unsigned char *buf, Digest_CTX *ctx); #endif -#ifdef SHA256_DIGEST_LENGTH +#if defined(ARCHIVE_HASH_SHA256_WIN) extern void SHA256_Init(Digest_CTX *ctx); extern void SHA256_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len); extern void SHA256_Final(unsigned char *buf, Digest_CTX *ctx); #endif -#ifdef SHA384_DIGEST_LENGTH +#if defined(ARCHIVE_HASH_SHA384_WIN) extern void SHA384_Init(Digest_CTX *ctx); extern void SHA384_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len); extern void SHA384_Final(unsigned char *buf, Digest_CTX *ctx); #endif -#ifdef SHA512_DIGEST_LENGTH +#if defined(ARCHIVE_HASH_SHA512_WIN) extern void SHA512_Init(Digest_CTX *ctx); extern void SHA512_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len); extern void SHA512_Final(unsigned char *buf, Digest_CTX *ctx); #endif -#endif #endif /* LIBARCHIVE_ARCHIVE_WINDOWS_H_INCLUDED */