From ceb62dd9d0d86bc8327ace116930962cf7fad1e9 Mon Sep 17 00:00:00 2001 From: Melvin Keskin Date: Mon, 9 May 2022 21:45:49 +0200 Subject: 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 --- src/client/QXmppOmemoMemoryStorage.h | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/client/QXmppOmemoMemoryStorage.h (limited to 'src/client/QXmppOmemoMemoryStorage.h') 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 +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#ifndef QXMPPOMEMOMEMORYSTORAGE_H +#define QXMPPOMEMOMEMORYSTORAGE_H + +#include "QXmppGlobal.h" +#include "QXmppOmemoStorage.h" + +#include + +class QXmppOmemoMemoryStoragePrivate; + +class QXMPP_EXPORT QXmppOmemoMemoryStorage : public QXmppOmemoStorage +{ +public: + QXmppOmemoMemoryStorage(); + ~QXmppOmemoMemoryStorage() override; + + /// \cond + QFuture allData() override; + + QFuture setOwnDevice(const std::optional &device) override; + + QFuture addSignedPreKeyPair(uint32_t keyId, const SignedPreKeyPair &keyPair) override; + QFuture removeSignedPreKeyPair(uint32_t keyId) override; + + QFuture addPreKeyPairs(const QHash &keyPairs) override; + QFuture removePreKeyPair(uint32_t keyId) override; + + QFuture addDevice(const QString &jid, uint32_t deviceId, const Device &device) override; + QFuture removeDevice(const QString &jid, uint32_t deviceId) override; + QFuture removeDevices(const QString &jid) override; + + QFuture resetAll() override; + /// \endcond + +private: + std::unique_ptr d; +}; + +#endif // QXMPPOMEMOMEMORYSTORAGE_H -- cgit v1.2.3