pub trait TlsSession: Send + 'static {
// Required methods
fn step<'i>(
&mut self,
input: &'i mut [u8],
output: &mut [u8],
) -> Result<TlsProgress<'i>, TlsError>;
fn encrypt(
&mut self,
plaintext: &[u8],
output: &mut [u8],
) -> Result<usize, TlsError>;
fn close(&mut self, output: &mut [u8]) -> Result<usize, TlsError>;
fn on_transport_closed(&mut self) -> TlsCloseKind;
fn info(&self) -> Option<TlsInfo>;
fn input_capacity_required(&self) -> usize;
}Expand description
One connection’s TLS state machine. Never blocks, never does IO.
See docs/API.md (TLS seam) for how the server drives it.
Required Methods§
Sourcefn step<'i>(
&mut self,
input: &'i mut [u8],
output: &mut [u8],
) -> Result<TlsProgress<'i>, TlsError>
fn step<'i>( &mut self, input: &'i mut [u8], output: &mut [u8], ) -> Result<TlsProgress<'i>, TlsError>
Sourcefn encrypt(
&mut self,
plaintext: &[u8],
output: &mut [u8],
) -> Result<usize, TlsError>
fn encrypt( &mut self, plaintext: &[u8], output: &mut [u8], ) -> Result<usize, TlsError>
Encrypts plaintext into output: all records or none.
§Errors
TlsFailure::OutputFull when output cannot hold every record.
Sourcefn on_transport_closed(&mut self) -> TlsCloseKind
fn on_transport_closed(&mut self) -> TlsCloseKind
The peer’s transport closed: was the TLS stream ended cleanly?
Sourcefn info(&self) -> Option<TlsInfo>
fn info(&self) -> Option<TlsInfo>
SNI, ALPN, version, and cipher suite; Some after the handshake.
Sourcefn input_capacity_required(&self) -> usize
fn input_capacity_required(&self) -> usize
The smallest input buffer the session needs now.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".