summaryrefslogtreecommitdiff
path: root/devel/tcl-trf/files/patch-sha
diff options
context:
space:
mode:
Diffstat (limited to 'devel/tcl-trf/files/patch-sha')
-rw-r--r--devel/tcl-trf/files/patch-sha197
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"