diff options
author | Mikhail Teterin <mi@FreeBSD.org> | 2009-07-13 05:30:15 +0000 |
---|---|---|
committer | Mikhail Teterin <mi@FreeBSD.org> | 2009-07-13 05:30:15 +0000 |
commit | 52b76e132728a3a0e13436f09f10391aec3e259b (patch) | |
tree | 8034266eeceaa3f8301733562c746f4e853afb28 /devel/tcl-trf/files/patch-sha | |
parent | - Update to 1.1.1 (diff) |
Resurrect this port from the Attic based on the new version from the
author. As before, we modify the author's code to use either OpenSSL's
-lcrypto or BSD's -lmd /directly/ instead of compiling the bundled
definitions digests.
We also link with -lz and -lbz2 instead of dlopen-ing them at run-time.
Notes
Notes:
svn path=/head/; revision=237667
Diffstat (limited to 'devel/tcl-trf/files/patch-sha')
-rw-r--r-- | devel/tcl-trf/files/patch-sha | 244 |
1 files changed, 244 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..ecf491b8df47 --- /dev/null +++ b/devel/tcl-trf/files/patch-sha @@ -0,0 +1,244 @@ +--- generic/sha.c 2009-07-12 21:34:41.000000000 -0400 ++++ generic/sha.c 2009-07-12 23:11:26.000000000 -0400 +@@ -29,12 +29,5 @@ + + #include "transformInt.h" +-#include "sha/sha.h" +- +-#ifdef WORDS_BIGENDIAN +-#undef LITTLE_ENDIAN +-#else +-#undef LITTLE_ENDIAN +-#define LITTLE_ENDIAN +-#endif ++#include <openssl/sha.h> + + /* +@@ -46,30 +39,8 @@ + */ + +-#define DIGEST_SIZE (SHA_DIGESTSIZE) +-#define CTX_TYPE sha_trf_info ++#define DIGEST_SIZE (20) ++#define CTX_TYPE SHA_CTX + #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; +- +- +-/* +- * Declarations of internal procedures. +- */ +- +-static void MDsha_Start _ANSI_ARGS_ ((VOID* context)); +-static void MDsha_Update _ANSI_ARGS_ ((VOID* context, unsigned int character)); +-static void MDsha_UpdateBuf _ANSI_ARGS_ ((VOID* context, unsigned char* buffer, int bufLen)); +-static void MDsha_Final _ANSI_ARGS_ ((VOID* context, VOID* digest)); +- + /* + * Generator definition. +@@ -80,8 +51,8 @@ + sizeof (CTX_TYPE), + DIGEST_SIZE, +- MDsha_Start, +- MDsha_Update, +- MDsha_UpdateBuf, +- MDsha_Final, ++ (Trf_MDStart *)SHA_Init, ++ NULL, ++ (Trf_MDUpdateBuf *)SHA_Update, ++ (Trf_MDFinal *)SHA_Final, + NULL + }; +@@ -111,181 +82,2 @@ + return Trf_RegisterMessageDigest (interp, &mdDescription); + } +- +-/* +- *------------------------------------------------------* +- * +- * 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 -- +- * +- * ------------------------------------------------* +- * Update the internal state of the message digest +- * generator for a single character. +- * ------------------------------------------------* +- * +- * Sideeffects: +- * As of the called procedure. +- * +- * Result: +- * None. +- * +- *------------------------------------------------------* +- */ +- +-static void +-MDsha_Update (context, character) +-VOID* context; +-unsigned int character; +-{ +- sha_trf_info* s = (sha_trf_info*) context; +- +- s->buf [s->count] = character; +- s->count ++; +- +- 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); +- } +-} +- +-/* +- *------------------------------------------------------* +- * +- * MDsha_Final -- +- * +- * ------------------------------------------------* +- * Generate the digest from the internal state of +- * the message digest generator. +- * ------------------------------------------------* +- * +- * Sideeffects: +- * As of the called procedure. +- * +- * Result: +- * None. +- * +- *------------------------------------------------------* +- */ +- +-static void +-MDsha_Final (context, digest) +-VOID* context; +-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); +-} +- +-/* +- * 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" |