File indexing completed on 2024-04-21 03:55:10
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) << rule.ignoredErrors(); 0042 argument.endStructure(); 0043 return argument; 0044 } 0045 0046 inline const QDBusArgument &operator>>(const QDBusArgument &argument, KSslCertificateRule &rule) 0047 { 0048 QSslCertificate cert; 0049 QString hostName; 0050 bool isRejected; 0051 QString expiryStr; 0052 QList<QSslError::SslError> ignoredErrors; 0053 argument.beginStructure(); 0054 argument >> cert >> hostName >> isRejected >> expiryStr >> ignoredErrors; 0055 argument.endStructure(); 0056 0057 KSslCertificateRule ret(cert, hostName); 0058 ret.setRejected(isRejected); 0059 ret.setExpiryDateTime(QDateTime::fromString(expiryStr, Qt::ISODate)); 0060 ret.setIgnoredErrors(ignoredErrors); 0061 rule = ret; 0062 return argument; 0063 } 0064 0065 inline QDBusArgument &operator<<(QDBusArgument &argument, const QSslError::SslError &error) 0066 { 0067 argument.beginStructure(); // overhead ho! 0068 argument << static_cast<int>(error); 0069 argument.endStructure(); 0070 return argument; 0071 } 0072 0073 inline const QDBusArgument &operator>>(const QDBusArgument &argument, QSslError::SslError &error) 0074 { 0075 int data; 0076 argument.beginStructure(); 0077 argument >> data; 0078 argument.endStructure(); 0079 error = static_cast<QSslError::SslError>(data); 0080 return argument; 0081 } 0082 0083 static void registerMetaTypesForKSSLD() 0084 { 0085 qDBusRegisterMetaType<QSslCertificate>(); 0086 qDBusRegisterMetaType<KSslCertificateRule>(); 0087 qDBusRegisterMetaType<QList<QSslCertificate>>(); 0088 qDBusRegisterMetaType<QSslError::SslError>(); 0089 qDBusRegisterMetaType<QList<QSslError::SslError>>(); 0090 } 0091 0092 #endif // KSSLD_DBUSMETATYPES_H