diff --git a/src/api.ml b/src/api.ml index a81a2bbf..c537f7b0 100644 --- a/src/api.ml +++ b/src/api.ml @@ -767,3 +767,48 @@ module ExchangePartnerSetupRequest = struct |> mem "wad_fee" Amount.jsont ~enc:wad_fee |> finish end + +(* -- types for /keys -- *) + +module ExchangePartnerListEntry = struct + type t = { + partner_base_url: string; + partner_master_pub: EddsaPublicKey.t; + wad_fee: Amount.t; + wad_frequency: RelativeTime.t; + start_date: Timestamp.t; + end_date: Timestamp.t; + master_sig: WadPartnerSignaturePS.t; + } + + let jsont = + let make partner_base_url partner_master_pub wad_fee wad_frequency + start_date end_date master_sig = + { + partner_base_url; + partner_master_pub; + wad_fee; + wad_frequency; + start_date; + end_date; + master_sig; + } + in + let partner_base_url v = v.partner_base_url in + let partner_master_pub v = v.partner_master_pub in + let wad_fee v = v.wad_fee in + let wad_frequency v = v.wad_frequency in + let start_date v = v.start_date in + let end_date v = v.end_date in + let master_sig v = v.master_sig in + let open Jsont.Object in + map ~kind:"ExchangePartnerListEntry" make + |> mem "partner_base_url" Jsont.string ~enc:partner_base_url + |> mem "partner_master_pub" EddsaPublicKey.jsont ~enc:partner_master_pub + |> mem "wad_fee" Amount.jsont ~enc:wad_fee + |> mem "wad_frequency" RelativeTime.jsont ~enc:wad_frequency + |> mem "start_date" Timestamp.jsont ~enc:start_date + |> mem "end_date" Timestamp.jsont ~enc:end_date + |> mem "master_sig" WadPartnerSignaturePS.jsont ~enc:master_sig + |> finish +end diff --git a/src/bin_signature.ml b/src/bin_signature.ml index cbb74660..da56858c 100644 --- a/src/bin_signature.ml +++ b/src/bin_signature.ml @@ -517,6 +517,8 @@ end module PartnerConfigurationPS = struct module R = struct + (* TODO purpose + this purpose is used 2 times!? *) (* purpose.purpose = TALER_SIGNATURE_MASTER_PARNTER_DETAILS *) type r = { partner_pub: MasterPublicKeyP.t; @@ -555,6 +557,54 @@ module PartnerConfigurationPS = struct include MK (R) end +module WadPartnerSignaturePS = struct + module R = struct + (* purpose.purpose = TALER_SIGNATURE_MASTER_PARTNER_DETAILS *) + type r = { + h_partner_base_url: Hash_64_cstr.t; + master_public_key: MasterPublicKeyP.t; + start_date: TimeAbsoluteNBO.t; + end_date: TimeAbsoluteNBO.t; + wad_fee: AmountNBO.t; + wad_frequency: TimeRelativeNBO.t; + } + + let bin = + let open Bin in + Purpose.make_bin Taler_signatures.master_partner_details + @@ fun _purpose -> + record + (fun + _purpose + h_partner_base_url + master_public_key + start_date + end_date + wad_fee + wad_frequency + -> + { + h_partner_base_url; + master_public_key; + start_date; + end_date; + wad_fee; + wad_frequency; + }) + |+ Purpose.field _purpose + |+ field Hash_64_cstr.bin (fun t -> t.h_partner_base_url) + |+ field MasterPublicKeyP.bin (fun t -> t.master_public_key) + |+ field TimeAbsoluteNBO.bin (fun t -> t.start_date) + |+ field TimeAbsoluteNBO.bin (fun t -> t.end_date) + |+ field AmountNBO.bin (fun t -> t.wad_fee) + |+ field TimeRelativeNBO.bin (fun t -> t.wad_frequency) + |> sealr + end + + include R + include MK (R) +end + (* ### BIN IMPL END ### *) module WithdrawRequestPS = struct @@ -985,18 +1035,6 @@ module WadDataSignaturePS = struct } end -module WadPartnerSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_PARTNER_DETAILS *) - type t = { - h_partner_base_url: Hash_64_cstr.t; - master_public_key: MasterPublicKeyP.t; - start_date: TimeAbsoluteNBO.t; - end_date: TimeAbsoluteNBO.t; - wad_fee: AmountNBO.t; - wad_frequency: TimeRelativeNBO.t; - } -end - module P2PFeesPS = struct (* purpose.purpose = TALER_SIGNATURE_P2P_FEES *) type t = {