94 lines
2.3 KiB
C++
94 lines
2.3 KiB
C++
#include "omemo_db.h"
|
|
#include <QXmppConfiguration.h>
|
|
#include <QXmppFutureUtils_p.h>
|
|
#include <QString>
|
|
#include <iostream>
|
|
#include <optional>
|
|
|
|
static const QString service = "xxcc", key_namespace = "omemo";
|
|
|
|
OmemoDb::OmemoDb(const JidDb &db) :
|
|
db(db)
|
|
{
|
|
}
|
|
|
|
QXmppTask<QXmppOmemoStorage::OmemoData> OmemoDb::allData()
|
|
{
|
|
QXmppOmemoStorage::OmemoData ret;
|
|
QHash<QString, QHash<uint32_t, Device>> 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<void> OmemoDb::setOwnDevice(const std::optional<OwnDevice> &device)
|
|
{
|
|
if (device.has_value() && db.store(device.value()))
|
|
std::cerr << "db.store failed" << std::endl;
|
|
|
|
return QXmpp::Private::makeReadyTask();
|
|
}
|
|
|
|
QXmppTask<void> 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<void> OmemoDb::removeSignedPreKeyPair(uint32_t keyId)
|
|
{
|
|
db.removeSignedPreKeyPair(keyId);
|
|
return QXmpp::Private::makeReadyTask();
|
|
}
|
|
|
|
QXmppTask<void> OmemoDb::addPreKeyPairs(
|
|
const QHash<uint32_t, QByteArray> &keyPairs)
|
|
{
|
|
if (db.store(keyPairs))
|
|
std::cerr << "db.store failed" << std::endl;
|
|
|
|
return QXmpp::Private::makeReadyTask();
|
|
}
|
|
|
|
QXmppTask<void> OmemoDb::removePreKeyPair(const uint32_t keyId)
|
|
{
|
|
db.removePreKeyPair(keyId);
|
|
return QXmpp::Private::makeReadyTask();
|
|
}
|
|
|
|
QXmppTask<void> 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<void> OmemoDb::removeDevice(const QString &jid,
|
|
const uint32_t deviceId)
|
|
{
|
|
db.removeOmemoDevice(jid, deviceId);
|
|
return QXmpp::Private::makeReadyTask();
|
|
}
|
|
|
|
QXmppTask<void> OmemoDb::removeDevices(const QString &jid)
|
|
{
|
|
db.removeOmemoDevices(jid);
|
|
return QXmpp::Private::makeReadyTask();
|
|
}
|
|
|
|
QXmppTask<void> OmemoDb::resetAll()
|
|
{
|
|
db.removeOmemo();
|
|
return QXmpp::Private::makeReadyTask();
|
|
}
|