18#include <QtNetwork/private/qtnetworkglobal_p.h>
28#include <QtNetwork/qsslcertificate.h>
29#include <QtNetwork/qsslcipher.h>
30#include <QtNetwork/qsslkey.h>
31#include <QtNetwork/qssl.h>
33#include <QtCore/qloggingcategory.h>
34#include <QtCore/qnamespace.h>
35#include <QtCore/qobject.h>
36#include <QtCore/qglobal.h>
37#include <QtCore/qstring.h>
38#include <QtCore/qlist.h>
39#include <QtCore/qmap.h>
60class Q_NETWORK_PRIVATE_EXPORT
TlsKey {
68 const QByteArray &passPhrase,
bool deepClear) = 0;
70 const QByteArray &passPhrase,
bool deepClear) = 0;
84 virtual void clear(
bool deepClear) = 0;
118 virtual TlsKey *publicKey()
const;
136 virtual size_t hash(
size_t seed)
const noexcept = 0;
154class Q_NETWORK_PRIVATE_EXPORT TlsCryptograph :
public QObject
157 virtual ~TlsCryptograph();
160 virtual void checkSettingSslContext(std::shared_ptr<QSslContext> tlsContext);
161 virtual std::shared_ptr<QSslContext> sslContext()
const;
165 virtual void startClientEncryption() = 0;
166 virtual void startServerEncryption() = 0;
167 virtual void continueHandshake() = 0;
168 virtual void enableHandshakeContinuation();
170 virtual void disconnected() = 0;
171 virtual void cancelCAFetch();
175 virtual void transmit() = 0;
176 virtual bool hasUndecryptedData()
const;
182 const QString &errorDescription)
const;
190class Q_NETWORK_PRIVATE_EXPORT DtlsBase
198 virtual QString errorString()
const = 0;
200 virtual void clearDtlsError() = 0;
206 virtual bool setCookieGeneratorParameters(
const GenParams &
params) = 0;
207 virtual GenParams cookieGeneratorParameters()
const = 0;
211class Q_NETWORK_EXPORT DtlsCookieVerifier :
virtual public DtlsBase
220class Q_NETWORK_PRIVATE_EXPORT DtlsCryptograph :
virtual public DtlsBase
227 virtual quint16 peerPort()
const = 0;
228 virtual void setPeerVerificationName(
const QString &
name) = 0;
229 virtual QString peerVerificationName()
const = 0;
231 virtual void setDtlsMtuHint(
quint16 mtu) = 0;
232 virtual quint16 dtlsMtuHint()
const = 0;
235 virtual bool isConnectionEncrypted()
const = 0;
247 virtual QSslCipher dtlsSessionCipher()
const = 0;
256class DtlsCookieVerifier;
257class DtlsCryptograph;
272 virtual bool isValid()
const;
273 virtual long tlsLibraryVersionNumber()
const;
274 virtual QString tlsLibraryVersionString()
const;
275 virtual long tlsLibraryBuildVersionNumber()
const;
276 virtual QString tlsLibraryBuildVersionString()
const;
291 virtual QTlsPrivate::TlsCryptograph *createTlsCryptograph()
const;
292 virtual QTlsPrivate::DtlsCryptograph *createDtlsCryptograph(
class QDtls *qObject,
int mode)
const;
293 virtual QTlsPrivate::DtlsCookieVerifier *createDtlsCookieVerifier()
const;
304 virtual int curveIdFromShortName(
const QString &
name)
const;
305 virtual int curveIdFromLongName(
const QString &
name)
const;
306 virtual QString shortNameForId(
int cid)
const;
307 virtual QString longNameForId(
int cid)
const;
308 virtual bool isTlsNamedCurve(
int cid)
const;
317 static QString defaultBackendName();
326 static constexpr const int nameIndexSchannel = 0;
327 static constexpr const int nameIndexSecureTransport = 1;
328 static constexpr const int nameIndexOpenSSL = 2;
329 static constexpr const int nameIndexCertOnly = 3;
333 template<
class DynamicType,
class TLSObject>
336 return static_cast<DynamicType *
>(
o.d->backend.get());
342 int hintLength,
unsigned maxIdentityLen,
unsigned maxPskLen);
344 const QByteArray &identityHint,
unsigned maxPskLen);
348 const QString &protocolString);
350 const QString &encryptionMethod,
351 const QString &authenticationMethod,
353 const QString &protocolString);
364 static void resetDefaultEllipticCurves();
391 virtual void forceAutotestSecurityLevel();
397#define QTlsBackend_iid "org.qt-project.Qt.QTlsBackend"
IOBluetoothDevice * device
SocketError
This enum describes the socket errors that can occur.
\inmodule QtCore\reentrant
This class provides encryption for UDP sockets.
The QHostAddress class provides an IP address.
\inmodule QtCore \reentrant
The QSslCertificate class provides a convenient API for an X509 certificate.
SubjectInfo
Describes keys that you can pass to QSslCertificate::issuerInfo() or QSslCertificate::subjectInfo() t...
The QSslCipher class represents an SSL cryptographic cipher.
The QSslConfiguration class holds the configuration and state of an SSL connection.
NextProtocolNegotiationStatus
Describes the status of the Next Protocol Negotiation (NPN) or Application-Layer Protocol Negotiation...
The QSslError class provides an SSL error.
The QSslKey class provides an interface for private and public keys.
The QSslPreSharedKeyAuthenticator class provides authentication data for pre shared keys (PSK) cipher...
The QSslSocket class provides an SSL encrypted socket for both clients and servers.
SslMode
Describes the connection modes available for QSslSocket.
\macro QT_RESTRICTED_CAST_FROM_ASCII
QTlsBackend is a factory class, providing implementations for the QSsl classes.
virtual QList< QSsl::SupportedFeature > supportedFeatures() const =0
static DynamicType * backend(const TLSObject &o)
virtual QString backendName() const =0
virtual QList< QSsl::SslProtocol > supportedProtocols() const =0
virtual QList< QSsl::ImplementedClass > implementedClasses() const =0
TlsKey is an abstract class, that allows a TLS plugin to provide an underlying implementation for the...
virtual void clear(bool deepClear)=0
virtual QByteArray derFromPem(const QByteArray &pem, QMap< QByteArray, QByteArray > *headers) const =0
virtual void fromHandle(Qt::HANDLE handle, KeyType type)=0
virtual void decodeDer(KeyType type, KeyAlgorithm algorithm, const QByteArray &der, const QByteArray &passPhrase, bool deepClear)=0
virtual QByteArray encrypt(Cipher cipher, const QByteArray &data, const QByteArray &key, const QByteArray &iv) const =0
virtual Qt::HANDLE handle() const =0
virtual bool isNull() const =0
virtual KeyType type() const =0
virtual QByteArray pemFromDer(const QByteArray &der, const QMap< QByteArray, QByteArray > &headers) const =0
virtual KeyAlgorithm algorithm() const =0
virtual int length() const =0
virtual bool isPkcs8() const =0
virtual QByteArray decrypt(Cipher cipher, const QByteArray &data, const QByteArray &passPhrase, const QByteArray &iv) const =0
virtual void decodePem(KeyType type, KeyAlgorithm algorithm, const QByteArray &pem, const QByteArray &passPhrase, bool deepClear)=0
virtual QByteArray toPem(const QByteArray &passPhrase) const =0
X509Certificate is an abstract class that allows a TLS backend to provide an implementation of the QS...
virtual QMultiMap< QSsl::AlternativeNameEntryType, QString > subjectAlternativeNames() const =0
virtual QDateTime expiryDate() const =0
virtual QList< QByteArray > issuerInfoAttributes() const =0
virtual ~X509Certificate()
virtual QStringList subjectInfo(const QByteArray &attribute) const =0
virtual bool isExtensionSupported(qsizetype i) const =0
virtual QStringList issuerInfo(const QByteArray &attribute) const =0
virtual size_t hash(size_t seed) const noexcept=0
virtual bool isNull() const =0
virtual QByteArray version() const =0
virtual QString oidForExtension(qsizetype i) const =0
virtual Qt::HANDLE handle() const =0
virtual QList< QByteArray > subjectInfoAttributes() const =0
virtual bool isEqual(const X509Certificate &other) const =0
virtual QByteArray toPem() const =0
virtual QString toText() const =0
virtual QVariant valueForExtension(qsizetype i) const =0
virtual QString nameForExtension(qsizetype i) const =0
virtual QStringList issuerInfo(QSslCertificate::SubjectInfo subject) const =0
virtual bool isSelfSigned() const =0
virtual QStringList subjectInfo(QSslCertificate::SubjectInfo subject) const =0
virtual QDateTime effectiveDate() const =0
virtual qsizetype numberOfExtensions() const =0
virtual QByteArray serialNumber() const =0
virtual QByteArray toDer() const =0
virtual bool isExtensionCritical(qsizetype i) const =0
KeyType
Describes the two types of keys QSslKey supports.
KeyAlgorithm
Describes the different key algorithms supported by QSslKey.
SslProtocol
Describes the protocol of the cipher.
Combined button and popup list for selecting options.
Namespace containing onternal types that TLS backends implement.
bool(*)(QIODevice *device, QSslKey *key, QSslCertificate *cert, QList< QSslCertificate > *caCertificates, const QByteArray &passPhrase) X509Pkcs12ReaderPtr
QList< QSslCertificate >(*)(const QByteArray &pem, int count) X509PemReaderPtr
DBusConnection const char DBusError * error
EGLOutputLayerEXT EGLint attribute
static void ensureInitialized()
#define Q_DECLARE_INTERFACE(IFace, IId)
GLuint64 GLenum void * handle
GLenum GLenum GLsizei count
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint GLuint64EXT address
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const void * bits
GLdouble GLdouble GLdouble GLdouble q
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
static QT_BEGIN_NAMESPACE QVariant hint(QPlatformIntegration::StyleHint h)
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
QList< QSslCertificate > cert
[0]
socket disconnectFromHost()
[0]
clientDtls setPeer(address, port, peerName)
dtls ignoreVerificationErrors(expectedSslErrors)
This class defines parameters for DTLS cookie generator.