This commit is contained in:
swrup 2026-02-16 17:55:21 +01:00 committed by Swrup
parent 0b6f5e3db5
commit 53debfd866
11 changed files with 40 additions and 165 deletions

View file

@ -167,25 +167,7 @@ module Keys_post = struct
let* () = list_iter (verify_signkey_signature sm) signkey_sigs in
Ok ()
(* TODO move to test *)
let check_master_signatures_update ~db_conn (module Sm : Secmod.S) =
Sm.get_denoms_data ()
|> list_iter (fun denom ->
let error = Error "update_master_signatures sanity check failure" in
let* opt =
Pg.find_denom db_conn denom.Denom_data.h_pub |> unwrap_err_caqti
in
let* v = match opt with None -> error | Some v -> Ok v in
let check = function false -> error | true -> Ok () in
let* () =
check (Timestamp.compare v.stamp_start denom.stamp_start = 0)
in
let* () = check (v.value = denom.value) in
let* () = check (v.fee_refund = denom.fee_refund) in
let* () = check (v.age_mask = denom.age_mask) in
Ok ())
let do_ ~db_conn (module Sm : Secmod.S)
let do_ ~db_conn:_ (module Sm : Secmod.S)
MasterSignatures.{ denom_sigs; signkey_sigs } =
let* () =
signkey_sigs
@ -200,7 +182,6 @@ module Keys_post = struct
|> Sm.add_denom_master_signatures
in
let* () = Sm.store () in
let* () = check_master_signatures_update ~db_conn (module Sm) in
Ok ()
let jsont = MasterSignatures.jsont
@ -298,9 +279,7 @@ module Auditors = struct
h_auditor_url= Hash.Cstring.H64.hash auditor_url;
}
(* TODO timestamps last_change +/- checks *)
(* todo: there is something about use of monotonic time
+ protection against replay attack that I don't understand *)
(* TODO monotonic time *)
let do_ ~db_conn v =
let auditor_pub = v.AuditorSetupMessage.auditor_pub in
let validity_start = v.AuditorSetupMessage.validity_start in
@ -490,7 +469,7 @@ module Global_fees = struct
let jsont = GlobalFees.jsont
(* TODO global_fees
(* TODO better global_fees
ensure it is defined for the current time.
there should be only one global_fees for each moment in time
and once set for a timeframe, it should not change. *)
@ -518,7 +497,7 @@ module Wire = struct
bank_label= _;
priority= _;
} =
(* TODO wire *)
(* TODO are those read from payto_uri? *)
let conversion_url = "" in
let credit_restrictions = "" in
let debit_restrictions = "" in
@ -553,9 +532,7 @@ module Wire = struct
match last_change_opt with
| Some _ -> Error "wire already setup"
| None ->
(* TODO wire *)
let last_change = Timestamp.of_ptime (Ptime_clock.now ()) in
let v =
let r =
ExchangeWireAccount.
{
payto_uri= v.payto_uri;
@ -567,7 +544,10 @@ module Wire = struct
priority= v.priority;
}
in
let+ () = Pg.insert_wire db_conn ~last_change v |> unwrap_err_caqti in
let+ () =
Pg.insert_wire db_conn ~last_change:v.validity_start r
|> unwrap_err_caqti
in
()
let jsont = WireSetupMessage.jsont