diff options
| author | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-08-28 00:20:54 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-09-18 10:35:30 +0200 |
| commit | 5bbe04c9ca091a0626f34afe5e3ba2141e2963de (patch) | |
| tree | 35e76183618fe557b4ded5735fb846e3c6cf3995 /jiddb.h | |
| parent | d32b9e93572c5e6999a7323139de38cc1a7197cf (diff) | |
| download | xxcc-5bbe04c9ca091a0626f34afe5e3ba2141e2963de.tar.gz | |
WIP OMEMO TrustDb/JidDb
Diffstat (limited to 'jiddb.h')
| -rw-r--r-- | jiddb.h | 64 |
1 files changed, 62 insertions, 2 deletions
@@ -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; }; |
