This commit is contained in:
swrup 2026-03-03 10:09:03 +01:00
parent d0ddee257e
commit 4d39d2ff39
4 changed files with 16 additions and 12 deletions

View file

@ -1,3 +1,6 @@
(* TODO hash over canonicalized json
https://docs.taler.net/design-documents/018-contract-json.html#canonicalized-hashing
https://datatracker.ietf.org/doc/html/rfc8785 *)
open Digestif open Digestif
module type S = sig module type S = sig

View file

@ -325,6 +325,7 @@ module Wire = struct
in in
let h_credit_restrictions = Hash.Cstring.H64.hash "" in let h_credit_restrictions = Hash.Cstring.H64.hash "" in
let h_debit_restrictions = Hash.Cstring.H64.hash "" in let h_debit_restrictions = Hash.Cstring.H64.hash "" in
(* - *)
let* () = let* () =
let open Signatures.MasterWireDetails in let open Signatures.MasterWireDetails in
verify Config.master_public_key master_sig_wire verify Config.master_public_key master_sig_wire

View file

@ -12,8 +12,8 @@ let keys content =
else Fmt.error "version incompatible" else Fmt.error "version incompatible"
in in
(* TODO need hash over json.. (* TODO validate ExchangeWireAccount
validate ExchangeWireAccount *) need hash over json *)
let* () = let* () =
let open AggregateTransferFee in let open AggregateTransferFee in
v.wire_fees v.wire_fees
@ -51,11 +51,13 @@ let keys content =
let opt = List.find_opt (fun sk -> sk.Signkey.pub = v.exchange_pub) sk_l in let opt = List.find_opt (fun sk -> sk.Signkey.pub = v.exchange_pub) sk_l in
match opt with match opt with
| None -> Fmt.error "exchange_pub is not in signkeys list" | None -> Fmt.error "exchange_pub is not in signkeys list"
| Some sk -> | Some _sk ->
(* TODO will need to fake time to validate expired data *) (* TODO add a --now option?
let now = Timestamp.of_ptime (Ptime_clock.now ()) in let now = Timestamp.of_ptime (Ptime_clock.now ()) in
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"
*)
Ok ()
in in
let* () = let* () =
let open Signatures.ExchangeKeySet in let open Signatures.ExchangeKeySet in

View file

@ -348,15 +348,8 @@ let wire_fee ~output ~master_key ~wire_method ~fee_start ~fee_end ~closing_fee
let* () = write_file output s in let* () = write_file output s in
Ok () Ok ()
(* TODO wire
hash over json, hash over string option?
~conversion_url ~credit_restrictions ~debit_restrictions *)
let enable_wire ~output ~master_key ~payto_uri ~bank_label ~priority = let enable_wire ~output ~master_key ~payto_uri ~bank_label ~priority =
let* key = read_master_key_file master_key in (* TODO wire *)
let ns = Mtime_clock.now_ns () in
let validity_start = Timestamp.of_s @@ Int64.unsigned_div ns 1_000_000_000L in
let h_wire_details = Hash.FullPaytoHash.hash payto_uri in
let conversion_url = None in let conversion_url = None in
let credit_restrictions = [] in let credit_restrictions = [] in
let debit_restrictions = [] in let debit_restrictions = [] in
@ -365,6 +358,11 @@ let enable_wire ~output ~master_key ~payto_uri ~bank_label ~priority =
in in
let h_credit_restrictions = Hash.Cstring.H64.hash "" in let h_credit_restrictions = Hash.Cstring.H64.hash "" in
let h_debit_restrictions = Hash.Cstring.H64.hash "" in let h_debit_restrictions = Hash.Cstring.H64.hash "" in
(* - *)
let* key = read_master_key_file master_key in
let ns = Mtime_clock.now_ns () in
let validity_start = Timestamp.of_s @@ Int64.unsigned_div ns 1_000_000_000L in
let h_wire_details = Hash.FullPaytoHash.hash payto_uri in
let master_sig_wire = let master_sig_wire =
let open Signatures.MasterWireDetails in let open Signatures.MasterWireDetails in
signf (EddsaSignature.sign ~key) signf (EddsaSignature.sign ~key)