| Home | Libraries | People | FAQ | More

### ssl::stream

Provides stream-oriented functionality using SSL.

    template<
        typename Stream>
    class stream :
      public ssl::stream_base,
      noncopyable

##### Types

Name | Description
--- | ---
impl_struct | Structure for use with deprecated impl_type.
handshake_type | Different handshake types.
impl_type | (Deprecated: Use native_handle_type.) The underlying implementation type.
lowest_layer_type | The type of the lowest layer.
native_handle_type | The native handle type of the SSL stream.
next_layer_type | The type of the next layer.

##### Member Functions

Name | Description
--- | ---
async_handshake | Start an asynchronous SSL handshake.
async_read_some | Start an asynchronous read.
async_shutdown | Asynchronously shut down SSL on the stream.
async_write_some | Start an asynchronous write.
get_io_service | Get the io_service associated with the object.
handshake | Perform SSL handshaking.
impl | (Deprecated: Use native_handle().) Get the underlying implementation in the native type.
lowest_layer | Get a reference to the lowest layer.
native_handle | Get the underlying implementation in the native type.
next_layer | Get a reference to the next layer.
read_some | Read some data from the stream.
set_verify_callback | Set the callback used to verify peer certificates.
set_verify_depth | Set the peer verification depth.
set_verify_mode | Set the peer verification mode.
shutdown | Shut down SSL on the stream.
stream | Construct a stream.
write_some | Write some data to the stream.
~stream | Destructor.

The stream class template provides asynchronous and blocking stream-oriented functionality using SSL.

##### Thread Safety

Distinct objects: Safe.

Shared objects: Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.

##### Example

To use the SSL stream template with an `ip::tcp::socket`, you would write:

    boost::asio::io_service io_service;
    boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23);
    boost::asio::ssl::stream<asio:ip::tcp::socket> sock(io_service, ctx);

##### Requirements

Header: `boost/asio/ssl/stream.hpp`

Convenience header: `boost/asio/ssl.hpp`