# ifndef SSLSERVER_H # define SSLSERVER_H // Qt specific libraries # include # include # include # include # include # include "clientconnection.hh" class SslServer : public QObject { Q_OBJECT public: /** * Explicit constructor. * * @param[in] parent Pointer to the parent instance. */ explicit SslServer ( void ); void listenForConnections ( void ); void prepareCertificates ( void ); quint16 serverPort ( void ); signals: /** * Signal raised to notify that a new client connection has been detected. * * @param[in] pPendingConnection Pointer to the new ClientConnection */ void newClientDetected ( QSharedPointer< ClientConnection > pPendingConnection ); protected slots: void onSocketAlertReceived ( QSslSocket* pSocket , QSsl::AlertLevel pLevel , QSsl::AlertType pType , const QString& pDescription ); void onSocketAlertSent ( QSslSocket* pSocket , QSsl::AlertLevel pLevel , QSsl::AlertType pType , const QString& pDescription ); void onSocketConnectionError ( QSslSocket* pSocket , QAbstractSocket::SocketError pSocketError ); void onSocketHandshakeInterruptedOnError ( QSslSocket* pSocket , const QSslError& pError ); void onSocketPeerVerifyError ( QSslSocket* pSocket , const QSslError& pError ); void onSocketPreSharedKeyAuthenticationRequired ( QSslSocket* pSocket , QSslPreSharedKeyAuthenticator* pAuthenticator ); void onSocketSslErrors ( QSslSocket* pSocket , const QList< QSslError >& pSslErrors ); void onSocketStartedEncryptionHandshake ( QSslSocket* pSocket ); void onServerAcceptError ( QAbstractSocket::SocketError pSocketError ); void onServerNewConnection ( void ); void onServerPendingConnectionAvailable ( void ); private: QSslServer* mSslServer; QSslConfiguration mConfiguration; QSslCertificate mSslCertificate; QSslKey mSslKey; qint32 mLastPendingConnection; /**< Counter used to know the next ID for the new connections. */ }; #endif // QSSLSERVER_H