diff --git a/src/core/ksslcertificatemanager.cpp b/src/core/ksslcertificatemanager.cpp --- a/src/core/ksslcertificatemanager.cpp +++ b/src/core/ksslcertificatemanager.cpp @@ -129,7 +129,11 @@ bool KSslCertificateRule::isErrorIgnored(QSslError::SslError error) const { - return d->ignoredErrors.contains(error); + // ### temporary porting scafolding, remove the KSslError conversion roundtrip once kssld is ported + // until then we need to do this here to avoid comparing QSslErrors that haven't been reduced to the + // lower KSslError level of detail with the values stored as KSslError + //return d->ignoredErrors.contains(error); + return d->ignoredErrors.contains(KSslErrorPrivate::errorFromKSslError(KSslErrorPrivate::errorFromQSslError(error))); } void KSslCertificateRule::setIgnoredErrors(const QList &errors) diff --git a/src/core/ksslerroruidata.cpp b/src/core/ksslerroruidata.cpp --- a/src/core/ksslerroruidata.cpp +++ b/src/core/ksslerroruidata.cpp @@ -36,7 +36,11 @@ : d(new Private()) { d->certificateChain = socket->peerCertificateChain(); - d->sslErrors = socket->sslErrors(); + const auto ksslErrors = socket->sslErrors(); + d->sslErrors.reserve(ksslErrors.size()); + for (const auto &error : ksslErrors) { + d->sslErrors.push_back(error.sslError()); + } d->ip = socket->peerAddress().toString(); d->host = socket->peerName(); d->sslProtocol = socket->negotiatedSslVersionName(); @@ -49,14 +53,7 @@ : d(new Private()) { d->certificateChain = socket->peerCertificateChain(); - - // See KTcpSocket::sslErrors() - const auto qsslErrors = socket->sslErrors(); - d->sslErrors.reserve(qsslErrors.size()); - for (const QSslError &e : qsslErrors) { - d->sslErrors.append(KSslError(e)); - } - + d->sslErrors = socket->sslErrors(); d->ip = socket->peerAddress().toString(); d->host = socket->peerName(); if (socket->isEncrypted()) { @@ -72,12 +69,7 @@ { const auto sslConfig = reply->sslConfiguration(); d->certificateChain = sslConfig.peerCertificateChain(); - - d->sslErrors.reserve(sslErrors.size()); - for (const QSslError &e : sslErrors) { - d->sslErrors.append(KSslError(e)); - } - + d->sslErrors = sslErrors; d->host = reply->request().url().host(); d->sslProtocol = sslConfig.sessionCipher().protocolString(); d->cipher = sslConfig.sessionCipher().name(); diff --git a/src/core/ksslerroruidata_p.h b/src/core/ksslerroruidata_p.h --- a/src/core/ksslerroruidata_p.h +++ b/src/core/ksslerroruidata_p.h @@ -21,9 +21,9 @@ #define KSSLERRORUIDATA_P_H #include "ksslerroruidata.h" -#include "ktcpsocket.h" #include +#include #include class Q_DECL_HIDDEN KSslErrorUiData::Private @@ -35,7 +35,7 @@ } QList certificateChain; - QList sslErrors; // parallel list to certificateChain + QList sslErrors; // parallel list to certificateChain QString ip; QString host; QString sslProtocol; diff --git a/src/widgets/sslui.cpp b/src/widgets/sslui.cpp --- a/src/widgets/sslui.cpp +++ b/src/widgets/sslui.cpp @@ -39,7 +39,7 @@ return true; } - QList fatalErrors = KSslCertificateManager::nonIgnorableErrors(ud->sslErrors); + const QList fatalErrors = KSslCertificateManager::nonIgnorableErrors(ud->sslErrors); if (!fatalErrors.isEmpty()) { //TODO message "sorry, fatal error, you can't override it" return false; @@ -56,7 +56,7 @@ if (storedRules & RecallRules) { rule = cm->rule(ud->certificateChain.first(), ud->host); // remove previously seen and acknowledged errors - QList remainingErrors = rule.filterErrors(ud->sslErrors); + const QList remainingErrors = rule.filterErrors(ud->sslErrors); if (remainingErrors.isEmpty()) { //qDebug() << "Error list empty after removing errors to be ignored. Continuing."; return true; @@ -66,7 +66,7 @@ //### We don't ask to permanently reject the certificate QString message = i18n("The server failed the authenticity check (%1).\n\n", ud->host); - for (const KSslError &err : qAsConst(ud->sslErrors)) { + for (const QSslError &err : qAsConst(ud->sslErrors)) { message.append(err.errorString() + QLatin1Char('\n')); } message = message.trimmed();