aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppTrustManager.h
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-04-19 20:05:16 +0200
committerLinus Jahn <lnj@kaidan.im>2022-05-06 13:36:43 +0200
commit4c565dd7dd78340a393ccbf4bc3bed9f6ce360f2 (patch)
treebc8f94f355a90b3c5b0380993ed13fd5d2e02032 /src/client/QXmppTrustManager.h
parent2000431680f4ddf58f3fbe9ea138dd18bc9a1b8c (diff)
downloadqxmpp-4c565dd7dd78340a393ccbf4bc3bed9f6ce360f2.tar.gz
Add QXmppTrustManager as base of trust managers such as QXmppAtmManager
Diffstat (limited to 'src/client/QXmppTrustManager.h')
-rw-r--r--src/client/QXmppTrustManager.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/client/QXmppTrustManager.h b/src/client/QXmppTrustManager.h
new file mode 100644
index 00000000..9081af92
--- /dev/null
+++ b/src/client/QXmppTrustManager.h
@@ -0,0 +1,59 @@
+// SPDX-FileCopyrightText: 2022 Melvin Keskin <melvo@olomono.de>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#ifndef QXMPPTRUSTMANAGER_H
+#define QXMPPTRUSTMANAGER_H
+
+#include "QXmppClientExtension.h"
+#include "QXmppTrustStorage.h"
+
+class QXMPP_EXPORT QXmppTrustManager : public QXmppClientExtension
+{
+ Q_OBJECT
+
+public:
+ QXmppTrustManager(QXmppTrustStorage *trustStorage);
+ ~QXmppTrustManager();
+
+ QFuture<void> setSecurityPolicy(const QString &encryption, QXmppTrustStorage::SecurityPolicy securityPolicy);
+ QFuture<void> resetSecurityPolicy(const QString &encryption);
+ QFuture<QXmppTrustStorage::SecurityPolicy> securityPolicy(const QString &encryption);
+
+ QFuture<void> setOwnKey(const QString &encryption, const QByteArray &keyId);
+ QFuture<void> resetOwnKey(const QString &encryption);
+ QFuture<QByteArray> ownKey(const QString &encryption);
+
+ QFuture<void> addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, QXmppTrustStorage::TrustLevel trustLevel = QXmppTrustStorage::AutomaticallyDistrusted);
+ QFuture<void> removeKeys(const QString &encryption, const QList<QByteArray> &keyIds);
+ QFuture<void> removeKeys(const QString &encryption, const QString &keyOwnerJid);
+ QFuture<void> removeKeys(const QString &encryption);
+ QFuture<QHash<QXmppTrustStorage::TrustLevel, QMultiHash<QString, QByteArray>>> keys(const QString &encryption, QXmppTrustStorage::TrustLevels trustLevels = {});
+ QFuture<QHash<QString, QHash<QByteArray, QXmppTrustStorage::TrustLevel>>> keys(const QString &encryption, const QList<QString> &keyOwnerJids, QXmppTrustStorage::TrustLevels trustLevels = {});
+ QFuture<bool> hasKey(const QString &encryption, const QString &keyOwnerJid, QXmppTrustStorage::TrustLevels trustLevels);
+
+ QFuture<void> setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, QXmppTrustStorage::TrustLevel trustLevel);
+ QFuture<void> setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, QXmppTrustStorage::TrustLevel oldTrustLevel, QXmppTrustStorage::TrustLevel newTrustLevel);
+ QFuture<QXmppTrustStorage::TrustLevel> trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId);
+
+ QFuture<void> resetAll(const QString &encryption);
+
+ /// \cond
+ bool handleStanza(const QDomElement &stanza) override;
+ /// \endcond
+
+ Q_SIGNAL void trustLevelsChanged(const QHash<QString, QMultiHash<QString, QByteArray>> &modifiedKeys);
+
+protected:
+ /// \cond
+ inline QXmppTrustStorage *trustStorage() const
+ {
+ return m_trustStorage;
+ }
+ /// \endcond
+
+private:
+ QXmppTrustStorage *m_trustStorage;
+};
+
+#endif // QXMPPTRUSTMANAGER_H