# Struct openssl::ssl::SslStreamBuilder [−] [src]

    pub struct SslStreamBuilder<S> { /* fields omitted */ }

👎 Deprecated since 0.10.32:

use the methods directly on Ssl/SslStream instead

A partially constructed `SslStream`, useful for unusual handshakes.

## Implementations

### `impl<S> SslStreamBuilder<S> where
S: Read + Write,` [src]

#### `pub fn new(ssl: Ssl, stream: S) -> Self` [src]

Begin creating an `SslStream` atop `stream`

#### `pub fn stateless(&mut self) -> Result<bool, ErrorStack>` [src]

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`

#### `pub fn set_connect_state(&mut self)` [src]

Configure as an outgoing stream from a client.

This corresponds to `SSL_set_connect_state`.

#### `pub fn set_accept_state(&mut self)` [src]

Configure as an incoming stream to a server.

This corresponds to `SSL_set_accept_state`.

#### `pub fn connect(self) -> Result<SslStream<S>, HandshakeError<S>>` [src]

See `Ssl::connect`

#### `pub fn accept(self) -> Result<SslStream<S>, HandshakeError<S>>` [src]

See `Ssl::accept`

#### `pub fn handshake(self) -> Result<SslStream<S>, HandshakeError<S>>` [src]

Initiates the handshake.

This will fail if `set_accept_state` or `set_connect_state` was not called first.

This corresponds to `SSL_do_handshake`.

#### `pub fn read_early_data(&mut self, buf: &mut [u8]) -> Result<usize, Error>` [src]

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 newer.

This corresponds to `SSL_read_early_data`.

#### `pub fn write_early_data(&mut self, buf: &[u8]) -> Result<usize, Error>` [src]

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 newer.

This corresponds to `SSL_write_early_data`.

### `impl<S> SslStreamBuilder<S>` [src]

#### `pub fn get_ref(&self) -> &S` [src]

Returns a shared reference to the underlying stream.

#### `pub fn get_mut(&mut self) -> &mut S` [src]

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.

#### `pub fn ssl(&self) -> &SslRef` [src]

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

#### `pub fn set_dtls_mtu_size(&mut self, mtu_size: usize)` [src]

👎 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> 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

### `impl<T> Any for T where
T: 'static + ?Sized,` [src]

#### `pub fn type_id(&self) -> TypeId` [src]

Gets the `TypeId` of `self`. Read more

### `impl<T> Borrow<T> for T where
T: ?Sized,` [src]

#### `pub fn borrow(&self) -> &T` [src]

Immutably borrows from an owned value. Read more

### `impl<T> BorrowMut<T> for T where
T: ?Sized,` [src]

#### `pub fn borrow_mut(&mut self) -> &mut T` [src]

Mutably borrows from an owned value. Read more

### `impl<T> From<T> for T` [src]

#### `pub fn from(t: T) -> T` [src]

Performs the conversion.

### `impl<T, U> Into<U> for T where
U: From<T>,` [src]

#### `pub fn into(self) -> U` [src]

Performs the conversion.

### `impl<T, U> TryFrom<U> for T where
U: Into<T>,` [src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

#### `pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>` [src]

Performs the conversion.

### `impl<T, U> TryInto<U> for T where
U: TryFrom<T>,` [src]

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

The type returned in the event of a conversion error.

#### `pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>` [src]

Performs the conversion.