Commit 1cbde6e4 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

md32_common.h update and accompanying MD5 update.

parent 87a25f90
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -94,6 +94,8 @@
 *	in original (data) byte order, implemented externally (it
 *	actually is optional if data and host are of the same
 *	"endianess").
 * HASH_MAKE_STRING
 *	macro convering context variables to an ASCII hash string.
 *
 * Optional macros:
 *
@@ -179,6 +181,8 @@
#ifndef PEDANTIC
# if defined(_MSC_VER)
#  define ROTATE(a,n)	_lrotl(a,n)
# elif defined(__MWERKS__)
#  define ROTATE(a,n)	__rol(a,n)
# elif defined(__GNUC__) && __GNUC__>=2 && !defined(NO_ASM)
  /*
   * Some GNU C inline assembler templates. Note that these are
@@ -581,10 +585,11 @@ void HASH_FINAL (unsigned char *md, HASH_CTX *c)
#endif
	HASH_BLOCK_HOST_ORDER (c,p,1);

	l=c->A; HOST_l2c(l,md);
	l=c->B; HOST_l2c(l,md);
	l=c->C; HOST_l2c(l,md);
	l=c->D; HOST_l2c(l,md);
#ifndef HASH_MAKE_STRING
#error "HASH_MAKE_STRING must be defined!"
#else
	HASH_MAKE_STRING(c,md);
#endif

	c->num=0;
	/* clear stuff, HASH_BLOCK may be leaving some stuff on the stack
+9 −2
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@
#endif

#ifdef MD5_ASM
# if defined(__i386) || defined(_M_IX86)
# if defined(__i386) || defined(_M_IX86) || defined(__INTEL__)
#  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);
@@ -77,7 +77,7 @@
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) || defined(_M_IX86)
#if defined(__i386) || defined(_M_IX86) || defined(__INTEL__)
/*
 * *_block_host_order is expected to handle aligned data while
 * *_block_data_order - unaligned. As algorithm and host (x86)
@@ -112,6 +112,13 @@ void md5_block_data_order (MD5_CTX *c, const void *p,int num);
#define HASH_UPDATE		MD5_Update
#define HASH_TRANSFORM		MD5_Transform
#define HASH_FINAL		MD5_Final
#define	HASH_MAKE_STRING(c,s)	do {	\
	unsigned long l;		\
	l=(c)->A; HOST_l2c(l,(s));	\
	l=(c)->B; HOST_l2c(l,(s));	\
	l=(c)->C; HOST_l2c(l,(s));	\
	l=(c)->D; HOST_l2c(l,(s));	\
	} while (0)
#define HASH_BLOCK_HOST_ORDER	md5_block_host_order
#if !defined(L_ENDIAN) || defined(md5_block_data_order)
#define	HASH_BLOCK_DATA_ORDER	md5_block_data_order