8 bool listen(
const QHostAddress &address, quint16 port);
15 QUdpSocket serverSocket;
16 QDtlsClientVerifier verifier;
22 if (serverSocket.bind(serverAddress, serverPort))
23 connect(&serverSocket, &QUdpSocket::readyRead,
this, &DtlsServer::readyRead);
24 return serverSocket.state() == QAbstractSocket::BoundState;
29 QByteArray dgram(serverSocket.pendingDatagramSize(), Qt::Uninitialized);
32 serverSocket.readDatagram(dgram.data(), dgram.size(), &address, &port);
33 if (verifiedClients.contains({address, port}) {
36 }
else if (verifier.verifyClient(&serverSocket, dgram, address, port)) {
51 const QByteArray newSecret(generateCryptoStrongSecret());
52 if (newSecret.size()) {
53 usedCookies.append(newSecret);
54 verifier.setCookieGeneratorParameters({QCryptographicHash::Sha1, newSecret});
60if (!verifier.verifyClient(&socket, message, address, port)) {
61 switch (verifyClient.dtlsError()) {
62 case QDtlsError::NoError:
66 case QDtlsError::TlsInitializationError:
70 case QDtlsError::UnderlyingSocketError:
73 case QDtlsError::InvalidInputParameters:
bool listen(const QHostAddress &address, quint16 port)