aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppOmemoMemoryStorage.h
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-05-09 21:45:49 +0200
committerLinus Jahn <lnj@kaidan.im>2022-08-13 15:55:03 +0200
commitceb62dd9d0d86bc8327ace116930962cf7fad1e9 (patch)
tree35bdcccf3e1bebddadcdab6205383975ca66e4c4 /src/client/QXmppOmemoMemoryStorage.h
parentec0669845b9072ea6cdc0fefb66f1d07511386a4 (diff)
downloadqxmpp-ceb62dd9d0d86bc8327ace116930962cf7fad1e9.tar.gz
Implement XEP-0384: OMEMO Encryption v0.8
This implements XEP-0384 in version v0.8 with a manager and storage classes to be user-implemented for persistant storage. The license of the code is LGPL-2.1-or-later as usual. However since libomemo-c (libsignal-protocol-c) is GPL-3.0, the built binary is always licensed under GPL-3.0. Having our code LGPL licensed will make it avoids relicensing in the future in case we port it to an LGPL compatible omemo library. Closes #133. Co-authored-by: Linus Jahn <lnj@kaidan.im>
Diffstat (limited to 'src/client/QXmppOmemoMemoryStorage.h')
-rw-r--r--src/client/QXmppOmemoMemoryStorage.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/client/QXmppOmemoMemoryStorage.h b/src/client/QXmppOmemoMemoryStorage.h
new file mode 100644
index 00000000..dc935de6
--- /dev/null
+++ b/src/client/QXmppOmemoMemoryStorage.h
@@ -0,0 +1,43 @@
+// SPDX-FileCopyrightText: 2022 Melvin Keskin <melvo@olomono.de>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#ifndef QXMPPOMEMOMEMORYSTORAGE_H
+#define QXMPPOMEMOMEMORYSTORAGE_H
+
+#include "QXmppGlobal.h"
+#include "QXmppOmemoStorage.h"
+
+#include <memory>
+
+class QXmppOmemoMemoryStoragePrivate;
+
+class QXMPP_EXPORT QXmppOmemoMemoryStorage : public QXmppOmemoStorage
+{
+public:
+ QXmppOmemoMemoryStorage();
+ ~QXmppOmemoMemoryStorage() override;
+
+ /// \cond
+ QFuture<OmemoData> allData() override;
+
+ QFuture<void> setOwnDevice(const std::optional<OwnDevice> &device) override;
+
+ QFuture<void> addSignedPreKeyPair(uint32_t keyId, const SignedPreKeyPair &keyPair) override;
+ QFuture<void> removeSignedPreKeyPair(uint32_t keyId) override;
+
+ QFuture<void> addPreKeyPairs(const QHash<uint32_t, QByteArray> &keyPairs) override;
+ QFuture<void> removePreKeyPair(uint32_t keyId) override;
+
+ QFuture<void> addDevice(const QString &jid, uint32_t deviceId, const Device &device) override;
+ QFuture<void> removeDevice(const QString &jid, uint32_t deviceId) override;
+ QFuture<void> removeDevices(const QString &jid) override;
+
+ QFuture<void> resetAll() override;
+ /// \endcond
+
+private:
+ std::unique_ptr<QXmppOmemoMemoryStoragePrivate> d;
+};
+
+#endif // QXMPPOMEMOMEMORYSTORAGE_H