add json+bin for MasterSignatures

This commit is contained in:
swrup 2025-11-28 13:40:37 +01:00
parent bee3533b9e
commit f3de6ea80d
2 changed files with 139 additions and 26 deletions

View file

@ -29,6 +29,12 @@ module ErrorDetail = struct
|> Jsont.Object.finish
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
include Amount
@ -283,3 +289,54 @@ module FutureKeysResponse = struct
~enc:signkey_secmod_public_key
|> finish
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