summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-09-05 09:01:54 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-09-05 09:01:54 +0200
commitca8347f6d8ebfb61532f33f756b877fbc820a2eb (patch)
tree502438d4b9bcaa1275d096ab4c2032d6fe8acef1
parentef17976199aabbf660efbc5b0aadf3e42df44aaf (diff)
parentb0d2b6ad7ea5b2026e5fd8e08b44fd500d8b01b3 (diff)
Merge remote-tracking branch 'origin/5.14' into 5.15
-rw-r--r--examples/opcua/opcuaviewer/mainwindow.cpp6
-rw-r--r--examples/opcua/waterpump/waterpump-qml/main.cpp11
-rw-r--r--examples/opcua/waterpump/waterpump-qmlcpp/main.cpp11
-rw-r--r--examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp2
-rw-r--r--src/3rdparty/open62541.pri2
-rw-r--r--src/opcua/doc/src/security.qdoc2
-rw-r--r--tests/auto/auto.pro4
-rw-r--r--tests/auto/security/security.pro6
-rw-r--r--tests/auto/security/tst_security.cpp18
9 files changed, 49 insertions, 13 deletions
diff --git a/examples/opcua/opcuaviewer/mainwindow.cpp b/examples/opcua/opcuaviewer/mainwindow.cpp
index 23e41f0..589cd6d 100644
--- a/examples/opcua/opcuaviewer/mainwindow.cpp
+++ b/examples/opcua/opcuaviewer/mainwindow.cpp
@@ -192,7 +192,11 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
//! [PKI Configuration]
void MainWindow::setupPkiConfiguration()
{
- const QString pkidir = QCoreApplication::applicationDirPath() + "/pki";
+ QString pkidir = QCoreApplication::applicationDirPath();
+#ifdef Q_OS_WIN
+ pkidir += "../";
+#endif
+ pkidir += "/pki";
m_pkiConfig.setClientCertificateFile(pkidir + "/own/certs/opcuaviewer.der");
m_pkiConfig.setPrivateKeyFile(pkidir + "/own/private/opcuaviewer.pem");
m_pkiConfig.setTrustListDirectory(pkidir + "/trusted/certs");
diff --git a/examples/opcua/waterpump/waterpump-qml/main.cpp b/examples/opcua/waterpump/waterpump-qml/main.cpp
index 8a1963c..f63614d 100644
--- a/examples/opcua/waterpump/waterpump-qml/main.cpp
+++ b/examples/opcua/waterpump/waterpump-qml/main.cpp
@@ -89,5 +89,14 @@ int main(int argc, char *argv[])
if (engine.rootObjects().isEmpty())
return EXIT_FAILURE;
- return app.exec();
+ const int exitCode = QCoreApplication::exec();
+ if (serverProcess.state() == QProcess::Running) {
+#ifndef Q_OS_WIN
+ serverProcess.terminate();
+#else
+ serverProcess.kill();
+#endif
+ serverProcess.waitForFinished();
+ }
+ return exitCode;
}
diff --git a/examples/opcua/waterpump/waterpump-qmlcpp/main.cpp b/examples/opcua/waterpump/waterpump-qmlcpp/main.cpp
index fb22c3d..35ec80a 100644
--- a/examples/opcua/waterpump/waterpump-qmlcpp/main.cpp
+++ b/examples/opcua/waterpump/waterpump-qmlcpp/main.cpp
@@ -93,5 +93,14 @@ int main(int argc, char *argv[])
if (engine.rootObjects().isEmpty())
return EXIT_FAILURE;
- return app.exec();
+ const int exitCode = QCoreApplication::exec();
+ if (serverProcess.state() == QProcess::Running) {
+#ifndef Q_OS_WIN
+ serverProcess.terminate();
+#else
+ serverProcess.kill();
+#endif
+ serverProcess.waitForFinished();
+ }
+ return exitCode;
}
diff --git a/examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp b/examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp
index e6ac84e..858282d 100644
--- a/examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp
+++ b/examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp
@@ -72,7 +72,7 @@ OpcUaMachineBackend::OpcUaMachineBackend(QObject *parent)
OpcUaMachineBackend::~OpcUaMachineBackend()
{
- if (m_client)
+ if (m_client && m_client->state() == QOpcUaClient::Connected)
m_client->disconnectFromEndpoint();
}
diff --git a/src/3rdparty/open62541.pri b/src/3rdparty/open62541.pri
index 8a4a8f1..011fb8b 100644
--- a/src/3rdparty/open62541.pri
+++ b/src/3rdparty/open62541.pri
@@ -8,7 +8,7 @@ win32-g++: LIBS += -lws2_32
win32-msvc|winrt: {
SOURCES += $$OPEN62541_SOURCES
} else {
- OPEN62541_CFLAGS += -Wno-unused-parameter -Wno-unused-function -Wno-format -Wno-strict-aliasing -Wno-unused-result
+ OPEN62541_CFLAGS += -Wno-unused-parameter -Wno-unused-function -Wno-format -Wno-strict-aliasing -Wno-unused-result -std=c99
# The open62541 source code produces lots of warnings.
# This custom compiler will disable these warnings just for open62541.c
diff --git a/src/opcua/doc/src/security.qdoc b/src/opcua/doc/src/security.qdoc
index 472ae3c..a5ad8b4 100644
--- a/src/opcua/doc/src/security.qdoc
+++ b/src/opcua/doc/src/security.qdoc
@@ -74,7 +74,7 @@
[ req_ext ]
basicConstraints = critical, CA:FALSE
- keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment, keyCertSign
+ keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = URI:urn:foo.com:The%20Qt%20Company:QtOpcUaViewer,DNS:foo.com
subjectKeyIdentifier = hash
authorityKeyIdentifier=keyid:always,issuer:always
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index a90406f..9d8b7db 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -1,5 +1,5 @@
TEMPLATE = subdirs
-SUBDIRS += qopcuaclient connection clientSetupInCpp
+SUBDIRS += qopcuaclient connection clientSetupInCpp security
QT_FOR_CONFIG += opcua-private
@@ -8,5 +8,3 @@ qtHaveModule(qmltest):qtConfig(open62541)|qtConfig(uacpp) {
SUBDIRS += declarative
}
-# This tries to check if the server supports security
-qtConfig(mbedtls): SUBDIRS += security
diff --git a/tests/auto/security/security.pro b/tests/auto/security/security.pro
index d3d203e..bde83f7 100644
--- a/tests/auto/security/security.pro
+++ b/tests/auto/security/security.pro
@@ -7,3 +7,9 @@ RESOURCES += certs.qrc
SOURCES += \
tst_security.cpp
+
+HEADERS += \
+ $$PWD/../../common/backend_environment.h
+
+INCLUDEPATH += \
+ $$PWD/../../common
diff --git a/tests/auto/security/tst_security.cpp b/tests/auto/security/tst_security.cpp
index d91f702..6b68bc2 100644
--- a/tests/auto/security/tst_security.cpp
+++ b/tests/auto/security/tst_security.cpp
@@ -34,6 +34,8 @@
**
****************************************************************************/
+#include "backend_environment.h"
+
#include <QtOpcUa/QOpcUaAuthenticationInformation>
#include <QtOpcUa/QOpcUaClient>
#include <QtOpcUa/QOpcUaEndpointDescription>
@@ -249,13 +251,14 @@ void Tst_QOpcUaSecurity::initTestCase()
qDebug() << endpoint.securityPolicy();
}
}
-
- QVERIFY(m_endpoints.size() > 0);
}
}
void Tst_QOpcUaSecurity::connectAndDisconnectSecureUnencryptedKey()
{
+ if (m_endpoints.size() == 0)
+ QSKIP("No secure endpoints available");
+
QFETCH(QString, backend);
QFETCH(QOpcUaEndpointDescription, endpoint);
@@ -263,8 +266,8 @@ void Tst_QOpcUaSecurity::connectAndDisconnectSecureUnencryptedKey()
QVERIFY2(client, QString("Loading backend failed: %1").arg(backend).toLatin1().data());
if (!client->supportedSecurityPolicies().contains(endpoint.securityPolicy()))
- QSKIP(QString("This test is skipped because backend %1 does not support security policy %2").arg(
- client->backend()).arg(endpoint.securityPolicy()).toLatin1().constData());
+ QSKIP(QString("This test is skipped because backend %1 does not support security policy %2").arg(
+ client->backend()).arg(endpoint.securityPolicy()).toLatin1().constData());
const QString pkidir = m_pkiData->path();
QOpcUaPkiConfiguration pkiConfig;
@@ -319,6 +322,9 @@ void Tst_QOpcUaSecurity::connectAndDisconnectSecureUnencryptedKey()
void Tst_QOpcUaSecurity::connectAndDisconnectSecureEncryptedKey()
{
+ if (m_endpoints.size() == 0)
+ QSKIP("No secure endpoints available");
+
QFETCH(QString, backend);
QFETCH(QOpcUaEndpointDescription, endpoint);
@@ -328,6 +334,9 @@ void Tst_QOpcUaSecurity::connectAndDisconnectSecureEncryptedKey()
if (client->backend() == QLatin1String("open62541"))
QSKIP(QString("This test is skipped because backend %1 does not support encrypted keys").arg(client->backend()).toLatin1().constData());
+ if (!client->supportedSecurityPolicies().contains(endpoint.securityPolicy()))
+ QSKIP(QString("This test is skipped because backend %1 does not support security policy %2").arg(client->backend()).arg(endpoint.securityPolicy()).toLatin1().constData());
+
const QString pkidir = m_pkiData->path();
QOpcUaPkiConfiguration pkiConfig;
pkiConfig.setClientCertificateFile(pkidir + "/own/certs/tst_security.der");
@@ -400,6 +409,7 @@ void Tst_QOpcUaSecurity::cleanupTestCase()
int main(int argc, char *argv[])
{
+ updateEnvironment();
QCoreApplication app(argc, argv);
QTEST_SET_MAIN_SOURCE_PATH