This commit is contained in:
parent
bee3533b9e
commit
6f0d110207
2 changed files with 139 additions and 26 deletions
57
src/api.ml
57
src/api.ml
|
|
@ -29,6 +29,12 @@ module ErrorDetail = struct
|
||||||
|> Jsont.Object.finish
|
|> Jsont.Object.finish
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module HashCode = struct
|
||||||
|
type t = B32.t
|
||||||
|
|
||||||
|
let jsont = Jsont.of_of_string ~kind:"HashCode" B32.decode ~enc:B32.encode
|
||||||
|
end
|
||||||
|
|
||||||
module Amount = struct
|
module Amount = struct
|
||||||
include Amount
|
include Amount
|
||||||
|
|
||||||
|
|
@ -283,3 +289,54 @@ module FutureKeysResponse = struct
|
||||||
~enc:signkey_secmod_public_key
|
~enc:signkey_secmod_public_key
|
||||||
|> finish
|
|> finish
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module SignKeySignature = struct
|
||||||
|
type t = {
|
||||||
|
key: EddsaPublicKey.t;
|
||||||
|
master_sig: EddsaSignature.t;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jsont =
|
||||||
|
let make key master_sig = { key; master_sig } in
|
||||||
|
let key v = v.key in
|
||||||
|
let master_sig v = v.master_sig in
|
||||||
|
let open Jsont.Object in
|
||||||
|
map ~kind:"SignKeySignature" make
|
||||||
|
|> mem "key" EddsaPublicKey.jsont ~enc:key
|
||||||
|
|> mem "master_sig" EddsaSignature.jsont ~enc:master_sig
|
||||||
|
|> finish
|
||||||
|
end
|
||||||
|
|
||||||
|
module DenomSignature = struct
|
||||||
|
type t = {
|
||||||
|
h_denom_pub: HashCode.t;
|
||||||
|
master_sig: EddsaSignature.t;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jsont =
|
||||||
|
let make h_denom_pub master_sig = { h_denom_pub; master_sig } in
|
||||||
|
let h_denom_pub v = v.h_denom_pub in
|
||||||
|
let master_sig v = v.master_sig in
|
||||||
|
let open Jsont.Object in
|
||||||
|
map ~kind:"DenomSignature" make
|
||||||
|
|> mem "h_denom_pub" HashCode.jsont ~enc:h_denom_pub
|
||||||
|
|> mem "master_sig" EddsaSignature.jsont ~enc:master_sig
|
||||||
|
|> finish
|
||||||
|
end
|
||||||
|
|
||||||
|
module MasterSignatures = struct
|
||||||
|
type t = {
|
||||||
|
denom_sigs: DenomSignature.t list;
|
||||||
|
signkey_sigs: SignKeySignature.t list;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jsont =
|
||||||
|
let make denom_sigs signkey_sigs = { denom_sigs; signkey_sigs } in
|
||||||
|
let denom_sigs v = v.denom_sigs in
|
||||||
|
let signkey_sigs v = v.signkey_sigs in
|
||||||
|
let open Jsont.Object in
|
||||||
|
map ~kind:"MasterSignatures" make
|
||||||
|
|> mem "denom_sigs" (Jsont.list DenomSignature.jsont) ~enc:denom_sigs
|
||||||
|
|> mem "signkey_sigs" (Jsont.list SignKeySignature.jsont) ~enc:signkey_sigs
|
||||||
|
|> finish
|
||||||
|
end
|
||||||
|
|
|
||||||
|
|
@ -129,6 +129,88 @@ module SigningKeyAnnouncementPS = struct
|
||||||
|> sealr
|
|> sealr
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module DenominationKeyValidityPS = struct
|
||||||
|
(* purpose.purpose = TALER_SIGNATURE_MASTER_DENOMINATION_KEY_VALIDITY *)
|
||||||
|
type t = {
|
||||||
|
master: MasterPublicKeyP.t;
|
||||||
|
start: TimeAbsoluteNBO.t;
|
||||||
|
expire_withdraw: TimeAbsoluteNBO.t;
|
||||||
|
expire_spend: TimeAbsoluteNBO.t;
|
||||||
|
expire_legal: TimeAbsoluteNBO.t;
|
||||||
|
value: AmountNBO.t;
|
||||||
|
fee_withdraw: AmountNBO.t;
|
||||||
|
fee_deposit: AmountNBO.t;
|
||||||
|
fee_refresh: AmountNBO.t;
|
||||||
|
denom_hash: DenominationHash.t;
|
||||||
|
}
|
||||||
|
|
||||||
|
let bin =
|
||||||
|
let open Bin in
|
||||||
|
Purpose.make_bin Taler_signatures.master_denomination_key_validity
|
||||||
|
@@ fun purpose ->
|
||||||
|
record
|
||||||
|
(fun
|
||||||
|
_purpose
|
||||||
|
master
|
||||||
|
start
|
||||||
|
expire_withdraw
|
||||||
|
expire_spend
|
||||||
|
expire_legal
|
||||||
|
value
|
||||||
|
fee_withdraw
|
||||||
|
fee_deposit
|
||||||
|
fee_refresh
|
||||||
|
denom_hash
|
||||||
|
->
|
||||||
|
{
|
||||||
|
master;
|
||||||
|
start;
|
||||||
|
expire_withdraw;
|
||||||
|
expire_spend;
|
||||||
|
expire_legal;
|
||||||
|
value;
|
||||||
|
fee_withdraw;
|
||||||
|
fee_deposit;
|
||||||
|
fee_refresh;
|
||||||
|
denom_hash;
|
||||||
|
})
|
||||||
|
|+ Purpose.field purpose
|
||||||
|
|+ field MasterPublicKeyP.bin (fun t -> t.master)
|
||||||
|
|+ field TimeAbsoluteNBO.bin (fun t -> t.start)
|
||||||
|
|+ field TimeAbsoluteNBO.bin (fun t -> t.expire_withdraw)
|
||||||
|
|+ field TimeAbsoluteNBO.bin (fun t -> t.expire_spend)
|
||||||
|
|+ field TimeAbsoluteNBO.bin (fun t -> t.expire_legal)
|
||||||
|
|+ field AmountNBO.bin (fun t -> t.value)
|
||||||
|
|+ field AmountNBO.bin (fun t -> t.fee_withdraw)
|
||||||
|
|+ field AmountNBO.bin (fun t -> t.fee_deposit)
|
||||||
|
|+ field AmountNBO.bin (fun t -> t.fee_refresh)
|
||||||
|
|+ field DenominationHash.bin (fun t -> t.denom_hash)
|
||||||
|
|> sealr
|
||||||
|
end
|
||||||
|
|
||||||
|
module ExchangeSigningKeyValidityPS = struct
|
||||||
|
(* purpose.purpose = TALER_SIGNATURE_MASTER_SIGNING_KEY_VALIDITY *)
|
||||||
|
type t = {
|
||||||
|
start: TimeAbsoluteNBO.t;
|
||||||
|
expire: TimeAbsoluteNBO.t;
|
||||||
|
end_: TimeAbsoluteNBO.t; (* "end" renamed to end_ *)
|
||||||
|
signkey_pub: ExchangePublicKeyP.t;
|
||||||
|
}
|
||||||
|
|
||||||
|
let bin =
|
||||||
|
let open Bin in
|
||||||
|
Purpose.make_bin Taler_signatures.master_signing_key_validity
|
||||||
|
@@ fun purpose ->
|
||||||
|
record (fun _purpose start expire end_ signkey_pub ->
|
||||||
|
{ start; expire; end_; signkey_pub })
|
||||||
|
|+ Purpose.field purpose
|
||||||
|
|+ field TimeAbsoluteNBO.bin (fun t -> t.start)
|
||||||
|
|+ field TimeAbsoluteNBO.bin (fun t -> t.expire)
|
||||||
|
|+ field TimeAbsoluteNBO.bin (fun t -> t.end_)
|
||||||
|
|+ field ExchangePublicKeyP.bin (fun t -> t.signkey_pub)
|
||||||
|
|> sealr
|
||||||
|
end
|
||||||
|
|
||||||
(* ### BIN IMPL END ### *)
|
(* ### BIN IMPL END ### *)
|
||||||
|
|
||||||
module SingleWithdrawRequestPS = struct
|
module SingleWithdrawRequestPS = struct
|
||||||
|
|
@ -190,16 +272,6 @@ module RefreshMeltConfirmationPS = struct
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
module ExchangeSigningKeyValidityPS = struct
|
|
||||||
(* purpose.purpose = TALER_SIGNATURE_MASTER_SIGNING_KEY_VALIDITY *)
|
|
||||||
type t = {
|
|
||||||
start: TimeAbsoluteNBO.t;
|
|
||||||
expire: TimeAbsoluteNBO.t;
|
|
||||||
end_: TimeAbsoluteNBO.t; (* "end" renamed to end_ *)
|
|
||||||
signkey_pub: ExchangePublicKeyP.t;
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
module ExchangeKeySetPS = struct
|
module ExchangeKeySetPS = struct
|
||||||
(* purpose.purpose = TALER_SIGNATURE_EXCHANGE_KEY_SET *)
|
(* purpose.purpose = TALER_SIGNATURE_EXCHANGE_KEY_SET *)
|
||||||
type t = {
|
type t = {
|
||||||
|
|
@ -208,22 +280,6 @@ module ExchangeKeySetPS = struct
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
module DenominationKeyValidityPS = struct
|
|
||||||
(* purpose.purpose = TALER_SIGNATURE_MASTER_DENOMINATION_KEY_VALIDITY *)
|
|
||||||
type t = {
|
|
||||||
master: MasterPublicKeyP.t;
|
|
||||||
start: TimeAbsoluteNBO.t;
|
|
||||||
expire_withdraw: TimeAbsoluteNBO.t;
|
|
||||||
expire_spend: TimeAbsoluteNBO.t;
|
|
||||||
expire_legal: TimeAbsoluteNBO.t;
|
|
||||||
value: AmountNBO.t;
|
|
||||||
fee_withdraw: AmountNBO.t;
|
|
||||||
fee_deposit: AmountNBO.t;
|
|
||||||
fee_refresh: AmountNBO.t;
|
|
||||||
denom_hash: DenominationHash.t;
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
module MasterWireDetailsPS = struct
|
module MasterWireDetailsPS = struct
|
||||||
(* purpose.purpose = TALER_SIGNATURE_MASTER_WIRE_DETAILS *)
|
(* purpose.purpose = TALER_SIGNATURE_MASTER_WIRE_DETAILS *)
|
||||||
type t = {
|
type t = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue