From 39161a59db000447f91555657bbdab38e30958c1 Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Tue, 23 Jul 2019 10:20:50 +0200 Subject: uacpp: Add errors for backend specific restrictions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ie79301578a4cb0966350892ebc6653d608ffba4f Reviewed-by: Jannis Völker --- src/plugins/opcua/uacpp/quacppbackend.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) 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; } } -- cgit v1.2.3