// 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 #include class QDomElement; class QXmppMessage; class QXmppIq; template class QXmppTask; class QXmppE2eeExtension : public QXmppExtension { public: struct NotEncrypted { }; using MessageEncryptResult = std::variant, QXmppError>; using MessageDecryptResult = std::variant; using IqEncryptResult = std::variant, QXmppError>; using IqDecryptResult = std::variant; virtual QXmppTask encryptMessage(QXmppMessage &&, const std::optional &) = 0; virtual QXmppTask decryptMessage(QXmppMessage &&) = 0; virtual QXmppTask encryptIq(QXmppIq &&, const std::optional &) = 0; virtual QXmppTask decryptIq(const QDomElement &) = 0; virtual bool isEncrypted(const QDomElement &) = 0; virtual bool isEncrypted(const QXmppMessage &) = 0; }; #endif // QXMPPE2EEEXTENSION_H