summaryrefslogtreecommitdiffstats
path: root/examples/network/secureudpclient
diff options
context:
space:
mode:
Diffstat (limited to 'examples/network/secureudpclient')
-rw-r--r--examples/network/secureudpclient/addressdialog.h2
-rw-r--r--examples/network/secureudpclient/association.cpp35
-rw-r--r--examples/network/secureudpclient/association.h6
-rw-r--r--examples/network/secureudpclient/mainwindow.cpp4
-rw-r--r--examples/network/secureudpclient/mainwindow.h2
5 files changed, 37 insertions, 12 deletions
diff --git a/examples/network/secureudpclient/addressdialog.h b/examples/network/secureudpclient/addressdialog.h
index 7c5e2e03e8..43792faa4b 100644
--- a/examples/network/secureudpclient/addressdialog.h
+++ b/examples/network/secureudpclient/addressdialog.h
@@ -69,7 +69,6 @@ class AddressDialog : public QDialog
Q_OBJECT
public:
-
explicit AddressDialog(QWidget *parent = nullptr);
~AddressDialog();
@@ -77,7 +76,6 @@ public:
quint16 remotePort() const;
private:
-
void setupHostSelector();
void setupPortSelector();
diff --git a/examples/network/secureudpclient/association.cpp b/examples/network/secureudpclient/association.cpp
index 6b510909f1..c950260078 100644
--- a/examples/network/secureudpclient/association.cpp
+++ b/examples/network/secureudpclient/association.cpp
@@ -57,27 +57,38 @@ DtlsAssociation::DtlsAssociation(const QHostAddress &address, quint16 port,
: name(connectionName),
crypto(QSslSocket::SslClientMode)
{
+ //! [1]
auto configuration = QSslConfiguration::defaultDtlsConfiguration();
configuration.setPeerVerifyMode(QSslSocket::VerifyNone);
crypto.setPeer(address, port);
crypto.setDtlsConfiguration(configuration);
+ //! [1]
+ //! [2]
connect(&crypto, &QDtls::handshakeTimeout, this, &DtlsAssociation::handshakeTimeout);
+ //! [2]
connect(&crypto, &QDtls::pskRequired, this, &DtlsAssociation::pskRequired);
-
+ //! [3]
socket.connectToHost(address.toString(), port);
+ //! [3]
+ //! [13]
connect(&socket, &QUdpSocket::readyRead, this, &DtlsAssociation::readyRead);
-
+ //! [13]
+ //! [4]
pingTimer.setInterval(5000);
connect(&pingTimer, &QTimer::timeout, this, &DtlsAssociation::pingTimeout);
+ //! [4]
}
+//! [12]
DtlsAssociation::~DtlsAssociation()
{
if (crypto.isConnectionEncrypted())
crypto.shutdown(&socket);
}
+//! [12]
+//! [5]
void DtlsAssociation::startHandshake()
{
if (socket.state() != QAbstractSocket::ConnectedState) {
@@ -86,11 +97,12 @@ void DtlsAssociation::startHandshake()
return;
}
- if (!crypto.doHandshake(&socket, {}))
+ if (!crypto.doHandshake(&socket))
emit errorMessage(tr("%1: failed to start a handshake - %2").arg(name, crypto.dtlsErrorString()));
else
emit infoMessage(tr("%1: starting a handshake").arg(name));
}
+//! [5]
void DtlsAssociation::udpSocketConnected()
{
@@ -100,7 +112,8 @@ void DtlsAssociation::udpSocketConnected()
void DtlsAssociation::readyRead()
{
- QByteArray dgram(socket.pendingDatagramSize(), '\0');
+ //! [6]
+ QByteArray dgram(socket.pendingDatagramSize(), Qt::Uninitialized);
const qint64 bytesRead = socket.readDatagram(dgram.data(), dgram.size());
if (bytesRead <= 0) {
emit warningMessage(tr("%1: spurious read notification?").arg(name));
@@ -108,6 +121,8 @@ void DtlsAssociation::readyRead()
}
dgram.resize(bytesRead);
+ //! [6]
+ //! [7]
if (crypto.isConnectionEncrypted()) {
const QByteArray plainText = crypto.decryptDatagram(&socket, dgram);
if (plainText.size()) {
@@ -124,27 +139,36 @@ void DtlsAssociation::readyRead()
emit warningMessage(tr("%1: zero-length datagram received?").arg(name));
} else {
+ //! [7]
+ //! [8]
if (!crypto.doHandshake(&socket, dgram)) {
emit errorMessage(tr("%1: handshake error - %2").arg(name, crypto.dtlsErrorString()));
return;
}
+ //! [8]
+
+ //! [9]
if (crypto.isConnectionEncrypted()) {
emit infoMessage(tr("%1: encrypted connection established!").arg(name));
pingTimer.start();
pingTimeout();
} else {
+ //! [9]
emit infoMessage(tr("%1: continuing with handshake ...").arg(name));
}
}
}
+//! [11]
void DtlsAssociation::handshakeTimeout()
{
emit warningMessage(tr("%1: handshake timeout, trying to re-transmit").arg(name));
if (!crypto.handleTimeout(&socket))
emit errorMessage(tr("%1: failed to re-transmit - %2").arg(name, crypto.dtlsErrorString()));
}
+//! [11]
+//! [14]
void DtlsAssociation::pskRequired(QSslPreSharedKeyAuthenticator *auth)
{
Q_ASSERT(auth);
@@ -153,7 +177,9 @@ void DtlsAssociation::pskRequired(QSslPreSharedKeyAuthenticator *auth)
auth->setIdentity(name.toLatin1());
auth->setPreSharedKey(QByteArrayLiteral("\x1a\x2b\x3c\x4d\x5e\x6f"));
}
+//! [14]
+//! [10]
void DtlsAssociation::pingTimeout()
{
static const QString message = QStringLiteral("I am %1, please, accept our ping %2");
@@ -166,5 +192,6 @@ void DtlsAssociation::pingTimeout()
++ping;
}
+//! [10]
QT_END_NAMESPACE
diff --git a/examples/network/secureudpclient/association.h b/examples/network/secureudpclient/association.h
index 157882f23d..be89ce695e 100644
--- a/examples/network/secureudpclient/association.h
+++ b/examples/network/secureudpclient/association.h
@@ -55,19 +55,18 @@
QT_BEGIN_NAMESPACE
+//! [0]
class DtlsAssociation : public QObject
{
Q_OBJECT
public:
-
DtlsAssociation(const QHostAddress &address, quint16 port,
const QString &connectionName);
~DtlsAssociation();
void startHandshake();
signals:
-
void errorMessage(const QString &message);
void warningMessage(const QString &message);
void infoMessage(const QString &message);
@@ -75,7 +74,6 @@ signals:
const QByteArray &plainText);
private slots:
-
void udpSocketConnected();
void readyRead();
void handshakeTimeout();
@@ -83,7 +81,6 @@ private slots:
void pingTimeout();
private:
-
QString name;
QUdpSocket socket;
QDtls crypto;
@@ -93,6 +90,7 @@ private:
Q_DISABLE_COPY(DtlsAssociation)
};
+//! [0]
QT_END_NAMESPACE
diff --git a/examples/network/secureudpclient/mainwindow.cpp b/examples/network/secureudpclient/mainwindow.cpp
index 07c614cf3a..2fbf757c81 100644
--- a/examples/network/secureudpclient/mainwindow.cpp
+++ b/examples/network/secureudpclient/mainwindow.cpp
@@ -72,6 +72,8 @@ MainWindow::~MainWindow()
delete ui;
}
+//! [0]
+
const QString colorizer(QStringLiteral("<font color=\"%1\">%2</font><br>"));
void MainWindow::addErrorMessage(const QString &message)
@@ -102,6 +104,8 @@ void MainWindow::addServerResponse(const QString &clientInfo, const QByteArray &
ui->serverMessages->insertHtml(colorizer.arg(messageColor, html));
}
+//! [0]
+
void MainWindow::on_connectButton_clicked()
{
if (lookupId != -1) {
diff --git a/examples/network/secureudpclient/mainwindow.h b/examples/network/secureudpclient/mainwindow.h
index b231b44627..0d443fd376 100644
--- a/examples/network/secureudpclient/mainwindow.h
+++ b/examples/network/secureudpclient/mainwindow.h
@@ -76,7 +76,6 @@ class MainWindow : public QMainWindow
Q_OBJECT
public:
-
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
@@ -94,7 +93,6 @@ private slots:
void lookupFinished(const QHostInfo &hostInfo);
private:
-
void updateUi();
void startNewConnection(const QHostAddress &address);