aboutsummaryrefslogtreecommitdiff
path: root/lib/olm/qolmaccount.h
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2021-01-26 20:13:20 +0100
committerTobias Fella <fella@posteo.de>2021-12-01 21:34:52 +0100
commit987d399bc9ce628c376d505e3ebb78ae703d7c68 (patch)
tree6480f5790dc77d209ae0855b8b9245b390aae899 /lib/olm/qolmaccount.h
parentdca69e8326ce6fd0374123ad8c167a2b0051d8fb (diff)
downloadlibquotient-987d399bc9ce628c376d505e3ebb78ae703d7c68.tar.gz
libquotient-987d399bc9ce628c376d505e3ebb78ae703d7c68.zip
Improve API
Diffstat (limited to 'lib/olm/qolmaccount.h')
-rw-r--r--lib/olm/qolmaccount.h35
1 files changed, 26 insertions, 9 deletions
diff --git a/lib/olm/qolmaccount.h b/lib/olm/qolmaccount.h
index c478c781..3b55212d 100644
--- a/lib/olm/qolmaccount.h
+++ b/lib/olm/qolmaccount.h
@@ -20,36 +20,53 @@ namespace Quotient {
class QOlmAccount
{
public:
+ QOlmAccount(const QString &userId, const QString &deviceId);
~QOlmAccount();
//! Creates a new instance of OlmAccount. During the instantiation
//! the Ed25519 fingerprint key pair and the Curve25519 identity key
//! pair are generated. For more information see <a
//! href="https://matrix.org/docs/guides/e2e_implementation.html#keys-used-in-end-to-end-encryption">here</a>.
- static std::optional<QOlmAccount> create();
- static std::variant<QOlmAccount, OlmError> unpickle(QByteArray &picked, const PicklingMode &mode);
+ //! This needs to be called before any other action or use unpickle() instead.
+ void createNewAccount();
+
+ //! Deserialises from encrypted Base64 that was previously obtained by pickling a `QOlmAccount`.
+ //! This needs to be called before any other action or use createNewAccount() instead.
+ void unpickle(QByteArray &picked, const PicklingMode &mode);
//! Serialises an OlmAccount to encrypted Base64.
std::variant<QByteArray, OlmError> pickle(const PicklingMode &mode);
- std::variant<IdentityKeys, OlmError> identityKeys();
+
+ //! Returns the account's public identity keys already formatted as JSON
+ IdentityKeys identityKeys() const;
//! Returns the signature of the supplied message.
- std::variant<QString, OlmError> sign(const QString &message) const;
+ QByteArray sign(const QByteArray &message) const;
+
+ //! Sign identity keys.
+ QByteArray signIdentityKeys() const;
//! Maximum number of one time keys that this OlmAccount can
//! currently hold.
size_t maxNumberOfOneTimeKeys() const;
//! Generates the supplied number of one time keys.
- std::optional<OlmError> generateOneTimeKeys(size_t numberOfKeys) const;
+ void generateOneTimeKeys(size_t numberOfKeys) const;
//! Gets the OlmAccount's one time keys formatted as JSON.
- std::variant<OneTimeKeys, OlmError> oneTimeKeys() const;
+ OneTimeKeys oneTimeKeys() const;
+
+ //! Sign all time key.
+ QMap<QString, SignedOneTimeKey> signOneTimeKeys(const OneTimeKeys &keys) const;
+
+ //! Sign one time key.
+ QByteArray signOneTimeKey(const QString &key) const;
- // HACK do not use directly
- QOlmAccount(OlmAccount *account);
+ SignedOneTimeKey signedOneTimeKey(const QByteArray &key, const QString &signature) const;
private:
- OlmAccount *m_account;
+ OlmAccount *m_account = nullptr;
+ QString m_userId;
+ QString m_deviceId;
};
} // namespace Quotient