diff options
Diffstat (limited to 'devel/tcl-trf/files/patch-sha')
-rw-r--r-- | devel/tcl-trf/files/patch-sha | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/devel/tcl-trf/files/patch-sha b/devel/tcl-trf/files/patch-sha new file mode 100644 index 000000000000..74979787b75d --- /dev/null +++ b/devel/tcl-trf/files/patch-sha @@ -0,0 +1,197 @@ +--- generic/sha.c Wed Aug 9 15:13:18 2000 ++++ generic/sha.c Fri Feb 8 11:22:17 2002 +@@ -30,34 +30,6 @@ + #include "transformInt.h" + +-#ifndef WORDS_BIGENDIAN +-#define LITTLE_ENDIAN +-#endif +- +-#include "sha/sha.h" +- +-/* +- * Generator description +- * --------------------- +- * +- * The SHA alogrithm is used to compute a cryptographically strong +- * message digest. +- */ +- +-#define DIGEST_SIZE (SHA_DIGESTSIZE) +-#define CTX_TYPE sha_trf_info +-#define CHUNK_SIZE 256 +- +-/* We cannot use SHA_INFO directly as context cause 'sha_update' handles +- * a chunk smaller then CHUNK_SIZE bytes correct if and only if it is +- * the last chunk. This forces us to buffer the incoming bytes till a chunk +- * is complete before doing an update. +- */ +- +-typedef struct _sha_trf_info { +- SHA_INFO s; +- unsigned short count; +- unsigned char buf [CHUNK_SIZE]; /* SHA block */ +-} sha_trf_info; +- ++#include <sys/types.h> ++#include <sha.h> + + /* +@@ -76,9 +48,9 @@ + static Trf_MessageDigestDescription mdDescription = { /* THREADING: constant, read-only => safe */ + "sha", +- sizeof (CTX_TYPE), +- DIGEST_SIZE, +- MDsha_Start, ++ sizeof (SHA_CTX), ++ SHA_DIGEST_LENGTH, ++ SHA_Init, + MDsha_Update, +- MDsha_UpdateBuf, ++ SHA_Update, + MDsha_Final, + NULL +@@ -113,33 +85,4 @@ + *------------------------------------------------------* + * +- * MDsha_Start -- +- * +- * ------------------------------------------------* +- * Initialize the internal state of the message +- * digest generator. +- * ------------------------------------------------* +- * +- * Sideeffects: +- * As of the called procedure. +- * +- * Result: +- * None. +- * +- *------------------------------------------------------* +- */ +- +-static void +-MDsha_Start (context) +-VOID* context; +-{ +- sha_trf_info* s = (sha_trf_info*) context; +- +- memset (s, '\0', sizeof (sha_trf_info)); +- sha_init (&s->s); +-} +- +-/* +- *------------------------------------------------------* +- * + * MDsha_Update -- + * +@@ -163,79 +106,7 @@ + unsigned int character; + { +- sha_trf_info* s = (sha_trf_info*) context; +- +- s->buf [s->count] = character; +- s->count ++; ++ unsigned char buf = character; + +- if (s->count == CHUNK_SIZE) { +- sha_update (&s->s, s->buf, s->count); +- s->count = 0; +- } +-} +- +-/* +- *------------------------------------------------------* +- * +- * MDsha_UpdateBuf -- +- * +- * ------------------------------------------------* +- * Update the internal state of the message digest +- * generator for a character buffer. +- * ------------------------------------------------* +- * +- * Sideeffects: +- * As of the called procedure. +- * +- * Result: +- * None. +- * +- *------------------------------------------------------* +- */ +- +-static void +-MDsha_UpdateBuf (context, buffer, bufLen) +-VOID* context; +-unsigned char* buffer; +-int bufLen; +-{ +- sha_trf_info* s = (sha_trf_info*) context; +- +- if ((s->count + bufLen) < CHUNK_SIZE) { +- /* +- * Not enough for full chunk. Remember incoming +- * data and wait for another call containing more data. +- */ +- +- memcpy ((VOID*) (s->buf + s->count), (VOID*) buffer, bufLen); +- s->count += bufLen; +- } else { +- /* +- * Complete chunk with incoming data, update digest, +- * then use all chunks contained in the buffer. Remember +- * an incomplete chunk and wait for further calls. +- */ +- +- int k = CHUNK_SIZE - s->count; +- +- if (k < CHUNK_SIZE) { +- memcpy ((VOID*) (s->buf + s->count), (VOID*) buffer, k); +- +- sha_update (&s->s, s->buf, CHUNK_SIZE); +- +- buffer += k; +- bufLen -= k; +- } /* k == CHUNK_SIZE => internal buffer was empty, so skip it entirely */ +- +- while (bufLen > CHUNK_SIZE) { +- sha_update (&s->s, buffer, CHUNK_SIZE); +- +- buffer += CHUNK_SIZE; +- bufLen -= CHUNK_SIZE; +- } +- +- s->count = bufLen; +- if (bufLen > 0) +- memcpy ((VOID*) s->buf, (VOID*) buffer, bufLen); +- } ++ SHA_Update ((SHA_CTX*)context, &buf, 1); + } + +@@ -264,26 +135,4 @@ + VOID* digest; + { +- sha_trf_info* s = (sha_trf_info*) context; +- +- if (s->count > 0) { +- sha_update (&s->s, s->buf, s->count); +- } +- +- sha_final (&s->s); +- +-#ifndef WORDS_BIGENDIAN +- Trf_FlipRegisterLong (s->s.digest, SHA_DIGESTSIZE); +-#endif +- +- memcpy (digest, s->s.digest, SHA_DIGESTSIZE); ++ SHA_Final(digest, context); + } +- +-/* +- * External code from here on. +- * +- * To make smaller object code, but run a little slower, don't use UNROLL_LOOPS. +- * To use NIST's modified SHA of 7/11/94, define USE_MODIFIED_SHA +- */ +- +-#define UNROLL_LOOPS +-#include "sha/sha.c" |