--- generic/sha1.c	2009-06-18 00:54:44.000000000 -0400
+++ generic/sha1.c	2009-07-12 23:39:47.000000000 -0400
@@ -28,5 +28,6 @@
  */
 
-#include "loadman.h"
+#include "transformInt.h"
+#include <openssl/sha.h>
 
 /*
@@ -39,5 +40,5 @@
 
 #ifndef OTP
-#define DIGEST_SIZE               (SHA_DIGEST_LENGTH)
+#define DIGEST_SIZE               (20)
 #else
 #define DIGEST_SIZE               (8)
@@ -49,9 +50,7 @@
  */
 
-static void MDsha1_Start     _ANSI_ARGS_ ((VOID* context));
-static void MDsha1_Update    _ANSI_ARGS_ ((VOID* context, unsigned int character));
-static void MDsha1_UpdateBuf _ANSI_ARGS_ ((VOID* context, unsigned char* buffer, int bufLen));
-static void MDsha1_Final     _ANSI_ARGS_ ((VOID* context, VOID* digest));
-static int  MDsha1_Check     _ANSI_ARGS_ ((Tcl_Interp* interp));
+#ifdef OTP
+static void MDsha1_OTP_Final     _ANSI_ARGS_ ((VOID* context, VOID* digest));
+#endif
 
 /*
@@ -67,9 +66,13 @@
   sizeof (CTX_TYPE),
   DIGEST_SIZE,
-  MDsha1_Start,
-  MDsha1_Update,
-  MDsha1_UpdateBuf,
-  MDsha1_Final,
-  MDsha1_Check
+  (Trf_MDStart *)SHA1_Init,
+  NULL,
+  (Trf_MDUpdateBuf *)SHA1_Update,
+#ifdef OTP
+  MDsha1_OTP_Final,
+#else
+  (Trf_MDFinal *)SHA1_Final,
+#endif
+  NULL,
 };
 
@@ -103,91 +106,9 @@
 }
 
+#ifdef OTP
 /*
  *------------------------------------------------------*
  *
- *	MDsha1_Start --
- *
- *	------------------------------------------------*
- *	Initialize the internal state of the message
- *	digest generator.
- *	------------------------------------------------*
- *
- *	Sideeffects:
- *		As of the called procedure.
- *
- *	Result:
- *		None.
- *
- *------------------------------------------------------*
- */
-
-static void
-MDsha1_Start (context)
-VOID* context;
-{
-  sha1f.init ((SHA_CTX*) context);
-}
-
-/*
- *------------------------------------------------------*
- *
- *	MDsha1_Update --
- *
- *	------------------------------------------------*
- *	Update the internal state of the message digest
- *	generator for a single character.
- *	------------------------------------------------*
- *
- *	Sideeffects:
- *		As of the called procedure.
- *
- *	Result:
- *		None.
- *
- *------------------------------------------------------*
- */
-
-static void
-MDsha1_Update (context, character)
-VOID* context;
-unsigned int   character;
-{
-  unsigned char buf = character;
-
-  sha1f.update ((SHA_CTX*) context, &buf, 1);
-}
-
-/*
- *------------------------------------------------------*
- *
- *	MDsha1_UpdateBuf --
- *
- *	------------------------------------------------*
- *	Update the internal state of the message digest
- *	generator for a character buffer.
- *	------------------------------------------------*
- *
- *	Sideeffects:
- *		As of the called procedure.
- *
- *	Result:
- *		None.
- *
- *------------------------------------------------------*
- */
-
-static void
-MDsha1_UpdateBuf (context, buffer, bufLen)
-VOID* context;
-unsigned char* buffer;
-int   bufLen;
-{
-  sha1f.update ((SHA_CTX*) context, (unsigned char*) buffer, bufLen);
-}
-
-/*
- *------------------------------------------------------*
- *
- *	MDsha1_Final --
+ *	MDsha1_OTP_Final --
  *
  *	------------------------------------------------*
@@ -206,14 +127,11 @@
 
 static void
-MDsha1_Final (context, digest)
+MDsha1_OTP_Final (digest, context)
 VOID* context;
 VOID* digest;
 {
-#ifndef OTP
-  sha1f.final ((unsigned char*) digest, (SHA_CTX*) context);
-#else
     unsigned int result[SHA_DIGEST_LENGTH / sizeof (char)];
 
-    sha1f.final ((unsigned char*) result, (SHA_CTX*) context);
+    SHA1_Final ((unsigned char*) result, (SHA_CTX*) context);
 
     result[0] ^= result[2];
@@ -223,31 +141,4 @@
     Trf_FlipRegisterLong ((VOID*) result, DIGEST_SIZE);
     memcpy ((VOID *) digest, (VOID *) result, DIGEST_SIZE);
-#endif
-}
-
-/*
- *------------------------------------------------------*
- *
- *	MDsha1_Check --
- *
- *	------------------------------------------------*
- *	Do global one-time initializations of the message
- *	digest generator.
- *	------------------------------------------------*
- *
- *	Sideeffects:
- *		Loads the shared library containing the
- *		SHA1 functionality
- *
- *	Result:
- *		A standard Tcl error code.
- *
- *------------------------------------------------------*
- */
-
-static int
-MDsha1_Check (interp)
-Tcl_Interp* interp;
-{
-  return TrfLoadSHA1 (interp);
 }
+#endif
