Net module

SSLAdapter

Manages the OpenSSL context and BIO buffers for an SSL socket connection.

#include <icy/net/ssladapter.h>

class SSLAdapter

Defined in src/net/include/icy/net/ssladapter.h:38

Friends

NameDescription
net::SSLSocket

net::SSLSocket

friend class net::SSLSocket

Defined in src/net/include/icy/net/ssladapter.h:107

Public Methods

ReturnNameDescription
SSLAdapterConstructs the SSLAdapter and associates it with the given socket. The socket pointer must remain valid for the lifetime of this adapter.
~SSLAdapter noexcept
SSLAdapterDeleted constructor.
SSLAdapter &operator=Deleted assignment operator.
SSLAdapterDeleted constructor.
SSLAdapter &operator=Deleted assignment operator.
voidinitClientInitializes the SSL context as a client.
voidinitServerInitializes the SSL context as a server.
boolinitialized constReturns true when SSL context has been initialized.
boolready constReturns true when the handshake is complete.
voidhandshakeStart/continue the SSL handshake process.
intavailable constReturns the number of bytes available in the SSL buffer for immediate reading.
voidshutdownIssues an orderly SSL shutdown.
voidflushFlushes the SSL read/write buffers.
voidsetHostnameSet the expected peer hostname for certificate verification. Must be called before initClient() to enable hostname verification.
voidaddIncomingDataFeeds encrypted data received from the network into the SSL read BIO. Triggers a flush, which drives the handshake or decrypts and delivers plaintext to the socket via onRecv().
voidaddOutgoingDataQueues plaintext data for encryption and transmission.
voidaddOutgoingDataQueues plaintext data for encryption and transmission.
voidaddOutgoingDataMoves plaintext data into the pending write buffer when possible.

SSLAdapter

SSLAdapter(net::SSLSocket * socket)

Defined in src/net/include/icy/net/ssladapter.h:44

Constructs the SSLAdapter and associates it with the given socket. The socket pointer must remain valid for the lifetime of this adapter.

Parameters

ParameterTypeDescription
socketnet::SSLSocket *The owning SSLSocket that sends and receives raw data.

~SSLAdapter

noexcept

~SSLAdapter() noexcept

Defined in src/net/include/icy/net/ssladapter.h:45


SSLAdapter

SSLAdapter(const SSLAdapter &) = delete

Defined in src/net/include/icy/net/ssladapter.h:47

Deleted constructor.


operator=

SSLAdapter & operator=(const SSLAdapter &) = delete

Defined in src/net/include/icy/net/ssladapter.h:48

Deleted assignment operator.


SSLAdapter

SSLAdapter(SSLAdapter &&) = delete

Defined in src/net/include/icy/net/ssladapter.h:49

Deleted constructor.


operator=

SSLAdapter & operator=(SSLAdapter &&) = delete

Defined in src/net/include/icy/net/ssladapter.h:50

Deleted assignment operator.


initClient

void initClient()

Defined in src/net/include/icy/net/ssladapter.h:53

Initializes the SSL context as a client.


initServer

void initServer()

Defined in src/net/include/icy/net/ssladapter.h:56

Initializes the SSL context as a server.


initialized

const

bool initialized() const

Defined in src/net/include/icy/net/ssladapter.h:59

Returns true when SSL context has been initialized.


ready

const

bool ready() const

Defined in src/net/include/icy/net/ssladapter.h:62

Returns true when the handshake is complete.


handshake

void handshake()

Defined in src/net/include/icy/net/ssladapter.h:65

Start/continue the SSL handshake process.


available

const

int available() const

Defined in src/net/include/icy/net/ssladapter.h:69

Returns the number of bytes available in the SSL buffer for immediate reading.


shutdown

void shutdown()

Defined in src/net/include/icy/net/ssladapter.h:72

Issues an orderly SSL shutdown.


flush

void flush()

Defined in src/net/include/icy/net/ssladapter.h:75

Flushes the SSL read/write buffers.


setHostname

void setHostname(std::string_view hostname)

Defined in src/net/include/icy/net/ssladapter.h:79

Set the expected peer hostname for certificate verification. Must be called before initClient() to enable hostname verification.


addIncomingData

void addIncomingData(const char * data, size_t len)

Defined in src/net/include/icy/net/ssladapter.h:86

Feeds encrypted data received from the network into the SSL read BIO. Triggers a flush, which drives the handshake or decrypts and delivers plaintext to the socket via onRecv().

Parameters

ParameterTypeDescription
dataconst char *Pointer to the encrypted bytes.
lensize_tNumber of bytes to feed.

addOutgoingData

void addOutgoingData(std::string_view data)

Defined in src/net/include/icy/net/ssladapter.h:90

Queues plaintext data for encryption and transmission.

Parameters

ParameterTypeDescription
datastd::string_viewString view of the plaintext payload.

addOutgoingData

void addOutgoingData(const char * data, size_t len)

Defined in src/net/include/icy/net/ssladapter.h:95

Queues plaintext data for encryption and transmission.

Parameters

ParameterTypeDescription
dataconst char *Pointer to the plaintext bytes.
lensize_tNumber of bytes to queue.

addOutgoingData

void addOutgoingData(Buffer && data)

Defined in src/net/include/icy/net/ssladapter.h:98

Moves plaintext data into the pending write buffer when possible.

Protected Attributes

ReturnNameDescription
net::SSLSocket *_socket
SSL *_ssl
BIO *_readBIOThe incoming buffer we write encrypted SSL data into.
BIO *_writeBIOThe outgoing buffer we write to the socket.
std::vector< char >_bufferOutThe outgoing payload to be encrypted and sent.
std::string_hostnameExpected peer hostname for verification.

_socket

net::SSLSocket * _socket

Type: net::SSLSocket *

Defined in src/net/include/icy/net/ssladapter.h:109


_ssl

SSL * _ssl

Defined in src/net/include/icy/net/ssladapter.h:110


_readBIO

BIO * _readBIO

Defined in src/net/include/icy/net/ssladapter.h:111

The incoming buffer we write encrypted SSL data into.


_writeBIO

BIO * _writeBIO

Defined in src/net/include/icy/net/ssladapter.h:112

The outgoing buffer we write to the socket.


_bufferOut

std::vector< char > _bufferOut

Defined in src/net/include/icy/net/ssladapter.h:113

The outgoing payload to be encrypted and sent.


_hostname

std::string _hostname

Defined in src/net/include/icy/net/ssladapter.h:114

Expected peer hostname for verification.

Protected Methods

ReturnNameDescription
voidhandleError
voidflushReadBIO
voidflushWriteBIO

handleError

void handleError(int rc)

Defined in src/net/include/icy/net/ssladapter.h:101


flushReadBIO

void flushReadBIO()

Defined in src/net/include/icy/net/ssladapter.h:103


flushWriteBIO

void flushWriteBIO()

Defined in src/net/include/icy/net/ssladapter.h:104