From d496d32fcfed713c2eb170f1c1109d032435578a Mon Sep 17 00:00:00 2001 From: Lucas Pluvinage Date: Mon, 31 Jul 2023 22:56:21 +0200 Subject: [PATCH] mirage-crypto-rng-eio: use monotonic clock from eio's environment instead of mtime (#176) mirage-crypto-rng-eio: use eio environment's clock instead of mtime.clock.os --- CHANGES.md | 5 +++++ mirage-crypto-rng-eio.opam | 2 +- rng/eio/dune | 2 +- rng/eio/mirage_crypto_rng_eio.ml | 6 +++++- rng/eio/mirage_crypto_rng_eio.mli | 1 + 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 7274b26a..14661db4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,8 @@ +## dev + +* mirage-crypto-rng-eio: improve portability by using eio 0.7's monotonic clock + interface instead of mtime.clock.os. (@TheLortex) + ## v0.11.1 (2023-03-09) * BUGFIX Chacha20 decrypt and encrypt with empty data (previously lead to diff --git a/mirage-crypto-rng-eio.opam b/mirage-crypto-rng-eio.opam index 6607fb85..dd219cf1 100644 --- a/mirage-crypto-rng-eio.opam +++ b/mirage-crypto-rng-eio.opam @@ -15,7 +15,7 @@ build: [ ["dune" "subst"] {dev} depends: [ "ocaml" {>= "5.0.0"} "dune" {>= "2.7"} - "eio" {>= "0.3"} + "eio" {>= "0.7"} "cstruct" {>= "6.0.0"} "logs" "mirage-crypto-rng" {=version} diff --git a/rng/eio/dune b/rng/eio/dune index 379f2270..b15aa92a 100644 --- a/rng/eio/dune +++ b/rng/eio/dune @@ -1,4 +1,4 @@ (library (name mirage_crypto_rng_eio) (public_name mirage-crypto-rng-eio) - (libraries eio cstruct logs mirage-crypto-rng duration mtime.clock.os)) + (libraries eio cstruct logs mirage-crypto-rng duration mtime)) diff --git a/rng/eio/mirage_crypto_rng_eio.ml b/rng/eio/mirage_crypto_rng_eio.ml index f0e78ba6..f6f5e1fb 100644 --- a/rng/eio/mirage_crypto_rng_eio.ml +++ b/rng/eio/mirage_crypto_rng_eio.ml @@ -3,6 +3,7 @@ open Mirage_crypto_rng type env = < clock: Eio.Time.clock; + mono_clock: Eio.Time.Mono.t; secure_random: Eio.Flow.source; > @@ -75,7 +76,10 @@ let run Entropy.[ bootstrap ; whirlwind_bootstrap ; bootstrap ; getrandom_init env ] in List.mapi (fun i f -> f i) init |> Cstruct.concat in - let rng = create ?g ~seed ~time:Mtime_clock.elapsed_ns generator in + let time () = + Eio.Stdenv.mono_clock env |> Eio.Time.Mono.now |> Mtime.to_uint64_ns + in + let rng = create ?g ~seed ~time generator in set_default_generator rng; let source = Entropy.register_source "getrandom" in let feed_entropy () = periodically_feed_entropy env (Int64.mul sleep 10L) source in diff --git a/rng/eio/mirage_crypto_rng_eio.mli b/rng/eio/mirage_crypto_rng_eio.mli index 6f95cfa5..117d21ca 100644 --- a/rng/eio/mirage_crypto_rng_eio.mli +++ b/rng/eio/mirage_crypto_rng_eio.mli @@ -6,6 +6,7 @@ type env = < clock: Eio.Time.clock; + mono_clock: Eio.Time.Mono.t; secure_random: Eio.Flow.source; >