~
This commit is contained in:
parent
d0ddee257e
commit
4d39d2ff39
4 changed files with 16 additions and 12 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue