# 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)
# 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)
# 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)
# 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)
# 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
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