module type S = sig open Crypto val sm_pubkey : eddsa_pub val sign_with_sm_key : string -> eddsa_sig val sign_with_signkey : pub:eddsa_pub -> string -> eddsa_sig val verify_with_master_key : eddsa_sig -> msg:string -> (unit, string) result val verify_with_sm_key : eddsa_sig -> msg:string -> (unit, string) result val verify_with_signkey : pub:eddsa_pub -> eddsa_sig -> msg:string -> (unit, string) result val get_signkeys : unit -> Signkey.t list val get_denominations : unit -> Denomination.t list val get_future_signkeys : unit -> Api.FutureSignKey.t list val get_future_denominations : unit -> Api.FutureDenom.t list val find_signkey : eddsa_pub -> Signkey.t option val find_denomination : denom_hash -> Denomination.t option val certify_future_signkey : eddsa_pub -> Signatures.ExchangeSigningKeyValidity.t -> (unit, string) result val certify_future_denomination : denom_hash -> Signatures.DenominationKeyValidity.t -> (unit, string) result val revoke_signkey : eddsa_pub -> Signatures.MasterSigningKeyRevocation.t -> (unit, string) result val revoke_denomination : denom_hash -> Signatures.MasterDenominationKeyRevocation.t -> (unit, string) result val save : unit -> (unit, string) result end module Make (_ : Pg.CONN) : S