+ Denomination_key
This commit is contained in:
parent
aa1f64fe3e
commit
68b5e6608a
3 changed files with 74 additions and 4 deletions
46
src/json.ml
46
src/json.ml
|
|
@ -84,3 +84,49 @@ module Eddsa = struct
|
|||
let enc = Jsont.Base.enc pub_to_string in
|
||||
Jsont.Base.string (Jsont.Base.map ~kind:"EddsaPublicKey" ~dec ~enc ())
|
||||
end
|
||||
|
||||
module Rsa_denomination_key = struct
|
||||
open Rsa_denomination_key
|
||||
|
||||
let jsont =
|
||||
let make age_mask rsa_pub = { age_mask; rsa_pub } in
|
||||
let age_mask v = v.age_mask in
|
||||
let rsa_pub v = v.rsa_pub in
|
||||
Jsont.Object.map ~kind:"RsaDenominationKey" make
|
||||
|> Jsont.Object.mem "age_mask" Jsont.int ~enc:age_mask
|
||||
|> Jsont.Object.mem "rsa_pub" Jsont.string ~enc:rsa_pub
|
||||
|> Jsont.Object.finish
|
||||
end
|
||||
|
||||
module CS_denomination_key = struct
|
||||
open CS_denomination_key
|
||||
|
||||
let jsont =
|
||||
let make age_mask cs_pub = { age_mask; cs_pub } in
|
||||
let age_mask v = v.age_mask in
|
||||
let cs_pub v = v.cs_pub in
|
||||
Jsont.Object.map ~kind:"CSDenominationKey" make
|
||||
|> Jsont.Object.mem "age_mask" Jsont.int ~enc:age_mask
|
||||
|> Jsont.Object.mem "cs_pub" Jsont.string ~enc:cs_pub
|
||||
|> Jsont.Object.finish
|
||||
end
|
||||
|
||||
module Denomination_key = struct
|
||||
open Denomination_key
|
||||
|
||||
let rsa v = Rsa v
|
||||
let cs v = CS v
|
||||
|
||||
let jsont =
|
||||
let open Jsont.Object in
|
||||
let rsa = Case.map "RSA" Rsa_denomination_key.jsont ~dec:rsa in
|
||||
let cs = Case.map "CS" CS_denomination_key.jsont ~dec:cs in
|
||||
let enc_case = function
|
||||
| Rsa v -> Case.value rsa v
|
||||
| CS v -> Case.value cs v
|
||||
in
|
||||
let cases = Case.[ make rsa; make cs ] in
|
||||
map ~kind:"DenominationKey" Fun.id
|
||||
|> case_mem "cipher" Jsont.string ~enc:Fun.id ~enc_case cases
|
||||
|> finish
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue