// SPDX-FileCopyrightText: 2021 Linus Jahn // // SPDX-License-Identifier: LGPL-2.1-or-later #ifndef QXMPPE2EEEXTENSION_H #define QXMPPE2EEEXTENSION_H #include "QXmppError.h" #include "QXmppExtension.h" #include "QXmppSendResult.h" #include "QXmppSendStanzaParams.h" #include class QDomElement; class QXmppMessage; class QXmppIq; template class QFuture; class QXmppE2eeExtension : public QXmppExtension { public: struct NotEncrypted { }; using MessageEncryptResult = std::variant; using MessageDecryptResult = std::variant; using IqEncryptResult = std::variant; using IqDecryptResult = std::variant; virtual QFuture encryptMessage(QXmppMessage &&, const std::optional &) = 0; virtual QFuture decryptMessage(QXmppMessage &&) = 0; virtual QFuture encryptIq(QXmppIq &&, const std::optional &) = 0; virtual QFuture decryptIq(const QDomElement &) = 0; virtual bool isEncrypted(const QDomElement &) = 0; virtual bool isEncrypted(const QXmppMessage &) = 0; }; #endif // QXMPPE2EEEXTENSION_H