From: Michihiro NAKAJIMA Date: Thu, 3 Dec 2009 13:51:27 +0000 (-0500) Subject: Properly use hash functions on Windows. X-Git-Tag: v2.8.0~120 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c726ee430b611beecfac4cf4071595afa98cc6a;p=thirdparty%2Flibarchive.git Properly use hash functions on Windows. SVN-Revision: 1697 --- diff --git a/libarchive/archive_hash.h b/libarchive/archive_hash.h index 2c4275211..83e16eea3 100644 --- a/libarchive/archive_hash.h +++ b/libarchive/archive_hash.h @@ -60,6 +60,12 @@ typedef MD5_CTX archive_md5_ctx; # define archive_md5_init(ctx) MD5_Init(ctx) # define archive_md5_final(ctx, buf) MD5_Final(buf, ctx) # define archive_md5_update(ctx, buf, n) MD5_Update(ctx, buf, n) +#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(CALG_MD5) +# define ARCHIVE_HAS_MD5 +typedef MD5_CTX archive_md5_ctx; +# define archive_md5_init(ctx) MD5_Init(ctx) +# define archive_md5_final(ctx, buf) MD5_Final(buf, ctx) +# define archive_md5_update(ctx, buf, n) MD5_Update(ctx, buf, n) #endif #if defined(HAVE_RMD160_H) && defined(HAVE_RMD160INIT) @@ -92,6 +98,12 @@ typedef SHA_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(_WIN32) && !defined(__CYGWIN__) && defined(CALG_SHA1) +# 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) #endif #if defined(HAVE_SHA2_H) && defined(HAVE_SHA256_INIT) @@ -115,6 +127,12 @@ 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(_WIN32) && !defined(__CYGWIN__) && defined(CALG_SHA_256) +# 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) #endif #if defined(HAVE_SHA2_H) && defined(HAVE_SHA384_INIT) @@ -138,6 +156,12 @@ typedef SHA512_CTX archive_sha384_ctx; # define archive_sha384_init(ctx) SHA384_Init(ctx) # define archive_sha384_final(ctx, buf) SHA384_Final(buf, ctx) # define archive_sha384_update(ctx, buf, n) SHA384_Update(ctx, buf, n) +#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(CALG_SHA_384) +# define ARCHIVE_HAS_SHA384 +typedef SHA512_CTX archive_sha384_ctx; +# define archive_sha384_init(ctx) SHA384_Init(ctx) +# define archive_sha384_final(ctx, buf) SHA384_Final(buf, ctx) +# define archive_sha384_update(ctx, buf, n) SHA384_Update(ctx, buf, n) #endif #if defined(HAVE_SHA2_H) && defined(HAVE_SHA512_INIT) @@ -161,4 +185,10 @@ 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(_WIN32) && !defined(__CYGWIN__) && defined(CALG_SHA_512) +# 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) #endif diff --git a/libarchive/archive_windows.c b/libarchive/archive_windows.c index c24a3f23e..744400282 100644 --- a/libarchive/archive_windows.c +++ b/libarchive/archive_windows.c @@ -1217,7 +1217,7 @@ void name ## _Update(Digest_CTX *ctx, const unsigned char *buf, size_t len)\ } #define DIGEST_FINAL(name, size) \ -void name ## _Final(unsigned char buf[size], Digest_CTX *ctx)\ +void name ## _Final(unsigned char *buf, Digest_CTX *ctx)\ {\ Digest_Final(buf, size, ctx);\ } diff --git a/libarchive/archive_windows.h b/libarchive/archive_windows.h index d8c59a06b..a401374c4 100644 --- a/libarchive/archive_windows.h +++ b/libarchive/archive_windows.h @@ -389,36 +389,31 @@ extern ssize_t __la_write(int fd, const void *buf, size_t nbytes); 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[MD5_DIGEST_LENGTH], - Digest_CTX *ctx); +extern void MD5_Final(unsigned char *buf, Digest_CTX *ctx); #endif #ifdef SHA1_DIGEST_LENGTH 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[SHA1_DIGEST_LENGTH], - Digest_CTX *ctx); +extern void SHA1_Final(unsigned char *buf, Digest_CTX *ctx); #endif #ifdef SHA256_DIGEST_LENGTH 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[SHA256_DIGEST_LENGTH], - Digest_CTX *ctx); +extern void SHA256_Final(unsigned char *buf, Digest_CTX *ctx); #endif #ifdef SHA384_DIGEST_LENGTH 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[SHA384_DIGEST_LENGTH], - Digest_CTX *ctx); +extern void SHA384_Final(unsigned char *buf, Digest_CTX *ctx); #endif #ifdef SHA512_DIGEST_LENGTH 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[SHA512_DIGEST_LENGTH], - Digest_CTX *ctx); +extern void SHA512_Final(unsigned char *buf, Digest_CTX *ctx); #endif #endif