From fdb64c59865e4db76addfb8222f6421443e25240 Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Tue, 3 Feb 2026 15:59:29 +0100 Subject: Import files from xxcc --- omemo_db.cpp | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 omemo_db.cpp (limited to 'omemo_db.cpp') diff --git a/omemo_db.cpp b/omemo_db.cpp new file mode 100644 index 0000000..c1949c0 --- /dev/null +++ b/omemo_db.cpp @@ -0,0 +1,93 @@ +#include "omemo_db.h" +#include +#include +#include +#include +#include + +static const QString service = "xxcc", key_namespace = "omemo"; + +OmemoDb::OmemoDb(const JidDb &db) : + db(db) +{ +} + +QXmppTask OmemoDb::allData() +{ + QXmppOmemoStorage::OmemoData ret; + QHash> devices; + + for (const auto &d : db.omemoDevices()) + ret.devices.insert(d.jid, d.devices); + + ret.ownDevice = db.omemoOwnDevice(); + ret.preKeyPairs = db.preKeyPairs(); + ret.signedPreKeyPairs = db.signedPreKeyPairs(); + return QXmpp::Private::makeReadyTask(QXmppOmemoStorage::OmemoData(ret)); +} + +QXmppTask OmemoDb::setOwnDevice(const std::optional &device) +{ + if (device.has_value() && db.store(device.value())) + std::cerr << "db.store failed" << std::endl; + + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask OmemoDb::addSignedPreKeyPair(const uint32_t keyId, + const SignedPreKeyPair &keyPair) +{ + if (db.store(keyId, keyPair)) + std::cerr << "db.store failed" << std::endl; + + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask OmemoDb::removeSignedPreKeyPair(uint32_t keyId) +{ + db.removeSignedPreKeyPair(keyId); + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask OmemoDb::addPreKeyPairs( + const QHash &keyPairs) +{ + if (db.store(keyPairs)) + std::cerr << "db.store failed" << std::endl; + + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask OmemoDb::removePreKeyPair(const uint32_t keyId) +{ + db.removePreKeyPair(keyId); + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask OmemoDb::addDevice(const QString &jid, + const uint32_t deviceId, const Device &d) +{ + if (db.store(jid, deviceId, d)) + std::cerr << "db.store failed" << std::endl; + + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask OmemoDb::removeDevice(const QString &jid, + const uint32_t deviceId) +{ + db.removeOmemoDevice(jid, deviceId); + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask OmemoDb::removeDevices(const QString &jid) +{ + db.removeOmemoDevices(jid); + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask OmemoDb::resetAll() +{ + db.removeOmemo(); + return QXmpp::Private::makeReadyTask(); +} -- cgit v1.2.3