diff options
| author | Melvin Keskin <melvo@olomono.de> | 2022-05-09 21:45:49 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-08-13 15:55:03 +0200 |
| commit | ceb62dd9d0d86bc8327ace116930962cf7fad1e9 (patch) | |
| tree | 35bdcccf3e1bebddadcdab6205383975ca66e4c4 /src/client/QXmppOmemoMemoryStorage.h | |
| parent | ec0669845b9072ea6cdc0fefb66f1d07511386a4 (diff) | |
| download | qxmpp-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.h | 43 |
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 |
