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§
Sourceconst IMPLEMENTED: bool
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.
Sourceconst SUPPORTS_ALPN: bool
const SUPPORTS_ALPN: bool
Whether this implementation supports ALPN negotiation.
Sourceconst SUPPORTS_DER_KEYS: bool
const SUPPORTS_DER_KEYS: bool
Whether this implementation supports construction of acceptor using a pair of a DER certificate and file pair.
Sourceconst SUPPORTS_PKCS12_KEYS: bool
const SUPPORTS_PKCS12_KEYS: bool
Whether this implementation supports construction of acceptor using PKCS #12 file.
Provided Associated Constants§
Sourceconst TYPE_DYN: &'static dyn TlsAcceptorType = _
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§
Sourcetype Builder: TlsAcceptorBuilder<Acceptor = Self>
type Builder: TlsAcceptorBuilder<Acceptor = Self>
Type of the builder for this acceptor.
Sourcetype Underlying
type Underlying
Type of the underlying acceptor.
Sourcetype TlsStream: TlsStreamDyn
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§
Sourcefn underlying_mut(&mut self) -> &mut Self::Underlying
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.
Sourcefn accept_with_socket<S>(
&self,
stream: S,
) -> BoxFuture<'_, Result<TlsStreamWithSocket<S>>> ⓘ
fn accept_with_socket<S>( &self, stream: S, ) -> BoxFuture<'_, Result<TlsStreamWithSocket<S>>> ⓘ
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.
Sourcefn accept_impl_tls_stream<S>(
&self,
stream: S,
) -> BoxFuture<'_, Result<Self::TlsStream>> ⓘwhere
S: AsyncSocket,
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§
Sourcefn into_dyn(self) -> TlsAcceptorBox
fn into_dyn(self) -> TlsAcceptorBox
Dynamic (without type parameter) version of the connector.
Sourcefn builder_from_der_key(cert: &[u8], key: &[u8]) -> Result<Self::Builder>
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.
Sourcefn builder_from_pkcs12(pkcs12: &[u8], passphrase: &str) -> Result<Self::Builder>
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.
Sourcefn accept<S>(&self, stream: S) -> BoxFuture<'_, Result<TlsStream>> ⓘ
fn accept<S>(&self, stream: S) -> BoxFuture<'_, Result<TlsStream>> ⓘ
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".