This commit is contained in:
swrup 2026-02-27 18:40:20 +01:00
parent fad25f8abd
commit 725f1240ec
3 changed files with 23 additions and 10 deletions

View file

@ -110,3 +110,11 @@ let make_denom_group_sorted denominations =
|> List.sort cmp_group |> List.sort cmp_group
in in
l l
let hash_over_master_sigs denominations =
denominations
|> List.map (fun (Api.DenomGroup.Rsa g) -> g.Api.RsaDenomGroup.denoms)
|> List.concat_map (List.map (fun dn -> dn.Api.RsaDenom.master_sig))
|> List.map Signatures.DenominationKeyValidity.to_octets
|> String.concat ""
|> Hash.H64.hash

View file

@ -104,16 +104,13 @@ let mk_keys ~db_conn (module Keys : Keys.S) ~last_issue_date =
(* ! depends on denominations order *) (* ! depends on denominations order *)
let exchange_sig = let exchange_sig =
let hc =
denominations
|> List.map (fun (DenomGroup.Rsa g) -> g.RsaDenomGroup.denoms)
|> List.concat_map (List.map (fun dn -> dn.RsaDenom.master_sig))
|> List.map Signatures.DenominationKeyValidity.to_octets
|> String.concat ""
|> Hash.H64.hash
in
let open Signatures.ExchangeKeySet in let open Signatures.ExchangeKeySet in
signf (Keys.sign exchange_pub) R.{ list_issue_date; hc } signf (Keys.sign exchange_pub)
R.
{
list_issue_date;
hc= Denomination.hash_over_master_sigs denominations;
}
in in
let recoup = (* /recoup *) [] in let recoup = (* /recoup *) [] in

View file

@ -64,7 +64,15 @@ let keys content =
if Signkey.is_valid_at ~timestamp:now sk then Ok () if Signkey.is_valid_at ~timestamp:now sk then Ok ()
else Fmt.error "exchange_pub is not valid at the current time" else Fmt.error "exchange_pub is not valid at the current time"
in in
(* validate exchange_sig *) let* () =
let open Signatures.ExchangeKeySet in
verify v.exchange_pub v.exchange_sig
R.
{
list_issue_date= v.list_issue_date;
hc= Denomination.hash_over_master_sigs v.denominations;
}
in
(* validate denominations *) (* validate denominations *)
(* validate global-fees *) (* validate global-fees *)