aboutsummaryrefslogtreecommitdiff
path: root/lib/crypto/session.h
diff options
context:
space:
mode:
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