Home
Net module

SSLAdapter

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

SSLAdapter

#include <icy/net/ssladapter.h>
class SSLAdapter

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

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

List of all members

NameKindOwner
SSLSocketfriendDeclared here
SSLAdapterfunctionDeclared here
~SSLAdapterfunctionDeclared here
SSLAdapterfunctionDeclared here
operator=functionDeclared here
SSLAdapterfunctionDeclared here
operator=functionDeclared here
initClientfunctionDeclared here
initServerfunctionDeclared here
initializedfunctionDeclared here
readyfunctionDeclared here
handshakefunctionDeclared here
availablefunctionDeclared here
shutdownfunctionDeclared here
flushfunctionDeclared here
setHostnamefunctionDeclared here
addIncomingDatafunctionDeclared here
addOutgoingDatafunctionDeclared here
addOutgoingDatafunctionDeclared here
addOutgoingDatafunctionDeclared here
_socketvariableDeclared here
_sslvariableDeclared here
_readBIOvariableDeclared here
_writeBIOvariableDeclared here
_bufferOutvariableDeclared here
_hostnamevariableDeclared here
handleErrorfunctionDeclared here
flushReadBIOfunctionDeclared here
flushWriteBIOfunctionDeclared here

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.
SSLAdapterDeleted constructor.
SSLAdapterDeleted constructor.
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

  • socket The owning SSLSocket that sends and receives raw data.

SSLAdapter

SSLAdapter(const SSLAdapter &) = delete

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

Deleted constructor.


SSLAdapter

SSLAdapter(SSLAdapter &&) = delete

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

Deleted constructor.


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

  • data Pointer to the encrypted bytes.

  • len Number 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

  • data String 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

  • data Pointer to the plaintext bytes.

  • len Number 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

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