Skip to main content

TlsAcceptor

Trait TlsAcceptor 

Source
pub trait TlsAcceptor:
    Sized
    + Sync
    + Send
    + 'static {
    type Builder: TlsAcceptorBuilder<Acceptor = Self>;
    type Underlying;
    type TlsStream: TlsStreamDyn;

    const IMPLEMENTED: bool;
    const SUPPORTS_ALPN: bool;
    const SUPPORTS_DER_KEYS: bool;
    const SUPPORTS_PKCS12_KEYS: bool;
    const TYPE_DYN: &'static dyn TlsAcceptorType = _;

    // Required methods
    fn underlying_mut(&mut self) -> &mut Self::Underlying;
    fn info() -> ImplInfo;
    fn accept_with_socket<S>(
        &self,
        stream: S,
    ) -> BoxFuture<'_, Result<TlsStreamWithSocket<S>>> 
       where S: AsyncSocket + Debug + Unpin;
    fn accept_impl_tls_stream<S>(
        &self,
        stream: S,
    ) -> BoxFuture<'_, Result<Self::TlsStream>> 
       where S: AsyncSocket;

    // Provided methods
    fn into_dyn(self) -> TlsAcceptorBox { ... }
    fn builder_from_der_key(cert: &[u8], key: &[u8]) -> Result<Self::Builder> { ... }
    fn builder_from_pkcs12(
        pkcs12: &[u8],
        passphrase: &str,
    ) -> Result<Self::Builder> { ... }
    fn accept<S>(&self, stream: S) -> BoxFuture<'_, Result<TlsStream>> 
       where S: AsyncSocket + Debug + Unpin { ... }
}
Expand description

A builder for server-side TLS connections.

Required Associated Constants§

Source

const IMPLEMENTED: bool

Whether this acceptor type is implemented.

For example, tls-api-security-framework is available on Linux, but all operations result in error, so IMPLEMENTED = false for that implementation.

Source

const SUPPORTS_ALPN: bool

Whether this implementation supports ALPN negotiation.

Source

const SUPPORTS_DER_KEYS: bool

Whether this implementation supports construction of acceptor using a pair of a DER certificate and file pair.

Source

const SUPPORTS_PKCS12_KEYS: bool

Whether this implementation supports construction of acceptor using PKCS #12 file.

Provided Associated Constants§

Source

const TYPE_DYN: &'static dyn TlsAcceptorType = _

Dynamic (without type parameter) version of the acceptor.

This function returns an acceptor type, which can be used to constructor acceptors.

Required Associated Types§

Source

type Builder: TlsAcceptorBuilder<Acceptor = Self>

Type of the builder for this acceptor.

Source

type Underlying

Type of the underlying acceptor.

Source

type TlsStream: TlsStreamDyn

crate::TlsStream<tls_api::AsyncSocketBox>.

In the world of HKT this would be:

type TlsStream<S: TlsStreamDyn> : TlsStreamWithSocketDyn<S>;

Note each implementation has accept_impl function which returns more specific type, providing both access to implementation details and the underlying socket.

Required Methods§

Source

fn underlying_mut(&mut self) -> &mut Self::Underlying

Get the underlying acceptor.

API intentionally exposes the underlying acceptor builder to allow fine acceptor not possible in common API.

Source

fn info() -> ImplInfo

Implementation info.

Source

fn accept_with_socket<S>( &self, stream: S, ) -> BoxFuture<'_, Result<TlsStreamWithSocket<S>>>
where S: AsyncSocket + Debug + Unpin,

Accept a connection.

This operation returns a future which is resolved when the negotiation is complete, and the stream is ready to send and receive.

This version of accept returns a stream parameterized by the underlying socket type.

Source

fn accept_impl_tls_stream<S>( &self, stream: S, ) -> BoxFuture<'_, Result<Self::TlsStream>>
where S: AsyncSocket,

Accept a connection.

This operation returns a future which is resolved when the negotiation is complete, and the stream is ready to send and receive.

This version of accept returns a stream parameterized by the underlying socket type.

Practically, accept is usually enough.

Provided Methods§

Source

fn into_dyn(self) -> TlsAcceptorBox

Dynamic (without type parameter) version of the connector.

Source

fn builder_from_der_key(cert: &[u8], key: &[u8]) -> Result<Self::Builder>

New builder from given server key.

Parameters are DER-encoded (binary) X509 cert and corresponding private key.

Note if this implementation does not support DER keys directly, openssl command is used to convert the certificate.

Source

fn builder_from_pkcs12(pkcs12: &[u8], passphrase: &str) -> Result<Self::Builder>

New builder from given server key.

Note if this implementation does not support PKCS #12 keys directly, openssl command is used to convert the certificate.

Source

fn accept<S>(&self, stream: S) -> BoxFuture<'_, Result<TlsStream>>
where S: AsyncSocket + Debug + Unpin,

Accept a connection.

This operation returns a future which is resolved when the negotiation is complete, and the stream is ready to send and receive.

This version return a stream of the underlying implementation, which might be useful to obtain some TLS implementation-specific data.

Practically, accept is usually enough.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§