From 721c1f074021a9ab81dec31c602f97bb83626edf Mon Sep 17 00:00:00 2001 From: swrup Date: Tue, 3 Mar 2026 10:09:03 +0100 Subject: [PATCH] --- src/hash.ml | 3 +++ src/http_management.ml | 1 + test/validate_response.ml | 10 ++++++---- tools/offline_impl.ml | 14 ++++++-------- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/hash.ml b/src/hash.ml index 2e13ef35..cfaf5836 100644 --- a/src/hash.ml +++ b/src/hash.ml @@ -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 module type S = sig diff --git a/src/http_management.ml b/src/http_management.ml index b62191a9..a5c45e55 100644 --- a/src/http_management.ml +++ b/src/http_management.ml @@ -325,6 +325,7 @@ module Wire = struct in let h_credit_restrictions = Hash.Cstring.H64.hash "" in let h_debit_restrictions = Hash.Cstring.H64.hash "" in + (* - *) let* () = let open Signatures.MasterWireDetails in verify Config.master_public_key master_sig_wire diff --git a/test/validate_response.ml b/test/validate_response.ml index d87e9ffc..dda024b0 100644 --- a/test/validate_response.ml +++ b/test/validate_response.ml @@ -12,8 +12,8 @@ let keys content = else Fmt.error "version incompatible" in - (* TODO need hash over json.. - validate ExchangeWireAccount *) + (* TODO validate ExchangeWireAccount + need hash over json *) let* () = let open AggregateTransferFee in 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 match opt with | None -> Fmt.error "exchange_pub is not in signkeys list" - | Some sk -> - (* TODO will need to fake time to validate expired data *) + | Some _sk -> + (* TODO add a --now option? let now = Timestamp.of_ptime (Ptime_clock.now ()) in if Signkey.is_valid_at ~timestamp:now sk then Ok () else Fmt.error "exchange_pub is not valid at the current time" + *) + Ok () in let* () = let open Signatures.ExchangeKeySet in diff --git a/tools/offline_impl.ml b/tools/offline_impl.ml index c2c890db..b327b99f 100644 --- a/tools/offline_impl.ml +++ b/tools/offline_impl.ml @@ -348,15 +348,8 @@ let wire_fee ~output ~master_key ~wire_method ~fee_start ~fee_end ~closing_fee let* () = write_file output s in 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* 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 + (* TODO wire *) let conversion_url = None in let credit_restrictions = [] in let debit_restrictions = [] in @@ -365,6 +358,11 @@ let enable_wire ~output ~master_key ~payto_uri ~bank_label ~priority = in let h_credit_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 open Signatures.MasterWireDetails in signf (EddsaSignature.sign ~key)