(* $Id: nettls_gnutls.mli 2180 2014-12-30 20:05:20Z gerd $ *) (** GnuTLS *) module type GNUTLS_PROVIDER = sig include Netsys_crypto_types.TLS_PROVIDER val gnutls_session : endpoint -> Nettls_gnutls_bindings.gnutls_session_t (** Get the [gnutls_session] of the endpoint *) val gnutls_credentials : credentials -> Nettls_gnutls_bindings.gnutls_credentials (** Get the [gnutls_credentials] of the generic credentials *) end module type GNUTLS_ENDPOINT = sig module TLS : GNUTLS_PROVIDER val endpoint : TLS.endpoint end val make_tls : (module Netsys_crypto_types.TLS_EXCEPTIONS) -> (module GNUTLS_PROVIDER) (** The implementation of TLS backed by GnuTLS, here for an arbitrary TLS_EXCEPTIONS module *) module GNUTLS : GNUTLS_PROVIDER (** The implementation of TLS backed by GnuTLS, here using {!Netsys_types} as TLS_EXCEPTIONS module *) module TLS : Netsys_crypto_types.TLS_PROVIDER (** Same as [GNUTLS], but without the extra [gnutls_*] functions *) val gnutls : (module GNUTLS_PROVIDER) (** The implementation of TLS backed by GnuTLS, as value *) val tls : (module Netsys_crypto_types.TLS_PROVIDER) (** The implementation of TLS backed by GnuTLS, as value *) val endpoint : GNUTLS.endpoint -> (module GNUTLS_ENDPOINT) (** Wraps an endpoint *) val downcast : (module Netsys_crypto_types.TLS_PROVIDER) -> (module GNUTLS_PROVIDER) (** Attempts a downcast, or raises [Not_found] *) val downcast_endpoint : (module Netsys_crypto_types.TLS_ENDPOINT) -> (module GNUTLS_ENDPOINT) (** Attempts a downcast, or raises [Not_found] *) module Symmetric_crypto : Netsys_crypto_types.SYMMETRIC_CRYPTO (** Symmetric cryptography as provided by GnuTLS and its helper library Nettle *) module Digests : Netsys_crypto_types.DIGESTS (** Cryptographic digests *) val init : unit -> unit (** Ensure that GnuTLS is initialized *)