diff --git a/src/bin_sig.ml b/src/bin_sig.ml index 1c95cdcc..60257daf 100644 --- a/src/bin_sig.ml +++ b/src/bin_sig.ml @@ -77,13 +77,15 @@ module MK (R : sig val bin : r Bin.t end) : sig + open Crypto + type r = R.r type t - val sign : key:Crypto.EddsaPrivateKey.t -> r -> t + val sign : key:EddsaPrivateKey.t -> r -> t (* Ok () on verification success *) - val verify : key:Crypto.EddsaPublicKey.t -> t -> r -> (unit, string) result + val verify : key:EddsaPublicKey.t -> t -> r -> (unit, string) result val jsont : t Jsont.t val caqti : t Caqti_type.t end = struct @@ -102,7 +104,45 @@ end = struct | true -> Ok () let jsont = EddsaSignature.jsont - let caqti : EddsaSignature.t Caqti_type.t = EddsaSignature.caqti + let caqti = EddsaSignature.caqti +end + +module MK' (R : sig + type r + type key + + val bin : r Bin.t +end) : sig + open Crypto + + type key = R.key + type r = R.r + type t + + val sign : key:EddsaPrivateKey.t -> r -> t + + (* Ok () on verification success *) + val verify : key:EddsaPublicKey.t -> t -> r -> (unit, string) result + val jsont : t Jsont.t + val caqti : t Caqti_type.t +end = struct + open Crypto + + type key = R.key + 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 verify ~key t r = + let b = EddsaSignature.verify ~key t ~msg:(Bin.to_string bin r) in + match b with + | false -> Error "signature verification failure" + | true -> Ok () + + let jsont = EddsaSignature.jsont + let caqti = EddsaSignature.caqti end module DenominationKeyAnnouncement = struct diff --git a/src/secmod.mli b/src/secmod.mli index ba897b50..2c4340b2 100644 --- a/src/secmod.mli +++ b/src/secmod.mli @@ -2,6 +2,9 @@ open Crypto type t +(*val sm_sign : t -> string -> eddsa_sig*) + +(* *) val get_sm_key_priv : t -> eddsa_priv val get_sm_key_pub : t -> eddsa_pub val get_signkeys : t -> Signkey_data.t list