Add support for seeding from a generic pseudorandom source.
[u/mdw/catacomb] / rc4.c
diff --git a/rc4.c b/rc4.c
index b1e9d67..a4e595f 100644 (file)
--- a/rc4.c
+++ b/rc4.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: rc4.c,v 1.2 1999/12/10 23:27:35 mdw Exp $
+ * $Id: rc4.c,v 1.3 1999/12/13 15:34:01 mdw Exp $
  *
  * The alleged RC4 stream cipher
  *
@@ -30,6 +30,9 @@
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: rc4.c,v $
+ * Revision 1.3  1999/12/13 15:34:01  mdw
+ * Add support for seeding from a generic pseudorandom source.
+ *
  * Revision 1.2  1999/12/10 23:27:35  mdw
  * Generic cipher and RNG interfaces.
  *
@@ -184,6 +187,7 @@ static int grmisc(grand *r, unsigned op, ...)
        case GRAND_SEEDINT:
        case GRAND_SEEDUINT32:
        case GRAND_SEEDBLOCK:
+       case GRAND_SEEDRAND:
          rc = 1;
          break;
        default:
@@ -204,6 +208,15 @@ static int grmisc(grand *r, unsigned op, ...)
       size_t sz = va_arg(ap, size_t);
       rc4_init(&g->rc4, p, sz);
     } break;
+    case GRAND_SEEDRAND: {
+      grand *rr = va_arg(ap, grand *);
+      octet buf[16];
+      rr->ops->fill(rr, buf, sizeof(buf));
+      rc4_init(&g->rc4, buf, sizeof(buf));
+    } break;
+    default:
+      GRAND_BADOP;
+      break;
   }
 
   va_end(ap);