If not on OpenBSD use /dev/random - pee - Pee a password manager;Pee - because you have to...
(HTM) git clone git://vernunftzentrum.de/pee.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit d81668d38fa2e3d5fb6d2c0878bd614b33a7b929
(DIR) parent 404420ba6d6fa7e5376ce613f3803a65b2ca94ef
(HTM) Author: Christian Kellermann <ckeen@pestilenz.org>
Date: Sat, 9 Jan 2016 12:45:05 +0100
If not on OpenBSD use /dev/random
Diffstat:
crypto-helper.scm | 8 +++++++-
pee.scm | 2 +-
2 files changed, 8 insertions(+), 2 deletions(-)
---
(DIR) diff --git a/crypto-helper.scm b/crypto-helper.scm
@@ -1,4 +1,4 @@
-(module crypto-helper (arc4random hash-passphrase)
+(module crypto-helper (random-bytes hash-passphrase)
(import chicken scheme foreign)
(use blob-hexadecimal (srfi 4))
(foreign-declare "#include \"blake2.h\"")
@@ -24,6 +24,12 @@
(error "Unable to hash passphrase with blake2s")
out)))
+ (define (random-bytes len)
+ (cond-expand (openbsd:
+ (arc4random len))
+ (else
+ (with-input-from-file "/dev/random" (lambda () (read-u8vector len))))))
+
(define (arc4random len)
(let ((buf (make-blob len)))
((foreign-lambda
(DIR) diff --git a/pee.scm b/pee.scm
@@ -35,7 +35,7 @@
(else
(let ((new (filter (lambda (n)
(< n (string-length password-chars)))
- (u8vector->list (arc4random len)))))
+ (u8vector->list (random-bytes len)))))
(loop (- len (length new)) (append new idx)))))))
(list->string (map (lambda (i)
(string-ref password-chars i))