diff --git a/src/core/ksslcertificatemanager.h b/src/core/ksslcertificatemanager.h --- a/src/core/ksslcertificatemanager.h +++ b/src/core/ksslcertificatemanager.h @@ -21,7 +21,7 @@ #ifndef _INCLUDE_KSSLCERTIFICATEMANAGER_H #define _INCLUDE_KSSLCERTIFICATEMANAGER_H -#include "ktcpsocket.h" +#include "ktcpsocket.h" // TODO KF6 remove include #include #include @@ -34,6 +34,7 @@ class KSslCertificateManagerPrivate; //### document this... :/ +/** Certificate rule. */ class KIOCORE_EXPORT KSslCertificateRule { public: @@ -49,12 +50,32 @@ QDateTime expiryDateTime() const; void setRejected(bool rejected); bool isRejected() const; - bool isErrorIgnored(KSslError::Error error) const; - void setIgnoredErrors(const QList &errors); - void setIgnoredErrors(const QList &errors); - QList ignoredErrors() const; - QList filterErrors(const QList &errors) const; - QList filterErrors(const QList &errors) const; + /** @deprecated since 5.64, use the QSslError variant. */ + KIOCORE_DEPRECATED bool isErrorIgnored(KSslError::Error error) const; + /** + * Returns whether @p error is ignored for this certificate. + * @since 5.64 + */ + bool isErrorIgnored(QSslError::SslError error) const; + /** @deprecated since 5.64, use the QSslError variant. */ + KIOCORE_DEPRECATED void setIgnoredErrors(const QList &errors); + /** @deprecated since 5.64, use the QSslError variant. */ + KIOCORE_DEPRECATED void setIgnoredErrors(const QList &errors); + /** + * Set the ignored errors for this certificate. + * @since 5.64 + */ + void setIgnoredErrors(const QList &errors); + QList ignoredErrors() const; // TODO KF6 return QSslError::SslError list + /** @deprecated since 5.64, use the QSslError variant. */ + KIOCORE_DEPRECATED QList filterErrors(const QList &errors) const; + /** @deprecated since 5.64, use the QSslError variant. */ + KIOCORE_DEPRECATED QList filterErrors(const QList &errors) const; + /** + * Filter out errors that are already ignored. + * @since 5.64 + */ + QList filterErrors(const QList &errors) const; private: KSslCertificateRulePrivate *const d; }; diff --git a/src/core/ksslcertificatemanager.cpp b/src/core/ksslcertificatemanager.cpp --- a/src/core/ksslcertificatemanager.cpp +++ b/src/core/ksslcertificatemanager.cpp @@ -20,6 +20,7 @@ #include "ksslcertificatemanager.h" #include "ksslcertificatemanager_p.h" +#include "ksslerror_p.h" #include "ktcpsocket.h" #include "ksslerroruidata_p.h" @@ -131,6 +132,11 @@ return false; } +bool KSslCertificateRule::isErrorIgnored(QSslError::SslError error) const +{ + return d->ignoredErrors.contains(KSslErrorPrivate::errorFromQSslError(error)); +} + void KSslCertificateRule::setIgnoredErrors(const QList &errors) { d->ignoredErrors.clear(); @@ -151,6 +157,16 @@ setIgnoredErrors(el); } +void KSslCertificateRule::setIgnoredErrors(const QList &errors) +{ + d->ignoredErrors.clear(); + for (const QSslError &error : errors) { + if (!isErrorIgnored(error.error())) { + d->ignoredErrors.append(KSslErrorPrivate::errorFromQSslError(error.error())); + } + } +} + QList KSslCertificateRule::ignoredErrors() const { return d->ignoredErrors; @@ -178,6 +194,17 @@ return ret; } +QList KSslCertificateRule::filterErrors(const QList &errors) const +{ + QList ret; + for (const QSslError &error : errors) { + if (!isErrorIgnored(error.error())) { + ret.append(error); + } + } + return ret; +} + //////////////////////////////////////////////////////////////////// static QList deduplicate(const QList &certs)