This commit is contained in:
parent
5a941ee497
commit
3d0f069e3c
1 changed files with 23 additions and 26 deletions
49
src/api.ml
49
src/api.ml
|
|
@ -925,8 +925,10 @@ module RecoupDenoms = struct
|
||||||
|> finish
|
|> finish
|
||||||
end
|
end
|
||||||
|
|
||||||
module DenomCommon = struct
|
module RsaDenom = struct
|
||||||
|
(* correspond to: ({ rsa_pub: RsaPublicKey;} & DenomCommon) *)
|
||||||
type t = {
|
type t = {
|
||||||
|
rsa_pub: RsaPublicKey.t;
|
||||||
master_sig: DenominationKeyValidityPS.t;
|
master_sig: DenominationKeyValidityPS.t;
|
||||||
stamp_start: Timestamp.t;
|
stamp_start: Timestamp.t;
|
||||||
stamp_expire_withdraw: Timestamp.t;
|
stamp_expire_withdraw: Timestamp.t;
|
||||||
|
|
@ -936,9 +938,10 @@ module DenomCommon = struct
|
||||||
}
|
}
|
||||||
|
|
||||||
let jsont =
|
let jsont =
|
||||||
let make master_sig stamp_start stamp_expire_withdraw stamp_expire_deposit
|
let make rsa_pub master_sig stamp_start stamp_expire_withdraw
|
||||||
stamp_expire_legal lost =
|
stamp_expire_deposit stamp_expire_legal lost =
|
||||||
{
|
{
|
||||||
|
rsa_pub;
|
||||||
master_sig;
|
master_sig;
|
||||||
stamp_start;
|
stamp_start;
|
||||||
stamp_expire_withdraw;
|
stamp_expire_withdraw;
|
||||||
|
|
@ -947,6 +950,7 @@ module DenomCommon = struct
|
||||||
lost;
|
lost;
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
|
let rsa_pub v = v.rsa_pub in
|
||||||
let master_sig v = v.master_sig in
|
let master_sig v = v.master_sig in
|
||||||
let stamp_start v = v.stamp_start in
|
let stamp_start v = v.stamp_start in
|
||||||
let stamp_expire_withdraw v = v.stamp_expire_withdraw in
|
let stamp_expire_withdraw v = v.stamp_expire_withdraw in
|
||||||
|
|
@ -954,7 +958,8 @@ module DenomCommon = struct
|
||||||
let stamp_expire_legal v = v.stamp_expire_legal in
|
let stamp_expire_legal v = v.stamp_expire_legal in
|
||||||
let lost v = v.lost in
|
let lost v = v.lost in
|
||||||
let open Jsont.Object in
|
let open Jsont.Object in
|
||||||
map ~kind:"DenomCommon" make
|
map ~kind:"RsaDenom" make
|
||||||
|
|> mem "rsa_pub" RsaPublicKey.jsont ~enc:rsa_pub
|
||||||
|> mem "master_sig" DenominationKeyValidityPS.jsont ~enc:master_sig
|
|> mem "master_sig" DenominationKeyValidityPS.jsont ~enc:master_sig
|
||||||
|> mem "stamp_start" Timestamp.jsont ~enc:stamp_start
|
|> mem "stamp_start" Timestamp.jsont ~enc:stamp_start
|
||||||
|> mem "stamp_expire_withdraw" Timestamp.jsont ~enc:stamp_expire_withdraw
|
|> mem "stamp_expire_withdraw" Timestamp.jsont ~enc:stamp_expire_withdraw
|
||||||
|
|
@ -964,9 +969,9 @@ module DenomCommon = struct
|
||||||
|> finish
|
|> finish
|
||||||
end
|
end
|
||||||
|
|
||||||
module DenomGroupRsa = struct
|
module RsaDenomGroup = struct
|
||||||
type t = {
|
type t = {
|
||||||
rsa_pub: RsaPublicKey.t;
|
denoms: RsaDenom.t list;
|
||||||
value: Amount.t;
|
value: Amount.t;
|
||||||
fee_withdraw: Amount.t;
|
fee_withdraw: Amount.t;
|
||||||
fee_deposit: Amount.t;
|
fee_deposit: Amount.t;
|
||||||
|
|
@ -975,18 +980,18 @@ module DenomGroupRsa = struct
|
||||||
}
|
}
|
||||||
|
|
||||||
let jsont =
|
let jsont =
|
||||||
let make rsa_pub value fee_withdraw fee_deposit fee_refresh fee_refund =
|
let make denoms value fee_withdraw fee_deposit fee_refresh fee_refund =
|
||||||
{ rsa_pub; value; fee_withdraw; fee_deposit; fee_refresh; fee_refund }
|
{ denoms; value; fee_withdraw; fee_deposit; fee_refresh; fee_refund }
|
||||||
in
|
in
|
||||||
let rsa_pub v = v.rsa_pub in
|
let denoms v = v.denoms in
|
||||||
let value v = v.value in
|
let value v = v.value in
|
||||||
let fee_withdraw v = v.fee_withdraw in
|
let fee_withdraw v = v.fee_withdraw in
|
||||||
let fee_deposit v = v.fee_deposit in
|
let fee_deposit v = v.fee_deposit in
|
||||||
let fee_refresh v = v.fee_refresh in
|
let fee_refresh v = v.fee_refresh in
|
||||||
let fee_refund v = v.fee_refund in
|
let fee_refund v = v.fee_refund in
|
||||||
let open Jsont.Object in
|
let open Jsont.Object in
|
||||||
map ~kind:"DenomGroupRsa" make
|
map ~kind:"RsaDenomGroup" make
|
||||||
|> mem "rsa_pub" RsaPublicKey.jsont ~enc:rsa_pub
|
|> mem "denoms" (Jsont.list RsaDenom.jsont) ~enc:denoms
|
||||||
|> mem "value" Amount.jsont ~enc:value
|
|> mem "value" Amount.jsont ~enc:value
|
||||||
|> mem "fee_withdraw" Amount.jsont ~enc:fee_withdraw
|
|> mem "fee_withdraw" Amount.jsont ~enc:fee_withdraw
|
||||||
|> mem "fee_deposit" Amount.jsont ~enc:fee_deposit
|
|> mem "fee_deposit" Amount.jsont ~enc:fee_deposit
|
||||||
|
|
@ -995,29 +1000,21 @@ module DenomGroupRsa = struct
|
||||||
|> finish
|
|> finish
|
||||||
end
|
end
|
||||||
|
|
||||||
|
(* TODO better jsont cases
|
||||||
|
factorize common fields (DenomCommon/DenomGroupCommon)
|
||||||
|
"+age_restricted"/CS variants
|
||||||
|
raise error not implemented if not RSA *)
|
||||||
module DenomGroup = struct
|
module DenomGroup = struct
|
||||||
(* TODO
|
type t = Rsa of RsaDenomGroup.t
|
||||||
type DenomGroup =
|
|
||||||
| DenomGroupRsa
|
|
||||||
| DenomGroupCs
|
|
||||||
| DenomGroupRsaAgeRestricted
|
|
||||||
| DenomGroupCsAgeRestricted;
|
|
||||||
*)
|
|
||||||
type t = Rsa of DenomGroupRsa.t
|
|
||||||
|
|
||||||
let to_octets = function Rsa denom -> RsaPublicKey.to_octets denom.rsa_pub
|
|
||||||
|
|
||||||
let of_cs _v =
|
|
||||||
Jsont.Error.msg Jsont.Meta.none "CSDenominationKey are not supported"
|
|
||||||
|
|
||||||
let of_rsa v = Rsa v
|
let of_rsa v = Rsa v
|
||||||
|
|
||||||
let jsont =
|
let jsont =
|
||||||
let open Jsont.Object in
|
let open Jsont.Object in
|
||||||
let rsa = Case.map "RSA" DenomGroupRsa.jsont ~dec:of_rsa in
|
let rsa = Case.map "RSA" RsaDenomGroup.jsont ~dec:of_rsa in
|
||||||
let enc_case = function Rsa v -> Case.value rsa v in
|
let enc_case = function Rsa v -> Case.value rsa v in
|
||||||
let cases = Case.[ make rsa ] in
|
let cases = Case.[ make rsa ] in
|
||||||
map ~kind:"DenomGroup" Fun.id
|
map ~kind:"DenominationKey" Fun.id
|
||||||
|> case_mem "cipher" Jsont.string ~enc:Fun.id ~enc_case cases
|
|> case_mem "cipher" Jsont.string ~enc:Fun.id ~enc_case cases
|
||||||
|> finish
|
|> finish
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue