From 747c1b4277d2f7e49a097b7cf37c2c4a8d29941d Mon Sep 17 00:00:00 2001 From: swrup Date: Sun, 30 Nov 2025 23:57:09 +0100 Subject: [PATCH] --- src/api.ml | 23 +++++++++++++++++++++-- src/bin_signature.ml | 2 +- test/test.ml | 8 +++++--- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/api.ml b/src/api.ml index 28a4c4d6..47d2156e 100644 --- a/src/api.ml +++ b/src/api.ml @@ -90,7 +90,26 @@ module RsaDenominationKey = struct |> Jsont.Object.finish end -(* Clause Schnorr cipher is not supported *) +(* ! Clause Schnorr cipher is not supported *) +module CSDenominationKey = struct + type t = { + age_mask: int; + cs_pub: B32.t; + } + + (* TODO B32.jsont *) + let b32_jsont = Jsont.of_of_string ~kind:"B32" B32.decode ~enc:B32.encode + + 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" b32_jsont ~enc:cs_pub + |> Jsont.Object.finish +end + module DenominationKey = struct type t = Rsa of RsaDenominationKey.t (*| CS of CSDenominationKey.t*) @@ -105,7 +124,7 @@ module DenominationKey = struct let jsont = let open Jsont.Object in let rsa = Case.map "RSA" RsaDenominationKey.jsont ~dec:of_rsa in - let cs = Case.map "CS" RsaDenominationKey.jsont ~dec:of_cs in + let cs = Case.map "CS" CSDenominationKey.jsont ~dec:of_cs in let enc_case = function Rsa v -> Case.value rsa v in let cases = Case.[ make rsa; make cs ] in map ~kind:"DenominationKey" Fun.id diff --git a/src/bin_signature.ml b/src/bin_signature.ml index 0bd95eaa..f7d30051 100644 --- a/src/bin_signature.ml +++ b/src/bin_signature.ml @@ -122,7 +122,7 @@ module DenominationKeyAnnouncementPS = struct let sign f r = f @@ Bin.to_string bin r let verify f s r = f s ~msg:(Bin.to_string bin r) - (* TODO use B32.jsont, for others types too *) + (* TODO B32.jsont, for others types too *) let jsont = Jsont.string end end diff --git a/test/test.ml b/test/test.ml index 4e9efd4d..69615679 100644 --- a/test/test.ml +++ b/test/test.ml @@ -15,11 +15,13 @@ let () = in () +let get_ok = function Error e -> failwith e | Ok v -> v + let () = let open Api in let check jsont s = - let encode v = encode jsont v |> Result.get_ok in - let decode v = decode jsont v |> Result.get_ok in + let encode v = encode jsont v |> get_ok in + let decode v = decode jsont v |> get_ok in let ts = decode s in let s' = encode ts in let ts' = decode s' in @@ -39,9 +41,9 @@ let () = (* check DenominationKey.jsont {|{"cipher": "RSA", "age_mask": 18, "rsa_pub": "agagouh"}|}; + *) check DenominationKey.jsont {|{"cipher": "CS", "age_mask": 18, "cs_pub": "ouhagag"}|}; - *) () let () =