UCommon
Public Member Functions | Protected Member Functions | Protected Attributes
ucommon::sstream Class Reference

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

#include <secure.h>

Inheritance diagram for ucommon::sstream:
Inheritance graph
[legend]
Collaboration diagram for ucommon::sstream:
Collaboration graph
[legend]

Public Member Functions

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

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. More...
 
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. More...
 
- 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. More...
 

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

◆ 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.

◆ 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.

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