// SPDX-FileCopyrightText: 2021 Carl Schwan // // SPDX-License-Identifier: LGPL-2.1-or-later #pragma once #include "olm/e2ee.h" #include "olm/olm.h" #include "olm/errors.h" #include namespace Quotient { //! An encrypted Olm message. struct QOlmMessage { QByteArray message; }; //! A encrypted Olm pre-key message. //! //! This message, unlike a normal Message, can be used to create new Olm sessions. struct PreKeyMessage { QByteArray message; }; enum OlmMessageType { PreKeyType, MessageType, }; using OlmMessage = std::variant; std::optional fromTypeAndCipthertext(size_t messageType, const QByteArray &ciphertext); std::pair toPair(const OlmMessage &message); //class QOlmSession //{ // /// Creates an inbound session for sending/receiving messages from a received 'prekey' message. // static std::variant, OlmError> createInboundSession(const QOlmAccount &account, // PreKeyMessage &message); // ////private: // //static std::variant, OlmError> createSessionWith(std::function> func); //} }