pub struct SslStreamBuilder<S> { /* private fields */ }
Expand description
A partially constructed SslStream
, useful for unusual handshakes.
Implementationsยง
Sourceยงimpl<S> SslStreamBuilder<S>
impl<S> SslStreamBuilder<S>
Sourcepub fn stateless(&mut self) -> Result<bool, ErrorStack>
pub fn stateless(&mut self) -> Result<bool, ErrorStack>
Perform a stateless server-side handshake
Requires that cookie generation and verification callbacks were set on the SSL context.
Returns Ok(true)
if a complete ClientHello containing a valid cookie
was read, in which case the handshake should be continued via
accept
. If a HelloRetryRequest containing a fresh cookie was
transmitted, Ok(false)
is returned instead. If the handshake cannot
proceed at all, Err
is returned.
This corresponds to SSL_stateless
.
Sourcepub fn set_connect_state(&mut self)
pub fn set_connect_state(&mut self)
Configure as an outgoing stream from a client.
This corresponds to SSL_set_connect_state
.
Sourcepub fn set_accept_state(&mut self)
pub fn set_accept_state(&mut self)
Configure as an incoming stream to a server.
This corresponds to SSL_set_accept_state
.
Sourcepub fn connect(self) -> Result<SslStream<S>, HandshakeError<S>>
pub fn connect(self) -> Result<SslStream<S>, HandshakeError<S>>
See Ssl::connect
Sourcepub fn accept(self) -> Result<SslStream<S>, HandshakeError<S>>
pub fn accept(self) -> Result<SslStream<S>, HandshakeError<S>>
See Ssl::accept
Sourcepub fn handshake(self) -> Result<SslStream<S>, HandshakeError<S>>
pub fn handshake(self) -> Result<SslStream<S>, HandshakeError<S>>
Initiates the handshake.
This will fail if set_accept_state
or set_connect_state
was not called first.
This corresponds to SSL_do_handshake
.
Sourcepub fn read_early_data(&mut self, buf: &mut [u8]) -> Result<usize, Error>
pub fn read_early_data(&mut self, buf: &mut [u8]) -> Result<usize, Error>
Read application data transmitted by a client before handshake completion.
Useful for reducing latency, but vulnerable to replay attacks. Call
set_accept_state
first.
Returns Ok(0)
if all early data has been read.
Requires OpenSSL 1.1.1 or LibreSSL 3.4.0 or newer.
This corresponds to SSL_read_early_data
.
Sourcepub fn write_early_data(&mut self, buf: &[u8]) -> Result<usize, Error>
pub fn write_early_data(&mut self, buf: &[u8]) -> Result<usize, Error>
Send data to the server without blocking on handshake completion.
Useful for reducing latency, but vulnerable to replay attacks. Call
set_connect_state
first.
Requires OpenSSL 1.1.1 or LibreSSL 3.4.0 or newer.
This corresponds to SSL_write_early_data
.
Sourceยงimpl<S> SslStreamBuilder<S>
impl<S> SslStreamBuilder<S>
Sourcepub fn get_mut(&mut self) -> &mut S
pub fn get_mut(&mut self) -> &mut S
Returns a mutable reference to the underlying stream.
ยงWarning
It is inadvisable to read from or write to the underlying stream as it will most likely corrupt the SSL session.