Qt Cryptographic Architecture: QCA::TLSContext Class Reference

Qt Cryptographic Architecture

Classes | Public Types | Signals | Public Member Functions | List of all members
QCA::TLSContext Class Referenceabstract
QCA provider API

`#include <QtCrypto>`

Collaboration diagram for QCA::TLSContext:
[legend]

## Classes
class | SessionInfo

## Public Types
enum | Result { Success, Error, Continue }

## Signals
void | dtlsTimeout ()
void | resultsReady ()

## Public Member Functions
virtual bool | canCompress () const =0
virtual bool | canSetHostName () const =0
virtual bool | certificateRequested () const =0
virtual bool | clientHelloReceived () const =0
virtual int | encoded () const =0
virtual bool | eof () const =0
virtual QString | hostName () const =0
virtual QList< CertificateInfoOrdered > | issuerList () const =0
virtual int | maxSSF () const =0
virtual CertificateChain | peerCertificateChain () const =0
virtual Validity | peerCertificateValidity () const =0
virtual void | reset ()=0
virtual Result | result () const =0
virtual bool | serverHelloReceived () const =0
virtual SessionInfo | sessionInfo () const =0
virtual void | setCertificate (const CertificateChain &cert, const PrivateKey &key)=0
virtual void | setConstraints (int minSSF, int maxSSF)=0
virtual void | setConstraints (const QStringList &cipherSuiteList)=0
virtual void | setIssuerList (const QList< CertificateInfoOrdered > &issuerList)=0
virtual void | setMTU (int size)
virtual void | setSessionId (const TLSSessionContext &id)=0
virtual void | setTrustedCertificates (const CertificateCollection &trusted)=0
virtual void | setup (bool serverMode, const QString &hostName, bool compress)=0
virtual void | shutdown ()=0
virtual void | start ()=0
virtual QStringList | supportedCipherSuites (const TLS::Version &version) const =0
| TLSContext (Provider *p, const QString &type)
virtual QByteArray | to_app ()=0
virtual QByteArray | to_net ()=0
virtual QByteArray | unprocessed ()=0
virtual void | update (const QByteArray &from_net, const QByteArray &from_app)=0
virtual bool | waitForResultsReady (int msecs)=0

## Detailed Description

TLS provider.

Note
  This class is part of the provider plugin interface and should not be used directly by applications. You probably want TLS instead.

## Member Enumeration Documentation

## ◆ Result

enum QCA::TLSContext::Result

Result of a TLS operation.

Enumerator
Success | Operation completed.
Error | Operation failed.
Continue | More data needed to complete operation.

## Constructor & Destructor Documentation

## ◆ TLSContext()

QCA::TLSContext::TLSContext | ( | Provider * | p,
|  | const QString & | type
| ) |  |
| inline

Standard constructor.

Parameters

  p | the Provider associated with this context
  type | the name of the type of feature that supported by this context

## Member Function Documentation

## ◆ reset()

virtual void QCA::TLSContext::reset | ( |  | ) |
| pure virtual

Reset the object to its initial state.

## ◆ supportedCipherSuites()

virtual QStringList QCA::TLSContext::supportedCipherSuites | ( | const TLS::Version & | version | ) | const
| pure virtual

Returns a list of supported cipher suites for the specified SSL/TLS version.

The cipher suites are specified as strings, for example: "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" (without quotes).

Parameters

  version | the version of TLS to search for

## ◆ canCompress()

virtual bool QCA::TLSContext::canCompress | ( |  | ) | const
| pure virtual

Returns true if the provider supports compression.

## ◆ canSetHostName()

virtual bool QCA::TLSContext::canSetHostName | ( |  | ) | const
| pure virtual

Returns true if the provider supports server name indication.

## ◆ maxSSF()

virtual int QCA::TLSContext::maxSSF | ( |  | ) | const
| pure virtual

Returns the maximum SSF supported by this provider.

## ◆ setup()

virtual void QCA::TLSContext::setup | ( | bool | serverMode,
|  | const QString & | hostName,
|  | bool | compress
| ) |  |
| pure virtual

Configure a new session.

This function will be called before any other configuration functions.

Parameters

  serverMode | whether to operate as a server (true) or client (false)
  hostName | the hostname to use
  compress | whether to compress (true) or not (false)

## ◆ setConstraints() [1/2]

virtual void QCA::TLSContext::setConstraints | ( | int | minSSF,
|  | int | maxSSF
| ) |  |
| pure virtual

Set the constraints of the session using SSF values.

This function will be called before start().

Parameters

  minSSF | the minimum strength factor that is acceptable
  maxSSF | the maximum strength factor that is acceptable

## ◆ setConstraints() [2/2]

virtual void QCA::TLSContext::setConstraints | ( | const QStringList & | cipherSuiteList | ) |
| pure virtual

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Set the constraints of the session using a cipher suite list.

This function will be called before start().

Parameters

  cipherSuiteList | the list of cipher suites that may be used for this session.

See also
  supportedCipherSuites

## ◆ setTrustedCertificates()

virtual void QCA::TLSContext::setTrustedCertificates | ( | const CertificateCollection & | trusted | ) |
| pure virtual

Set the list of trusted certificates.

This function may be called at any time.

Parameters

  trusted | the trusted certificates and CRLs to be used.

## ◆ setIssuerList()

virtual void QCA::TLSContext::setIssuerList | ( | const QList< CertificateInfoOrdered > & | issuerList | ) |
| pure virtual

Set the list of acceptable issuers.

This function may be called at any time.

This function is for server mode only.

Parameters

  issuerList | the list of issuers that may be used

## ◆ setCertificate()

virtual void QCA::TLSContext::setCertificate | ( | const CertificateChain & | cert,
|  | const PrivateKey & | key
| ) |  |
| pure virtual

Set the local certificate.

This function may be called at any time.

Parameters

  cert | the certificate and associated trust chain
  key | the private key for the local certificate

## ◆ setSessionId()

virtual void QCA::TLSContext::setSessionId | ( | const TLSSessionContext & | id | ) |
| pure virtual

Set the TLS session id, for session resuming.

This function will be called before start().

Parameters

  id | the session identification

## ◆ shutdown()

virtual void QCA::TLSContext::shutdown | ( |  | ) |
| pure virtual

Sets the session to the shutdown state.

The actual shutdown operation will happen at a future call to update().

This function is for normal TLS only (not DTLS).

## ◆ setMTU()

virtual void QCA::TLSContext::setMTU | ( | int | size | ) |
| virtual

Set the maximum transmission unit size.

This function is for DTLS only.

Parameters

  size | the maximum number of bytes in a datagram

## ◆ start()

virtual void QCA::TLSContext::start | ( |  | ) |
| pure virtual

Begins the session, starting with the handshake.

This function returns immediately, and completion is signaled with the resultsReady() signal.

On completion, the result() function will return Success if the TLS session is able to begin, or Error if there is a failure to initialize the TLS subsystem. If successful, the session is now in the handshake state, and update() will be called repeatedly until the session ends.

## ◆ update()

virtual void QCA::TLSContext::update | ( | const QByteArray & | from_net,
|  | const QByteArray & | from_app
| ) |  |
| pure virtual

Performs one iteration of the TLS session processing.

This function returns immediately, and completion is signaled with the resultsReady() signal.

If the session is in a handshake state, result() and to_net() will be valid. If result() is Success, then the session is now in the connected state.

If the session is in a shutdown state, result() and to_net() will be valid. If result() is Success, then the session has ended.

If the session is in a connected state, result(), to_net(), encoded(), to_app(), and eof() are valid. The result() function will return Success or Error. Note that eof() does not apply to DTLS.

For DTLS, this function operates with single packets. Many update() operations must be performed repeatedly to exchange multiple packets.

Parameters

  from_net | the data from the "other side" of the connection
  from_app | the data from the application of the protocol

## ◆ waitForResultsReady()

virtual bool QCA::TLSContext::waitForResultsReady | ( | int | msecs | ) |
| pure virtual

Waits for a start() or update() operation to complete.

In this case, the resultsReady() signal is not emitted. Returns true if the operation completed or false if this function times out.

This function is blocking.

Parameters

  msecs | number of milliseconds to wait (-1 to wait forever)

## ◆ result()

virtual Result QCA::TLSContext::result | ( |  | ) | const
| pure virtual

Returns the result code of an operation.

## ◆ to_net()

virtual QByteArray QCA::TLSContext::to_net | ( |  | ) |
| pure virtual

Returns data that should be sent across the network.

## ◆ encoded()

virtual int QCA::TLSContext::encoded | ( |  | ) | const
| pure virtual

Returns the number of bytes of plaintext data that is encoded inside of to_net()

## ◆ to_app()

virtual QByteArray QCA::TLSContext::to_app | ( |  | ) |
| pure virtual

Returns data that is decoded from the network and should be processed by the application.

## ◆ eof()

virtual bool QCA::TLSContext::eof | ( |  | ) | const
| pure virtual

Returns true if the peer has closed the stream.

## ◆ clientHelloReceived()

virtual bool QCA::TLSContext::clientHelloReceived | ( |  | ) | const
| pure virtual

Returns true if the TLS client hello has been received.

This is only valid if a handshake is in progress or completed.

## ◆ serverHelloReceived()

virtual bool QCA::TLSContext::serverHelloReceived | ( |  | ) | const
| pure virtual

Returns true if the TLS server hello has been received.

This is only valid if a handshake is in progress or completed.

## ◆ hostName()

virtual QString QCA::TLSContext::hostName | ( |  | ) | const
| pure virtual

Returns the host name sent by the client using server name indication (server mode only)

This is only valid if a handshake is in progress or completed.

## ◆ certificateRequested()

virtual bool QCA::TLSContext::certificateRequested | ( |  | ) | const
| pure virtual

Returns true if the peer is requesting a certificate.

This is only valid if a handshake is in progress or completed.

## ◆ issuerList()

virtual QList<CertificateInfoOrdered> QCA::TLSContext::issuerList | ( |  | ) | const
| pure virtual

Returns the issuer list sent by the server (client mode only)

This is only valid if a handshake is in progress or completed.

## ◆ peerCertificateValidity()

virtual Validity QCA::TLSContext::peerCertificateValidity | ( |  | ) | const
| pure virtual

Returns the QCA::Validity of the peer certificate.

This is only valid if a handshake is completed.

## ◆ peerCertificateChain()

virtual CertificateChain QCA::TLSContext::peerCertificateChain | ( |  | ) | const
| pure virtual

Returns the peer certificate chain.

This is only valid if a handshake is completed.

## ◆ sessionInfo()

virtual SessionInfo QCA::TLSContext::sessionInfo | ( |  | ) | const
| pure virtual

Returns information about the active TLS session.

This is only valid if a handshake is completed.

## ◆ unprocessed()

virtual QByteArray QCA::TLSContext::unprocessed | ( |  | ) |
| pure virtual

Returns any unprocessed network input data.

This is only valid after a successful shutdown.

## ◆ resultsReady

void QCA::TLSContext::resultsReady | ( |  | ) |
| signal

Emit this when a start() or update() operation has completed.

## ◆ dtlsTimeout

void QCA::TLSContext::dtlsTimeout | ( |  | ) |
| signal

Emit this to force the application to call update(), even with empty arguments.

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

- qcaprovider.h