+ validate denominations

This commit is contained in:
swrup 2026-02-27 18:55:31 +01:00
parent 61095d77a7
commit eebeed5888

View file

@ -1,5 +1,4 @@
open Syntax open Syntax
(*open Crypto*)
let keys content = let keys content =
let open Api in let open Api in
@ -74,8 +73,65 @@ let keys content =
} }
in in
(* validate denominations *) let last_issue_date = ref Timestamp.zero in
let* () =
(* TODO parse CS *)
v.denominations
|> list_iter
(fun
(DenomGroup.Rsa
RsaDenomGroup.
{
denoms;
value;
fee_withdraw;
fee_deposit;
fee_refresh;
fee_refund;
})
->
let open RsaDenom in
denoms
|> list_iter
(fun
{
rsa_pub;
master_sig;
stamp_start;
stamp_expire_withdraw;
stamp_expire_deposit;
stamp_expire_legal;
lost= _;
}
->
last_issue_date := Timestamp.max !last_issue_date stamp_start;
let denom_hash =
DenominationHash.hash
(Crypto.RsaPublicKey.to_octets rsa_pub)
in
let open Signatures.DenominationKeyValidity in
verify v.master_public_key master_sig
{
R.master= v.master_public_key;
start= stamp_start;
expire_withdraw= stamp_expire_withdraw;
expire_spend= stamp_expire_deposit;
expire_legal= stamp_expire_legal;
value;
fee_withdraw;
fee_deposit;
fee_refresh;
fee_refund;
denom_hash;
}))
in
let* () =
if !last_issue_date = v.list_issue_date then Ok ()
else Fmt.error "list_issue_date is wrong"
in
(* validate global-fees *) (* validate global-fees *)
(* validate list_issue_date *) (* validate list_issue_date *)
(* validate auditors *) (* validate auditors *)
Ok () Ok ()