diff -acrN tw_ASR_1.3.1_src/Makefile tw_RIPE1/Makefile
*** tw_ASR_1.3.1_src/Makefile	Tue May  4 10:31:00 1999
--- tw_RIPE1/Makefile	Tue Sep 26 20:56:07 2000
***************
*** 15,28 ****
  
  # destination for man pages
  MANDIR  = /usr/man		# This needs to change to reflect the path
!                         # on your system
  
  # system utilities
! LEX	= lex
! #LEX	= flex			# For the GNU crowd
  
! YACC	= yacc
! #YACC	= bison -y		# For the GNU crowd (make it look like yacc)
  #				# see ./contrib/README.linux for tips on
  #				# making work.
  
--- 15,28 ----
  
  # destination for man pages
  MANDIR  = /usr/man		# This needs to change to reflect the path
!                                 # on your system
  
  # system utilities
! #LEX	= lex
! LEX	= flex			# For the GNU crowd
  
! #YACC	= yacc
! YACC	= bison -y		# For the GNU crowd (make it look like yacc)
  #				# see ./contrib/README.linux for tips on
  #				# making work.
  
***************
*** 75,81 ****
  #LIBS = -lmalloc -lsun			# IRIX 6.x
  #LIBS = -lx			# Xenix
  #LIBS = -lbsd			# MIPS RISC/OS
! #LIBS = -lgnumalloc           # Encore / UMAX V
  
  
  # If you don't have the install command, you need to replace
--- 75,81 ----
  #LIBS = -lmalloc -lsun			# IRIX 6.x
  #LIBS = -lx			# Xenix
  #LIBS = -lbsd			# MIPS RISC/OS
! #LIBS = -lgnumalloc		# Encore / UMAX V
  
  
  # If you don't have the install command, you need to replace
diff -acrN tw_ASR_1.3.1_src/include/config.h tw_RIPE1/include/config.h
*** tw_ASR_1.3.1_src/include/config.h	Tue May  4 10:31:00 1999
--- tw_RIPE1/include/config.h	Tue Sep 26 21:05:12 2000
***************
*** 70,76 ****
  #define SIG6FUNC	sig_md2_get
  #define SIG7FUNC	sig_sha_get
  #define SIG8FUNC	sig_haval_get
! #define SIG9FUNC	sig_null_get
  
  #define SIG0NAME	"nullsig"
  #define SIG1NAME	"md5"
--- 70,76 ----
  #define SIG6FUNC	sig_md2_get
  #define SIG7FUNC	sig_sha_get
  #define SIG8FUNC	sig_haval_get
! #define SIG9FUNC	sig_rmd160_get
  
  #define SIG0NAME	"nullsig"
  #define SIG1NAME	"md5"
***************
*** 81,87 ****
  #define SIG6NAME	"md2"
  #define SIG7NAME	"sha"
  #define SIG8NAME	"haval"
! #define SIG9NAME	"nullsig"
  
  /******* path to Tripwire files **************************************
   *
--- 81,87 ----
  #define SIG6NAME	"md2"
  #define SIG7NAME	"sha"
  #define SIG8NAME	"haval"
! #define SIG9NAME	"rmd160"
  
  /******* path to Tripwire files **************************************
   *
diff -acrN tw_ASR_1.3.1_src/include/tripwire.h tw_RIPE1/include/tripwire.h
*** tw_ASR_1.3.1_src/include/tripwire.h	Tue May  4 10:31:00 1999
--- tw_RIPE1/include/tripwire.h	Mon Sep 25 15:08:12 2000
***************
*** 47,52 ****
--- 47,53 ----
  #include "../sigs/md4/md4.h"
  #include "../sigs/sha/sha.h"
  #include "../sigs/haval/haval.h"
+ #include "../sigs/rmd160/rmd160.h"
  
  /* essential includes common to all sources files */
  
diff -acrN tw_ASR_1.3.1_src/man/siggen.8 tw_RIPE1/man/siggen.8
*** tw_ASR_1.3.1_src/man/siggen.8	Tue May  4 10:31:00 1999
--- tw_RIPE1/man/siggen.8	Thu Sep 28 17:41:38 2000
***************
*** 62,68 ****
  signature 8 - generates Haval, a 128-bit signature code.
  .TP
  .B \-9
! signature 9 \- generates null signature (reserved for future expansion).
  .TP
  .IR "file1" " [" "file2..." "]"
  List of filesystem objects for which to display values.
--- 62,68 ----
  signature 8 - generates Haval, a 128-bit signature code.
  .TP
  .B \-9
! signature 9 \- generates RIPEMD-160, the "RACE Integrity Primitives Evaluation" signature code.
  .TP
  .IR "file1" " [" "file2..." "]"
  List of filesystem objects for which to display values.
diff -acrN tw_ASR_1.3.1_src/man/tw.config.5 tw_RIPE1/man/tw.config.5
*** tw_ASR_1.3.1_src/man/tw.config.5	Tue May  4 10:31:00 1999
--- tw_RIPE1/man/tw.config.5	Thu Sep 28 17:46:27 2000
***************
*** 144,150 ****
  signature 8 \- Haval, a strong 128-bit signature algorithm
  .TP
  .I 9
! signature 9 \- null signature (reserved for future expansion)
  .RE
  .TP 15
  .I templates
--- 144,150 ----
  signature 8 \- Haval, a strong 128-bit signature algorithm
  .TP
  .I 9
! signature 9 \- RIPEMD-160, the "RACE Integrity Primitives Evaluation" algorithm (European answer to SHA-1)
  .RE
  .TP 15
  .I templates
diff -acrN tw_ASR_1.3.1_src/sigs/rmd160/Makefile tw_RIPE1/sigs/rmd160/Makefile
*** tw_ASR_1.3.1_src/sigs/rmd160/Makefile	Thu Jan  1 01:00:00 1970
--- tw_RIPE1/sigs/rmd160/Makefile	Tue Sep 26 17:00:35 2000
***************
*** 0 ****
--- 1,19 ----
+ # Makefile for RIPE-MD160 wrapper
+ #
+ # Klaus Bosau
+ # 26.9.2000
+ 
+ CC = gcc
+ CFLAGS = -03 -fomit-frame-pointer -Wall
+ 
+ all:	rmd160.o rmd160wrapper.o
+ 
+ .c.o:
+ 	$(CC) $(CFLAGS) -c $<
+ 
+ clean:
+ 	-rm -rf *.o .pure
+ 
+ rmd160.o: ../../include/byteorder.h
+ rmd160wrapper.o: ../../include/byteorder.h
+ 
diff -acrN tw_ASR_1.3.1_src/sigs/rmd160/rmd160.c tw_RIPE1/sigs/rmd160/rmd160.c
*** tw_ASR_1.3.1_src/sigs/rmd160/rmd160.c	Thu Jan  1 01:00:00 1970
--- tw_RIPE1/sigs/rmd160/rmd160.c	Tue Sep 26 16:17:24 2000
***************
*** 0 ****
--- 1,285 ----
+ /********************************************************************\
+  *  FILE:     rmd160.c
+  *  CONTENTS: A sample C-implementation of the RIPEMD-160 hash-function.
+  *  TARGET:   any computer with an ANSI C compiler
+  *  AUTHOR:   Antoon Bosselaers, Dept. Electrical Eng.-ESAT/COSIC
+  *  DATE:     1 March 1996       VERSION:  1.0
+  **********************************************************************
+  * Copyright (c) Katholieke Universiteit Leuven 1996, All Rights Reserved
+  * The Katholieke Universiteit Leuven makes no representations concerning
+  * either the merchantability of this software or the suitability of this
+  * software for any particular purpose. It is provided "as is" without
+  * express or implied warranty of any kind. These notices must be retained
+  * in any copies of any part of this documentation and/or software.
+ \********************************************************************/
+ 
+ /* header files */
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include "rmd160.h"
+ 
+ /********************************************************************/
+ void MDinit(word *MDbuf)
+ /* Initialization of the 5-word MDbuf array to the magic
+    initialization constants
+  */
+ {
+    MDbuf[0] = 0x67452301UL;
+    MDbuf[1] = 0xefcdab89UL;
+    MDbuf[2] = 0x98badcfeUL;
+    MDbuf[3] = 0x10325476UL;
+    MDbuf[4] = 0xc3d2e1f0UL;
+ }
+ 
+ /********************************************************************/
+ void MDcompress(word *MDbuf, word *X)
+ /* The compression function is called for every complete 64-byte
+    message block. The 5-word internal state MDbuf is updated using
+    message words X[0] through X[15]. The conversion from a string
+    of 64 bytes to an array of 16 words using a Little-endian
+    convention is the responsibility of the calling function.
+ */
+ {
+    /* make two copies of the old state */
+    word aa = MDbuf[0],  bb = MDbuf[1],  cc = MDbuf[2],
+         dd = MDbuf[3],  ee = MDbuf[4];
+    word aaa = MDbuf[0], bbb = MDbuf[1], ccc = MDbuf[2],
+         ddd = MDbuf[3], eee = MDbuf[4];
+ 
+    /* round 1 */
+    FF1(aa, bb, cc, dd, ee, X[ 0], 11);
+    FF1(ee, aa, bb, cc, dd, X[ 1], 14);
+    FF1(dd, ee, aa, bb, cc, X[ 2], 15);
+    FF1(cc, dd, ee, aa, bb, X[ 3], 12);
+    FF1(bb, cc, dd, ee, aa, X[ 4],  5);
+    FF1(aa, bb, cc, dd, ee, X[ 5],  8);
+    FF1(ee, aa, bb, cc, dd, X[ 6],  7);
+    FF1(dd, ee, aa, bb, cc, X[ 7],  9);
+    FF1(cc, dd, ee, aa, bb, X[ 8], 11);
+    FF1(bb, cc, dd, ee, aa, X[ 9], 13);
+    FF1(aa, bb, cc, dd, ee, X[10], 14);
+    FF1(ee, aa, bb, cc, dd, X[11], 15);
+    FF1(dd, ee, aa, bb, cc, X[12],  6);
+    FF1(cc, dd, ee, aa, bb, X[13],  7);
+    FF1(bb, cc, dd, ee, aa, X[14],  9);
+    FF1(aa, bb, cc, dd, ee, X[15],  8);
+ 
+    /* round 2 */
+    FF2(ee, aa, bb, cc, dd, X[ 7],  7);
+    FF2(dd, ee, aa, bb, cc, X[ 4],  6);
+    FF2(cc, dd, ee, aa, bb, X[13],  8);
+    FF2(bb, cc, dd, ee, aa, X[ 1], 13);
+    FF2(aa, bb, cc, dd, ee, X[10], 11);
+    FF2(ee, aa, bb, cc, dd, X[ 6],  9);
+    FF2(dd, ee, aa, bb, cc, X[15],  7);
+    FF2(cc, dd, ee, aa, bb, X[ 3], 15);
+    FF2(bb, cc, dd, ee, aa, X[12],  7);
+    FF2(aa, bb, cc, dd, ee, X[ 0], 12);
+    FF2(ee, aa, bb, cc, dd, X[ 9], 15);
+    FF2(dd, ee, aa, bb, cc, X[ 5],  9);
+    FF2(cc, dd, ee, aa, bb, X[ 2], 11);
+    FF2(bb, cc, dd, ee, aa, X[14],  7);
+    FF2(aa, bb, cc, dd, ee, X[11], 13);
+    FF2(ee, aa, bb, cc, dd, X[ 8], 12);
+ 
+    /* round 3 */
+    FF3(dd, ee, aa, bb, cc, X[ 3], 11);
+    FF3(cc, dd, ee, aa, bb, X[10], 13);
+    FF3(bb, cc, dd, ee, aa, X[14],  6);
+    FF3(aa, bb, cc, dd, ee, X[ 4],  7);
+    FF3(ee, aa, bb, cc, dd, X[ 9], 14);
+    FF3(dd, ee, aa, bb, cc, X[15],  9);
+    FF3(cc, dd, ee, aa, bb, X[ 8], 13);
+    FF3(bb, cc, dd, ee, aa, X[ 1], 15);
+    FF3(aa, bb, cc, dd, ee, X[ 2], 14);
+    FF3(ee, aa, bb, cc, dd, X[ 7],  8);
+    FF3(dd, ee, aa, bb, cc, X[ 0], 13);
+    FF3(cc, dd, ee, aa, bb, X[ 6],  6);
+    FF3(bb, cc, dd, ee, aa, X[13],  5);
+    FF3(aa, bb, cc, dd, ee, X[11], 12);
+    FF3(ee, aa, bb, cc, dd, X[ 5],  7);
+    FF3(dd, ee, aa, bb, cc, X[12],  5);
+ 
+    /* round 4 */
+    FF4(cc, dd, ee, aa, bb, X[ 1], 11);
+    FF4(bb, cc, dd, ee, aa, X[ 9], 12);
+    FF4(aa, bb, cc, dd, ee, X[11], 14);
+    FF4(ee, aa, bb, cc, dd, X[10], 15);
+    FF4(dd, ee, aa, bb, cc, X[ 0], 14);
+    FF4(cc, dd, ee, aa, bb, X[ 8], 15);
+    FF4(bb, cc, dd, ee, aa, X[12],  9);
+    FF4(aa, bb, cc, dd, ee, X[ 4],  8);
+    FF4(ee, aa, bb, cc, dd, X[13],  9);
+    FF4(dd, ee, aa, bb, cc, X[ 3], 14);
+    FF4(cc, dd, ee, aa, bb, X[ 7],  5);
+    FF4(bb, cc, dd, ee, aa, X[15],  6);
+    FF4(aa, bb, cc, dd, ee, X[14],  8);
+    FF4(ee, aa, bb, cc, dd, X[ 5],  6);
+    FF4(dd, ee, aa, bb, cc, X[ 6],  5);
+    FF4(cc, dd, ee, aa, bb, X[ 2], 12);
+ 
+    /* round 5 */
+    FF5(bb, cc, dd, ee, aa, X[ 4],  9);
+    FF5(aa, bb, cc, dd, ee, X[ 0], 15);
+    FF5(ee, aa, bb, cc, dd, X[ 5],  5);
+    FF5(dd, ee, aa, bb, cc, X[ 9], 11);
+    FF5(cc, dd, ee, aa, bb, X[ 7],  6);
+    FF5(bb, cc, dd, ee, aa, X[12],  8);
+    FF5(aa, bb, cc, dd, ee, X[ 2], 13);
+    FF5(ee, aa, bb, cc, dd, X[10], 12);
+    FF5(dd, ee, aa, bb, cc, X[14],  5);
+    FF5(cc, dd, ee, aa, bb, X[ 1], 12);
+    FF5(bb, cc, dd, ee, aa, X[ 3], 13);
+    FF5(aa, bb, cc, dd, ee, X[ 8], 14);
+    FF5(ee, aa, bb, cc, dd, X[11], 11);
+    FF5(dd, ee, aa, bb, cc, X[ 6],  8);
+    FF5(cc, dd, ee, aa, bb, X[15],  5);
+    FF5(bb, cc, dd, ee, aa, X[13],  6);
+ 
+    /* parallel round 1 */
+    FFF5(aaa, bbb, ccc, ddd, eee, X[ 5],  8);
+    FFF5(eee, aaa, bbb, ccc, ddd, X[14],  9);
+    FFF5(ddd, eee, aaa, bbb, ccc, X[ 7],  9);
+    FFF5(ccc, ddd, eee, aaa, bbb, X[ 0], 11);
+    FFF5(bbb, ccc, ddd, eee, aaa, X[ 9], 13);
+    FFF5(aaa, bbb, ccc, ddd, eee, X[ 2], 15);
+    FFF5(eee, aaa, bbb, ccc, ddd, X[11], 15);
+    FFF5(ddd, eee, aaa, bbb, ccc, X[ 4],  5);
+    FFF5(ccc, ddd, eee, aaa, bbb, X[13],  7);
+    FFF5(bbb, ccc, ddd, eee, aaa, X[ 6],  7);
+    FFF5(aaa, bbb, ccc, ddd, eee, X[15],  8);
+    FFF5(eee, aaa, bbb, ccc, ddd, X[ 8], 11);
+    FFF5(ddd, eee, aaa, bbb, ccc, X[ 1], 14);
+    FFF5(ccc, ddd, eee, aaa, bbb, X[10], 14);
+    FFF5(bbb, ccc, ddd, eee, aaa, X[ 3], 12);
+    FFF5(aaa, bbb, ccc, ddd, eee, X[12],  6);
+ 
+    /* parallel round 2 */
+    FFF4(eee, aaa, bbb, ccc, ddd, X[ 6],  9);
+    FFF4(ddd, eee, aaa, bbb, ccc, X[11], 13);
+    FFF4(ccc, ddd, eee, aaa, bbb, X[ 3], 15);
+    FFF4(bbb, ccc, ddd, eee, aaa, X[ 7],  7);
+    FFF4(aaa, bbb, ccc, ddd, eee, X[ 0], 12);
+    FFF4(eee, aaa, bbb, ccc, ddd, X[13],  8);
+    FFF4(ddd, eee, aaa, bbb, ccc, X[ 5],  9);
+    FFF4(ccc, ddd, eee, aaa, bbb, X[10], 11);
+    FFF4(bbb, ccc, ddd, eee, aaa, X[14],  7);
+    FFF4(aaa, bbb, ccc, ddd, eee, X[15],  7);
+    FFF4(eee, aaa, bbb, ccc, ddd, X[ 8], 12);
+    FFF4(ddd, eee, aaa, bbb, ccc, X[12],  7);
+    FFF4(ccc, ddd, eee, aaa, bbb, X[ 4],  6);
+    FFF4(bbb, ccc, ddd, eee, aaa, X[ 9], 15);
+    FFF4(aaa, bbb, ccc, ddd, eee, X[ 1], 13);
+    FFF4(eee, aaa, bbb, ccc, ddd, X[ 2], 11);
+ 
+    /* parallel round 3 */
+    FFF3(ddd, eee, aaa, bbb, ccc, X[15],  9);
+    FFF3(ccc, ddd, eee, aaa, bbb, X[ 5],  7);
+    FFF3(bbb, ccc, ddd, eee, aaa, X[ 1], 15);
+    FFF3(aaa, bbb, ccc, ddd, eee, X[ 3], 11);
+    FFF3(eee, aaa, bbb, ccc, ddd, X[ 7],  8);
+    FFF3(ddd, eee, aaa, bbb, ccc, X[14],  6);
+    FFF3(ccc, ddd, eee, aaa, bbb, X[ 6],  6);
+    FFF3(bbb, ccc, ddd, eee, aaa, X[ 9], 14);
+    FFF3(aaa, bbb, ccc, ddd, eee, X[11], 12);
+    FFF3(eee, aaa, bbb, ccc, ddd, X[ 8], 13);
+    FFF3(ddd, eee, aaa, bbb, ccc, X[12],  5);
+    FFF3(ccc, ddd, eee, aaa, bbb, X[ 2], 14);
+    FFF3(bbb, ccc, ddd, eee, aaa, X[10], 13);
+    FFF3(aaa, bbb, ccc, ddd, eee, X[ 0], 13);
+    FFF3(eee, aaa, bbb, ccc, ddd, X[ 4],  7);
+    FFF3(ddd, eee, aaa, bbb, ccc, X[13],  5);
+ 
+    /* parallel round 4 */
+    FFF2(ccc, ddd, eee, aaa, bbb, X[ 8], 15);
+    FFF2(bbb, ccc, ddd, eee, aaa, X[ 6],  5);
+    FFF2(aaa, bbb, ccc, ddd, eee, X[ 4],  8);
+    FFF2(eee, aaa, bbb, ccc, ddd, X[ 1], 11);
+    FFF2(ddd, eee, aaa, bbb, ccc, X[ 3], 14);
+    FFF2(ccc, ddd, eee, aaa, bbb, X[11], 14);
+    FFF2(bbb, ccc, ddd, eee, aaa, X[15],  6);
+    FFF2(aaa, bbb, ccc, ddd, eee, X[ 0], 14);
+    FFF2(eee, aaa, bbb, ccc, ddd, X[ 5],  6);
+    FFF2(ddd, eee, aaa, bbb, ccc, X[12],  9);
+    FFF2(ccc, ddd, eee, aaa, bbb, X[ 2], 12);
+    FFF2(bbb, ccc, ddd, eee, aaa, X[13],  9);
+    FFF2(aaa, bbb, ccc, ddd, eee, X[ 9], 12);
+    FFF2(eee, aaa, bbb, ccc, ddd, X[ 7],  5);
+    FFF2(ddd, eee, aaa, bbb, ccc, X[10], 15);
+    FFF2(ccc, ddd, eee, aaa, bbb, X[14],  8);
+ 
+    /* parallel round 5 */
+    FFF1(bbb, ccc, ddd, eee, aaa, X[12] ,  8);
+    FFF1(aaa, bbb, ccc, ddd, eee, X[15] ,  5);
+    FFF1(eee, aaa, bbb, ccc, ddd, X[10] , 12);
+    FFF1(ddd, eee, aaa, bbb, ccc, X[ 4] ,  9);
+    FFF1(ccc, ddd, eee, aaa, bbb, X[ 1] , 12);
+    FFF1(bbb, ccc, ddd, eee, aaa, X[ 5] ,  5);
+    FFF1(aaa, bbb, ccc, ddd, eee, X[ 8] , 14);
+    FFF1(eee, aaa, bbb, ccc, ddd, X[ 7] ,  6);
+    FFF1(ddd, eee, aaa, bbb, ccc, X[ 6] ,  8);
+    FFF1(ccc, ddd, eee, aaa, bbb, X[ 2] , 13);
+    FFF1(bbb, ccc, ddd, eee, aaa, X[13] ,  6);
+    FFF1(aaa, bbb, ccc, ddd, eee, X[14] ,  5);
+    FFF1(eee, aaa, bbb, ccc, ddd, X[ 0] , 15);
+    FFF1(ddd, eee, aaa, bbb, ccc, X[ 3] , 13);
+    FFF1(ccc, ddd, eee, aaa, bbb, X[ 9] , 11);
+    FFF1(bbb, ccc, ddd, eee, aaa, X[11] , 11);
+ 
+    /* combine results into new state */
+    ddd += cc + MDbuf[1];
+    MDbuf[1] = MDbuf[2] + dd + eee;
+    MDbuf[2] = MDbuf[3] + ee + aaa;
+    MDbuf[3] = MDbuf[4] + aa + bbb;
+    MDbuf[4] = MDbuf[0] + bb + ccc;
+    MDbuf[0] = ddd;
+ }
+ 
+ /********************************************************************/
+ void MDfinish(word *MDbuf, byte *string, word lswlen, word mswlen)
+ /* The final value of the 5-word MDbuf array is calculated. 
+    lswlen and mswlen contain, respectively, the least and most significant
+    32 bits of the message bit length mod 2^64, and string is an incomplete
+    block containing the (lswlen mod 512) remaining message bits.
+    (In case the message is already a multiple of 512 bits, string
+    is not used.) The conversion of the 5-word final state MDbuf to
+    the 20-byte hash result using a Little-endian convention is the
+    responsibility of the calling function.
+ */
+ {
+    size_t i, length;
+    byte   mask;
+    word   X[16];
+ 
+    /* clear 16-word message block */
+    memset(X, 0, 16*sizeof(word));
+ 
+    /* copy (lswlen mod 512) bits from string into X */
+    length = ((lswlen&511)+7)/8; /* number of bytes */
+    mask = (lswlen&7) ? ((byte)1 << (lswlen&7)) - 1 : 0xff;
+    for (i=0; i<length; i++) {
+       /* byte i goes into word X[i div 4] at bit position 8*(i mod 4) */
+       if (i == length-1)
+          X[i>>2] ^= (word) (*string&mask) << (8*(i&3));
+       else
+          X[i>>2] ^= (word) *string++ << (8*(i&3));
+    }
+ 
+    /* append a single 1 */
+    X[(lswlen>>5)&15] ^= (word)1 << (8*((lswlen>>3)&3)+7-(lswlen&7));
+ 
+    if ((lswlen & 511) > 447) {
+       /* length doesn't fit in this block anymore.
+          Compress, and put length in the next block */
+       MDcompress(MDbuf, X);
+       memset(X, 0, 16*sizeof(word));
+    }
+   /* append length in bits*/
+    X[14] = lswlen;
+    X[15] = mswlen;
+    MDcompress(MDbuf, X);
+ }
+ 
+ /************************ end of file rmd160.c **********************/
+ 
diff -acrN tw_ASR_1.3.1_src/sigs/rmd160/rmd160.h tw_RIPE1/sigs/rmd160/rmd160.h
*** tw_ASR_1.3.1_src/sigs/rmd160/rmd160.h	Thu Jan  1 01:00:00 1970
--- tw_RIPE1/sigs/rmd160/rmd160.h	Thu Sep 28 16:33:01 2000
***************
*** 0 ****
--- 1,99 ----
+ /********************************************************************\
+  *  FILE:     rmd160.h
+  *  CONTENTS: Header file for a sample C-implementation of the
+  *            RIPEMD-160 hash-function.
+  *  AUTHOR:   Antoon Bosselaers, Dept. Electrical Eng.-ESAT/COSIC
+  *  DATE:     1 March 1996       VERSION:  1.0
+ \********************************************************************/
+ 
+ #ifndef  RMD160H           /* make sure this file is read only once */
+ #define  RMD160H
+ 
+ /********************************************************************/
+ /* Type definitions of an 8 and a 32-bit integer type, respectively.
+    Adapt these, if necessary, for your operating system and compiler
+ */
+ typedef    unsigned char        byte;   /* unsigned 8-bit integer */
+ typedef    unsigned long        word;   /* unsigned 32-bit integer */
+ 
+ /********************************************************************/
+ /* Macro definitions */
+ 
+ /* ROL(x, n) cyclically rotates x over n bits to the left
+    x must be of an unsigned 32 bits type and 0 <= n < 32.
+ */
+ #define ROL(x, n)        (((x) << (n)) | ((x) >> (32-(n))))
+ 
+ /* The five basic RIPEMD-160 functions F1(), F2(), F3(), F4(), and F5()
+ */
+ #define F1(x, y, z)        ((x) ^ (y) ^ (z))
+ #define F2(x, y, z)        (((x) & (y)) | (~(x) & (z)))
+ #define F3(x, y, z)        (((x) | ~(y)) ^ (z))
+ #define F4(x, y, z)        (((x) & (z)) | ((y) & ~(z)))
+ #define F5(x, y, z)        ((x) ^ ((y) | ~(z)))
+ 
+ /* The ten basic RIPEMD-160 transformations FF1() through FFF5()
+ */
+ #define FF1(a, b, c, d, e, x, s)        {\
+       (a) += F1((b), (c), (d)) + (x);\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ #define FF2(a, b, c, d, e, x, s)        {\
+       (a) += F2((b), (c), (d)) + (x) + 0x5a827999UL;\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ #define FF3(a, b, c, d, e, x, s)        {\
+       (a) += F3((b), (c), (d)) + (x) + 0x6ed9eba1UL;\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ #define FF4(a, b, c, d, e, x, s)        {\
+       (a) += F4((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ #define FF5(a, b, c, d, e, x, s)        {\
+       (a) += F5((b), (c), (d)) + (x) + 0xa953fd4eUL;\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ #define FFF1(a, b, c, d, e, x, s)        {\
+       (a) += F1((b), (c), (d)) + (x);\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ #define FFF2(a, b, c, d, e, x, s)        {\
+       (a) += F2((b), (c), (d)) + (x) + 0x7a6d76e9UL;\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ #define FFF3(a, b, c, d, e, x, s)        {\
+       (a) += F3((b), (c), (d)) + (x) + 0x6d703ef3UL;\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ #define FFF4(a, b, c, d, e, x, s)        {\
+       (a) += F4((b), (c), (d)) + (x) + 0x5c4dd124UL;\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ #define FFF5(a, b, c, d, e, x, s)        {\
+       (a) += F5((b), (c), (d)) + (x) + 0x50a28be6UL;\
+       (a) = ROL((a), (s)) + (e);\
+       (c) = ROL((c), 10);\
+    }
+ 
+ /********************************************************************/
+ /* Function prototypes */
+ 
+ void MDinit(word *MDbuf);
+ void MDcompress(word *MDbuf, word *X);
+ void MDfinish(word *MDbuf, byte *string, word lswlen, word mswlen);
+ int sig_rmd160_get(); /* interface to TRIPWIRE */
+ 
+ #endif  /* RMD160H */
+ 
+ /*********************** end of file rmd160.h ***********************/
+ 
diff -acrN tw_ASR_1.3.1_src/sigs/rmd160/rmd160wrapper.c tw_RIPE1/sigs/rmd160/rmd160wrapper.c
*** tw_ASR_1.3.1_src/sigs/rmd160/rmd160wrapper.c	Thu Jan  1 01:00:00 1970
--- tw_RIPE1/sigs/rmd160/rmd160wrapper.c	Tue Sep 26 21:24:54 2000
***************
*** 0 ****
--- 1,170 ----
+ #ifndef lint
+ static char rcsid[] = "$Id: rmd160wrapper.c, Klaus Bosau$";
+ #endif
+ 
+ /*
+  * rmd160wrapper.c
+  *
+  *	signature function hook for RIPE-MD160 for Tripwire.
+  *
+  * Klaus Bosau
+  * 26.9.2000
+  */
+ 
+ #include "../../include/config.h"
+ #include <stdio.h>
+ #include <sys/types.h>
+ #ifdef STDLIBH
+ #include <stdlib.h>
+ #include <unistd.h>
+ #endif
+ #ifdef STRINGH
+ #include <string.h>
+ #else
+ #include <strings.h>
+ #endif
+ #include "../../include/sigs.h"
+ #include "rmd160.h"
+ #include <errno.h>
+ 
+ char *pltob64();
+ 
+ #ifdef TW_TYPE32
+ typedef unsigned TW_TYPE32 LONGr;
+ #else
+ typedef unsigned long LONGr;
+ #endif
+ 
+ /*
+  * int
+  * pf_signature(int fd_in, char *ps_signature, int siglen)
+  *
+  *	fd_in: 		pointer to input file descriptor
+  *	ps_signature: 	pointer to array where signature will be stored
+  *	siglen: 	length of the signature array (for overflow checking)
+  */
+ 
+ 
+ #define BUFLEN    4096
+ #define RMDBITS   160
+ 
+ static void byteReverse(LONGr *buffer) {
+     /* bytes 0,1,2,3 --> 3,2,1,0 */
+ 
+     LONGr value;
+     int count;
+ 
+     for( count = 0; count < 5; count++ )
+         {
+         value = ( buffer[ count ] << 16 ) | ( buffer[ count ] >> 16 );
+         buffer[ count ] = ( ( value & 0xFF00FF00L ) >> 8 ) | ( ( value & 0x00FF00FFL ) << 8 );
+         }
+ }
+ 
+ void pack_chunk(word *chunk, byte *buf) {
+   /* pack 64 bytes into 16 little-endian 32-bit words */
+ 
+   int j;
+ 
+   for (j = 0; j < 16; ++j, buf += 4)
+     *chunk++ = (word) buf[0] | (word) buf[1] << 8 | 
+       (word) buf[2] << 16 | (word) buf[3] << 24 ;
+ }
+ 
+ void rmdfp(FILE *fp, word mdbuf[RMDBITS / 32]) {
+   /* calculate the message digest of a file
+      and return it in array form */
+ 
+   int bytesread;
+   int i;
+   word tmp;
+   word chunk[16];
+   char buf[BUFLEN];
+   word length[2];
+   static byte code[RMDBITS / 8];
+ 
+   length[0] = length[1] = 0;
+   MDinit(mdbuf);
+ 
+   /* do all full BUFLEN portions */
+ 
+   while ((bytesread = fread(buf, 1, BUFLEN, fp)) == BUFLEN) {
+ 
+     for (i = 0; i < BUFLEN; i += 64) {
+       pack_chunk(chunk, buf + i);
+       MDcompress(mdbuf, chunk);
+     }
+ 
+     if ((tmp = length[0] + bytesread) < length[0])
+       ++ length[1];     /* overflow */
+     length[0] = tmp;
+   }
+ 
+   /* do all the remaining 64-byte blocks */
+ 
+   for (i = 0; i < bytesread - 63; i += 64) {
+     pack_chunk(chunk, buf + i);
+     MDcompress(mdbuf, chunk);
+   }
+ 
+   if ((tmp = length[0] + bytesread) < length[0])
+     ++ length[1];       /* overflow */
+   length[0] = tmp;
+ 
+   /* do the last partial or zero length block */
+ 
+   MDfinish(mdbuf, buf + i, length[0] << 3,
+            length[0] >> 29 | length[1] << 3);
+ 
+ #ifdef LITTLE_ENDIAN
+   byteReverse(mdbuf);
+ #endif
+ 
+ }
+ 
+ int sig_rmd160_get (fd_in, ps_signature, siglen)
+     int fd_in;
+     char *ps_signature;
+     int siglen; 
+ {
+     int i;
+     char s[128];
+     FILE *fp;
+     word md[5]; /* message digest */
+ 
+     ps_signature[0] = '\0';
+ 
+     /* get stdio handle 
+      *		we use dup() so we can close() it later
+      */
+     if (!(fp = (FILE *) fdopen(dup(fd_in), "rb"))) {
+ 	perror("sig_rmd160_get: fdopen()");
+ 	exit(1);
+     }
+ 
+     /* rewind the file descriptor */
+     rewind(fp);
+ 
+     /* create the message digest */
+     rmdfp(fp, md);
+ 
+     /* print out the signature */
+     if (printhex) {
+ 	for (i = 0; i < 5; i++) {
+ #if (TW_TYPE32 == int)
+ 	    sprintf(s, "%08x", md[i]); 
+ #else
+ 	    sprintf(s, "%08lx", md[i]); 
+ #endif
+ 	    strcat(ps_signature, s);
+ 	}
+     }
+     /* base 64 */
+     else {
+ 	pltob64(md, ps_signature, 5);
+     }
+ 
+     fclose(fp);
+ 
+     return 0;
+ }
diff -acrN tw_ASR_1.3.1_src/src/Makefile tw_RIPE1/src/Makefile
*** tw_ASR_1.3.1_src/src/Makefile	Tue May  4 10:31:00 1999
--- tw_RIPE1/src/Makefile	Mon Sep 25 22:27:52 2000
***************
*** 20,25 ****
--- 20,26 ----
  SIG6DIR   = $(SIGDIR)/md2
  SIG7DIR   = $(SIGDIR)/sha
  SIG8DIR   = $(SIGDIR)/haval
+ SIG9DIR   = $(SIGDIR)/rmd160
  
  SIGDIRS	  = $(SIG1DIR) $(SIG2DIR) $(SIG3DIR) $(SIG4DIR) $(SIG5DIR) \
  	    $(SIG6DIR) $(SIG7DIR) $(SIG8DIR) $(SIG9DIR)
***************
*** 32,37 ****
--- 33,39 ----
  OSIG6	  = $(SIG6DIR)/md2.o $(SIG6DIR)/md2wrapper.o
  OSIG7	  = $(SIG7DIR)/sha.o $(SIG7DIR)/shawrapper.o
  OSIG8	  = $(SIG8DIR)/haval.o $(SIG8DIR)/havalwrapper.o
+ OSIG9	  = $(SIG9DIR)/rmd160.o $(SIG9DIR)/rmd160wrapper.o
  
  OSIGS	  = $(OSIG1) $(OSIG2) $(OSIG3) $(OSIG4) $(OSIG5) $(OSIG6) $(OSIG7) \
  	    $(OSIG8) $(OSIG9)
***************
*** 44,49 ****
--- 46,52 ----
  CSIG6	  = $(SIG6DIR)/md2.c $(SIG6DIR)/md2wrapper.c
  CSIG7	  = $(SIG7DIR)/sha.c $(SIG7DIR)/shawrapper.c
  CSIG8	  = $(SIG8DIR)/haval.c $(SIG8DIR)/havalwrapper.c
+ CSIG9	  = $(SIG9DIR)/rmd160.c $(SIG9DIR)/rmd160wrapper.c
  
  CSIGS	  = $(CSIG1) $(CSIG2) $(CSIG3) $(CSIG4) $(CSIG5) $(CSIG6) $(CSIG7) \
  	    $(CSIG8) $(CSIG9)
***************
*** 77,82 ****
--- 80,87 ----
  	(cd $(SIG7DIR); make CC="$(CC)" CFLAGS="$(CFLAGS) -I. -I..")
  $(OSIG8):	../include/byteorder.h
  	(cd $(SIG8DIR); make CC="$(CC)" CFLAGS="$(CFLAGS) -I. -I..")
+ $(OSIG9):	../include/byteorder.h
+ 	(cd $(SIG9DIR); make CC="$(CC)" CFLAGS="$(CFLAGS) -I. -I..")
  
  ../include/byteorder.h ../include/inode.h:
  	(cd ../util; make CC=$(CC) CFLAGS="$(CFLAGS)"  \
diff -acrN tw_ASR_1.3.1_src/tests/test0.key tw_RIPE1/tests/test0.key
*** tw_ASR_1.3.1_src/tests/test0.key	Tue May  4 10:31:00 1999
--- tw_RIPE1/tests/test0.key	Wed Sep 27 08:55:19 2000
***************
*** 8,14 ****
  sig6: md2      : 8350e5a3e24c153df2275c9f80692773
  sig7: sha      : da39a3ee5e6b4b0d3255bfef95601890afd80709
  sig8: haval    : 1bdc556b29ad02ec09af8c66477f2a87
! sig9: nullsig  : 0
  *** ./testfiles/t_file1 ***
  sig0: nullsig  : 0
  sig1: md5      : 0cc175b9c0f1b6a831c399e269772661
--- 8,14 ----
  sig6: md2      : 8350e5a3e24c153df2275c9f80692773
  sig7: sha      : da39a3ee5e6b4b0d3255bfef95601890afd80709
  sig8: haval    : 1bdc556b29ad02ec09af8c66477f2a87
! sig9: rmd160   : 9c1185a5c5e9fc54612808977ee8f548b2258d31
  *** ./testfiles/t_file1 ***
  sig0: nullsig  : 0
  sig1: md5      : 0cc175b9c0f1b6a831c399e269772661
***************
*** 19,25 ****
  sig6: md2      : 32ec01ec4a6dac72c0ab96fb34c0b5d1
  sig7: sha      : 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
  sig8: haval    : 24d2bc955a219e3e06462c91b555cfa1
! sig9: nullsig  : 0
  *** ./testfiles/t_file10 ***
  sig0: nullsig  : 0
  sig1: md5      : ba1f2511fc30423bdbb183fe33f3dd0f
--- 19,25 ----
  sig6: md2      : 32ec01ec4a6dac72c0ab96fb34c0b5d1
  sig7: sha      : 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
  sig8: haval    : 24d2bc955a219e3e06462c91b555cfa1
! sig9: rmd160   : 0bdc9d2d256b3ee9daae347be6f4dc835a467ffe
  *** ./testfiles/t_file10 ***
  sig0: nullsig  : 0
  sig1: md5      : ba1f2511fc30423bdbb183fe33f3dd0f
***************
*** 30,36 ****
  sig6: md2      : 9efb894dacb19a345e3519bff3fadd65
  sig7: sha      : a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0
  sig8: haval    : 6508d08fbf578a95661847ffda055627
! sig9: nullsig  : 0
  *** ./testfiles/t_file11 ***
  sig0: nullsig  : 0
  sig1: md5      : e7df7cd2ca07f4f1ab415d457a6e1c13
--- 30,36 ----
  sig6: md2      : 9efb894dacb19a345e3519bff3fadd65
  sig7: sha      : a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0
  sig8: haval    : 6508d08fbf578a95661847ffda055627
! sig9: rmd160   : 7fdc7622a4f32585fa735acec274497986dea823
  *** ./testfiles/t_file11 ***
  sig0: nullsig  : 0
  sig1: md5      : e7df7cd2ca07f4f1ab415d457a6e1c13
***************
*** 41,47 ****
  sig6: md2      : ffc70b71eb524609e8e58ae761be4e7b
  sig7: sha      : 1be168ff837f043bde17c0314341c84271047b31
  sig8: haval    : ce11d80d0ef871d1549f8cea2337c0c4
! sig9: nullsig  : 0
  *** ./testfiles/t_file12 ***
  sig0: nullsig  : 0
  sig1: md5      : d577273ff885c3f84dadb8578bb41399
--- 41,47 ----
  sig6: md2      : ffc70b71eb524609e8e58ae761be4e7b
  sig7: sha      : 1be168ff837f043bde17c0314341c84271047b31
  sig8: haval    : ce11d80d0ef871d1549f8cea2337c0c4
! sig9: rmd160   : 0bb5d1252d5182a7a7513897bde831ed118661d4
  *** ./testfiles/t_file12 ***
  sig0: nullsig  : 0
  sig1: md5      : d577273ff885c3f84dadb8578bb41399
***************
*** 52,58 ****
  sig6: md2      : 3c84d0028288e38d32199b73c9ee91d3
  sig7: sha      : 2672275fe0c456fb671e4f417fb2f9892c7573ba
  sig8: haval    : 3f85b9d3b459bc9955ca896c4dc6fb24
! sig9: nullsig  : 0
  *** ./testfiles/t_file13 ***
  sig0: nullsig  : 0
  sig1: md5      : f447b20a7fcbf53a5d5be013ea0b15af
--- 52,58 ----
  sig6: md2      : 3c84d0028288e38d32199b73c9ee91d3
  sig7: sha      : 2672275fe0c456fb671e4f417fb2f9892c7573ba
  sig8: haval    : 3f85b9d3b459bc9955ca896c4dc6fb24
! sig9: rmd160   : ead888178685c5d3a0400befba9188e4da3d5144
  *** ./testfiles/t_file13 ***
  sig0: nullsig  : 0
  sig1: md5      : f447b20a7fcbf53a5d5be013ea0b15af
***************
*** 63,69 ****
  sig6: md2      : 9e899601601eb0af4d9e9fdf8771c187
  sig7: sha      : c4f9375f9834b4e7f0a528cc65c055702bf5f24a
  sig8: haval    : b5bc9108d246c166adda8ebd2f73e002
! sig9: nullsig  : 0
  *** ./testfiles/t_file14 ***
  sig0: nullsig  : 0
  sig1: md5      : 1b504d3328e16fdf281d1fb9516dd90b
--- 63,69 ----
  sig6: md2      : 9e899601601eb0af4d9e9fdf8771c187
  sig7: sha      : c4f9375f9834b4e7f0a528cc65c055702bf5f24a
  sig8: haval    : b5bc9108d246c166adda8ebd2f73e002
! sig9: rmd160   : f0a13f9f6869ca3503386312756cdad7be98e0ac
  *** ./testfiles/t_file14 ***
  sig0: nullsig  : 0
  sig1: md5      : 1b504d3328e16fdf281d1fb9516dd90b
***************
*** 74,80 ****
  sig6: md2      : eb95dea75b5c1c004ebd79751079a915
  sig7: sha      : e017693e4a04a59d0b0f400fe98177fe7ee13cf7
  sig8: haval    : a0997d012a4e7fafcbce108114809c21
! sig9: nullsig  : 0
  *** ./testfiles/t_file15 ***
  sig0: nullsig  : 0
  sig1: md5      : b2cfa4183267af678ea06c7407d4d6d8
--- 74,80 ----
  sig6: md2      : eb95dea75b5c1c004ebd79751079a915
  sig7: sha      : e017693e4a04a59d0b0f400fe98177fe7ee13cf7
  sig8: haval    : a0997d012a4e7fafcbce108114809c21
! sig9: rmd160   : e2d74468aa3d9b875392bb689cef278a7ddb9ca9
  *** ./testfiles/t_file15 ***
  sig0: nullsig  : 0
  sig1: md5      : b2cfa4183267af678ea06c7407d4d6d8
***************
*** 85,91 ****
  sig6: md2      : 33b61247dc9e2d0931633fdc3b181a88
  sig7: sha      : 179c94cf45c6e383baf52621687305204cef16f9
  sig8: haval    : fec312ff60147311bc6991b95484ee89
! sig9: nullsig  : 0
  *** ./testfiles/t_file16 ***
  sig0: nullsig  : 0
  sig1: md5      : d50b9edee452966e27baf56d33d83a55
--- 85,91 ----
  sig6: md2      : 33b61247dc9e2d0931633fdc3b181a88
  sig7: sha      : 179c94cf45c6e383baf52621687305204cef16f9
  sig8: haval    : fec312ff60147311bc6991b95484ee89
! sig9: rmd160   : de9037c09bc7022fcf935e26ab1c3194d2848495
  *** ./testfiles/t_file16 ***
  sig0: nullsig  : 0
  sig1: md5      : d50b9edee452966e27baf56d33d83a55
***************
*** 96,102 ****
  sig6: md2      : 104cfc93647951d800bc0f7fc2f8efaa
  sig7: sha      : 3eebeac5c732ee465299ef3212409133aa6378ab
  sig8: haval    : ab66ef0b6a5306d306738be8ecbe0b4b
! sig9: nullsig  : 0
  *** ./testfiles/t_file2 ***
  sig0: nullsig  : 0
  sig1: md5      : 900150983cd24fb0d6963f7d28e17f72
--- 96,102 ----
  sig6: md2      : 104cfc93647951d800bc0f7fc2f8efaa
  sig7: sha      : 3eebeac5c732ee465299ef3212409133aa6378ab
  sig8: haval    : ab66ef0b6a5306d306738be8ecbe0b4b
! sig9: rmd160   : 2e3b93b63219f8ae53b37ab7615549e8a292acd6
  *** ./testfiles/t_file2 ***
  sig0: nullsig  : 0
  sig1: md5      : 900150983cd24fb0d6963f7d28e17f72
***************
*** 107,113 ****
  sig6: md2      : da853b0d3f88d99b30283a69e6ded6bb
  sig7: sha      : a9993e364706816aba3e25717850c26c9cd0d89d
  sig8: haval    : c79c31129c3fe87e506b46c6913c52ac
! sig9: nullsig  : 0
  *** ./testfiles/t_file3 ***
  sig0: nullsig  : 0
  sig1: md5      : f96b697d7cb7938d525a2f31aaf161d0
--- 107,113 ----
  sig6: md2      : da853b0d3f88d99b30283a69e6ded6bb
  sig7: sha      : a9993e364706816aba3e25717850c26c9cd0d89d
  sig8: haval    : c79c31129c3fe87e506b46c6913c52ac
! sig9: rmd160   : 8eb208f7e05d987a9b044a8e98c6b087f15a0bfc
  *** ./testfiles/t_file3 ***
  sig0: nullsig  : 0
  sig1: md5      : f96b697d7cb7938d525a2f31aaf161d0
***************
*** 118,124 ****
  sig6: md2      : ab4f496bfb2a530b219ff33031fe06b0
  sig7: sha      : c12252ceda8be8994d5fa0290a47231c1d16aae3
  sig8: haval    : 2c574b6b79528a852df8240995fe6a21
! sig9: nullsig  : 0
  *** ./testfiles/t_file4 ***
  sig0: nullsig  : 0
  sig1: md5      : c3fcd3d76192e4007dfb496cca67e13b
--- 118,124 ----
  sig6: md2      : ab4f496bfb2a530b219ff33031fe06b0
  sig7: sha      : c12252ceda8be8994d5fa0290a47231c1d16aae3
  sig8: haval    : 2c574b6b79528a852df8240995fe6a21
! sig9: rmd160   : 5d0689ef49d2fae572b881b123a85ffa21595f36
  *** ./testfiles/t_file4 ***
  sig0: nullsig  : 0
  sig1: md5      : c3fcd3d76192e4007dfb496cca67e13b
***************
*** 129,135 ****
  sig6: md2      : 4e8ddff3650292ab5a4108c3aa47940b
  sig7: sha      : 32d10c7b8cf96570ca04ce37f2a19d84240d3a89
  sig8: haval    : 92e8ec9ad7fd209d97e9ce21b50440e9
! sig9: nullsig  : 0
  *** ./testfiles/t_file5 ***
  sig0: nullsig  : 0
  sig1: md5      : d174ab98d277d9f5a5611c2c9f419d9f
--- 129,135 ----
  sig6: md2      : 4e8ddff3650292ab5a4108c3aa47940b
  sig7: sha      : 32d10c7b8cf96570ca04ce37f2a19d84240d3a89
  sig8: haval    : 92e8ec9ad7fd209d97e9ce21b50440e9
! sig9: rmd160   : f71c27109c692c1b56bbdceb5b9d2865b3708dbc
  *** ./testfiles/t_file5 ***
  sig0: nullsig  : 0
  sig1: md5      : d174ab98d277d9f5a5611c2c9f419d9f
***************
*** 140,146 ****
  sig6: md2      : da33def2a42df13975352846c30338cd
  sig7: sha      : 761c457bf73b14d27e9e9265c46f4b4dda11f940
  sig8: haval    : 4ae2f37cef9275cce0d73f6a1eb9cdd8
! sig9: nullsig  : 0
  *** ./testfiles/t_file6 ***
  sig0: nullsig  : 0
  sig1: md5      : 57edf4a22be3c955ac49da2e2107b67a
--- 140,146 ----
  sig6: md2      : da33def2a42df13975352846c30338cd
  sig7: sha      : 761c457bf73b14d27e9e9265c46f4b4dda11f940
  sig8: haval    : 4ae2f37cef9275cce0d73f6a1eb9cdd8
! sig9: rmd160   : b0e20b6e3116640286ed3a87a5713079b21f5189
  *** ./testfiles/t_file6 ***
  sig0: nullsig  : 0
  sig1: md5      : 57edf4a22be3c955ac49da2e2107b67a
***************
*** 151,157 ****
  sig6: md2      : d5976f79d83d3a0dc9806c3c66f3efd8
  sig7: sha      : 50abf5706a150990a08b2c5ea40fa0e585554732
  sig8: haval    : fe866802ab5df3fa16cdc4547ad9578f
! sig9: nullsig  : 0
  *** ./testfiles/t_file7 ***
  sig0: nullsig  : 0
  sig1: md5      : 8215ef0796a20bcaaae116d3876c664a
--- 151,157 ----
  sig6: md2      : d5976f79d83d3a0dc9806c3c66f3efd8
  sig7: sha      : 50abf5706a150990a08b2c5ea40fa0e585554732
  sig8: haval    : fe866802ab5df3fa16cdc4547ad9578f
! sig9: rmd160   : 9b752e45573d4b39f4dbd3323cab82bf63326bfb
  *** ./testfiles/t_file7 ***
  sig0: nullsig  : 0
  sig1: md5      : 8215ef0796a20bcaaae116d3876c664a
***************
*** 162,168 ****
  sig6: md2      : 0dff6b398ad5a62ac8d97566b80c3a7f
  sig7: sha      : 84983e441c3bd26ebaae4aa1f95129e5e54670f1
  sig8: haval    : 468c2898bdd3b5b6ca9e79cc4eba8c6c
! sig9: nullsig  : 0
  *** ./testfiles/t_file8 ***
  sig0: nullsig  : 0
  sig1: md5      : b026324c6904b2a9cb4b88d6d61c81d1
--- 162,168 ----
  sig6: md2      : 0dff6b398ad5a62ac8d97566b80c3a7f
  sig7: sha      : 84983e441c3bd26ebaae4aa1f95129e5e54670f1
  sig8: haval    : 468c2898bdd3b5b6ca9e79cc4eba8c6c
! sig9: rmd160   : 12a053384a9c0c88e405a06c27dcf49ada62eb2b
  *** ./testfiles/t_file8 ***
  sig0: nullsig  : 0
  sig1: md5      : b026324c6904b2a9cb4b88d6d61c81d1
***************
*** 173,179 ****
  sig6: md2      : 7126e6e44d6bde5b0c04e9a7c14672ea
  sig7: sha      : e5fa44f2b31c1fb553b6021e7360d07d5d91ff5e
  sig8: haval    : 6f35238887e9b7ed5eb6dd3e362b297f
! sig9: nullsig  : 0
  *** ./testfiles/t_file9 ***
  sig0: nullsig  : 0
  sig1: md5      : 2737b49252e2a4c0fe4c342e92b13285
--- 173,179 ----
  sig6: md2      : 7126e6e44d6bde5b0c04e9a7c14672ea
  sig7: sha      : e5fa44f2b31c1fb553b6021e7360d07d5d91ff5e
  sig8: haval    : 6f35238887e9b7ed5eb6dd3e362b297f
! sig9: rmd160   : 0e25f9d48d432ff5256e6da30ab644d1ca726cb7
  *** ./testfiles/t_file9 ***
  sig0: nullsig  : 0
  sig1: md5      : 2737b49252e2a4c0fe4c342e92b13285
***************
*** 184,187 ****
  sig6: md2      : d2c224507e8667ab345f4c734de5a444
  sig7: sha      : ad552e6dc057d1d825bf49df79d6b98eba846ebe
  sig8: haval    : 915aa6753dd4a0907b93aadcc7891e6e
! sig9: nullsig  : 0
--- 184,187 ----
  sig6: md2      : d2c224507e8667ab345f4c734de5a444
  sig7: sha      : ad552e6dc057d1d825bf49df79d6b98eba846ebe
  sig8: haval    : 915aa6753dd4a0907b93aadcc7891e6e
! sig9: rmd160   : d6eb6a87fdec3ba81871d832810560aabdd588ce
diff -acrN tw_ASR_1.3.1_src/tests/tw.conf.test tw_RIPE1/tests/tw.conf.test
*** tw_ASR_1.3.1_src/tests/tw.conf.test	Tue May  4 10:31:00 1999
--- tw_RIPE1/tests/tw.conf.test	Mon Sep 25 15:11:08 2000
***************
*** 36,41 ****
--- 36,44 ----
  !/build/sigs/sha/shawrapper.o
  !/build/sigs/haval/haval.o
  !/build/sigs/haval/havalwrapper.o
+ !/build/sigs/rmd160/rmd160.o
+ !/build/sigs/rmd160/rmd160wrapper.o
+ 
  
  # helper executables built at compile-time
  !/build/util/types
diff -acrN tw_ASR_1.3.1_src/tests/tw.db_TEST tw_RIPE1/tests/tw.db_TEST
*** tw_ASR_1.3.1_src/tests/tw.db_TEST	Tue May  4 10:31:00 1999
--- tw_RIPE1/tests/tw.db_TEST	Thu Nov  9 18:26:10 2000
***************
*** 124,129 ****
--- 124,134 ----
  /build/sigs/md5/md5.h 0 001.X0 100640 666757 1 0 0 1139 0tBh14 0tBh14 0tBlGi 0 0dzgN.0CItEkU4zOsY6PO4 0 0 0 0 0 0 0 0 
  /build/sigs/md5/md5wrapper.c 0 001.X0 100640 666758 1 0 0 2032 0tBh14 0tBh14 0tBlGi 0 0nR.9i2lAVOUTVjj7TI.q0 0 0 0 0 0 0 0 0 
  /build/sigs/md5/README.md5 0 001.X0 100640 666759 1 0 0 2575 0tBh14 0tBh14 0tBlGi 0 3659z16SPZZ4YfCH:gm2Sp 0 0 0 0 0 0 0 0 
+ /build/sigs/rmd160 0 001.X0 40755 655431 2 0 0 1024 0v:VVh 0v:PEE 0v:PEE 0 0 0 0 0 0 0 0 0 0 
+ /build/sigs/rmd160/Makefile 0 001.X0 100640 655432 1 0 0 281 0v:PHV 0vqBeJ 0vqGZ5 0 3GERUg6f.4a18MuWYVe.qb 0 0 0 0 0 0 0 0 
+ /build/sigs/rmd160/rmd160.h 0 001.X0 100644 655433 1 0 0 3479 0v:PHV 0vqrQT 0vqrQT 0 3QCOPzsNOdYSD84Pk5rLa3 0 0 0 0 0 0 0 0 
+ /build/sigs/rmd160/rmd160wrapper.c 0 001.X0 100640 655434 1 0 0 3413 0v:PHV 0vqFW6 0vqGZ5 0 3bOmMQY3Ph9SL0:OOytEoB 0 0 0 0 0 0 0 0 
+ /build/sigs/rmd160/rmd160.c 0 001.X0 100644 655435 1 0 0 10875 0v:PHV 0vqA.q 0vqGZ5 0 0qQQzmdNi5IDJd6pK:9c6e 0 0 0 0 0 0 0 0 
  /build/sigs/sha 0 001.X0 40750 670238 2 0 0 512 0tBlGs 0tBh14 0tBlGi 0 0 0 0 0 0 0 0 0 0 
  /build/sigs/sha/Makefile 0 001.X0 100640 670239 1 0 0 292 0tBh14 0tBh14 0tBlGi 0 2ZdiPtncH9HIHmBvZbwERb 0 0 0 0 0 0 0 0 
  /build/sigs/sha/sha.c 0 001.X0 100640 670240 1 0 0 11560 0tBh14 0tBh14 0tBlGi 0 3e2V8qEqTk5URVpuTa1RTO 0 0 0 0 0 0 0 0 
