From 46caf0b57846190f2823e633233f23d23ed3c65c Mon Sep 17 00:00:00 2001 From: swrup Date: Mon, 6 Oct 2025 22:20:09 +0200 Subject: [PATCH] + Future_sign_key --- src/json.ml | 25 +++++++++++++++++++++++++ src/types.ml | 4 +++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/json.ml b/src/json.ml index 219329e4..c4a34de6 100644 --- a/src/json.ml +++ b/src/json.ml @@ -83,6 +83,8 @@ module Eddsa = struct let dec = Jsont.Base.dec_result pub_of_string in let enc = Jsont.Base.enc pub_to_string in Jsont.Base.string (Jsont.Base.map ~kind:"EddsaPublicKey" ~dec ~enc ()) + + let signature_jsont = Jsont.string end module Rsa_denomination_key = struct @@ -130,3 +132,26 @@ module Denomination_key = struct |> case_mem "cipher" Jsont.string ~enc:Fun.id ~enc_case cases |> finish end + +module Future_sign_key = struct + open Future_sign_key + + let jsont = + (* TODO ppx? *) + let make key stamp_start stamp_expire stamp_end signkey_secmod_sig = + { key; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig } + in + let key v = v.key in + let stamp_start v = v.stamp_start in + let stamp_expire v = v.stamp_expire in + let stamp_end v = v.stamp_end in + let signkey_secmod_sig v = v.signkey_secmod_sig in + let open Jsont.Object in + map ~kind:"FutureSignKey" make + |> mem "key" Eddsa.pub_jsont ~enc:key + |> mem "stamp_start" Timestamp.jsont ~enc:stamp_start + |> mem "stamp_expire" Timestamp.jsont ~enc:stamp_expire + |> mem "stamp_end" Timestamp.jsont ~enc:stamp_end + |> mem "signkey_secmod_sig" Eddsa.signature_jsont ~enc:signkey_secmod_sig + |> finish +end diff --git a/src/types.ml b/src/types.ml index 4eb0d672..f4546537 100644 --- a/src/types.ml +++ b/src/types.ml @@ -131,7 +131,9 @@ module Eddsa = struct pub |> Mirage_crypto_ec.Ed25519.pub_to_octets |> Base_32.encode (* EdDSA signatures are transmitted as 64-bytes base32 - binary-encoded objects with just the R and S values (base32_ binary-only). *) + binary-encoded objects with just the R and S values (base32_ binary-only). + + They are signature over a c-struct like `TALER_xxxPS` + with a purpose *) type signature = string end