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.t list val get_denoms_data : unit -> Denomination.t list val find_signkey_data : eddsa_pub -> Signkey.t option val find_denomination : denomination_hash -> Denomination.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 * Signatures.ExchangeSigningKeyValidity.t) list -> (unit, string) result val add_denom_master_signatures : (denomination_hash * Signatures.DenominationKeyValidity.t) list -> (unit, string) result val revoke_signkey : eddsa_pub -> Signatures.MasterSigningKeyRevocation.t -> (unit, string) result val revoke_denomination : denomination_hash -> Signatures.MasterDenominationKeyRevocation.t -> (unit, string) result val store : unit -> (unit, string) result end module Make (_ : Pg.CONN) : S