aboutsummaryrefslogtreecommitdiff
path: root/lib/crypto/session.h
diff options
context:
space:
mode:
authorAlexey Andreyev <aa13q@ya.ru>2021-01-28 23:51:56 +0300
committerTobias Fella <fella@posteo.de>2021-12-01 21:34:52 +0100
commitd72f220e3e3a3b243fdafd93d1405f8207dc516a (patch)
treef4306b6397e39d6842a29f9a31fe5c858be8a4af /lib/crypto/session.h
parent9f71b2a79fba7c5d5ce09ebfdd482c8c470203d9 (diff)
downloadlibquotient-d72f220e3e3a3b243fdafd93d1405f8207dc516a.tar.gz
libquotient-d72f220e3e3a3b243fdafd93d1405f8207dc516a.zip
E2EE: initial port to internal olm wrapper
Remove qtolm git module. Update CMakeLists.txt. Rename olm to crypto subdir to prevent disambiguation. Rename internal files accordingly. Comment out not ported E2EE API usage.
Diffstat (limited to 'lib/crypto/session.h')
-rw-r--r--lib/crypto/session.h77
1 files changed, 0 insertions, 77 deletions
diff --git a/lib/crypto/session.h b/lib/crypto/session.h
deleted file mode 100644
index 24702564..00000000
--- a/lib/crypto/session.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// SPDX-FileCopyrightText: 2021 Alexey Andreyev <aa13q@ya.ru>
-//
-// SPDX-License-Identifier: LGPL-2.1-or-later
-
-#pragma once
-
-#ifdef Quotient_E2EE_ENABLED
-
-#include <QDebug>
-#include <olm/olm.h>
-#include "crypto/e2ee.h"
-#include "crypto/message.h"
-#include "crypto/errors.h"
-#include "crypto/qolmaccount.h"
-
-namespace Quotient {
-
-class QOlmAccount;
-class QOlmSession;
-
-
-//! Either an outbound or inbound session for secure communication.
-class QOlmSession
-{
-public:
- ~QOlmSession();
- //! Creates an inbound session for sending/receiving messages from a received 'prekey' message.
- static std::variant<std::unique_ptr<QOlmSession>, OlmError> createInboundSession(QOlmAccount *account, const Message &preKeyMessage);
- static std::variant<std::unique_ptr<QOlmSession>, OlmError> createInboundSessionFrom(QOlmAccount *account, const QString &theirIdentityKey, const Message &preKeyMessage);
- static std::variant<std::unique_ptr<QOlmSession>, OlmError> createOutboundSession(QOlmAccount *account, const QString &theirIdentityKey, const QString &theirOneTimeKey);
- //! Serialises an `QOlmSession` to encrypted Base64.
- std::variant<QByteArray, OlmError> pickle(const PicklingMode &mode);
- //! Deserialises from encrypted Base64 that was previously obtained by pickling a `QOlmSession`.
- static std::variant<std::unique_ptr<QOlmSession>, OlmError> unpickle(const QByteArray &pickled, const PicklingMode &mode);
- //! Encrypts a plaintext message using the session.
- Message encrypt(const QString &plaintext);
-
- //! Decrypts a message using this session. Decoding is lossy, meaing if
- //! the decrypted plaintext contains invalid UTF-8 symbols, they will
- //! be returned as `U+FFFD` (�).
- std::variant<QString, OlmError> decrypt(const Message &message) const;
-
- //! Get a base64-encoded identifier for this session.
- QByteArray sessionId() const;
-
- //! The type of the next message that will be returned from encryption.
- Message::Type encryptMessageType();
-
- //! Checker for any received messages for this session.
- bool hasReceivedMessage() const;
-
- //! Checks if the 'prekey' message is for this in-bound session.
- std::variant<bool, OlmError> matchesInboundSession(Message &preKeyMessage);
-
- 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) {
- return *lhs < *rhs;
- }
-
- QOlmSession(OlmSession* session);
-private:
- //! Helper function for creating new sessions and handling errors.
- static OlmSession* create();
- static std::variant<std::unique_ptr<QOlmSession>, OlmError> createInbound(QOlmAccount *account, const Message& preKeyMessage, bool from = false, const QString& theirIdentityKey = "");
- OlmSession* m_session;
-};
-
-
-//using QOlmSessionPtr = std::unique_ptr<QOlmSession>;
-
-} //namespace Quotient
-
-#endif // Quotient_E2EE_ENABLED