Make pool and buffer sizes more sensible.
authormdw <mdw>
Tue, 12 Oct 1999 21:00:15 +0000 (21:00 +0000)
committermdw <mdw>
Tue, 12 Oct 1999 21:00:15 +0000 (21:00 +0000)
rand.c
rand.h

diff --git a/rand.c b/rand.c
index 036ba4d..9aea479 100644 (file)
--- a/rand.c
+++ b/rand.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
 /* -*-c-*-
  *
- * $Id: rand.c,v 1.1 1999/09/03 08:41:12 mdw Exp $
+ * $Id: rand.c,v 1.2 1999/10/12 21:00:15 mdw Exp $
  *
  * Secure random number generator
  *
  *
  * Secure random number generator
  *
@@ -30,6 +30,9 @@
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: rand.c,v $
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: rand.c,v $
+ * Revision 1.2  1999/10/12 21:00:15  mdw
+ * Make pool and buffer sizes more sensible.
+ *
  * Revision 1.1  1999/09/03 08:41:12  mdw
  * Initial import.
  *
  * Revision 1.1  1999/09/03 08:41:12  mdw
  * Initial import.
  *
@@ -151,23 +154,24 @@ void rand_key(rand_pool *r, const void *k, size_t sz)
 void rand_add(rand_pool *r, const void *p, size_t sz, unsigned goodbits)
 {
   const octet *c = p;
 void rand_add(rand_pool *r, const void *p, size_t sz, unsigned goodbits)
 {
   const octet *c = p;
-  int i, rot, mid;
+  int i, rot;
 
 
-#if RAND_POOLSZ != 1279
+#if RAND_POOLSZ != 128
 #  error Polynomial in rand_add is out of date.  Fix it.
 #endif
 
   RAND_RESOLVE(r);
 
 #  error Polynomial in rand_add is out of date.  Fix it.
 #endif
 
   RAND_RESOLVE(r);
 
-  i = r->i; rot = r->irot; mid = i + 418;
-  if (mid >= RAND_POOLSZ) mid -= RAND_POOLSZ;
+  i = r->i; rot = r->irot;
 
   while (sz) {
     octet o = *c++;
 
   while (sz) {
     octet o = *c++;
-    r->pool[i] ^= (ROL8(o, rot) ^ r->pool[mid]);
+    r->pool[i] ^= (ROL8(o, rot) ^
+                  r->pool[(i + 1) % RAND_POOLSZ] ^
+                  r->pool[(i + 2) % RAND_POOLSZ] ^
+                  r->pool[(i + 7) % RAND_POOLSZ]);
     rot = (rot + 5) & 7;
     i++; if (i >= RAND_POOLSZ) i -= RAND_POOLSZ;
     rot = (rot + 5) & 7;
     i++; if (i >= RAND_POOLSZ) i -= RAND_POOLSZ;
-    mid++; if (mid >= RAND_POOLSZ) mid -= RAND_POOLSZ;
     sz--;
   }
 
     sz--;
   }
 
diff --git a/rand.h b/rand.h
index 8ccd38c..2656eaf 100644 (file)
--- a/rand.h
+++ b/rand.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
 /* -*-c-*-
  *
- * $Id: rand.h,v 1.1 1999/09/03 08:41:12 mdw Exp $
+ * $Id: rand.h,v 1.2 1999/10/12 21:00:15 mdw Exp $
  *
  * Secure random number generator
  *
  *
  * Secure random number generator
  *
@@ -30,6 +30,9 @@
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: rand.h,v $
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: rand.h,v $
+ * Revision 1.2  1999/10/12 21:00:15  mdw
+ * Make pool and buffer sizes more sensible.
+ *
  * Revision 1.1  1999/09/03 08:41:12  mdw
  * Initial import.
  *
  * Revision 1.1  1999/09/03 08:41:12  mdw
  * Initial import.
  *
@@ -89,8 +92,8 @@
 
 /*----- Magic numbers -----------------------------------------------------*/
 
 
 /*----- Magic numbers -----------------------------------------------------*/
 
-#define RAND_POOLSZ 1279               /* Input pool size in bytes */
-#define RAND_BUFSZ 1024                        /* Output buffer size in bytes */
+#define RAND_POOLSZ 128                        /* Input pool size in bytes */
+#define RAND_BUFSZ 128                 /* Output buffer size in bytes */
 #define RAND_SECSZ 20                  /* Secret octets in output buffer */
 
 #define RAND_IBITS (RAND_POOLSZ * 8)
 #define RAND_SECSZ 20                  /* Secret octets in output buffer */
 
 #define RAND_IBITS (RAND_POOLSZ * 8)