This commit is contained in:
swrup 2026-02-27 18:15:09 +01:00
parent 9213604385
commit d450ecd2ad
3 changed files with 28 additions and 12 deletions

View file

@ -1261,7 +1261,7 @@ module ExchangeKeysResponse = struct
stefan_lin: Float.t; stefan_lin: Float.t;
asset_type: string; asset_type: string;
accounts: ExchangeWireAccount.t list; accounts: ExchangeWireAccount.t list;
wire_fees: AggregateTransferFee.t list Stdlib.Map.Make(Stdlib.String).t; wire_fees: AggregateTransferFee.t list String_map.t;
wads: ExchangePartnerListEntry.t list; wads: ExchangePartnerListEntry.t list;
kyc_enabled: bool; kyc_enabled: bool;
disable_direct_deposit: bool; disable_direct_deposit: bool;
@ -1278,7 +1278,7 @@ module ExchangeKeysResponse = struct
list_issue_date: Timestamp.t; list_issue_date: Timestamp.t;
auditors: AuditorKeys.t list; auditors: AuditorKeys.t list;
signkeys: SignKey.t list; signkeys: SignKey.t list;
extensions: ExtensionManifest.t Stdlib.Map.Make(Stdlib.String).t option; extensions: ExtensionManifest.t String_map.t option;
(* Signature by the exchange master key of the SHA-256 hash of the (* Signature by the exchange master key of the SHA-256 hash of the
normalized JSON-object of field extensions, if it was set. normalized JSON-object of field extensions, if it was set.
The signature has purpose TALER_SIGNATURE_MASTER_EXTENSIONS. *) The signature has purpose TALER_SIGNATURE_MASTER_EXTENSIONS. *)

View file

@ -60,7 +60,7 @@ echo "[OK] /management/auditors/\$AUDITOR_PUB/disable"
offline_tool wire-fee \ offline_tool wire-fee \
--master_key $master_key \ --master_key $master_key \
--output $b \ --output $b \
--wire_method "xxx" \ --wire_method "x-taler-bank" \
--fee_start 0 \ --fee_start 0 \
--fee_end 99999999 \ --fee_end 99999999 \
--closing_fee $zero_kudos \ --closing_fee $zero_kudos \

View file

@ -2,9 +2,9 @@ open Syntax
(*open Crypto*) (*open Crypto*)
let keys content = let keys content =
let open Api.ExchangeKeysResponse in let open Api in
let open ExchangeKeysResponse in
let* v = Api.decode jsont content in let* v = Api.decode jsont content in
(* validate version compatibility *)
let* () = let* () =
if if
Libtool_version.is_compatible Libtool_version.is_compatible
@ -13,13 +13,29 @@ let keys content =
else Fmt.error "version incompatible" else Fmt.error "version incompatible"
in in
(* TODO *) (* TODO need hash over json..
(* validate currency specification *) validate ExchangeWireAccount *)
(* validate all amounts *) let* () =
(* validate all timestamp/duration *) let open AggregateTransferFee in
(* validate master_public_key *) v.wire_fees
(* validate accounts *) |> String_map.bindings
(* validate wire-fees *) |> List.concat_map (fun (wire_method, l) ->
List.map (fun item -> (wire_method, item)) l)
|> list_iter
(fun
(wire_method, { wire_fee; closing_fee; start_date; end_date; sig_ })
->
let open Signatures.MasterWireFee in
verify v.master_public_key sig_
{
h_wire_method= Hash.Cstring.H64.hash wire_method;
start_date;
end_date;
wire_fee;
closing_fee;
})
in
(* validate signkeys *) (* validate signkeys *)
(* validate exchange_pub *) (* validate exchange_pub *)
(* validate denominations *) (* validate denominations *)