pub trait TlsProvider<S: StreamOps>:
Clone
+ Send
+ Sync
+ 'static {
type Connector: TlsConnector<S, Conn = Self::TlsStream> + Send + Sync + Unpin;
type TlsStream: AsyncRead + AsyncWrite + StreamOps + CertifiedConn + Unpin + Send + 'static;
type Acceptor: TlsConnector<S, Conn = Self::TlsServerStream> + Send + Sync + Unpin;
type TlsServerStream: AsyncRead + AsyncWrite + StreamOps + CertifiedConn + Unpin + Send + 'static;
// Required methods
fn tls_connector(&self) -> Self::Connector;
fn tls_acceptor(
&self,
settings: TlsAcceptorSettings,
) -> IoResult<Self::Acceptor>;
fn supports_keying_material_export(&self) -> bool;
}Expand description
Trait for a runtime that knows how to create TLS connections over
TCP streams of type S.
This is separate from TlsConnector because eventually we may
eventually want to support multiple TlsConnector implementations
that use a single Runtime.
See the TlsConnector documentation for a discussion of the Tor-specific
limitations of this trait: If you are implementing something other than Tor,
this is not the functionality you want.
Required Associated Types§
Sourcetype Connector: TlsConnector<S, Conn = Self::TlsStream> + Send + Sync + Unpin
type Connector: TlsConnector<S, Conn = Self::TlsStream> + Send + Sync + Unpin
The Connector object that this provider can return.
Sourcetype TlsStream: AsyncRead + AsyncWrite + StreamOps + CertifiedConn + Unpin + Send + 'static
type TlsStream: AsyncRead + AsyncWrite + StreamOps + CertifiedConn + Unpin + Send + 'static
The type of the stream returned by that connector.
Sourcetype Acceptor: TlsConnector<S, Conn = Self::TlsServerStream> + Send + Sync + Unpin
type Acceptor: TlsConnector<S, Conn = Self::TlsServerStream> + Send + Sync + Unpin
The Acceptor object that this provider can return, for handling incoming connections.
Sourcetype TlsServerStream: AsyncRead + AsyncWrite + StreamOps + CertifiedConn + Unpin + Send + 'static
type TlsServerStream: AsyncRead + AsyncWrite + StreamOps + CertifiedConn + Unpin + Send + 'static
The type of stream returned by that Acceptor.
Required Methods§
Sourcefn tls_connector(&self) -> Self::Connector
fn tls_connector(&self) -> Self::Connector
Return a TLS connector for use with this runtime.
Sourcefn tls_acceptor(
&self,
settings: TlsAcceptorSettings,
) -> IoResult<Self::Acceptor>
fn tls_acceptor( &self, settings: TlsAcceptorSettings, ) -> IoResult<Self::Acceptor>
Return a TLS acceptor for use with this runtime.
Not every TlsProvider supports this method.
For those that do, this method is only supported
when tor-rtcompat is built with the tls-server feature.
When this method is unsupported, it returns an error.
Sourcefn supports_keying_material_export(&self) -> bool
fn supports_keying_material_export(&self) -> bool
Return true iff the keying material exporters (RFC 5705) is supported.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementors§
Source§impl<S> TlsProvider<S> for AsyncStdNativeTlsRuntime
Available on crate feature async-std and (crate features native-tls or rustls) only.
impl<S> TlsProvider<S> for AsyncStdNativeTlsRuntime
async-std and (crate features native-tls or rustls) only.type Connector = <CompoundRuntime<AsyncStd, AsyncStd, RealCoarseTimeProvider, AsyncStd, AsyncStd, NativeTlsProvider, AsyncStd> as TlsProvider<S>>::Connector
type TlsStream = <CompoundRuntime<AsyncStd, AsyncStd, RealCoarseTimeProvider, AsyncStd, AsyncStd, NativeTlsProvider, AsyncStd> as TlsProvider<S>>::TlsStream
type Acceptor = <CompoundRuntime<AsyncStd, AsyncStd, RealCoarseTimeProvider, AsyncStd, AsyncStd, NativeTlsProvider, AsyncStd> as TlsProvider<S>>::Acceptor
type TlsServerStream = <CompoundRuntime<AsyncStd, AsyncStd, RealCoarseTimeProvider, AsyncStd, AsyncStd, NativeTlsProvider, AsyncStd> as TlsProvider<S>>::TlsServerStream
Source§impl<S> TlsProvider<S> for AsyncStdRustlsRuntime
Available on crate feature async-std and (crate features native-tls or rustls) only.
impl<S> TlsProvider<S> for AsyncStdRustlsRuntime
async-std and (crate features native-tls or rustls) only.type Connector = <CompoundRuntime<AsyncStd, AsyncStd, RealCoarseTimeProvider, AsyncStd, AsyncStd, RustlsProvider, AsyncStd> as TlsProvider<S>>::Connector
type TlsStream = <CompoundRuntime<AsyncStd, AsyncStd, RealCoarseTimeProvider, AsyncStd, AsyncStd, RustlsProvider, AsyncStd> as TlsProvider<S>>::TlsStream
type Acceptor = <CompoundRuntime<AsyncStd, AsyncStd, RealCoarseTimeProvider, AsyncStd, AsyncStd, RustlsProvider, AsyncStd> as TlsProvider<S>>::Acceptor
type TlsServerStream = <CompoundRuntime<AsyncStd, AsyncStd, RealCoarseTimeProvider, AsyncStd, AsyncStd, RustlsProvider, AsyncStd> as TlsProvider<S>>::TlsServerStream
Source§impl<S> TlsProvider<S> for NativeTlsProvider
Available on crate feature native-tls and (crate features async-std or smol or tokio) and (crate features native-tls or rustls) only.
impl<S> TlsProvider<S> for NativeTlsProvider
native-tls and (crate features async-std or smol or tokio) and (crate features native-tls or rustls) only.type Connector = NativeTlsConnector<S>
type TlsStream = TlsStream<S>
type Acceptor = UnimplementedTls
type TlsServerStream = UnimplementedTls
Source§impl<S> TlsProvider<S> for PreferredRuntime
impl<S> TlsProvider<S> for PreferredRuntime
type Connector = <TokioNativeTlsRuntime as TlsProvider<S>>::Connector
type TlsStream = <TokioNativeTlsRuntime as TlsProvider<S>>::TlsStream
type Acceptor = <TokioNativeTlsRuntime as TlsProvider<S>>::Acceptor
type TlsServerStream = <TokioNativeTlsRuntime as TlsProvider<S>>::TlsServerStream
Source§impl<S> TlsProvider<S> for RustlsProvider
Available on crate feature rustls and (crate features async-std or smol or tokio) and (crate features native-tls or rustls) only.
impl<S> TlsProvider<S> for RustlsProvider
rustls and (crate features async-std or smol or tokio) and (crate features native-tls or rustls) only.type Connector = RustlsConnector<S>
type TlsStream = TlsStream<S>
type Acceptor = RustlsAcceptor<S>
type TlsServerStream = RustlsServerStream<S>
Source§impl<S> TlsProvider<S> for SmolNativeTlsRuntime
Available on crate feature smol and (crate features native-tls or rustls) only.
impl<S> TlsProvider<S> for SmolNativeTlsRuntime
smol and (crate features native-tls or rustls) only.type Connector = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as TlsProvider<S>>::Connector
type TlsStream = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as TlsProvider<S>>::TlsStream
type Acceptor = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as TlsProvider<S>>::Acceptor
type TlsServerStream = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as TlsProvider<S>>::TlsServerStream
Source§impl<S> TlsProvider<S> for SmolRustlsRuntime
Available on crate feature smol and (crate features native-tls or rustls) only.
impl<S> TlsProvider<S> for SmolRustlsRuntime
smol and (crate features native-tls or rustls) only.type Connector = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as TlsProvider<S>>::Connector
type TlsStream = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as TlsProvider<S>>::TlsStream
type Acceptor = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as TlsProvider<S>>::Acceptor
type TlsServerStream = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as TlsProvider<S>>::TlsServerStream
Source§impl<S> TlsProvider<S> for TokioNativeTlsRuntime
Available on crate feature tokio and (crate features native-tls or rustls) only.
impl<S> TlsProvider<S> for TokioNativeTlsRuntime
tokio and (crate features native-tls or rustls) only.type Connector = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as TlsProvider<S>>::Connector
type TlsStream = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as TlsProvider<S>>::TlsStream
type Acceptor = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as TlsProvider<S>>::Acceptor
type TlsServerStream = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as TlsProvider<S>>::TlsServerStream
Source§impl<S> TlsProvider<S> for TokioRustlsRuntime
Available on crate feature tokio and (crate features native-tls or rustls) only.
impl<S> TlsProvider<S> for TokioRustlsRuntime
tokio and (crate features native-tls or rustls) only.