UCommon
ucommon::sstream Class Reference

Secure socket using std::iostream. More...

#include <secure.h>

Inheritance diagram for ucommon::sstream:
Collaboration diagram for ucommon::sstream:

Public Member Functions

secure::cert_t certificate (void) const
 Get peer (x509) certificate for current stream if present.
 
void close (void)
 Close a connection with a ssl server.
 
void flush (void)
 
bool is_certificate (void) const
 Check if a peer certificate is present.
 
bool is_secure (void) const
 Check if ssl session active, otherwise pure tcp.
 
bool is_signed (void) const
 Check if peer certificate is present and at least self-signed.
 
bool is_verified (void) const
 Check if peer certificate is verified through an authority.
 
void open (const char *host, const char *service, size_t size=536)
 Open a connection to a ssl server.
 
void release (void)
 Release all ssl resources.
 
 sstream (const TCPServer *server, secure::server_t context, size_t size=536)
 Construct a ssl server stream.
 
 sstream (secure::client_t context)
 Construct a ssl client stream.
 
int sync ()
 
 ~sstream ()
 Destroy ssl stream.
 
- Public Member Functions inherited from ucommon::tcpstream
void close (void)
 Close an active stream connection.
 
void open (const char *host, const char *service, unsigned segment=536)
 Open a stream connectoion to a host and service.
 
void open (Socket::address &address, unsigned segment=536)
 Open a stream connection to a tcp service.
 
 operator bool () const
 See if stream connection is active.
 
bool operator! () const
 See if stream is disconnected.
 
 tcpstream (const TCPServer *server, unsigned segsize=536, timeout_t timeout=0)
 Create a stream from an existing tcp listener.
 
 tcpstream (const tcpstream &copy)
 Copy constructor...
 
 tcpstream (int family=2, timeout_t timeout=0)
 Create an unconnected tcp stream object that is idle until opened.
 
 tcpstream (Socket::address &address, unsigned segsize=536, timeout_t timeout=0)
 A convenience constructor that creates a connected tcp stream directly from an address.
 
virtual ~tcpstream ()
 Destroy a tcp stream.
 
- Public Member Functions inherited from ucommon::StreamBuffer
bool is_open (void) const
 
 operator bool () const
 
bool operator! () const
 
int sync (void)
 Flush the stream input and output buffers, writes pending output.
 

Protected Member Functions

ssize_t _read (char *address, size_t size)
 
bool _wait (void)
 
ssize_t _write (const char *address, size_t size)
 
- Protected Member Functions inherited from ucommon::tcpstream
socket_t getsocket (void) const
 
int overflow (int ch)
 This streambuf method is used to write the output buffer through the established tcp connection.
 
void release (void)
 Release the tcp stream and destroy the underlying socket.
 
int underflow (void)
 This streambuf method is used to load the input buffer through the established tcp socket connection.
 
- Protected Member Functions inherited from ucommon::StreamBuffer
void allocate (size_t size)
 
void release (void)
 
int uflow ()
 This streambuf method is used for doing unbuffered reads through the establish tcp socket connection when in interactive mode.
 

Protected Attributes

secure::bufio_t bio
 
secure::cert_t cert
 
bool server
 
secure::session_t ssl
 
secure::verify_t verified
 
- Protected Attributes inherited from ucommon::tcpstream
socket_t so
 
timeout_t timeout
 
- Protected Attributes inherited from ucommon::StreamBuffer
size_t bufsize
 
char * gbuf
 
char * pbuf
 

Detailed Description

Secure socket using std::iostream.

Being based on tcpstream, it also inherits the character protocol. If no context is given or the handshake fails, then the stream defaults to insecure TCP connection behavior.

Author
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org

Definition at line 908 of file secure.h.

Constructor & Destructor Documentation

◆ sstream() [1/2]

ucommon::sstream::sstream ( secure::client_t context)

Construct a ssl client stream.

The context will be loaded with relevant certificates from secure::client().

Parameters
contextto use

◆ sstream() [2/2]

ucommon::sstream::sstream ( const TCPServer * server,
secure::server_t context,
size_t size = 536 )

Construct a ssl server stream.

The context will be loaded with relevant certificates from secure::server().

Parameters
serverinstance of tcp socket.
contextto use.
sizeof streaming buffer.

◆ ~sstream()

ucommon::sstream::~sstream ( )

Destroy ssl stream.

Clean up any resources used.

Member Function Documentation

◆ _read()

ssize_t ucommon::sstream::_read ( char * address,
size_t size )
protectedvirtual

Reimplemented from ucommon::tcpstream.

◆ _wait()

bool ucommon::sstream::_wait ( void )
protectedvirtual

Reimplemented from ucommon::tcpstream.

◆ _write()

ssize_t ucommon::sstream::_write ( const char * address,
size_t size )
protectedvirtual

Reimplemented from ucommon::tcpstream.

◆ certificate()

secure::cert_t ucommon::sstream::certificate ( void ) const
inline

Get peer (x509) certificate for current stream if present.

Returns
certificate of peer or nullptr if none.

Definition at line 976 of file secure.h.

◆ flush()

void ucommon::sstream::flush ( void )
inline

Definition at line 968 of file secure.h.

◆ is_certificate()

bool ucommon::sstream::is_certificate ( void ) const
inline

Check if a peer certificate is present.

Returns
true if peer certificate.

Definition at line 992 of file secure.h.

◆ is_secure()

bool ucommon::sstream::is_secure ( void ) const
inline

Check if ssl session active, otherwise pure tcp.

Returns
true if ssl session.

Definition at line 984 of file secure.h.

◆ is_signed()

bool ucommon::sstream::is_signed ( void ) const
inline

Check if peer certificate is present and at least self-signed.

Returns
true if signed or verified peer.

Definition at line 1008 of file secure.h.

◆ is_verified()

bool ucommon::sstream::is_verified ( void ) const
inline

Check if peer certificate is verified through an authority.

Returns
true if verified peer.

Definition at line 1000 of file secure.h.

◆ open()

void ucommon::sstream::open ( const char * host,
const char * service,
size_t size = 536 )

Open a connection to a ssl server.

Parameters
hostname to connect with.
serviceid to connect to.
sizeof stream buffer to use.

Field Documentation

◆ bio

secure::bufio_t ucommon::sstream::bio
protected

Definition at line 915 of file secure.h.

◆ cert

secure::cert_t ucommon::sstream::cert
protected

Definition at line 916 of file secure.h.

◆ server

bool ucommon::sstream::server
protected

Definition at line 918 of file secure.h.

◆ ssl

secure::session_t ucommon::sstream::ssl
protected

Definition at line 914 of file secure.h.

◆ verified

secure::verify_t ucommon::sstream::verified
protected

Definition at line 917 of file secure.h.


The documentation for this class was generated from the following file: