| Home | ![]() |
This is the verbatim text of the qtsslsocket.h include file. It is provided only for illustration; the copyright remains with Trolltech.
#ifndef QTSSLSOCKET
#define QTSSLSOCKET
#include <qsocket.h>
#include <qdatetime.h>
#include <qcstring.h>
#include <qmap.h>
#include <openssl/ssl.h>
class QtRingBuffer;
#if defined(Q_WS_WIN)
# if !defined(QT_QTSSLSOCKET_EXPORT) && !defined(QT_QTSSLSOCKET_IMPORT)
# define QT_QTSSLSOCKET_EXPORT
# elif defined(QT_QTSSLSOCKET_IMPORT)
# if defined(QT_QTSSLSOCKET_EXPORT)
# undef QT_QTSSLSOCKET_EXPORT
# endif
# define QT_QTSSLSOCKET_EXPORT __declspec(dllimport)
# elif defined(QT_QTSSLSOCKET_EXPORT)
# undef QT_QTSSLSOCKET_EXPORT
# define QT_QTSSLSOCKET_EXPORT __declspec(dllexport)
# endif
#else
# define QT_QTSSLSOCKET_EXPORT
#endif
class QT_QTSSLSOCKET_EXPORT QtSSLSocket : public QSocket
{
Q_OBJECT
public:
enum Mode { Client, Server };
enum State { Idle, Connecting, Accepting, Active,
Connected = Active, Accepted = Active, Closing };
QtSSLSocket(Mode mode = Client, QSocket *sock = 0, QObject *parent = 0, const char *name = 0);
~QtSSLSocket();
State state() const;
void connectToHost(const QString &host, Q_UINT16 port);
bool canReadLine() const;
QString readLine();
bool open(int mode);
void flush();
Offset size() const;
Offset at() const;
bool at(Offset pos);
bool atEnd() const;
Q_LONG readBlock(char *data, Q_ULONG maxlen);
Q_LONG writeBlock(const char *data, Q_ULONG len);
Q_LONG readLine(char *data, Q_ULONG maxlen);
QByteArray readAll();
int getch();
int putch(int ch);
int ungetch(int ch);
void setPathToCertificate(const QString &path);
void setPathToPrivateKey(const QString &path);
void setPathToCACertFile(const QString &path);
void setPathToCACertDir(const QString &path);
QString pathToCertificate() const;
QString pathToPrivateKey() const;
QString pathToCACertFile() const;
QString pathToCACertDir() const;
QString localCertificate() const;
QString peerCertificate() const;
void setCiphers(const QString &ciphers);
QString ciphers() const;
void setSocket(QSocket *);
QSocket *socket() const;
int bytesAvailable() const;
QString errorString() const;
enum Error {
ErrConnectionRefused = QSocket::ErrConnectionRefused,
ErrHostNotFound = QSocket::ErrHostNotFound,
ErrSocketRead = QSocket::ErrSocketRead,
ErrSSLInit
};
enum VerifyResult {
VerifyOk,
SelfSigned,
HostnameMismatch,
Expired,
NotYetValid,
UnableToVerify
};
signals:
void accepted();
void certCheckFailed(int, const QString &);
public slots:
void close();
bool sslConnect();
bool sslAccept();
private slots:
void readFromSocket();
int writeToSocket();
void finishDelayedClose();
void finishClose();
void socketError(int);
void shutdownSSL();
protected:
void initSignals();
bool initSSL(Mode);
void setError(Error);
int error() const;
bool sslAcceptOrConnect(bool accept);
private:
QString verifyErrorString(int err);
QString errorStr;
QString cert;
QString certDir;
QString key;
QString cafile;
QString cadir;
QString ciph;
QString hostName;
State socketState;
Error err;
Mode mode;
bool inited;
QtRingBuffer *readQueue;
QtRingBuffer *writeQueue;
QSocket *sock;
bool newSock;
SSL *ssl;
SSL_CTX *ctx;
BIO *rbio;
BIO *wbio;
};
#endif
| Copyright © 2003-2006 Trolltech | Trademarks | Qt Solutions
|