SslStreamBuilder

Struct SslStreamBuilder 

Source
pub struct SslStreamBuilder<S> { /* private fields */ }
๐Ÿ‘ŽDeprecated since 0.10.32: use the methods directly on Ssl/SslStream instead
Expand description

A partially constructed SslStream, useful for unusual handshakes.

Implementationsยง

Sourceยง

impl<S> SslStreamBuilder<S>
where S: Read + Write,

Source

pub fn new(ssl: Ssl, stream: S) -> SslStreamBuilder<S>

Begin creating an SslStream atop stream

Source

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.

Source

pub fn set_connect_state(&mut self)

Configure as an outgoing stream from a client.

This corresponds to SSL_set_connect_state.

Source

pub fn set_accept_state(&mut self)

Configure as an incoming stream to a server.

This corresponds to SSL_set_accept_state.

Source

pub fn connect(self) -> Result<SslStream<S>, HandshakeError<S>>

See Ssl::connect

Source

pub fn accept(self) -> Result<SslStream<S>, HandshakeError<S>>

See Ssl::accept

Source

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.

Source

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.

Source

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>

Source

pub fn get_ref(&self) -> &S

Returns a shared reference to the underlying stream.

Source

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.

Source

pub fn ssl(&self) -> &SslRef

Returns a shared reference to the Ssl object associated with this builder.

Source

pub fn set_dtls_mtu_size(&mut self, mtu_size: usize)

๐Ÿ‘ŽDeprecated since 0.10.30: Use SslRef::set_mtu instead

Set the DTLS MTU size.

It will be ignored if the value is smaller than the minimum packet size the DTLS protocol requires.

ยงPanics

This function panics if the given mtu size canโ€™t be represented in a positive c_long range

Auto Trait Implementationsยง

ยง

impl<S> Freeze for SslStreamBuilder<S>

ยง

impl<S> RefUnwindSafe for SslStreamBuilder<S>
where S: RefUnwindSafe,

ยง

impl<S> Send for SslStreamBuilder<S>
where S: Send,

ยง

impl<S> Sync for SslStreamBuilder<S>
where S: Sync,

ยง

impl<S> Unpin for SslStreamBuilder<S>
where S: Unpin,

ยง

impl<S> UnwindSafe for SslStreamBuilder<S>
where S: UnwindSafe,

Blanket Implementationsยง

Sourceยง

impl<T> Any for T
where T: 'static + ?Sized,

Sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Sourceยง

impl<T> ArchivePointee for T

Sourceยง

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Sourceยง

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Sourceยง

impl<T> Borrow<T> for T
where T: ?Sized,

Sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Sourceยง

impl<T> BorrowMut<T> for T
where T: ?Sized,

Sourceยง

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Sourceยง

impl<T> From<T> for T

Sourceยง

fn from(t: T) -> T

Returns the argument unchanged.

Sourceยง

impl<T> Instrument for T

Sourceยง

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Sourceยง

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Sourceยง

impl<T, U> Into<U> for T
where U: From<T>,

Sourceยง

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Sourceยง

impl<T> IntoEither for T

Sourceยง

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Sourceยง

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Sourceยง

impl<T> LayoutRaw for T

Sourceยง

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Sourceยง

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Sourceยง

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Sourceยง

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Sourceยง

impl<T> Pointable for T

Sourceยง

const ALIGN: usize

The alignment of pointer.
Sourceยง

type Init = T

The type for initializers.
Sourceยง

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Sourceยง

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Sourceยง

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Sourceยง

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Sourceยง

impl<T> Pointee for T

Sourceยง

type Metadata = ()

The metadata type for pointers and references to this type.
Sourceยง

impl<T> Same for T

Sourceยง

type Output = T

Should always be Self
Sourceยง

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Sourceยง

type Error = Infallible

The type returned in the event of a conversion error.
Sourceยง

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Sourceยง

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Sourceยง

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Sourceยง

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Sourceยง

impl<T> Upcastable for T
where T: Any + Send + Sync + 'static,

Sourceยง

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
Sourceยง

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
Sourceยง

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn
Sourceยง

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Sourceยง

fn vzip(self) -> V

Sourceยง

impl<T> WithSubscriber for T

Sourceยง

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Sourceยง

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more