diff --git a/src/include/sha1.h b/src/include/sha1.h index ab459437..cb5f6b1e 100644 --- a/src/include/sha1.h +++ b/src/include/sha1.h @@ -1,4 +1,4 @@ -/* $OpenBSD: sha1.h,v 1.21 2004/05/03 18:05:08 millert Exp $ */ +/* $OpenBSD: sha1.h,v 1.22 2004/05/05 17:09:45 millert Exp $ */ /* * SHA-1 in C @@ -24,7 +24,7 @@ typedef struct { __BEGIN_DECLS void SHA1Init(SHA1_CTX *); void SHA1Pad(SHA1_CTX *); -void SHA1Transform(u_int32_t [5], u_int8_t [SHA1_BLOCK_LENGTH]) +void SHA1Transform(u_int32_t [5], const u_int8_t [SHA1_BLOCK_LENGTH]) __attribute__((__bounded__(__minbytes__,1,5))) __attribute__((__bounded__(__minbytes__,2,SHA1_BLOCK_LENGTH))); void SHA1Update(SHA1_CTX *, const u_int8_t *, size_t) diff --git a/src/lib/libc/hash/sha1.3 b/src/lib/libc/hash/sha1.3 index 9028bbdb..6fae362f 100644 --- a/src/lib/libc/hash/sha1.3 +++ b/src/lib/libc/hash/sha1.3 @@ -1,4 +1,4 @@ -.\" $OpenBSD: sha1.3,v 1.31 2004/05/03 18:10:07 millert Exp $ +.\" $OpenBSD: sha1.3,v 1.32 2004/05/05 17:09:46 millert Exp $ .\" .\" Copyright (c) 1997, 2004 Todd C. Miller .\" @@ -43,7 +43,7 @@ .Ft void .Fn SHA1Final "u_int8_t digest[SHA1_DIGEST_LENGTH]" "SHA1_CTX *context" .Ft void -.Fn SHA1Transform "u_int32_t state[5]" "u_int8_t buffer[SHA1_BLOCK_LENGTH]" +.Fn SHA1Transform "u_int32_t state[5]" "const u_int8_t buffer[SHA1_BLOCK_LENGTH]" .Ft "char *" .Fn SHA1End "SHA1_CTX *context" "char *buf" .Ft "char *" diff --git a/src/lib/libc/hash/sha1.c b/src/lib/libc/hash/sha1.c index 81c04a76..bb901ff4 100644 --- a/src/lib/libc/hash/sha1.c +++ b/src/lib/libc/hash/sha1.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sha1.c,v 1.17 2004/05/03 18:05:08 millert Exp $ */ +/* $OpenBSD: sha1.c,v 1.18 2004/05/05 17:09:46 millert Exp $ */ /* * SHA-1 in C @@ -15,11 +15,9 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$OpenBSD: sha1.c,v 1.17 2004/05/03 18:05:08 millert Exp $"; +static const char rcsid[] = "$OpenBSD: sha1.c,v 1.18 2004/05/05 17:09:46 millert Exp $"; #endif /* LIBC_SCCS and not lint */ -#define SHA1HANDSOFF /* Copies data before messing with it. */ - #include #include #include @@ -52,22 +50,17 @@ static char rcsid[] = "$OpenBSD: sha1.c,v 1.17 2004/05/03 18:05:08 millert Exp $ * Hash a single 512-bit block. This is the core of the algorithm. */ void -SHA1Transform(u_int32_t state[5], u_int8_t buffer[SHA1_BLOCK_LENGTH]) +SHA1Transform(u_int32_t state[5], const u_int8_t buffer[SHA1_BLOCK_LENGTH]) { u_int32_t a, b, c, d, e; + u_int8_t workspace[SHA1_BLOCK_LENGTH]; typedef union { u_int8_t c[64]; u_int32_t l[16]; } CHAR64LONG16; - CHAR64LONG16 *block; + CHAR64LONG16 *block = (CHAR64LONG16 *)workspace; -#ifdef SHA1HANDSOFF - u_int8_t workspace[SHA1_BLOCK_LENGTH]; - block = (CHAR64LONG16 *)workspace; (void)memcpy(block, buffer, SHA1_BLOCK_LENGTH); -#else - block = (CHAR64LONG16 *)buffer; -#endif /* Copy context->state[] to working vars */ a = state[0];