summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Keller <Rainer.Keller@qt.io>2019-07-23 10:20:50 +0200
committerRainer Keller <Rainer.Keller@qt.io>2019-07-30 14:42:38 +0200
commit39161a59db000447f91555657bbdab38e30958c1 (patch)
tree16ac5b2d6bd6848b21d9fa2a78842311cb77937a
parente4f64bc881631da62265e48d39890247d6fcb1d8 (diff)
uacpp: Add errors for backend specific restrictions
Change-Id: Ie79301578a4cb0966350892ebc6653d608ffba4f Reviewed-by: Jannis Völker <jannis.voelker@basyskom.com>
-rw-r--r--src/plugins/opcua/uacpp/quacppbackend.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/opcua/uacpp/quacppbackend.cpp b/src/plugins/opcua/uacpp/quacppbackend.cpp
index bff66a8..445d1d7 100644
--- a/src/plugins/opcua/uacpp/quacppbackend.cpp
+++ b/src/plugins/opcua/uacpp/quacppbackend.cpp
@@ -278,7 +278,13 @@ void UACppAsyncBackend::connectToEndpoint(const QOpcUaEndpointDescription &endpo
QFile certFile(certificateFilePath.toUtf8());
if (certFile.open(QIODevice::ReadOnly)) {
+ const auto data = certFile.read(1000);
certFile.close();
+ if (data.contains("--BEGIN CERTIFICATE")) {
+ qCWarning(QT_OPCUA_PLUGINS_UACPP) << "The UACPP backend supports only DER encoded certificates.";
+ emit stateAndOrErrorChanged(QOpcUaClient::Disconnected, QOpcUaClient::AccessDenied);
+ return;
+ }
} else {
qCWarning(QT_OPCUA_PLUGINS_UACPP) << "Failed to load certificate: " << pkiConfig.clientCertificateFile();
result = OpcUa_BadNotFound;
@@ -334,6 +340,10 @@ void UACppAsyncBackend::connectToEndpoint(const QOpcUaEndpointDescription &endpo
if (result.isNotGood()) {
emit stateAndOrErrorChanged(QOpcUaClient::Disconnected, QOpcUaClient::AccessDenied);
qCWarning(QT_OPCUA_PLUGINS_UACPP) << "Failed to connect:" << QString::fromUtf8(result.toString().toUtf8());
+
+ if (result.code() == OpcUa_BadEncodingLimitsExceeded && !endpoint.securityPolicy().endsWith("#None"))
+ qCWarning(QT_OPCUA_PLUGINS_UACPP) << "Reason may be not using a DER encoded client certificate";
+
return;
}
}