File indexing completed on 2023-09-24 04:08:39
0001 /* 0002 This file is part of the KDE libraries 0003 SPDX-FileCopyrightText: 2007 Andreas Hartmetz <ahartmetz@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef KSSLD_DBUSMETATYPES_H 0009 #define KSSLD_DBUSMETATYPES_H 0010 0011 #include "ksslcertificatemanager_p.h" 0012 0013 #include <QDBusArgument> 0014 #include <QDBusMetaType> 0015 #include <qglobal.h> 0016 0017 Q_DECLARE_METATYPE(KSslCertificateRule) 0018 Q_DECLARE_METATYPE(QSslError::SslError) 0019 0020 inline QDBusArgument &operator<<(QDBusArgument &argument, const QSslCertificate &cert) 0021 { 0022 argument.beginStructure(); 0023 argument << cert.toDer(); 0024 argument.endStructure(); 0025 return argument; 0026 } 0027 0028 inline const QDBusArgument &operator>>(const QDBusArgument &argument, QSslCertificate &cert) 0029 { 0030 QByteArray data; 0031 argument.beginStructure(); 0032 argument >> data; 0033 argument.endStructure(); 0034 cert = QSslCertificate(data, QSsl::Der); 0035 return argument; 0036 } 0037 0038 inline QDBusArgument &operator<<(QDBusArgument &argument, const KSslCertificateRule &rule) 0039 { 0040 argument.beginStructure(); 0041 argument << rule.certificate() << rule.hostName() << rule.isRejected() << rule.expiryDateTime().toString(Qt::ISODate) 0042 << rule.d->ignoredErrors; // TODO KF6: replace by a call to rule.ignoredErrors 0043 argument.endStructure(); 0044 return argument; 0045 } 0046 0047 inline const QDBusArgument &operator>>(const QDBusArgument &argument, KSslCertificateRule &rule) 0048 { 0049 QSslCertificate cert; 0050 QString hostName; 0051 bool isRejected; 0052 QString expiryStr; 0053 QList<QSslError::SslError> ignoredErrors; 0054 argument.beginStructure(); 0055 argument >> cert >> hostName >> isRejected >> expiryStr >> ignoredErrors; 0056 argument.endStructure(); 0057 0058 KSslCertificateRule ret(cert, hostName); 0059 ret.setRejected(isRejected); 0060 ret.setExpiryDateTime(QDateTime::fromString(expiryStr, Qt::ISODate)); 0061 ret.setIgnoredErrors(ignoredErrors); 0062 rule = ret; 0063 return argument; 0064 } 0065 0066 inline QDBusArgument &operator<<(QDBusArgument &argument, const QSslError::SslError &error) 0067 { 0068 argument.beginStructure(); // overhead ho! 0069 argument << static_cast<int>(error); 0070 argument.endStructure(); 0071 return argument; 0072 } 0073 0074 inline const QDBusArgument &operator>>(const QDBusArgument &argument, QSslError::SslError &error) 0075 { 0076 int data; 0077 argument.beginStructure(); 0078 argument >> data; 0079 argument.endStructure(); 0080 error = static_cast<QSslError::SslError>(data); 0081 return argument; 0082 } 0083 0084 static void registerMetaTypesForKSSLD() 0085 { 0086 qDBusRegisterMetaType<QSslCertificate>(); 0087 qDBusRegisterMetaType<KSslCertificateRule>(); 0088 qDBusRegisterMetaType<QList<QSslCertificate>>(); 0089 qDBusRegisterMetaType<QSslError::SslError>(); 0090 qDBusRegisterMetaType<QList<QSslError::SslError>>(); 0091 } 0092 0093 #endif // KSSLD_DBUSMETATYPES_H