From: Michihiro NAKAJIMA Date: Wed, 12 May 2010 08:59:09 +0000 (-0400) Subject: This is a part of r2388. I forgot. X-Git-Tag: v3.0.0a~1008 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a4bdde3307dcd4b3c728ed707dead9fc1c1e2cc4;p=thirdparty%2Flibarchive.git This is a part of r2388. I forgot. Use directoly CALG_* macro to work CHECK_MD() with ARCHIVE_HASH_*_WIN. SVN-Revision: 2389 --- diff --git a/libarchive/archive_hash.h b/libarchive/archive_hash.h index 5910c7889..8dfcdb2d3 100644 --- a/libarchive/archive_hash.h +++ b/libarchive/archive_hash.h @@ -52,8 +52,8 @@ * - MD5, SHA1 and SHA2 in libcrypto: with _ after algorithm name * * Windows: - * - MD5, SHA1 and SHA2 in archive_windows.c: with _ after algorithm name - * and __la_ prefix. + * - MD5, SHA1 and SHA2 in archive_windows.c: without algorithm name + * and with __la_ prefix. */ #if defined(ARCHIVE_HASH_MD5_WIN) ||\ defined(ARCHIVE_HASH_SHA1_WIN) || defined(ARCHIVE_HASH_SHA256_WIN) ||\ @@ -64,6 +64,9 @@ typedef struct { HCRYPTPROV cryptProv; HCRYPTHASH hash; } Digest_CTX; +extern void __la_hash_Init(Digest_CTX *, ALG_ID); +extern void __la_hash_Final(unsigned char *, size_t, Digest_CTX *); +extern void __la_hash_Update(Digest_CTX *, const unsigned char *, size_t); #endif #if defined(ARCHIVE_HASH_MD5_LIBC) @@ -84,12 +87,9 @@ typedef MD5_CTX archive_md5_ctx; # define ARCHIVE_HAS_MD5 # define MD5_DIGEST_LENGTH 16 typedef Digest_CTX archive_md5_ctx; -extern void __la_MD5_Init(Digest_CTX *); -extern void __la_MD5_Final(unsigned char *, Digest_CTX *); -extern void __la_MD5_Update(Digest_CTX *, const unsigned char *, size_t); -# define archive_md5_init(ctx) __la_MD5_Init(ctx) -# define archive_md5_final(ctx, buf) __la_MD5_Final(buf, ctx) -# define archive_md5_update(ctx, buf, n) __la_MD5_Update(ctx, buf, n) +# define archive_md5_init(ctx) __la_hash_Init(ctx, CALG_MD5) +# define archive_md5_final(ctx, buf) __la_hash_Final(buf, MD5_DIGEST_LENGTH, ctx) +# define archive_md5_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif #if defined(ARCHIVE_HASH_RMD160_LIBC) @@ -126,12 +126,9 @@ typedef SHA_CTX archive_sha1_ctx; # define ARCHIVE_HAS_SHA1 # define SHA1_DIGEST_LENGTH 20 typedef Digest_CTX archive_sha1_ctx; -extern void __la_SHA1_Init(Digest_CTX *); -extern void __la_SHA1_Final(unsigned char *, Digest_CTX *); -extern void __la_SHA1_Update(Digest_CTX *, const unsigned char *, size_t); -# define archive_sha1_init(ctx) __la_SHA1_Init(ctx) -# define archive_sha1_final(ctx, buf) __la_SHA1_Final(buf, ctx) -# define archive_sha1_update(ctx, buf, n) __la_SHA1_Update(ctx, buf, n) +# define archive_sha1_init(ctx) __la_hash_Init(ctx, CALG_SHA1) +# define archive_sha1_final(ctx, buf) __la_hash_Final(buf, SHA1_DIGEST_LENGTH, ctx) +# define archive_sha1_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif #if defined(ARCHIVE_HASH_SHA256_LIBC) @@ -166,12 +163,9 @@ typedef SHA256_CTX archive_sha256_ctx; # define ARCHIVE_HAS_SHA256 # define SHA256_DIGEST_LENGTH 32 typedef Digest_CTX archive_sha256_ctx; -extern void __la_SHA256_Init(Digest_CTX *); -extern void __la_SHA256_Final(unsigned char *, Digest_CTX *); -extern void __la_SHA256_Update(Digest_CTX *, const unsigned char *, size_t); -# define archive_sha256_init(ctx) __la_SHA256_Init(ctx) -# define archive_sha256_final(ctx, buf) __la_SHA256_Final(buf, ctx) -# define archive_sha256_update(ctx, buf, n) __la_SHA256_Update(ctx, buf, n) +# define archive_sha256_init(ctx) __la_hash_Init(ctx, CALG_SHA_256) +# define archive_sha256_final(ctx, buf) __la_hash_Final(buf, SHA256_DIGEST_LENGTH, ctx) +# define archive_sha256_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif #if defined(ARCHIVE_HASH_SHA384_LIBC) @@ -206,12 +200,9 @@ typedef SHA512_CTX archive_sha384_ctx; # define ARCHIVE_HAS_SHA384 # define SHA384_DIGEST_LENGTH 48 typedef Digest_CTX archive_sha384_ctx; -extern void __la_SHA384_Init(Digest_CTX *); -extern void __la_SHA384_Final(unsigned char *, Digest_CTX *); -extern void __la_SHA384_Update(Digest_CTX *, const unsigned char *, size_t); -# define archive_sha384_init(ctx) __la_SHA384_Init(ctx) -# define archive_sha384_final(ctx, buf) __la_SHA384_Final(buf, ctx) -# define archive_sha384_update(ctx, buf, n) __la_SHA384_Update(ctx, buf, n) +# define archive_sha384_init(ctx) __la_hash_Init(ctx, CALG_SHA_384) +# define archive_sha384_final(ctx, buf) __la_hash_Final(buf, SHA384_DIGEST_LENGTH, ctx) +# define archive_sha384_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif #if defined(ARCHIVE_HASH_SHA512_LIBC) @@ -246,10 +237,7 @@ typedef SHA512_CTX archive_sha512_ctx; # define ARCHIVE_HAS_SHA512 # define SHA512_DIGEST_LENGTH 64 typedef Digest_CTX archive_sha512_ctx; -extern void __la_SHA512_Init(Digest_CTX *); -extern void __la_SHA512_Final(unsigned char *, Digest_CTX *); -extern void __la_SHA512_Update(Digest_CTX *, const unsigned char *, size_t); -# define archive_sha512_init(ctx) __la_SHA512_Init(ctx) -# define archive_sha512_final(ctx, buf) __la_SHA512_Final(buf, ctx) -# define archive_sha512_update(ctx, buf, n) __la_SHA512_Update(ctx, buf, n) +# define archive_sha512_init(ctx) __la_hash_Init(ctx, CALG_SHA_512) +# define archive_sha512_final(ctx, buf) __la_hash_Final(buf, SHA512_DIGEST_LENGTH, ctx) +# define archive_sha512_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif diff --git a/libarchive/archive_windows.c b/libarchive/archive_windows.c index 84606579c..7b7d1ba61 100644 --- a/libarchive/archive_windows.c +++ b/libarchive/archive_windows.c @@ -1184,8 +1184,8 @@ la_dosmaperr(unsigned long e) /* * Message digest functions. */ -static void -Digest_Init(Digest_CTX *ctx, ALG_ID algId) +void +__la_hash_Init(Digest_CTX *ctx, ALG_ID algId) { ctx->valid = 0; @@ -1206,8 +1206,8 @@ Digest_Init(Digest_CTX *ctx, ALG_ID algId) ctx->valid = 1; } -static void -Digest_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) +void +__la_hash_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) @@ -1218,8 +1218,8 @@ Digest_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) (DWORD)len, 0); } -static void -Digest_Final(unsigned char *buf, int bufsize, Digest_CTX *ctx) +void +__la_hash_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { DWORD siglen = bufsize; @@ -1232,57 +1232,6 @@ Digest_Final(unsigned char *buf, int bufsize, Digest_CTX *ctx) ctx->valid = 0; } -#define DIGEST_INIT(name, algid) \ -void __la_ ## name ## _Init(Digest_CTX *ctx)\ -{\ - Digest_Init(ctx, algid);\ -} - -#define DIGEST_UPDATE(name) \ -void __la_ ## name ## _Update(Digest_CTX *ctx, const unsigned char *buf, size_t len)\ -{\ - Digest_Update(ctx, buf, len);\ -} - -#define DIGEST_FINAL(name, size) \ -void __la_ ## 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. - */ -#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 - -#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 - -#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 /* defined(ARCHIVE_HASH_*_WIN) */ /*