GnuTLSBase Class Reference

`#include <tlsgnutlsbase.h>`

Inheritance diagram for GnuTLSBase:
[legend]

## Public Member Functions

| GnuTLSBase (TLSHandler *th, const std::string &server=EmptyString)
virtual | ~GnuTLSBase ()
virtual bool | encrypt (const std::string &data)
virtual int | decrypt (const std::string &data)
virtual void | cleanup ()
virtual bool | handshake ()
virtual bool | hasChannelBinding () const
virtual const std::string | channelBinding () const
virtual void | setCACerts (const StringList &)
virtual void | setClientCert (const std::string &, const std::string &)
Public Member Functions inherited from TLSBase
| TLSBase (TLSHandler *th, const std::string server)
virtual | ~TLSBase ()
virtual bool | init (const std::string &clientKey=EmptyString, const std::string &clientCerts=EmptyString, const StringList &cacerts=StringList())=0
void | setInitLib (bool init)
virtual bool | isSecure () const
virtual const std::string | channelBindingType () const
virtual const CertInfo & | fetchTLSInfo () const

## Detailed Description

This is the common base class for (stream) encryption using GnuTLS.

You should not need to use this class directly.

Author
  Jakob Schröter js@ca.nosp@m.maya.nosp@m..net

Since
  0.9

Definition at line 38 of file tlsgnutlsbase.h.

## Constructor & Destructor Documentation

## GnuTLSBase()

GnuTLSBase | ( | TLSHandler * | th,
|  | const std::string & | server = EmptyString )

Constructor.

Parameters

  th | The TLSHandler to handle TLS-related events.
  server | The server to use in certificate verification.

Definition at line 27 of file tlsgnutlsbase.cpp.

## ~GnuTLSBase()

~GnuTLSBase | ( |  | ) |

virtual

Virtual destructor.

Definition at line 33 of file tlsgnutlsbase.cpp.

## Member Function Documentation

## channelBinding()

const std::string channelBinding | ( |  | ) | const

virtual

Returns the channel binding data for the established connection.

Returns
  The channel binding data, if any, or the empty string.

Reimplemented from TLSBase.

Definition at line 159 of file tlsgnutlsbase.cpp.

## cleanup()

void cleanup | ( |  | ) |

virtual

This function performs internal cleanup and will be called after a failed handshake attempt.

Implements TLSBase.

Reimplemented in GnuTLSClient, GnuTLSClientAnon, and GnuTLSServerAnon.

Definition at line 98 of file tlsgnutlsbase.cpp.

## decrypt()

int decrypt | ( | const std::string & | data | ) |

virtual

Use this function to feed encrypted data or received handshake data to the encryption implementation. Handshake data will be eaten, unencrypted data will be pushed to the TLSHandler's handleDecryptedData() function.

Parameters

  data | The data to decrypt.

Returns
  The number of bytes used from the input.

Implements TLSBase.

Definition at line 64 of file tlsgnutlsbase.cpp.

## encrypt()

bool encrypt | ( | const std::string & | data | ) |

virtual

Use this function to feed unencrypted data to the encryption implementation. The encrypted result will be pushed to the TLSHandler's handleEncryptedData() function.

Parameters

  data | The data to encrypt.

Returns
  Whether or not the data was used successfully.

Implements TLSBase.

Definition at line 45 of file tlsgnutlsbase.cpp.

## handshake()

bool handshake | ( |  | ) |

virtual

This functiopn performs the TLS handshake. Handshake data from the server side should be fed in using decrypt(). Handshake data that is to be sent to the other side is pushed through TLSBase's handleEncryptedData().

Returns
  True if the handshake was successful or if more input is needed, false if the handshake failed.

Implements TLSBase.

Definition at line 122 of file tlsgnutlsbase.cpp.

## hasChannelBinding()

bool hasChannelBinding | ( |  | ) | const

virtual

This function indicates whether the underlying TLS implementation supports channel binding (used in e.g. SASL SCRAM-SHA-1-PLUS).

Returns
  True if channel binding is supported, false otherwise.

Reimplemented from TLSBase.

Definition at line 150 of file tlsgnutlsbase.cpp.

## setCACerts()

virtual void setCACerts | ( | const StringList & | cacerts | ) |

inline virtual

Use this function to set a number of trusted root CA certificates which shall be used to verify a servers certificate.

Parameters

  cacerts | A list of absolute paths to CA root certificate files in PEM format.

Implements TLSBase.

Reimplemented in GnuTLSClient.

Definition at line 72 of file tlsgnutlsbase.h.

## setClientCert()

virtual void setClientCert | ( | const std::string & | clientKey,
|  | const std::string & | clientCerts )

inline virtual

Use this function to set the user's certificate and private key. The certificate will be presented to the server upon request and can be used for SASL EXTERNAL authentication. The user's certificate file should be a bundle of more than one certificate in PEM format. The first one in the file should be the user's certificate, each cert following that one should have signed the previous one.

Note
  These certificates are not necessarily the same as those used to verify the server's certificate.

Parameters

  clientKey | The absolute path to the user's private key in PEM format.
  clientCerts | A path to a certificate bundle in PEM format.

Implements TLSBase.

Reimplemented in GnuTLSClient.

Definition at line 75 of file tlsgnutlsbase.h.

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

- tlsgnutlsbase.h
- tlsgnutlsbase.cpp