From 1bf820a79effaf3277235fc6533f71e834bbb242 Mon Sep 17 00:00:00 2001 From: swrup Date: Sun, 7 Dec 2025 17:46:28 +0100 Subject: [PATCH] --- src/api.ml | 2 ++ src/handler.ml | 6 ++++-- src/management.ml | 6 +++++- src/mte.ml | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/api.ml b/src/api.ml index e1f36ddc..c3377f43 100644 --- a/src/api.ml +++ b/src/api.ml @@ -69,6 +69,7 @@ module HashCode : sig type t val hash : string -> t + val of_b32 : B32.t -> (t, string) result val to_denomination_hash : t -> Bin_type.DenominationHash.t val jsont : t Jsont.t end = struct @@ -80,6 +81,7 @@ end = struct let open Digestif.SHA512 in s |> digest_string |> to_raw_string + let of_b32 = B32.decode let jsont = B32.jsont end diff --git a/src/handler.ml b/src/handler.ml index 93396245..d75949bc 100644 --- a/src/handler.ml +++ b/src/handler.ml @@ -58,15 +58,17 @@ let management_keys_post req server _env = let management_denom_revoke_jsont = DenomRevocationSignature.jsont -let management_denom_revoke req server _env = +let management_denom_revoke req h_denom_pub server _env = let open Syntax in let open Management in let db_conn = Vif.Server.device Devices.db_connection server in let sm_signkey = Vif.Server.device Devices.secmod_signkey server in let sm_denom = Vif.Server.device Devices.secmod_denom server in let res = + let* h_denom_pub = HashCode.of_b32 h_denom_pub in + let h_denom_pub = HashCode.to_denomination_hash h_denom_pub in let* v = Vif.Request.of_json req |> unwrap_err_msg in - let* () = verify_denom_revocation_sig ~sm_signkey ~sm_denom v in + let* () = verify_denom_revocation_sig ~h_denom_pub v in let* () = update_denom_revocation ~db_conn ~sm_signkey ~sm_denom v in Ok "" in diff --git a/src/management.ml b/src/management.ml index 16a670ac..87418c66 100644 --- a/src/management.ml +++ b/src/management.ml @@ -216,5 +216,9 @@ let update_master_signatures ~db_conn ~sm_signkey ~sm_denom [@@@ocaml.warning "-27"] -let verify_denom_revocation_sig ~sm_signkey ~sm_denom v = Ok () +let verify_denom_revocation_sig ~h_denom_pub + DenomRevocationSignature.{ master_sig } = + let open Bin_sig.MasterDenominationKeyRevocation in + verify ~key:Config.Exchange.master_public_key master_sig { h_denom_pub } + let update_denom_revocation ~db_conn ~sm_signkey ~sm_denom v = Ok () diff --git a/src/mte.ml b/src/mte.ml index 41723718..3e82c256 100644 --- a/src/mte.ml +++ b/src/mte.ml @@ -36,7 +36,7 @@ let routes = post (v "management" / "keys") management_keys_post_jsont --> management_keys_post; post - (v "management" / "denominations" / "$H_DENOM_PUB" / "revoke") + (v "management" / "denominations" /% string `Path / "revoke") management_denom_revoke_jsont --> management_denom_revoke; ]