From bba7f08d2788bc9bc30a7a60fdfd873a73fead9a Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Mon, 29 May 2006 05:51:12 +0000 Subject: Add SWAP_LE?? and SWAP_BE?? macros, and make things use them. Converts values to/from little endian or big endian, which is a NOP if that's what the current platform already is. --- libbb/md5.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'libbb') diff --git a/libbb/md5.c b/libbb/md5.c index 584f5fe..58be40b 100644 --- a/libbb/md5.c +++ b/libbb/md5.c @@ -27,15 +27,6 @@ # define MD5_SIZE_VS_SPEED CONFIG_MD5_SIZE_VS_SPEED # endif -/* Handle endian-ness */ -# if !BB_BIG_ENDIAN -# define SWAP(n) (n) -# elif defined(bswap_32) -# define SWAP(n) bswap_32(n) -# else -# define SWAP(n) ((n << 24) | ((n&0xFF00)<<8) | ((n&0xFF0000)>>8) | (n>>24)) -# endif - /* Initialize structure containing state of computation. * (RFC 1321, 3.3: Step 3) */ @@ -132,7 +123,7 @@ static void md5_hash_block(const void *buffer, md5_ctx_t *ctx) uint32_t temp; for (i = 0; i < 16; i++) { - cwp[i] = SWAP(words[i]); + cwp[i] = SWAP_LE32(words[i]); } words += 16; @@ -224,7 +215,7 @@ static void md5_hash_block(const void *buffer, md5_ctx_t *ctx) # define OP(a, b, c, d, s, T) \ do \ { \ - a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \ + a += FF (b, c, d) + (*cwp++ = SWAP_LE32(*words)) + T; \ ++words; \ CYCLIC (a, s); \ a += b; \ @@ -455,10 +446,10 @@ void *md5_end(void *resbuf, md5_ctx_t *ctx) * IMPORTANT: On some systems it is required that RESBUF is correctly * aligned for a 32 bits value. */ - ((uint32_t *) resbuf)[0] = SWAP(ctx->A); - ((uint32_t *) resbuf)[1] = SWAP(ctx->B); - ((uint32_t *) resbuf)[2] = SWAP(ctx->C); - ((uint32_t *) resbuf)[3] = SWAP(ctx->D); + ((uint32_t *) resbuf)[0] = SWAP_LE32(ctx->A); + ((uint32_t *) resbuf)[1] = SWAP_LE32(ctx->B); + ((uint32_t *) resbuf)[2] = SWAP_LE32(ctx->C); + ((uint32_t *) resbuf)[3] = SWAP_LE32(ctx->D); return resbuf; } -- cgit v1.1