boost::asio
library provides support for SSL encrypted traffic over sockets by wrapping socket objects in boost::asio::ssl::stream
decorator class template. For example:
boost::asio::ssl::stream<boost::asio::ip::tcp::socket> sslSocket;
Some operations of tcp::socket
are not supported by ssl::stream
. Calling ssl::stream::next_layer
method returns reference to wrapped object and this way not supported by ssl::stream
operations can be performed directly on wrapped object.
However it seems logical for me that performing read and write operations directly on wrapped socket object bypasses SSL decryption and encryption and for correct SSL behavior read and write on sslSocket
must be performed directly over wrapping ssl::stream
object.
Is this right or I can freely perform read and write operation on wrapped object?