From edbe3ceb7029b0ee20f05a3da04fdd6a9cee66d4 Mon Sep 17 00:00:00 2001 From: swrup Date: Sun, 7 Dec 2025 17:13:44 +0100 Subject: [PATCH] ~ --- src/management.ml | 74 ++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/src/management.ml b/src/management.ml index 4386e4ad..580b1758 100644 --- a/src/management.ml +++ b/src/management.ml @@ -159,6 +159,43 @@ let verify_master_signatures ~sm_signkey ~sm_denom (* --- *) +(* TODO move to test *) +let check_master_signatures_update ~db_conn ~sm_denom = + let open Syntax in + Secmod_denom.get_denoms sm_denom + |> list_iter (fun denom -> + let error = Error "update_master_signatures sanity check failure" in + let* opt = + Pg.lookup_denomination_key db_conn denom.Denomination.h_pub + |> unwrap_err_caqti + in + let* ( valid_from, + _expire_withdraw, + _expire_deposit, + _expire_legal, + coin, + _fee_withdraw, + _fee_deposit, + _fee_refresh, + fee_refund, + age_mask ) = + match opt with None -> error | Some v -> Ok v + in + let check = function false -> error | true -> Ok () in + (* TODO time *) + let timestamp_equal a b = + let timestamp_to_int64 = function + | None -> None + | Some v -> v |> Ptime.to_float_s |> Int64.of_float |> Option.some + in + timestamp_to_int64 a = timestamp_to_int64 b + in + let* () = check (timestamp_equal valid_from denom.stamp_start) in + let* () = check (coin = denom.value) in + let* () = check (fee_refund = denom.fee_refund) in + let* () = check (age_mask = denom.age_mask) in + Ok ()) + let update_master_signatures ~db_conn ~sm_signkey ~sm_denom MasterSignatures.{ denom_sigs; signkey_sigs } = let open Syntax in @@ -174,40 +211,5 @@ let update_master_signatures ~db_conn ~sm_signkey ~sm_denom (h_denom_pub, master_sig)) |> Secmod_denom.add_master_signatures db_conn sm_denom in - let* () = - (* TODO move to test *) - Secmod_denom.get_denoms sm_denom - |> list_iter (fun denom -> - let error = Error "update_master_signatures sanity check failure" in - let* opt = - Pg.lookup_denomination_key db_conn denom.Denomination.h_pub - |> unwrap_err_caqti - in - let* ( valid_from, - _expire_withdraw, - _expire_deposit, - _expire_legal, - coin, - _fee_withdraw, - _fee_deposit, - _fee_refresh, - fee_refund, - age_mask ) = - match opt with None -> error | Some v -> Ok v - in - let check = function false -> error | true -> Ok () in - (* TODO time *) - let timestamp_equal a b = - let timestamp_to_int64 = function - | None -> None - | Some v -> v |> Ptime.to_float_s |> Int64.of_float |> Option.some - in - timestamp_to_int64 a = timestamp_to_int64 b - in - let* () = check (timestamp_equal valid_from denom.stamp_start) in - let* () = check (coin = denom.value) in - let* () = check (fee_refund = denom.fee_refund) in - let* () = check (age_mask = denom.age_mask) in - Ok ()) - in + let* () = check_master_signatures_update ~db_conn ~sm_denom in Ok ()