package mirage-crypto-rng
A cryptographically secure PRNG
Install
Dune Dependency
Authors
Maintainers
Sources
mirage-crypto-1.2.0.tbz
sha256=09542bcd96c1d368ff9ba8853105f4c1781d8c94c2400df9f3ac0610ee07e67e
sha512=1b31c9df0ce774c87a36f714db4ea1f295bc1e2e317d30497523ec03564cace0f64ac4c535aa83c82792aa3331a92efe774e4c3300a6ffe09110ce0efc2ce24b
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)"
>