X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=libbb%2Fsha1.c;h=552dcad8070c964da147974f2607e24c31a33c9a;hb=04087c6bbd247ef5802de3f8bd625fa3643e23e2;hp=31b55b1da7a7ef9542184572af093b7e1491bfba;hpb=63fc1a9e08fabfc8ba96bad80731673ef40bf5cb;p=oweals%2Fbusybox.git diff --git a/libbb/sha1.c b/libbb/sha1.c index 31b55b1da..552dcad80 100644 --- a/libbb/sha1.c +++ b/libbb/sha1.c @@ -6,31 +6,9 @@ * Copyright (C) 2002 Dr Brian Gladman , Worcester, UK. * Copyright (C) 2003 Glenn L. McGrath * Copyright (C) 2003 Erik Andersen - * - * LICENSE TERMS * - * The free distribution and use of this software in both source and binary - * form is allowed (with or without changes) provided that: + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. * - * 1. distributions of this source code include the above copyright - * notice, this list of conditions and the following disclaimer; - * - * 2. distributions in binary form include the above copyright - * notice, this list of conditions and the following disclaimer - * in the documentation and/or other associated materials; - * - * 3. the copyright holder's name is not used to endorse products - * built using this software without specific written permission. - * - * ALTERNATIVELY, provided that this notice is retained in full, this product - * may be distributed under the terms of the GNU General Public License (GPL), - * in which case the provisions of the GPL apply INSTEAD OF those given above. - * - * DISCLAIMER - * - * This software is provided 'as is' with no explicit or implied warranties - * in respect of its properties, including, but not limited to, correctness - * and/or fitness for purpose. * --------------------------------------------------------------------------- * Issue Date: 10/11/2002 * @@ -38,37 +16,30 @@ * stored in memory. It runs at 22 cycles per byte on a Pentium P4 processor */ -#include -#include -#include -#include -#include -#include -#include - #include "libbb.h" -# define SHA1_BLOCK_SIZE 64 -# define SHA1_DIGEST_SIZE 20 -# define SHA1_HASH_SIZE SHA1_DIGEST_SIZE -# define SHA2_GOOD 0 -# define SHA2_BAD 1 +#define SHA1_BLOCK_SIZE 64 +#define SHA1_DIGEST_SIZE 20 +#define SHA1_HASH_SIZE SHA1_DIGEST_SIZE +#define SHA2_GOOD 0 +#define SHA2_BAD 1 -# define rotl32(x,n) (((x) << n) | ((x) >> (32 - n))) +#define rotl32(x,n) (((x) << n) | ((x) >> (32 - n))) -# define SHA1_MASK (SHA1_BLOCK_SIZE - 1) +#define SHA1_MASK (SHA1_BLOCK_SIZE - 1) /* reverse byte order in 32-bit words */ -#define ch(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) -#define parity(x,y,z) ((x) ^ (y) ^ (z)) -#define maj(x,y,z) (((x) & (y)) | ((z) & ((x) | (y)))) +#define ch(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) +#define parity(x,y,z) ((x) ^ (y) ^ (z)) +#define maj(x,y,z) (((x) & (y)) | ((z) & ((x) | (y)))) /* A normal version as set out in the FIPS. This version uses */ /* partial loop unrolling and is optimised for the Pentium 4 */ -# define rnd(f,k) \ - t = a; a = rotl32(a,5) + f(b,c,d) + e + k + w[i]; \ - e = d; d = c; c = rotl32(b, 30); b = t - +#define rnd(f,k) \ + do { \ + t = a; a = rotl32(a,5) + f(b,c,d) + e + k + w[i]; \ + e = d; d = c; c = rotl32(b, 30); b = t; \ + } while (0) static void sha1_compile(sha1_ctx_t *ctx) { @@ -182,7 +153,7 @@ void *sha1_end(void *resbuf, sha1_ctx_t *ctx) ctx->wbuf[cnt++] = 0; /* assemble the eight byte counter in the buffer in big-endian */ - /* format */ + /* format */ ctx->wbuf[14] = htonl((ctx->count[1] << 3) | (ctx->count[0] >> 29)); ctx->wbuf[15] = htonl(ctx->count[0] << 3); @@ -194,8 +165,6 @@ void *sha1_end(void *resbuf, sha1_ctx_t *ctx) for (i = 0; i < SHA1_DIGEST_SIZE; ++i) hval[i] = (unsigned char) (ctx->hash[i >> 2] >> 8 * (~i & 3)); - + return resbuf; } - -