package mirage-crypto-rng
A cryptographically secure PRNG
Install
Dune Dependency
Authors
Maintainers
Sources
mirage-crypto-2.0.1.tbz
sha256=5430ce3c3e40627d2d67a8decf565a1f612d39bdb33f9b767c3bdb601ff5a196
sha512=de029e01cbb8d49f9b8fbcd02ef4777435927118c9ce7a859a8193fdbec30d1a7b3a2964ee8ec722f5fa74fec1bfdc054dcdc97ad1db6e2ced359d6c010c043a
doc/src/mirage-crypto-rng.unix/mirage_crypto_rng_unix.ml.html
Source file mirage_crypto_rng_unix.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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
open Mirage_crypto_rng module Urandom = Urandom module Getentropy = Getentropy let use_dev_urandom () = let g = create (module Urandom) in set_default_generator g let use_getentropy () = let g = create (module Getentropy) in set_default_generator g let use_default () = use_getentropy () let src = Logs.Src.create "mirage-crypto-rng.unix" ~doc:"Mirage crypto RNG Unix" module Log = (val Logs.src_log src : Logs.LOG) external getrandom_buf : bytes -> int -> int -> unit = "mc_getrandom" [@@noalloc] let getrandom_into buf ~off ~len = getrandom_buf buf off len let getrandom size = let buf = Bytes.create size in getrandom_into buf ~off:0 ~len:size; Bytes.unsafe_to_string buf let getrandom_init i = let data = getrandom 128 in Entropy.header i data let running = Atomic.make false let initialize (type a) ?g (rng : a generator) = if Atomic.get running then Log.debug (fun m -> m "Mirage_crypto_rng_unix.initialize has already been called, \ ignoring this call.") else begin (try let _ = default_generator () in Log.warn (fun m -> m "Mirage_crypto_rng.default_generator has already \ been set, check that this call is intentional"); with No_default_generator -> ()); Atomic.set running true ; let seed = let init = Entropy.[ bootstrap ; whirlwind_bootstrap ; bootstrap ; getrandom_init ] in List.mapi (fun i f -> f i) init |> String.concat "" in let _ = Entropy.register_source "getrandom" in set_default_generator (create ?g ~seed rng) end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>