Introduction
Introduction Statistics Contact Development Disclaimer Help
crypto-helper.scm - pee - Pee a password manager;Pee - because you have to...
git clone git://vernunftzentrum.de/pee.git
Log
Files
Refs
LICENSE
---
crypto-helper.scm (1609B)
---
1 (module crypto-helper (random-bytes hash-passphrase blake2s)
2 (import (chicken base) scheme (chicken foreign))
3 (import (chicken blob) blob-hexadecimal srfi-4)
4 (foreign-declare "#include \"blake2.h\"")
5 (foreign-declare "#include \"blake2-impl.h\"")
6 (foreign-declare "#include \"blake2s-ref.c\"")
7
8 (define-foreign-variable blake2s-outbytes integer "BLAKE2S_OUTBY…
9
10 (define blake2s
11 (foreign-lambda*
12 int
13 ((c-string passphrase)
14 ((scheme-pointer unsigned-char) out))
15 "
16 int res = 0;
17 res = blake2s(out, passphrase, NULL, BLAKE2S_OUTBYTES, strlen…
18 C_return(res);
19 "))
20
21 (define (hash-passphrase passphrase)
22 (let ((out (make-blob blake2s-outbytes)))
23 (if (not (zero? (blake2s passphrase out)))
24 (error "Unable to hash passphrase with blake2s")
25 out)))
26
27 (define (random-bytes len)
28 (cond-expand (openbsd:
29 (arc4random len))
30 (linux:
31 (with-input-from-file "/dev/urandom" (lambda () …
32 (else
33 (with-input-from-file "/dev/random" (lambda () (…
34 #+openbsd
35 (define (arc4random len)
36 (let ((buf (make-blob len)))
37 ((foreign-lambda
38 void
39 "arc4random_buf"
40 (scheme-pointer void)
41 size_t) buf len)
42 (blob->u8vector buf)))
43 )
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.