module type S = sig open Crypto 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 (* TODO query database instead? *) val get_sm_key_pub : unit -> eddsa_pub val get_signkeys_data : unit -> Signkey_data.t list val get_denoms_data : unit -> Denom_data.t list val find_signkey_data : eddsa_pub -> Signkey_data.t option val find_denom_data : denomination_hash -> Denom_data.t option val find_denom_section_name : denomination_hash -> string option (* - management operations - *) (* TODO problem of keeping db and secmod state syncronized do db interaction from secmod? *) val add_signkey_master_signatures : (eddsa_pub * Bin_sig.ExchangeSigningKeyValidity.t) list -> (unit, string) result val add_denom_master_signatures : (denomination_hash * Bin_sig.DenominationKeyValidity.t) list -> (unit, string) result val revoke_signkey : eddsa_pub -> Bin_sig.MasterSigningKeyRevocation.t -> (unit, string) result val revoke_denomination : denomination_hash -> Bin_sig.MasterDenominationKeyRevocation.t -> (unit, string) result val store : unit -> (unit, string) result end module Make (_ : Pg.CONN) : S