summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2019-08-26 13:46:35 +0200
committerKirill Burtsev <kirill.burtsev@qt.io>2019-09-05 23:33:12 +0200
commit8d045ce2a4cc65660bdf6ee8b555899c5c6119de (patch)
treef25ecfc6b167993215f6808d1a6ada105c069524 /src/webenginewidgets
parentbf3753f02402b44455038c4fa2a897d41aadf850 (diff)
Api to get certificate's chain on error
Expose certificate's chain on validation error starting with the immediate certificate and ending with the CA's certificate. [ChangeLog][QtWebEngineWidgets][QWebEngineCertificateError] New method to get the peer's chain of digital certificates. Fixes: QTBUG-51176 Change-Id: I799dfe9e44f9f2517f4691d175beee256114af79 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r--src/webenginewidgets/api/qwebenginecertificateerror.cpp12
-rw-r--r--src/webenginewidgets/api/qwebenginecertificateerror.h3
2 files changed, 15 insertions, 0 deletions
diff --git a/src/webenginewidgets/api/qwebenginecertificateerror.cpp b/src/webenginewidgets/api/qwebenginecertificateerror.cpp
index e8c7a4245..a61d98f94 100644
--- a/src/webenginewidgets/api/qwebenginecertificateerror.cpp
+++ b/src/webenginewidgets/api/qwebenginecertificateerror.cpp
@@ -79,6 +79,7 @@ public:
QUrl url;
bool overridable;
QString errorDescription;
+ QList<QSslCertificate> chain;
bool answered = false, deferred = false;
QWeakPointer<CertificateErrorController> controller;
@@ -106,6 +107,7 @@ QWebEngineCertificateError::QWebEngineCertificateError(const QSharedPointer<Cert
controller->overridable(), controller->errorString()))
{
d->controller = controller;
+ d->chain = controller->chain();
}
QWebEngineCertificateError::QWebEngineCertificateError(const QWebEngineCertificateError &other) = default;
@@ -236,4 +238,14 @@ bool QWebEngineCertificateError::answered() const
return d->answered;
}
+/*!
+ Returns the peer's chain of digital certificates
+
+ Chain starts with the peer's immediate certificate and ending with the CA's certificate.
+*/
+QList<QSslCertificate> QWebEngineCertificateError::chain() const
+{
+ return d->chain;
+}
+
QT_END_NAMESPACE
diff --git a/src/webenginewidgets/api/qwebenginecertificateerror.h b/src/webenginewidgets/api/qwebenginecertificateerror.h
index f8805e8a7..b2dd65a9f 100644
--- a/src/webenginewidgets/api/qwebenginecertificateerror.h
+++ b/src/webenginewidgets/api/qwebenginecertificateerror.h
@@ -44,6 +44,7 @@
#include <QtCore/qsharedpointer.h>
#include <QtCore/qurl.h>
+#include <QtNetwork/QSslCertificate>
QT_BEGIN_NAMESPACE
@@ -89,6 +90,8 @@ public:
void ignoreCertificateError();
bool answered() const;
+ QList<QSslCertificate> chain() const;
+
private:
friend class QWebEnginePagePrivate;
QWebEngineCertificateError(const QSharedPointer<CertificateErrorController> &controller);