There's an easy way to do this now.

Index: bcrypt.c
===================================================================
RCS file: /cvs/src/lib/libc/crypt/bcrypt.c,v
retrieving revision 1.24
diff -u -p -r1.24 bcrypt.c
--- bcrypt.c    2 Apr 2008 19:54:05 -0000       1.24
+++ bcrypt.c    3 Sep 2012 17:29:48 -0000
@@ -148,15 +148,8 @@ char *
 bcrypt_gensalt(u_int8_t log_rounds)
 {
        u_int8_t csalt[BCRYPT_MAXSALT];
-       u_int16_t i;
-       u_int32_t seed = 0;
 
-       for (i = 0; i < BCRYPT_MAXSALT; i++) {
-               if (i % 4 == 0)
-                       seed = arc4random();
-               csalt[i] = seed & 0xff;
-               seed = seed >> 8;
-       }
+       arc4random_buf(csalt, sizeof(csalt));
 
        if (log_rounds < 4)
                log_rounds = 4;

Reply via email to