package mirage
Source file mirage_impl_random.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 27open Functoria open Mirage_impl_mclock open Mirage_impl_time type random = RANDOM let random = Type.v RANDOM let rng ?(time = default_time) ?(mclock = default_monotonic_clock) () = let keys = [ Mirage_key.(v prng) ] in let packages = [ package ~min:"0.8.0" ~max:"0.11.0" "mirage-crypto-rng-mirage"; package ~min:"3.0.0" ~max:"4.0.0" "mirage-random"; ] in let connect _ modname _ = (* here we could use the boot argument (--prng) to select the RNG! *) Fmt.str "%s.initialize (module Mirage_crypto_rng.Fortuna)" modname in impl ~keys ~packages ~connect "Mirage_crypto_rng_mirage.Make" (Mirage_impl_time.time @-> Mirage_impl_mclock.mclock @-> random) $ time $ mclock let default_random = rng () let nocrypto = Functoria.noop