This commit is contained in:
swrup 2025-12-07 17:13:44 +01:00
parent bcb9015c34
commit edbe3ceb70

View file

@ -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 ()