package mirage-crypto-rng
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
A cryptographically secure PRNG
Install
dune-project
Dependency
Authors
Maintainers
Sources
mirage-crypto-2.0.3.tbz
sha256=3919a8bda3635959bb662d4ffa32266eb73c450ecc2a2b66ba5e1ecf88f7ad23
sha512=0580c8787cac821531c6038b9f82d32f6a7d3beee0b4c6900c2bf9fa3fa1b2a8d460b4d53ade8cd03e5e8e968b85f2c870c17818ad6e0f12d6834da92db4bef8
doc/src/mirage-crypto-rng.unix/urandom.ml.html
Source file urandom.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29type g = In_channel.t * Mutex.t (* The OCaml runtime always reads at least IO_BUFFER_SIZE from an input channel, which is currently 64 KiB *) let block = 65536 let create ?time:_ () = let ic = In_channel.open_bin "/dev/urandom" and mutex = Mutex.create () in at_exit (fun () -> In_channel.close ic); (ic, mutex) let generate_into ~g:(ic, m) buf ~off len = let finally () = Mutex.unlock m in Mutex.lock m; Fun.protect ~finally (fun () -> match In_channel.really_input ic buf off len with | None -> failwith "couldn't read enough bytes from /dev/urandom" | Some () -> ()) let reseed ~g:_ _data = () let accumulate ~g:_ _source = `Acc (fun _data -> ()) let seeded ~g:_ = true let pools = 0
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>