NOTE: The Hash: line in ASCII armored files is ignored when it exists
and not generated with the current routines

All c source has been processed via indent with the following options:

-i2 -ts0 -npro -br -ce -npcs -npsl -l80 -v

====================================================

From the SAFER readme, it is available from:

     [] ftp isidor.ethz.ch          (or: ftp 129.132.1.136)
      or
     [] ftp isibee.ethz.ch          (or: ftp 129.132.38.1)
     Name: anonymous
     Password: your_e-mail_address
     cd pub/simpl
     get safer.V1.1.tar.Z
     quit
     [] uncompress safer.V1.1.tar.Z
     [] tar -xf safer.V1.1.tar
     [] cd safer

Copy safer.c and safer.h into the pgplib directory.

====================================================

Haval is at 

ftp://idea.sec.dsi.unimi.it/pub/security/crypt/code/haval.tar.gz

YOU NEED TO MODIFY #undef LITTLE_ENDIAN yourself for your machine

The patches to haval.c only eliminate warning messages.

The patch to havalapp.h sets the flavor of HAVAL

diff -Bbur haval/havalapp.h havpgp/havalapp.h
--- haval/havalapp.h    Mon Sep 27 21:26:28 1993
+++ havpgp/havalapp.h   Thu Mar 19 09:58:57 1998
@@ -25,11 +25,11 @@
 #undef LITTLE_ENDIAN
 
 #ifndef PASS
-#define PASS       3        /* 3, 4, or 5 */
+#define PASS       5        /* 3, 4, or 5 */
 #endif
 
 #ifndef FPTLEN  
-#define FPTLEN     256      /* 128, 160, 192, 224 or 256 */
+#define FPTLEN     160      /* 128, 160, 192, 224 or 256 */
 #endif
 
 
diff -Bbur haval/haval.c havpgp/haval.c
--- haval/haval.c       Mon Sep 27 21:35:06 1993
+++ havpgp/haval.c      Thu Mar 19 09:58:57 1998
@@ -66,25 +66,35 @@
 };
 
 #define f_1(x6, x5, x4, x3, x2, x1, x0)          \
-           ((x1) & ((x0) ^ (x4)) ^ (x2) & (x5) ^ \
-            (x3) & (x6) ^ (x0))
+           (((x1) & ((x0) ^ (x4))) ^ \
+            ((x2) & (x5)) ^ \
+            ((x3) & (x6)) ^ (x0))
 
 #define f_2(x6, x5, x4, x3, x2, x1, x0)                         \
-           ((x2) & ((x1) & ~(x3) ^ (x4) & (x5) ^ (x6) ^ (x0)) ^ \
-            (x4) & ((x1) ^ (x5)) ^ (x3) & (x5) ^ (x0)) 
+           (((x2) & \
+           (((x1) & ~(x3)) ^ \
+            ((x4) &  (x5)) ^ (x6) ^ (x0))) ^ \
+            ((x4) & ((x1) ^ (x5))) ^ \
+            ((x3) & (x5)) ^ (x0)) 
 
 #define f_3(x6, x5, x4, x3, x2, x1, x0)          \
-           ((x3) & ((x1) & (x2) ^ (x6) ^ (x0)) ^ \
-            (x1) & (x4) ^ (x2) & (x5) ^ (x0))
+           (((x3) & \
+            (((x1) & (x2)) ^ (x6) ^ (x0))) ^ \
+            ((x1) & (x4)) ^ \
+            ((x2) & (x5)) ^ (x0))
 
 #define f_4(x6, x5, x4, x3, x2, x1, x0)                                 \
-           ((x4) & ((x5) & ~(x2) ^ (x3) & ~(x6) ^ (x1) ^ (x6) ^ (x0)) ^ \
-            (x3) & ((x1) & (x2) ^ (x5) ^ (x6)) ^                        \
-            (x2) & (x6) ^ (x0))
+           (((x4) & \
+            (((x5) & ~(x2)) ^ \
+             ((x3) & ~(x6)) ^ (x1) ^ (x6) ^ (x0))) ^ \
+            ((x3) & \
+            (((x1) & (x2)) ^ (x5) ^ (x6))) ^                        \
+           ((x2) & (x6)) ^ (x0))
 
 #define f_5(x6, x5, x4, x3, x2, x1, x0)             \
-           ((x0) & ((x1) & (x2) & (x3) ^ ~(x5)) ^   \
-            (x1) & (x4) ^ (x2) & (x5) ^ (x3) & (x6))
+           (((x0) & \
+            (((x1) & (x2) & (x3)) ^ ~(x5))) ^   \
+            ((x1) & (x4)) ^ ((x2) & (x5)) ^ ((x3) & (x6)))
 
 /*
  * Permutations phi_{i,j}, i=3,4,5, j=1,...,i.
@@ -238,7 +248,7 @@
     return (1);                                    /* fail */
   } else {
     haval_start (&state);
-    while (len = fread (buffer, 1, 1024, file)) {
+    while ((len = fread (buffer, 1, 1024, file))) {
       haval_hash (&state, buffer, len);
     }
     fclose (file);
@@ -256,7 +266,7 @@
                 fingerprint[FPTLEN >> 3];
 
   haval_start (&state);
-  while (len = fread (buffer, 1, 32, stdin)) {
+  while ((len = fread (buffer, 1, 32, stdin))) {
     haval_hash (&state, buffer, len);
   }
   haval_end (&state, fingerprint);
