diff --git a/src/core/ksslcertificatemanager.h b/src/core/ksslcertificatemanager.h --- a/src/core/ksslcertificatemanager.h +++ b/src/core/ksslcertificatemanager.h @@ -29,6 +29,7 @@ #include #include +class QDBusArgument; class QSslCertificate; class KSslCertificateRulePrivate; class KSslCertificateManagerPrivate; @@ -73,6 +74,11 @@ * @since 5.64 */ 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 #if KIOCORE_ENABLE_DEPRECATED_SINCE(5, 64) /** @deprecated since 5.64, use the QSslError variant. */ @@ -88,6 +94,7 @@ */ QList filterErrors(const QList &errors) const; private: + friend QDBusArgument &operator<<(QDBusArgument &argument, const KSslCertificateRule &rule); // TODO KF6 remove 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 @@ -57,16 +57,6 @@ // TODO GUI for managing exception rules -class KSslCertificateRulePrivate -{ -public: - QSslCertificate certificate; - QString hostName; - bool isRejected; - QDateTime expiryDateTime; - QList ignoredErrors; -}; - KSslCertificateRule::KSslCertificateRule(const QSslCertificate &cert, const QString &hostName) : d(new KSslCertificateRulePrivate()) { @@ -168,6 +158,16 @@ } } +void KSslCertificateRule::setIgnoredErrors(const QList &errors) +{ + d->ignoredErrors.clear(); + for (QSslError::SslError error : errors) { + if (!isErrorIgnored(error)) { + d->ignoredErrors.append(error); + } + } +} + QList KSslCertificateRule::ignoredErrors() const { // TODO KF6: return d->ignoredErrors diff --git a/src/core/ksslcertificatemanager_p.h b/src/core/ksslcertificatemanager_p.h --- a/src/core/ksslcertificatemanager_p.h +++ b/src/core/ksslcertificatemanager_p.h @@ -25,6 +25,16 @@ #include "kconfig.h" +class KSslCertificateRulePrivate +{ +public: + QSslCertificate certificate; + QString hostName; + bool isRejected; + QDateTime expiryDateTime; + QList ignoredErrors; +}; + struct KSslCaCertificate { enum Store { SystemStore = 0, diff --git a/src/core/kssld_dbusmetatypes.h b/src/core/kssld_dbusmetatypes.h --- a/src/core/kssld_dbusmetatypes.h +++ b/src/core/kssld_dbusmetatypes.h @@ -22,12 +22,14 @@ #ifndef KSSLD_DBUSMETATYPES_H #define KSSLD_DBUSMETATYPES_H +#include "ksslcertificatemanager_p.h" + #include #include #include Q_DECLARE_METATYPE(KSslCertificateRule) -Q_DECLARE_METATYPE(KSslError::Error) +Q_DECLARE_METATYPE(QSslError::SslError) QDBusArgument &operator<<(QDBusArgument &argument, const QSslCertificate &cert) { @@ -52,7 +54,7 @@ argument.beginStructure(); argument << rule.certificate() << rule.hostName() << rule.isRejected() << rule.expiryDateTime().toString(Qt::ISODate) - << rule.ignoredErrors(); + << rule.d->ignoredErrors; // TODO KF6: replace by a call to rule.ignoredErrors argument.endStructure(); return argument; } @@ -63,7 +65,7 @@ QString hostName; bool isRejected; QString expiryStr; - QList ignoredErrors; + QList ignoredErrors; argument.beginStructure(); argument >> cert >> hostName >> isRejected >> expiryStr >> ignoredErrors; argument.endStructure(); @@ -76,31 +78,31 @@ return argument; } -QDBusArgument &operator<<(QDBusArgument &argument, const KSslError::Error &error) +QDBusArgument &operator<<(QDBusArgument &argument, const QSslError::SslError &error) { argument.beginStructure(); //overhead ho! argument << static_cast(error); argument.endStructure(); return argument; } -const QDBusArgument &operator>>(const QDBusArgument &argument, KSslError::Error &error) +const QDBusArgument &operator>>(const QDBusArgument &argument, QSslError::SslError &error) { int data; argument.beginStructure(); argument >> data; argument.endStructure(); - error = static_cast(data); + error = static_cast(data); return argument; } static void registerMetaTypesForKSSLD() { qDBusRegisterMetaType(); qDBusRegisterMetaType(); qDBusRegisterMetaType >(); - qDBusRegisterMetaType(); - qDBusRegisterMetaType >(); + qDBusRegisterMetaType(); + qDBusRegisterMetaType>(); } #endif //KSSLD_DBUSMETATYPES_H