diff options
author | Andy Polyakov <appro@openssl.org> | 1999-08-28 16:41:03 +0400 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 1999-08-28 16:41:03 +0400 |
commit | 1cbde6e4fa6a5bde5a62109acb58e02f1990608f (patch) | |
tree | 30f9318851bfee6f454850abcb73e46af77d5073 /crypto | |
parent | 87a25f90324aa6f48d903a22852ff2ce1aa9dde0 (diff) |
md32_common.h update and accompanying MD5 update.
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/md32_common.h | 15 | ||||
-rw-r--r-- | crypto/md5/md5_locl.h | 11 |
2 files changed, 19 insertions, 7 deletions
diff --git a/crypto/md32_common.h b/crypto/md32_common.h index 2b91f9eef2..5e62d40523 100644 --- a/crypto/md32_common.h +++ b/crypto/md32_common.h @@ -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: * @@ -178,7 +180,9 @@ #undef ROTATE #ifndef PEDANTIC # if defined(_MSC_VER) -# define ROTATE(a,n) _lrotl(a,n) +# 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 diff --git a/crypto/md5/md5_locl.h b/crypto/md5/md5_locl.h index 9d04696dbd..84723439e0 100644 --- a/crypto/md5/md5_locl.h +++ b/crypto/md5/md5_locl.h @@ -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 |