#include <stdlib.h>
#include <string.h>
+#include <openssl/opensslconf.h>
#include <openssl/md5.h>
#ifndef MD5_LONG_LOG2
#endif
#ifdef MD5_ASM
-# if defined(__i386) || defined(WIN32)
+# if defined(__i386) || defined(_M_IX86)
# define md5_block_host_order md5_block_asm_host_order
# elif defined(__sparc) && defined(ULTRASPARC)
void md5_block_asm_data_order_aligned (MD5_CTX *c, const MD5_LONG *p,int num);
# endif
#endif
-void md5_block_host_order (MD5_CTX *c, const MD5_LONG *p,int num);
-void md5_block_data_order (MD5_CTX *c, const unsigned char *p,int num);
+void md5_block_host_order (MD5_CTX *c, const void *p,int num);
+void md5_block_data_order (MD5_CTX *c, const void *p,int num);
-#if defined(__i386)
+#if defined(__i386) || defined(_M_IX86)
/*
* *_block_host_order is expected to handle aligned data while
* *_block_data_order - unaligned. As algorithm and host (x86)
*
* <appro@fy.chalmers.se>
*/
-#define md5_block_data_order(c,p,num) md5_block_host_order((c),(const MD5_LONG *)(p),(num))
+#define md5_block_data_order md5_block_host_order
#endif
#define DATA_ORDER_IS_LITTLE_ENDIAN
#define HASH_TRANSFORM MD5_Transform
#define HASH_FINAL MD5_Final
#define HASH_BLOCK_HOST_ORDER md5_block_host_order
-#if defined(B_ENDIAN) || defined(md5_block_data_order)
+#if !defined(L_ENDIAN) || defined(md5_block_data_order)
#define HASH_BLOCK_DATA_ORDER md5_block_data_order
/*
* Little-endians (Intel and Alpha) feel better without this.
*/
#endif
+#ifndef FLAT_INC
#include "../md32_common.h"
+#else
+#include "md32_common.h"
+#endif
/*
#define F(x,y,z) (((x) & (y)) | ((~(x)) & (z)))