diff options
author | Rainer Keller <Rainer.Keller@qt.io> | 2019-07-23 10:20:50 +0200 |
---|---|---|
committer | Rainer Keller <Rainer.Keller@qt.io> | 2019-07-30 14:42:38 +0200 |
commit | 39161a59db000447f91555657bbdab38e30958c1 (patch) | |
tree | 16ac5b2d6bd6848b21d9fa2a78842311cb77937a | |
parent | e4f64bc881631da62265e48d39890247d6fcb1d8 (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.cpp | 10 |
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; } } |