Auf dieser Seite

QDtls Class

Diese Klasse bietet Verschlüsselung für UDP-Sockets. Mehr...

Header: #include <QDtls>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Erbt von: QObject

Öffentliche Typen

GeneratorParameters
enum HandshakeState { HandshakeNotStarted, HandshakeInProgress, PeerVerificationFailed, HandshakeComplete }

Öffentliche Funktionen

QDtls(QSslSocket::SslMode mode, QObject *parent = nullptr)
virtual ~QDtls()
bool abortHandshake(QUdpSocket *socket)
QDtls::GeneratorParameters cookieGeneratorParameters() const
QByteArray decryptDatagram(QUdpSocket *socket, const QByteArray &dgram)
bool doHandshake(QUdpSocket *socket, const QByteArray &dgram = {})
QSslConfiguration dtlsConfiguration() const
QDtlsError dtlsError() const
QString dtlsErrorString() const
bool handleTimeout(QUdpSocket *socket)
QDtls::HandshakeState handshakeState() const
void ignoreVerificationErrors(const QList<QSslError> &errorsToIgnore)
bool isConnectionEncrypted() const
quint16 mtuHint() const
QHostAddress peerAddress() const
quint16 peerPort() const
QList<QSslError> peerVerificationErrors() const
QString peerVerificationName() const
bool resumeHandshake(QUdpSocket *socket)
QSslCipher sessionCipher() const
QSsl::SslProtocol sessionProtocol() const
bool setCookieGeneratorParameters(const QDtls::GeneratorParameters &params)
bool setDtlsConfiguration(const QSslConfiguration &configuration)
void setMtuHint(quint16 mtuHint)
bool setPeer(const QHostAddress &address, quint16 port, const QString &verificationName = {})
bool setPeerVerificationName(const QString &name)
bool shutdown(QUdpSocket *socket)
QSslSocket::SslMode sslMode() const
qint64 writeDatagramEncrypted(QUdpSocket *socket, const QByteArray &dgram)

Signale

void handshakeTimeout()
void pskRequired(QSslPreSharedKeyAuthenticator *authenticator)
enum class QDtlsError { NoError, InvalidInputParameters, InvalidOperation, UnderlyingSocketError, RemoteClosedConnectionError, …, TlsNonFatalError }

Ausführliche Beschreibung

Die Klasse `QDtls` kann verwendet werden, um eine sichere Verbindung mit einem Netzwerk-Peer über das User Datagram Protocol (UDP) herzustellen. Eine DTLS-Verbindung über das im Wesentlichen verbindungslose UDP bedeutet, dass zwei Peers zunächst einen TLS-Handshake erfolgreich abschließen müssen, indem sie die Funktion ` doHandshake()` aufrufen. Nach Abschluss des Handshakes können verschlüsselte Datagramme mithilfe von ` writeDatagramEncrypted()` an den Peer gesendet werden. Vom Peer empfangene verschlüsselte Datagramme können mit ` decryptDatagram()` entschlüsselt werden.

QDtls ist für die Zusammenarbeit mit ` QUdpSocket` ausgelegt. Da ` QUdpSocket ` Datagramme von verschiedenen Peers empfangen kann, muss eine Anwendung ein Demultiplexing implementieren, um Datagramme von verschiedenen Peers an die entsprechenden Instanzen von QDtls weiterzuleiten. Eine Verbindung zwischen einem Netzwerk-Peer und seinem QDtls-Objekt kann mithilfe der Adresse und der Portnummer des Peers hergestellt werden. Vor dem Start eines Handshakes muss die Anwendung die Adresse und die Portnummer des Peers mithilfe von setPeer() festlegen.

QDtls liest keine Datagramme aus ` QUdpSocket`; dies soll von der Anwendung übernommen werden, beispielsweise in einem Slot, der an das Signal ` QUdpSocket::readyRead()` angehängt ist. Anschließend müssen diese Datagramme von QDtls verarbeitet werden.

Hinweis: QDtls übernimmt nicht die Eigentümerschaft am Objekt ` QUdpSocket `.

Normalerweise werden während der Handshake-Phase mehrere Datagramme von beiden Peers empfangen und gesendet. Beim Einlesen der Datagramme müssen Server und Client diese an ` doHandshake()` übergeben, bis ein Fehler auftritt oder ` handshakeState()` den Status ` HandshakeComplete` zurückgibt:

// A client initiates a handshake:
QUdpSocket clientSocket;
QDtls clientDtls;
clientDtls.setPeer(address, port, peerName);
clientDtls.doHandshake(&clientSocket);

// A server accepting an incoming connection; address, port, clientHello are
// read by QUdpSocket::readDatagram():
QByteArray clientHello(serverSocket.pendingDatagramSize(), Qt::Uninitialized);
QHostAddress address;
quin16 port = {};
serverSocket.readDatagram(clientHello.data(), clientHello.size(), &address, &port);

QDtls serverDtls;
serverDtls.setPeer(address, port);
serverDtls.doHandshake(&serverSocket, clientHello);

// Handshake completion, both for server and client:
void DtlsConnection::continueHandshake(const QByteArray &datagram)
{
    if (dtls.doHandshake(&udpSocket, datagram)) {
        // Check handshake status:
        if (dtls.handshakeStatus() == QDlts::HandshakeComplete) {
            // Secure DTLS connection is now established.
        }
    } else {
        // Error handling.
    }
}

Für einen Server erfordert der erste Aufruf von ` doHandshake()` ein nicht leeres Datagramm, das eine `ClientHello`-Nachricht enthält. Wenn der Server auch ` QDtlsClientVerifier` einsetzt, wird erwartet, dass die erste `ClientHello`-Nachricht diejenige ist, die durch ` QDtlsClientVerifier` verifiziert wurde.

Falls die Identität des Gegenübers während des Handshakes nicht validiert werden kann, muss die Anwendung die von ` peerVerificationErrors()` zurückgegebenen Fehler überprüfen und anschließend entweder die Fehler durch Aufruf von ` ignoreVerificationErrors()` ignorieren oder den Handshake durch Aufruf von ` abortHandshake()` abbrechen. Wurden Fehler ignoriert, kann der Handshake durch Aufruf von ` resumeHandshake()` fortgesetzt werden.

Nachdem der Handshake abgeschlossen ist, können Datagramme sicher an den Netzwerkpartner gesendet und von diesem empfangen werden:

// Sending an encrypted datagram:
dtlsConnection.writeDatagramEncrypted(&clientSocket, "Hello DTLS server!");

// Decryption:
QByteArray encryptedMessage(dgramSize);
socket.readDatagram(encryptedMessage.data(), dgramSize);
const QByteArray plainText = dtlsConnection.decryptDatagram(&socket, encryptedMessage);

Eine DTLS-Verbindung kann mit ` shutdown()` geschlossen werden.

DtlsClient::~DtlsClient()
{
    clientDtls.shutdown(&clientSocket);
}

Warnung: Es wird empfohlen, shutdown() aufzurufen, bevor das QDtls-Objekt des Clients gelöscht wird, falls Sie beabsichtigen, dieselbe Portnummer später für eine erneute Verbindung zum Server zu verwenden. Andernfalls könnte der Server eingehende ClientHello-Nachrichten verwerfen; weitere Details und Implementierungstipps finden Sie in RFC 6347, Abschnitt 4.2.8.

Wenn der Server „ QDtlsClientVerifier “ nicht verwendet, muss er seine QDtls-Objekte so konfigurieren, dass das Cookie-Verifizierungsverfahren deaktiviert wird:

auto config = QSslConfiguration::defaultDtlsConfiguration();
config.setDtlsCookieVerificationEnabled(false);
// Some other customization ...
dtlsConnection.setDtlsConfiguration(config);

Ein Server, der die Cookie-Überprüfung mit nicht standardmäßigen Generatorparametern verwendet, muss vor Beginn des Handshakes dieselben Parameter für sein QDtls-Objekt festlegen.

Hinweis: Das DTLS-Protokoll überlässt die Ermittlung der maximalen Übertragungseinheit (PMTU) der Anwendung. Die Anwendung kann QDtls die MTU über ` setMtuHint()` bereitstellen. Dieser Hinweis betrifft nur die Handshake-Phase, da nur Handshake-Nachrichten von DTLS fragmentiert und wieder zusammengesetzt werden können. Alle anderen von der Anwendung gesendeten Nachrichten müssen in ein einziges Datagramm passen.

Hinweis: DTLS-spezifische Header verursachen einen gewissen Overhead bei den Anwendungsdaten, wodurch die mögliche Nachrichtengröße weiter reduziert wird.

Warnung: Ein Server, der so konfiguriert ist, dass er mit „HelloVerifyRequest“ antwortet, verwirft alle fragmentierten „ClientHello“-Nachrichten und leitet keinen Handshake ein.

Die Beispiele für den DTLS-Server und den DTLS-Client veranschaulichen die Verwendung von QDtls in Anwendungen.

Siehe auch QUdpSocket, QDtlsClientVerifier, HandshakeState, QDtlsError und QSslConfiguration.

Dokumentation zu Mitgliedstypen

[alias] QDtls::GeneratorParameters

enum QDtls::HandshakeState

Beschreibt den aktuellen Status des DTLS-Handshakes.

Diese Enumeration beschreibt den aktuellen Status des DTLS-Handshakes für eine „ QDtls “-Verbindung.

KonstanteWertBeschreibung
QDtls::HandshakeNotStarted0Es wurde noch nichts unternommen.
QDtls::HandshakeInProgress1Der Handshake wurde initiiert und es wurden bisher keine Fehler festgestellt.
QDtls::PeerVerificationFailed2Die Identität des Gegenübers kann nicht festgestellt werden.
QDtls::HandshakeComplete3Der Handshake wurde erfolgreich abgeschlossen und eine verschlüsselte Verbindung wurde hergestellt.

Siehe auch QDtls::doHandshake() und QDtls::handshakeState().

Dokumentation der Member-Funktionen

[explicit] QDtls::QDtls(QSslSocket::SslMode mode, QObject *parent = nullptr)

Erstellt ein QDtls-Objekt, wobei „ parent “ an den Konstruktor „ QObject “ übergeben wird. „ mode “ ist „ QSslSocket::SslServerMode “ für eine serverseitige DTLS-Verbindung oder „ QSslSocket::SslClientMode “ für einen Client.

Siehe auch sslMode() und QSslSocket::SslMode.

[virtual noexcept] QDtls::~QDtls()

Löscht das „ QDtls “-Objekt.

bool QDtls::abortHandshake(QUdpSocket *socket)

Bricht den laufenden Handshake ab. Gibt „true“ zurück, wenn auf socket ein Handshake im Gange war; andernfalls wird ein entsprechender Fehler gesetzt und „false“ zurückgegeben.

Siehe auch doHandshake() und resumeHandshake().

QDtls::GeneratorParameters QDtls::cookieGeneratorParameters() const

Gibt den aktuellen Hash-Algorithmus und den Schlüssel zurück, entweder die Standardwerte oder die zuvor durch einen Aufruf von ` setCookieGeneratorParameters()` festgelegten.

Der Standard-Hash-Algorithmus ist „ QCryptographicHash::Sha256 “, sofern Qt für dessen Unterstützung konfiguriert wurde; andernfalls ist es „ QCryptographicHash::Sha1 “. Der Standard-Schlüssel wird aus dem backend-spezifischen, kryptografisch starken Pseudozufallszahlengenerator gewonnen.

Siehe auch QDtlsClientVerifier und setCookieGeneratorParameters().

QByteArray QDtls::decryptDatagram(QUdpSocket *socket, const QByteArray &dgram)

Entschlüsselt „ dgram “ und gibt dessen Inhalt als Klartext zurück. Der Handshake muss abgeschlossen sein, bevor Datagramme entschlüsselt werden können. Je nach Art der TLS-Nachricht schreibt die Verbindung möglicherweise in „ socket “, das ein gültiger Zeiger sein muss.

bool QDtls::doHandshake(QUdpSocket *socket, const QByteArray &dgram = {})

Startet oder setzt einen DTLS-Handshake fort. ` socket ` muss ein gültiger Zeiger sein. Beim Starten eines serverseitigen DTLS-Handshakes muss ` dgram ` die anfängliche `ClientHello`-Nachricht enthalten, die aus ` QUdpSocket` gelesen wurde. Diese Funktion gibt ` true ` zurück, wenn kein Fehler festgestellt wurde. Der Handshake-Status kann mit ` handshakeState()` überprüft werden. Die Rückgabe von ` false ` bedeutet, dass ein Fehler aufgetreten ist; verwenden Sie ` dtlsError()` für detailliertere Informationen.

Hinweis: Wenn die Identität des Gegenübers nicht festgestellt werden kann, wird der Fehler auf „ QDtlsError::PeerVerificationError “ gesetzt. Wenn Sie Verifizierungsfehler ignorieren und die Verbindung fortsetzen möchten, müssen Sie „ ignoreVerificationErrors()“ und anschließend „ resumeHandshake()“ aufrufen. Wenn die Fehler nicht ignoriert werden können, müssen Sie „ abortHandshake()“ aufrufen.

if (!dtls.doHandshake(&socket, dgram)) {
    if (dtls.dtlsError() == QDtlsError::PeerVerificationError)
        dtls.abortAfterError(&socket);
}

Siehe auch „ handshakeState()“, „ dtlsError()“, „ ignoreVerificationErrors()“, „ resumeHandshake()“ und „ abortHandshake()“.

QSslConfiguration QDtls::dtlsConfiguration() const

Gibt entweder die Standard-DTLS-Konfiguration oder die durch einen früheren Aufruf von ` setDtlsConfiguration()` festgelegte Konfiguration zurück.

Siehe auch „ setDtlsConfiguration()“ und „ QSslConfiguration::defaultDtlsConfiguration()“.

QDtlsError QDtls::dtlsError() const

Gibt den letzten Fehler zurück, der bei der Verbindung aufgetreten ist, oder QDtlsError::NoError.

Siehe auch ` dtlsErrorString()` und ` QDtlsError`.

QString QDtls::dtlsErrorString() const

Gibt eine textuelle Beschreibung des letzten Fehlers zurück, der bei der Verbindung aufgetreten ist, oder eine leere Zeichenkette.

Siehe auch ` dtlsError()`.

bool QDtls::handleTimeout(QUdpSocket *socket)

Tritt während des Handshakes ein Timeout auf, wird das Signal „ handshakeTimeout()“ ausgelöst. Die Anwendung muss die Funktion „handleTimeout()“ aufrufen, um die Handshake-Nachrichten erneut zu senden; „handleTimeout()“ gibt „ true “ zurück, wenn ein Timeout aufgetreten ist, andernfalls „false“. „ socket “ muss ein gültiger Zeiger sein.

Siehe auch ` handshakeTimeout()`.

QDtls::HandshakeState QDtls::handshakeState() const

Gibt den aktuellen Handshake-Status für dieses QDtls zurück.

Siehe auch „ doHandshake()“ und „ QDtls::HandshakeState “.

[signal] void QDtls::handshakeTimeout()

Paketverluste können während der Handshake-Phase zu Timeouts führen. In diesem Fall gibt „ QDtls “ das Signal „handshakeTimeout()“ aus. Rufen Sie „ handleTimeout()“ auf, um die Handshake-Nachrichten erneut zu senden:

DtlsClient::DtlsClient()
{
    // Some initialization code here ...
    connect(&clientDtls, &QDtls::handshakeTimeout, this, &DtlsClient::handleTimeout);
}

void DtlsClient::handleTimeout()
{
    clientDtls.handleTimeout(&clientSocket);
}

Siehe auch handleTimeout().

void QDtls::ignoreVerificationErrors(const QList<QSslError> &errorsToIgnore)

Diese Methode weist „ QDtls “ an, ausschließlich die unter errorsToIgnore aufgeführten Fehler zu ignorieren.

Wenn Sie beispielsweise eine Verbindung zu einem Server herstellen möchten, der ein selbstsigniertes Zertifikat verwendet, sollten Sie den folgenden Codeausschnitt berücksichtigen:

QList<QSslCertificate> cert = QSslCertificate::fromPath("server-certificate.pem"_L1);
QSslError error(QSslError::SelfSignedCertificate, cert.at(0));
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);

QDtls dtls;
dtls.ignoreVerificationErrors(expectedSslErrors);
dtls.doHandshake(udpSocket);

Sie können diese Funktion auch aufrufen, nachdem doHandshake() den Fehler QDtlsError::PeerVerificationError festgestellt hat, und anschließend den Handshake durch Aufruf von resumeHandshake() fortsetzen.

Spätere Aufrufe dieser Funktion überschreiben die Liste der Fehler, die bei früheren Aufrufen übergeben wurden. Sie können die Liste der Fehler, die Sie ignorieren möchten, löschen, indem Sie diese Funktion mit einer leeren Liste aufrufen.

Siehe auch „ doHandshake()“, „ resumeHandshake()“ und „ QSslError “.

bool QDtls::isConnectionEncrypted() const

Gibt „ true “ zurück, wenn der DTLS-Handshake erfolgreich abgeschlossen wurde.

Siehe auch „ doHandshake()“ und „ handshakeState()“.

quint16 QDtls::mtuHint() const

Gibt den zuvor mit ` setMtuHint()` festgelegten Wert zurück. Der Standardwert ist 0.

Siehe auch setMtuHint().

QHostAddress QDtls::peerAddress() const

Gibt die Adresse des Peers zurück, die mit „ setPeer()“ oder „ QHostAddress::Null “ festgelegt wurde.

Siehe auch setPeer().

quint16 QDtls::peerPort() const

Gibt die Portnummer des Peers zurück, die mit ` setPeer()` festgelegt wurde, oder 0.

Siehe auch ` setPeer()`.

QList<QSslError> QDtls::peerVerificationErrors() const

Gibt Fehler zurück, die beim Feststellen der Identität des Gegenübers aufgetreten sind.

Wenn Sie die Verbindung trotz der aufgetretenen Fehler fortsetzen möchten, müssen Sie die Funktion „ ignoreVerificationErrors()“ aufrufen.

QString QDtls::peerVerificationName() const

Gibt den Hostnamen zurück, der mit setPeer() oder setPeerVerificationName() festgelegt wurde. Der Standardwert ist eine leere Zeichenkette.

Siehe auch setPeerVerificationName() und setPeer().

[signal] void QDtls::pskRequired(QSslPreSharedKeyAuthenticator *authenticator)

QDtls gibt dieses Signal aus, wenn es eine PSK-Verschlüsselungssuite aushandelt; daher ist anschließend eine PSK-Authentifizierung erforderlich.

Bei Verwendung von PSK muss der Client dem Server eine gültige Identität und einen gültigen vorab geteilten Schlüssel senden, damit der TLS-Handshake fortgesetzt werden kann. Anwendungen können diese Informationen in einem mit diesem Signal verbundenen Slot bereitstellen, indem sie das übergebene ` authenticator `-Objekt entsprechend ihren Anforderungen ausfüllen.

Hinweis: Wird dieses Signalignoriert oder werden die erforderlichen Anmeldedaten nicht bereitgestellt, schlägt der Handshake fehl und die Verbindung wird abgebrochen.

Hinweis: Das ` authenticator `-Objekt gehört „ QDtls “ und darf von der Anwendung nicht gelöscht werden.

Siehe auch „ QSslPreSharedKeyAuthenticator “.

bool QDtls::resumeHandshake(QUdpSocket *socket)

Wenn während des Handshakes Fehler bei der Peer-Überprüfung ignoriert wurden, setzt resumeHandshake() den Handshake fort, schließt ihn ab und gibt „ true “ zurück. „ socket “ muss ein gültiger Zeiger sein. Gibt „ false “ zurück, wenn der Handshake nicht fortgesetzt werden konnte.

Siehe auch ` doHandshake()`, ` abortHandshake()`, ` peerVerificationErrors()` und ` ignoreVerificationErrors()`.

QSslCipher QDtls::sessionCipher() const

Gibt das von dieser Verbindung verwendete kryptografische Verschlüsselungs cipher zurück oder eine Null-Verschlüsselung, falls die Verbindung nicht verschlüsselt ist. Die Verschlüsselung für die Sitzung wird während der Handshake-Phase ausgewählt. Die Verschlüsselung wird zum Ver- und Entschlüsseln von Daten verwendet.

QSslConfiguration Stellt Funktionen zur Festlegung der geordneten Liste von Verschlüsselungsalgorithmen bereit, aus der die Handshake-Phase schließlich den Sitzungsverschlüsselungsalgorithmus auswählt. Diese geordnete Liste muss vor Beginn der Handshake-Phase vorliegen.

Siehe auch QSslConfiguration, setDtlsConfiguration() und dtlsConfiguration().

QSsl::SslProtocol QDtls::sessionProtocol() const

Gibt die von dieser Verbindung verwendete DTLS-Protokollversion zurück oder „UnknownProtocol“, falls die Verbindung noch nicht verschlüsselt ist. Das Protokoll für die Verbindung wird während der Handshake-Phase ausgewählt.

setDtlsConfiguration() kann die bevorzugte Version vor Beginn des Handshakes festlegen.

Siehe auch „ setDtlsConfiguration()“, „ QSslConfiguration “, „ QSslConfiguration::defaultDtlsConfiguration()“ und „ QSslConfiguration::setProtocol()“.

bool QDtls::setCookieGeneratorParameters(const QDtls::GeneratorParameters &params)

Legt den kryptografischen Hash-Algorithmus und das Geheimnis aus „ params “ fest. Diese Funktion wird nur für eine serverseitige „ QDtls “-Verbindung benötigt. Gibt bei Erfolg „ true “ zurück.

Hinweis: Diese Funktion muss vor Beginn des Handshakes aufgerufen werden.

Siehe auch cookieGeneratorParameters(), doHandshake(), QDtlsClientVerifier sowie QDtlsClientVerifier::cookieGeneratorParameters().

bool QDtls::setDtlsConfiguration(const QSslConfiguration &configuration)

Legt die TLS-Konfiguration der Verbindung anhand von „ configuration “ fest und gibt bei Erfolg „ true “ zurück.

Hinweis: Diese Funktion muss vor Beginn des Handshakes aufgerufen werden.

Siehe auch dtlsConfiguration() und doHandshake().

void QDtls::setMtuHint(quint16 mtuHint)

mtuHint ist die maximale Übertragungseinheit (MTU), die entweder von der Anwendung ermittelt oder geschätzt wurde. Die Anwendung muss diesen Wert nicht festlegen.

Siehe auch mtuHint() und QAbstractSocket::PathMtuSocketOption.

bool QDtls::setPeer(const QHostAddress &address, quint16 port, const QString &verificationName = {})

Legt die Adresse des Peers, port, sowie den Hostnamen fest und gibt bei Erfolg true zurück. address darf nicht null sein und keine Multicast- oder Broadcast-Adresse darstellen. verificationName ist der Hostname, der für die Zertifikatsvalidierung verwendet wird.

Siehe auch peerAddress(), peerPort() und peerVerificationName().

bool QDtls::setPeerVerificationName(const QString &name)

Legt die Host- name fest, die für die Zertifikatsvalidierung verwendet wird, und gibt bei Erfolg „ true “ zurück.

Hinweis: Diese Funktion muss vor Beginn des Handshakes aufgerufen werden.

Siehe auch peerVerificationName() und setPeer().

bool QDtls::shutdown(QUdpSocket *socket)

Sendet eine verschlüsselte Abschaltmeldung und schließt die DTLS-Verbindung. Der Handshake-Status wechselt zu „ QDtls::HandshakeNotStarted “. „ socket “ muss ein gültiger Zeiger sein. Diese Funktion gibt bei Erfolg „ true “ zurück.

Siehe auch doHandshake().

QSslSocket::SslMode QDtls::sslMode() const

Gibt bei einer serverseitigen Verbindung „ QSslSocket::SslServerMode “ und bei einer clientseitigen Verbindung „ QSslSocket::SslClientMode “ zurück.

Siehe auch QDtls() und QSslSocket::SslMode.

qint64 QDtls::writeDatagramEncrypted(QUdpSocket *socket, const QByteArray &dgram)

Verschlüsselt ` dgram ` und schreibt die verschlüsselten Daten in ` socket`. Gibt die Anzahl der geschriebenen Bytes zurück oder -1 im Fehlerfall. Der Handshake muss vor dem Schreiben der verschlüsselten Daten abgeschlossen sein. ` socket ` muss ein gültiger Zeiger sein.

Siehe auch doHandshake(), handshakeState(), isConnectionEncrypted() und dtlsError().

Verwandte Nicht-Mitglieder

enum class QDtlsError

Beschreibt Fehler, die von QDtls und QDtlsClientVerifier erkannt werden können.

Diese Enumeration beschreibt allgemeine und TLS-spezifische Fehler, die bei Objekten der Klassen „ QDtlsClientVerifier “ und „ QDtls “ auftreten können.

KonstanteWertBeschreibung
QDtls::QDtlsError::NoError0Es ist kein Fehler aufgetreten, der letzte Vorgang war erfolgreich.
QDtls::QDtlsError::InvalidInputParameters1Die vom Aufrufer bereitgestellten Eingabeparameter waren ungültig.
QDtls::QDtlsError::InvalidOperation2Es wurde versucht, eine Operation in einem Zustand auszuführen, der dies nicht zuließ.
QDtls::QDtlsError::UnderlyingSocketError3QUdpSocket::writeDatagram() ist fehlgeschlagen; „ QUdpSocket::error “ () und „ QUdpSocket::errorString “ () können genauere Informationen liefern.
QDtls::QDtlsError::RemoteClosedConnectionError4Es wurde eine Warnmeldung zum Beenden der TLS-Verbindung empfangen.
QDtls::QDtlsError::PeerVerificationError5Die Identität des Peers konnte während des TLS-Handshakes nicht überprüft werden.
QDtls::QDtlsError::TlsInitializationError6Beim Initialisieren eines zugrunde liegenden TLS-Backends ist ein Fehler aufgetreten.
QDtls::QDtlsError::TlsFatalError7Während des TLS-Handshakes ist ein schwerwiegender Fehler aufgetreten, der weder ein Fehler bei der Peer-Überprüfung noch ein Fehler bei der TLS-Initialisierung ist.
QDtls::QDtlsError::TlsNonFatalError8Ein Fehler beim Ver- oder Entschlüsseln eines Datagramms, nicht schwerwiegend, d. h., QDtls kann nach diesem Fehler weiterarbeiten.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.