aboutsummaryrefslogtreecommitdiff
path: root/lib/e2ee/qolmsession.h
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-02-15 20:51:32 +0100
committerAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-02-16 17:58:17 +0100
commit53dfa70601b2d27a6be12d52e86af123d0b26b79 (patch)
treea8629e4a229edfeec7c5f32ab72db7d63dc1ed06 /lib/e2ee/qolmsession.h
parent52a787eefb3fb3d147648d08fc439a4b8a966fd3 (diff)
downloadlibquotient-53dfa70601b2d27a6be12d52e86af123d0b26b79.tar.gz
libquotient-53dfa70601b2d27a6be12d52e86af123d0b26b79.zip
Cleanup
A note on switching to QLatin1String for JSON key constants - this is more concise and barely affects (if at all) runtime performance (padding each QChar with zeros is trivial for assignment; and comparison can be done directly with the same performance as for two QStrings).
Diffstat (limited to 'lib/e2ee/qolmsession.h')
-rw-r--r--lib/e2ee/qolmsession.h41
1 files changed, 28 insertions, 13 deletions
diff --git a/lib/e2ee/qolmsession.h b/lib/e2ee/qolmsession.h
index 889a606d..f20c9837 100644
--- a/lib/e2ee/qolmsession.h
+++ b/lib/e2ee/qolmsession.h
@@ -16,20 +16,31 @@ namespace Quotient {
class QOlmAccount;
class QOlmSession;
-
//! Either an outbound or inbound session for secure communication.
class QUOTIENT_API QOlmSession
{
public:
~QOlmSession();
//! Creates an inbound session for sending/receiving messages from a received 'prekey' message.
- static std::variant<std::unique_ptr<QOlmSession>, QOlmError> createInboundSession(QOlmAccount *account, const QOlmMessage &preKeyMessage);
- static std::variant<std::unique_ptr<QOlmSession>, QOlmError> createInboundSessionFrom(QOlmAccount *account, const QString &theirIdentityKey, const QOlmMessage &preKeyMessage);
- static std::variant<std::unique_ptr<QOlmSession>, QOlmError> createOutboundSession(QOlmAccount *account, const QString &theirIdentityKey, const QString &theirOneTimeKey);
+ static std::variant<std::unique_ptr<QOlmSession>, QOlmError>
+ createInboundSession(QOlmAccount* account, const QOlmMessage& preKeyMessage);
+
+ static std::variant<std::unique_ptr<QOlmSession>, QOlmError>
+ createInboundSessionFrom(QOlmAccount* account,
+ const QString& theirIdentityKey,
+ const QOlmMessage& preKeyMessage);
+
+ static std::variant<std::unique_ptr<QOlmSession>, QOlmError>
+ createOutboundSession(QOlmAccount* account, const QString& theirIdentityKey,
+ const QString& theirOneTimeKey);
+
//! Serialises an `QOlmSession` to encrypted Base64.
std::variant<QByteArray, QOlmError> pickle(const PicklingMode &mode);
+
//! Deserialises from encrypted Base64 that was previously obtained by pickling a `QOlmSession`.
- static std::variant<std::unique_ptr<QOlmSession>, QOlmError> unpickle(const QByteArray &pickled, const PicklingMode &mode);
+ static std::variant<std::unique_ptr<QOlmSession>, QOlmError> unpickle(
+ const QByteArray& pickled, const PicklingMode& mode);
+
//! Encrypts a plaintext message using the session.
QOlmMessage encrypt(const QString &plaintext);
@@ -48,29 +59,33 @@ public:
bool hasReceivedMessage() const;
//! Checks if the 'prekey' message is for this in-bound session.
- std::variant<bool, QOlmError> matchesInboundSession(const QOlmMessage &preKeyMessage) const;
+ std::variant<bool, QOlmError> matchesInboundSession(
+ const QOlmMessage& preKeyMessage) const;
//! Checks if the 'prekey' message is for this in-bound session.
- std::variant<bool, QOlmError> matchesInboundSessionFrom(const QString &theirIdentityKey, const QOlmMessage &preKeyMessage) const;
+ std::variant<bool, QOlmError> matchesInboundSessionFrom(
+ const QString& theirIdentityKey, const QOlmMessage& preKeyMessage) const;
friend bool operator<(const QOlmSession& lhs, const QOlmSession& rhs)
{
return lhs.sessionId() < rhs.sessionId();
}
- friend bool operator<(const std::unique_ptr<QOlmSession> &lhs, const std::unique_ptr<QOlmSession> &rhs) {
+ friend bool operator<(const std::unique_ptr<QOlmSession>& lhs,
+ const std::unique_ptr<QOlmSession>& rhs)
+ {
return *lhs < *rhs;
}
- OlmSession *raw() const
- {
- return m_session;
- }
+ OlmSession* raw() const { return m_session; }
+
QOlmSession(OlmSession* session);
private:
//! Helper function for creating new sessions and handling errors.
static OlmSession* create();
- static std::variant<std::unique_ptr<QOlmSession>, QOlmError> createInbound(QOlmAccount *account, const QOlmMessage& preKeyMessage, bool from = false, const QString& theirIdentityKey = "");
+ static std::variant<std::unique_ptr<QOlmSession>, QOlmError> createInbound(
+ QOlmAccount* account, const QOlmMessage& preKeyMessage,
+ bool from = false, const QString& theirIdentityKey = "");
OlmSession* m_session;
};
} //namespace Quotient