From 3a68ab9df9d0ddae6d2a895abd024dccb835125a Mon Sep 17 00:00:00 2001 From: swrup Date: Mon, 15 Dec 2025 17:37:17 +0100 Subject: [PATCH] wip phantom type on eddsa_key --- src/bin_sig.ml | 22 +++++++++++++++++++--- src/crypto.ml | 5 +++++ src/eddsa.ml | 21 +++++++++++++++++++++ src/eddsa.mli | 16 ++++++++++++++++ 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/eddsa.ml create mode 100644 src/eddsa.mli diff --git a/src/bin_sig.ml b/src/bin_sig.ml index 1c95cdcc..72082c56 100644 --- a/src/bin_sig.ml +++ b/src/bin_sig.ml @@ -92,11 +92,10 @@ end = struct type r = R.r type t = EddsaSignature.t - let bin = R.bin - let sign ~key r = EddsaSignature.sign ~key (Bin.to_string bin r) + let sign ~key r = EddsaSignature.sign ~key (Bin.to_string R.bin r) let verify ~key t r = - let b = EddsaSignature.verify ~key t ~msg:(Bin.to_string bin r) in + let b = EddsaSignature.verify ~key t ~msg:(Bin.to_string R.bin r) in match b with | false -> Error "signature verification failure" | true -> Ok () @@ -105,6 +104,23 @@ end = struct let caqti : EddsaSignature.t Caqti_type.t = EddsaSignature.caqti end +module MK'' (R : sig + type k + type r + + (*val bin : r Bin.t*) +end) : sig + type r = R.r + type t = (R.k, r) Eddsa.sig_ + + val caqti : t Caqti_type.t +end = struct + type r = R.r + type t = (R.k, r) Eddsa.sig_ + + let caqti = Eddsa.sig_caqti +end + module DenominationKeyAnnouncement = struct module R = struct (* TODO taler_signatures purpose diff --git a/src/crypto.ml b/src/crypto.ml index 6abf3849..71c2fa37 100644 --- a/src/crypto.ml +++ b/src/crypto.ml @@ -47,6 +47,11 @@ module EddsaPrivateKey = struct type t = priv + (* + let generate () = + Mirage_crypto_ec.Ed25519.generate () + *) + let pub_of_priv = pub_of_priv let to_octets t = priv_to_octets t diff --git a/src/eddsa.ml b/src/eddsa.ml new file mode 100644 index 00000000..1920dbfa --- /dev/null +++ b/src/eddsa.ml @@ -0,0 +1,21 @@ +open Crypto + +type sm +type sk +type master +type 'k priv = EddsaPrivateKey.t +type 'k pub = EddsaPublicKey.t + +type 'k key = { + priv: 'k priv; + pub: 'k pub; +} + +type ('k, 'r) sig_ = EddsaSignature.t + +let generate () = + let priv, pub = Mirage_crypto_ec.Ed25519.generate () in + { priv; pub } + +let pub_caqti = EddsaPublicKey.caqti +let sig_caqti = EddsaSignature.caqti diff --git a/src/eddsa.mli b/src/eddsa.mli new file mode 100644 index 00000000..b2eddda7 --- /dev/null +++ b/src/eddsa.mli @@ -0,0 +1,16 @@ +type sm +type sk +type master +type 'k priv +type 'k pub + +type 'k key = { + priv: 'k priv; + pub: 'k pub; +} + +type ('k, 'r) sig_ + +val generate : unit -> 'k key +val pub_caqti : 'k pub Caqti_type.t +val sig_caqti : ('k, 'r) sig_ Caqti_type.t