Define RANDOM-BYTE-VECTOR to generate random bytes. This is useful
authorChris Hanson <org/chris-hanson/cph>
Tue, 11 Apr 2000 03:46:57 +0000 (03:46 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 11 Apr 2000 03:46:57 +0000 (03:46 +0000)
for cryptographic applications that don't require an RNG with
cryptographic properties, e.g. to generate an init vector or to salt a
password.

v7/src/runtime/random.scm
v7/src/runtime/runtime.pkg

index 967f31c1bbe49df44854746e4f54124b2ad0c597..d30afcf82231906fa0cd13c2e3a8e4c6f3d9f000 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Id: random.scm,v 14.22 1999/08/09 19:33:44 cph Exp $
+$Id: random.scm,v 14.23 2000/04/11 03:46:50 cph Exp $
 
-Copyright (c) 1993-1999 Massachusetts Institute of Technology
+Copyright (c) 1993-2000 Massachusetts Institute of Technology
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -86,6 +86,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
                                       (fix:+ index 1))))
        (set-interrupt-enables! mask)
        (flo:/ element b.)))))
+
+(define (random-byte-vector n #!optional state)
+  (let ((state (if (default-object? state) #f state))
+       (s (make-string n)))
+    (do ((i 0 (fix:+ i 1)))
+       ((fix:= i n))
+      (vector-8b-set! s i (random 256 state)))
+    s))
 \f
 (define (make-random-state #!optional state)
   (let ((state (if (default-object? state) #f state)))
index 589953f0690b7c33a91d79c14c99aa8eb3afdf6b..89777debb4b79fe80f840cd14e5e86a6dc3a4066 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: runtime.pkg,v 14.342 2000/04/10 19:01:31 cph Exp $
+$Id: runtime.pkg,v 14.343 2000/04/11 03:46:57 cph Exp $
 
 Copyright (c) 1988-2000 Massachusetts Institute of Technology
 
@@ -1950,6 +1950,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
          flo:random-unit
          make-random-state
          random
+         random-byte-vector
          random-state?)
   (initialization (initialize-package!)))