aboutsummaryrefslogtreecommitdiff
path: root/jiddb.h
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-08-28 00:20:54 +0200
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-09-18 10:35:30 +0200
commit5bbe04c9ca091a0626f34afe5e3ba2141e2963de (patch)
tree35e76183618fe557b4ded5735fb846e3c6cf3995 /jiddb.h
parentd32b9e93572c5e6999a7323139de38cc1a7197cf (diff)
downloadxxcc-5bbe04c9ca091a0626f34afe5e3ba2141e2963de.tar.gz
WIP OMEMO TrustDb/JidDb
Diffstat (limited to 'jiddb.h')
-rw-r--r--jiddb.h64
1 files changed, 62 insertions, 2 deletions
diff --git a/jiddb.h b/jiddb.h
index a9f9c8b..6c9dcb8 100644
--- a/jiddb.h
+++ b/jiddb.h
@@ -2,12 +2,17 @@
#define JID_DB_H
#include "direction.h"
+#include <QByteArray>
#include <QDateTime>
#include <QList>
#include <QObject>
+#include <QPair>
#include <QString>
#include <QStringList>
#include <QSqlDatabase>
+#include <QXmppOmemoStorage.h>
+#include <QVariant>
+#include <optional>
class JidDb : public QObject
{
@@ -30,6 +35,30 @@ public:
QDateTime dt;
};
+ struct Trust
+ {
+ QString security_policy;
+ };
+
+ struct Keys
+ {
+ Keys() {}
+ Keys(const QString &owner, const QString &trust_level,
+ const QList<QByteArray> &keys) :
+ owner(owner),
+ trust_level(trust_level),
+ keys(keys)
+ {}
+ QString owner, trust_level;
+ QList<QByteArray> keys;
+ };
+
+ struct OmemoDevice
+ {
+ QString jid;
+ QHash<uint32_t, QXmppOmemoStorage::Device> devices;
+ };
+
JidDb(const QString &jid);
QStringList roster() const;
const QString &jid;
@@ -38,16 +67,47 @@ public Q_SLOTS:
QList<Conversation> conversations() const;
QList<Message> messages(const QString &jid,
int tail = -1) const;
- int storeMessage(const Message &msg) const;
+ QList<Keys> keys(const QString &encryption) const;
+ QString securityPolicy(const QString &encryption) const;
+ QList<OmemoDevice> omemoDevices() const;
+ std::optional<QXmppOmemoStorage::OwnDevice> omemoOwnDevice() const;
+ QHash<uint32_t, QXmppOmemoStorage::SignedPreKeyPair> signedPreKeyPairs()
+ const;
+ QHash<uint32_t, QByteArray> preKeyPairs() const;
+ QByteArray ownKeyId(const QString &encryption) const;
int addToRoster(const QString &jid);
int addToRoster(const QStringList &roster);
+ int store(const Message &msg) const;
+ int store(const QString &encryption,
+ const QString &securityPolicy) const;
+ int store(const QString &encryption, const Keys &keys) const;
+ int store(const QString &jid, uint32_t id,
+ const QXmppOmemoStorage::Device &d) const;
+ int store(uint32_t id, const QXmppOmemoStorage::SignedPreKeyPair &spk) const;
+ int store(const QHash<uint32_t, QByteArray> &pairs) const;
+ int store(const QXmppOmemoStorage::OwnDevice &own) const;
+ int store(const QString &encryption, const QByteArray &ownId) const;
+ void removeKeys(const QString &encryption) const;
+ void removeOmemoDevice(const QString &jid, uint32_t id) const;
+ void removeOmemoDevices(const QString &jid) const;
+ void removeOmemo() const;
+ void removeSignedPreKeyPair(uint32_t id) const;
+ void removePreKeyPair(uint32_t id) const;
Q_SIGNALS:
void addedToRoster(QString jid);
private:
QSqlDatabase db;
- int ensureContactDb(const QString &jid) const;
+ int ensureSecurityPolicyTable(const QString &encryption,
+ QString &table) const;
+ int ensureContactTable(const QString &jid) const;
+ int ensureKeysTable(const QString &encryption, QString &table) const;
+ int ensureOmemoDeviceTable() const;
+ int ensureOmemoSignedPreKeyTable() const;
+ int ensureOmemoPreKeyTable() const;
+ int ensureOmemoOwnDeviceTable() const;
+ int ensureOwnIdTable(const QString &encryption, QString &table) const;
QStringList tables() const;
};