1// qsslsocket.sip generated by MetaSIP 2// 3// This file is part of the QtNetwork Python extension module. 4// 5// Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com> 6// 7// This file is part of PyQt5. 8// 9// This file may be used under the terms of the GNU General Public License 10// version 3.0 as published by the Free Software Foundation and appearing in 11// the file LICENSE included in the packaging of this file. Please review the 12// following information to ensure the GNU General Public License version 3.0 13// requirements will be met: http://www.gnu.org/copyleft/gpl.html. 14// 15// If you do not wish to use this file under the terms of the GPL version 3.0 16// then you may purchase a commercial license. For more information contact 17// info@riverbankcomputing.com. 18// 19// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 20// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 21 22 23%If (PyQt_SSL) 24 25class QSslSocket : QTcpSocket 26{ 27%TypeHeaderCode 28#include <qsslsocket.h> 29%End 30 31public: 32 enum SslMode 33 { 34 UnencryptedMode, 35 SslClientMode, 36 SslServerMode, 37 }; 38 39 explicit QSslSocket(QObject *parent /TransferThis/ = 0); 40 virtual ~QSslSocket(); 41 void connectToHostEncrypted(const QString &hostName, quint16 port, QIODevice::OpenMode mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; 42 void connectToHostEncrypted(const QString &hostName, quint16 port, const QString &sslPeerName, QIODevice::OpenMode mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; 43 virtual bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState state = QAbstractSocket::ConnectedState, QIODevice::OpenMode mode = QIODevice::ReadWrite); 44 QSslSocket::SslMode mode() const; 45 bool isEncrypted() const; 46 QSsl::SslProtocol protocol() const; 47 void setProtocol(QSsl::SslProtocol protocol); 48 virtual qint64 bytesAvailable() const; 49 virtual qint64 bytesToWrite() const; 50 virtual bool canReadLine() const; 51 virtual void close(); 52 virtual bool atEnd() const; 53 bool flush(); 54 void abort(); 55 void setLocalCertificate(const QSslCertificate &certificate); 56 void setLocalCertificate(const QString &path, QSsl::EncodingFormat format = QSsl::Pem); 57 QSslCertificate localCertificate() const; 58 QSslCertificate peerCertificate() const; 59 QList<QSslCertificate> peerCertificateChain() const; 60 QSslCipher sessionCipher() const; 61 void setPrivateKey(const QSslKey &key); 62 void setPrivateKey(const QString &fileName, QSsl::KeyAlgorithm algorithm = QSsl::Rsa, QSsl::EncodingFormat format = QSsl::Pem, const QByteArray &passPhrase = QByteArray()); 63 QSslKey privateKey() const; 64 QList<QSslCipher> ciphers() const; 65 void setCiphers(const QList<QSslCipher> &ciphers); 66 void setCiphers(const QString &ciphers); 67 static void setDefaultCiphers(const QList<QSslCipher> &ciphers); 68 static QList<QSslCipher> defaultCiphers(); 69 static QList<QSslCipher> supportedCiphers(); 70 bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QRegExp::PatternSyntax syntax = QRegExp::FixedString); 71 void addCaCertificate(const QSslCertificate &certificate); 72 void addCaCertificates(const QList<QSslCertificate> &certificates); 73 void setCaCertificates(const QList<QSslCertificate> &certificates); 74 QList<QSslCertificate> caCertificates() const; 75 static bool addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QRegExp::PatternSyntax syntax = QRegExp::FixedString); 76 static void addDefaultCaCertificate(const QSslCertificate &certificate); 77 static void addDefaultCaCertificates(const QList<QSslCertificate> &certificates); 78 static void setDefaultCaCertificates(const QList<QSslCertificate> &certificates); 79 static QList<QSslCertificate> defaultCaCertificates(); 80 static QList<QSslCertificate> systemCaCertificates(); 81 virtual bool waitForConnected(int msecs = 30000) /ReleaseGIL/; 82 bool waitForEncrypted(int msecs = 30000) /ReleaseGIL/; 83 virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; 84 virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; 85 virtual bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; 86 QList<QSslError> sslErrors() const; 87 static bool supportsSsl(); 88 89public slots: 90 void startClientEncryption(); 91 void startServerEncryption(); 92 void ignoreSslErrors(); 93 94signals: 95 void encrypted(); 96 void sslErrors(const QList<QSslError> &errors); 97 void modeChanged(QSslSocket::SslMode newMode); 98%If (Qt_5_5_0 -) 99 void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); 100%End 101 102protected: 103 virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; 104%MethodCode 105 // Return the data read or None if there was an error. 106 if (a0 < 0) 107 { 108 PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); 109 sipIsErr = 1; 110 } 111 else 112 { 113 char *s = new char[a0]; 114 qint64 len; 115 116 Py_BEGIN_ALLOW_THREADS 117 #if defined(SIP_PROTECTED_IS_PUBLIC) 118 len = sipSelfWasArg ? sipCpp->QSslSocket::readData(s, a0) : sipCpp->readData(s, a0); 119 #else 120 len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); 121 #endif 122 Py_END_ALLOW_THREADS 123 124 if (len < 0) 125 { 126 Py_INCREF(Py_None); 127 sipRes = Py_None; 128 } 129 else 130 { 131 sipRes = SIPBytes_FromStringAndSize(s, len); 132 133 if (!sipRes) 134 sipIsErr = 1; 135 } 136 137 delete[] s; 138 } 139%End 140 141 virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; 142 143public: 144 enum PeerVerifyMode 145 { 146 VerifyNone, 147 QueryPeer, 148 VerifyPeer, 149 AutoVerifyPeer, 150 }; 151 152 QSslSocket::PeerVerifyMode peerVerifyMode() const; 153 void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); 154 int peerVerifyDepth() const; 155 void setPeerVerifyDepth(int depth); 156 virtual void setReadBufferSize(qint64 size); 157 qint64 encryptedBytesAvailable() const; 158 qint64 encryptedBytesToWrite() const; 159 QSslConfiguration sslConfiguration() const; 160 void setSslConfiguration(const QSslConfiguration &config); 161 162signals: 163 void peerVerifyError(const QSslError &error); 164 void encryptedBytesWritten(qint64 totalBytes); 165 166public: 167 virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value); 168 virtual QVariant socketOption(QAbstractSocket::SocketOption option); 169 void ignoreSslErrors(const QList<QSslError> &errors); 170 QString peerVerifyName() const; 171 void setPeerVerifyName(const QString &hostName); 172 virtual void resume() /ReleaseGIL/; 173 virtual void connectToHost(const QString &hostName, quint16 port, QIODevice::OpenMode mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; 174 virtual void disconnectFromHost() /ReleaseGIL/; 175 static long sslLibraryVersionNumber(); 176 static QString sslLibraryVersionString(); 177%If (Qt_5_1_0 -) 178 void setLocalCertificateChain(const QList<QSslCertificate> &localChain); 179%End 180%If (Qt_5_1_0 -) 181 QList<QSslCertificate> localCertificateChain() const; 182%End 183%If (Qt_5_4_0 -) 184 QSsl::SslProtocol sessionProtocol() const; 185%End 186%If (Qt_5_4_0 -) 187 static long sslLibraryBuildVersionNumber(); 188%End 189%If (Qt_5_4_0 -) 190 static QString sslLibraryBuildVersionString(); 191%End 192%If (Qt_5_13_0 -) 193 QVector<QOcspResponse> ocspResponses() const; 194%End 195%If (Qt_5_15_0 -) 196 QList<QSslError> sslHandshakeErrors() const; 197%End 198 199signals: 200%If (Qt_5_15_0 -) 201 void newSessionTicketReceived(); 202%End 203}; 204 205%End 206