https://gitlab.com/tezos/tezos
Raw File
Tip revision: fc948e4be90a5dd23d321789e4177d1c4bedbffb authored by Gabriel Moise on 23 October 2023, 15:21:05 UTC
WIP: Add tezts
Tip revision: fc948e4
signing-delay.patch
diff --git a/src/lib_client_base_unix/client_main_run.ml b/src/lib_client_base_unix/client_main_run.ml
index 346a0e2e06..52c5d310b0 100644
--- a/src/lib_client_base_unix/client_main_run.ml
+++ b/src/lib_client_base_unix/client_main_run.ml
@@ -83,2 +83,2 @@ module type M = sig
   val logger : RPC_client_unix.logger option
 end

+let artificial_delay =
+  lazy
+    (let v = Sys.getenv_opt "SIGN_DELAY" in
+     Option.bind v (fun s ->
+         match float_of_string_opt s with
+         | None ->
+             Format.eprintf
+               "Error while parsing signature artifical delay '%s': ignoring.@."
+               s ;
+             None
+         | Some d -> Some d))
+
+let wrap_signer_with_delay (module S : Client_keys.SIGNER) :
+    (module Client_keys.SIGNER) =
+  (module struct
+    include S
+
+    let sign ?watermark sk_uri b =
+      let open Lwt_result_syntax in
+      let* sign_result = S.sign ?watermark sk_uri b in
+      let*! () =
+        match Lazy.force artificial_delay with
+        | None -> Lwt.return_unit
+        | Some delay -> Lwt_unix.sleep delay
+      in
+      return sign_result
+  end)
+
 let setup_remote_signer (module C : M) client_config
     (rpc_config : RPC_client_unix.config) parsed_config_file =
   let module Remote_params = struct
@@ -122,14 +150,16 @@ let setup_remote_signer (module C : M) client_config
   in
   let module Socket = Tezos_signer_backends_unix.Socket.Make (Remote_params) in
   Client_keys.register_signer
-    (module Tezos_signer_backends.Encrypted.Make (struct
-      let cctxt = (client_config :> Client_context.io_wallet)
-    end)) ;
+    (wrap_signer_with_delay
+       (module Tezos_signer_backends.Encrypted.Make (struct
+         let cctxt = (client_config :> Client_context.io_wallet)
+       end))) ;
   Client_keys.register_aggregate_signer
     (module Tezos_signer_backends.Encrypted.Make_aggregate (struct
       let cctxt = (client_config :> Client_context.io_wallet)
     end)) ;
-  Client_keys.register_signer (module Tezos_signer_backends.Unencrypted) ;
+  Client_keys.register_signer
+    (wrap_signer_with_delay (module Tezos_signer_backends.Unencrypted)) ;
   Client_keys.register_aggregate_signer
     (module Tezos_signer_backends.Unencrypted.Aggregate) ;
   Client_keys.register_signer
back to top