5#ifndef QXMPPOMEMOMANAGER_H
6#define QXMPPOMEMOMANAGER_H
8#include "QXmppClientExtension.h"
9#include "QXmppE2eeExtension.h"
10#include "QXmppMessageHandler.h"
11#include "QXmppPubSubEventHandler.h"
12#include "QXmppTrustSecurityPolicy.h"
13#include "qxmppomemo_export.h"
15class QXmppOmemoDevicePrivate;
16class QXmppOmemoManagerPrivate;
17class QXmppOmemoOwnDevicePrivate;
31 QString
label() const;
34 QByteArray
keyId() const;
38 QSharedDataPointer<QXmppOmemoOwnDevicePrivate> d;
55 QString
label() const;
58 QByteArray
keyId() const;
65 QSharedDataPointer<QXmppOmemoDevicePrivate> d;
73 using Result = std::variant<QXmpp::Success, QXmppError>;
75 struct DevicesResult {
88 QXmppTask<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> keys(
const QList<QString> &jids, QXmpp::TrustLevels trustLevels = {});
90 QXmppTask<bool> changeDeviceLabel(
const QString &deviceLabel = {});
92 int maximumDevicesPerJid()
const;
93 void setMaximumDevicesPerJid(
int maximum);
95 int maximumDevicesPerStanza()
const;
96 void setMaximumDevicesPerStanza(
int maximum);
98 QXmppTask<QVector<DevicesResult>> requestDeviceLists(
const QList<QString> &jids);
99 QXmppTask<QVector<DevicesResult>> subscribeToDeviceLists(
const QList<QString> &jids);
100 QXmppTask<QVector<DevicesResult>> unsubscribeFromDeviceLists();
102 QXmppOmemoOwnDevice ownDevice();
103 QXmppTask<QVector<QXmppOmemoDevice>> devices();
104 QXmppTask<QVector<QXmppOmemoDevice>> devices(
const QList<QString> &jids);
105 QXmppTask<Result> removeContactDevices(
const QString &jid);
107 void setAcceptedSessionBuildingTrustLevels(QXmpp::TrustLevels trustLevels);
108 QXmpp::TrustLevels acceptedSessionBuildingTrustLevels();
110 void setNewDeviceAutoSessionBuildingEnabled(
bool isNewDeviceAutoSessionBuildingEnabled);
111 bool isNewDeviceAutoSessionBuildingEnabled();
113 QXmppTask<void> buildMissingSessions(
const QList<QString> &jids);
115 QXmppTask<bool> resetOwnDevice();
116 QXmppTask<void> resetOwnDeviceLocally();
117 QXmppTask<bool> resetAll();
120 QXmppTask<QXmpp::TrustSecurityPolicy> securityPolicy();
122 QXmppTask<void> setTrustLevel(
const QMultiHash<QString, QByteArray> &keyIds,
QXmpp::TrustLevel trustLevel);
123 QXmppTask<QXmpp::TrustLevel> trustLevel(
const QString &keyOwnerJid,
const QByteArray &keyId);
126 QXmppTask<MessageEncryptResult> encryptMessage(QXmppMessage &&message,
const std::optional<QXmppSendStanzaParams> ¶ms)
override;
127 QXmppTask<MessageDecryptResult> decryptMessage(QXmppMessage &&message)
override;
129 QXmppTask<IqEncryptResult> encryptIq(QXmppIq &&iq,
const std::optional<QXmppSendStanzaParams> ¶ms)
override;
130 QXmppTask<IqDecryptResult> decryptIq(
const QDomElement &element)
override;
132 bool isEncrypted(
const QDomElement &)
override;
133 bool isEncrypted(
const QXmppMessage &)
override;
135 QStringList discoveryFeatures()
const override;
136 bool handleStanza(
const QDomElement &stanza)
override;
137 bool handleMessage(
const QXmppMessage &message)
override;
152 bool handlePubSubEvent(
const QDomElement &element,
const QString &pubSubService,
const QString &nodeName)
override;
156 std::unique_ptr<QXmppOmemoManagerPrivate> d;
158 friend class QXmppOmemoManagerPrivate;
159 friend class tst_QXmppOmemoManager;
virtual void onUnregistered(QXmppClient *client)
Definition QXmppClientExtension.cpp:95
virtual void onRegistered(QXmppClient *client)
Definition QXmppClientExtension.cpp:85
QXmppClient * client() const
Definition QXmppClientExtension.cpp:57
QXmppClientExtension()
Definition QXmppClientExtension.cpp:12
Definition QXmppE2eeExtension.h:23
Definition QXmppMessageHandler.h:16
QString label() const
Definition QXmppOmemoManager.cpp:169
void setTrustLevel(QXmpp::TrustLevel trustLevel)
Definition QXmppOmemoManager.cpp:221
QXmpp::TrustLevel trustLevel() const
Definition QXmppOmemoManager.cpp:211
QXmppOmemoDevice()
Definition QXmppOmemoManager.cpp:127
QByteArray keyId() const
Definition QXmppOmemoManager.cpp:191
QXmppOmemoDevice(QXmppOmemoDevice &&) noexcept
Move-constructor.
QXmppOmemoDevice(const QXmppOmemoDevice &other)
Copy-constructor.
void setLabel(const QString &label)
Definition QXmppOmemoManager.cpp:181
void setKeyId(const QByteArray &keyId)
Definition QXmppOmemoManager.cpp:201
QString jid() const
Definition QXmppOmemoManager.cpp:147
void setJid(const QString &jid)
Definition QXmppOmemoManager.cpp:157
Definition QXmppOmemoManager.h:69
Q_SIGNAL void devicesRemoved(const QString &jid)
Q_SIGNAL void deviceAdded(const QString &jid, uint32_t deviceId)
Q_SIGNAL void deviceChanged(const QString &jid, uint32_t deviceId)
std::variant< QXmpp::Success, QXmppError > Result
Definition QXmppOmemoManager.h:73
QXmppOmemoManager(QXmppOmemoStorage *omemoStorage)
Definition QXmppOmemoManager.cpp:333
Q_SIGNAL void deviceRemoved(const QString &jid, uint32_t deviceId)
Q_SIGNAL void trustLevelsChanged(const QMultiHash< QString, QByteArray > &modifiedKeys)
Q_SIGNAL void allDevicesRemoved()
void setLabel(const QString &label)
Definition QXmppOmemoManager.cpp:84
QByteArray keyId() const
Definition QXmppOmemoManager.cpp:94
void setKeyId(const QByteArray &keyId)
Definition QXmppOmemoManager.cpp:104
QXmppOmemoOwnDevice()
Definition QXmppOmemoManager.cpp:50
QString label() const
Definition QXmppOmemoManager.cpp:72
QXmppOmemoOwnDevice(const QXmppOmemoOwnDevice &other)
Copy-constructor.
QXmppOmemoOwnDevice(QXmppOmemoOwnDevice &&) noexcept
Move-constructor.
The QXmppOmemoStorage class stores data used by XEP-0384: OMEMO Encryption.
Definition QXmppOmemoStorage.h:17
Definition QXmppPubSubEventHandler.h:15
virtual bool handlePubSubEvent(const QDomElement &element, const QString &pubSubService, const QString &nodeName)=0
Definition QXmppTask.h:62
Definition Algorithms.h:12
TrustLevel
Definition QXmppTrustLevel.h:19
TrustSecurityPolicy
Definition QXmppTrustSecurityPolicy.h:18