refacto verify_denomination/signkey

This commit is contained in:
swrup 2026-02-27 20:28:56 +01:00
parent d2e546571c
commit 6a44f4a088
6 changed files with 89 additions and 145 deletions

View file

@ -35,29 +35,18 @@ let keys content =
})
in
let sk_l = List.map SignKey.to_signkey v.signkeys in
let* () =
let open SignKey in
v.signkeys
sk_l
|> list_iter
(fun { key; stamp_start; stamp_expire; stamp_end; master_sig } ->
let open Signatures.ExchangeSigningKeyValidity in
verify v.master_public_key master_sig
{
R.start= stamp_start;
expire= stamp_expire;
end_= stamp_end;
signkey_pub= key;
})
(Signkey.verify_exchange_signing_key_validity ~key:v.exchange_pub)
in
let* () =
let opt =
List.find_opt (fun sk -> sk.SignKey.key = v.exchange_pub) v.signkeys
in
let opt = List.find_opt (fun sk -> sk.Signkey.pub = v.exchange_pub) sk_l in
match opt with
| None -> Fmt.error "exchange_pub is not in signkeys list"
| Some sk ->
let sk = SignKey.to_signkey sk in
(* TODO will need to fake time to validate expired data *)
let now = Timestamp.of_ptime (Ptime_clock.now ()) in
if Signkey.is_valid_at ~timestamp:now sk then Ok ()
@ -75,24 +64,10 @@ let keys content =
let denom_l = v.denominations |> Denomination.denoms_of_denomgroups in
let* () =
let open Denomination in
denom_l
|> list_iter (fun dn ->
let open Signatures.DenominationKeyValidity in
verify v.master_public_key dn.master_sig
{
R.master= v.master_public_key;
start= dn.stamp_start;
expire_withdraw= dn.stamp_expire_withdraw;
expire_spend= dn.stamp_expire_deposit;
expire_legal= dn.stamp_expire_legal;
value= dn.value;
fee_withdraw= dn.fee_withdraw;
fee_deposit= dn.fee_deposit;
fee_refresh= dn.fee_refresh;
fee_refund= dn.fee_refund;
denom_hash= dn.h_pub;
})
Denomination.verify_denomination_key_validity ~key:v.master_public_key
dn)
in
let* () =
let last_issue_date =
@ -106,33 +81,7 @@ let keys content =
let* () =
v.global_fees
|> list_iter
(fun
GlobalFees.
{
start_date;
end_date;
history_fee;
account_fee;
purse_fee;
history_expiration;
purse_account_limit;
purse_timeout;
master_sig;
}
->
let open Signatures.GlobalFees in
verify v.master_public_key master_sig
{
start_date;
end_date;
purse_timeout;
history_expiration;
history_fee;
account_fee;
purse_fee;
purse_account_limit;
})
|> list_iter (GlobalFees.verify_global_fees ~key:v.master_public_key)
in
let* () =