diff options
| author | Melvin Keskin <melvo@olomono.de> | 2022-01-27 17:06:12 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-04-07 19:33:45 +0200 |
| commit | 2312f95365b03b3fedd2e672b2e0cec98dae3cde (patch) | |
| tree | 47badca9b998a204496f4532b47a9710ee6779f0 /src | |
| parent | e53841da6c0e3fc1c805d869830c8a5fdebf5cee (diff) | |
| download | qxmpp-2312f95365b03b3fedd2e672b2e0cec98dae3cde.tar.gz | |
Add QXmppOmemoIq
The IQ is only used internally and is private.
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/QXmppOmemoData.cpp | 57 | ||||
| -rw-r--r-- | src/base/QXmppOmemoIq_p.h | 30 |
2 files changed, 87 insertions, 0 deletions
diff --git a/src/base/QXmppOmemoData.cpp b/src/base/QXmppOmemoData.cpp index c19f9b88..206e78f2 100644 --- a/src/base/QXmppOmemoData.cpp +++ b/src/base/QXmppOmemoData.cpp @@ -9,6 +9,7 @@ #include "QXmppOmemoDeviceList.h" #include "QXmppOmemoElement.h" #include "QXmppOmemoEnvelope.h" +#include "QXmppOmemoIq_p.h" #include "QXmppUtils.h" #include <QDomElement> @@ -790,3 +791,59 @@ bool QXmppOmemoElement::isOmemoElement(const QDomElement &element) return element.tagName() == QStringLiteral("encrypted") && element.namespaceURI() == ns_omemo_2; } + +/// +/// \class QXmppOmemoIq +/// +/// \brief The QXmppOmemoIq class represents an encrypted IQ stanza as defined +/// by \xep{0384, OMEMO Encryption} and \xep{0420, Stanza Content Encryption} +/// (SCE). +/// +/// \ingroup Stanzas +/// + +/// +/// Returns the OMEMO element which contains the data used by OMEMO. +/// +/// \return the OMEMO element +/// +QXmppOmemoElement QXmppOmemoIq::omemoElement() +{ + return m_omemoElement; +} + +/// +/// Sets the OMEMO element which contains the data used by OMEMO. +/// +/// \param omemoElement OMEMO element +/// +void QXmppOmemoIq::setOmemoElement(const QXmppOmemoElement &omemoElement) +{ + m_omemoElement = omemoElement; +} + +/// \cond +void QXmppOmemoIq::parseElementFromChild(const QDomElement &element) +{ + QDomElement child = element.firstChildElement(); + m_omemoElement.parse(child); +} + +void QXmppOmemoIq::toXmlElementFromChild(QXmlStreamWriter *writer) const +{ + m_omemoElement.toXml(writer); +} +/// \endcond + +/// +/// Determines whether the given DOM element is an OMEMO IQ stanza. +/// +/// \param element DOM element being checked +/// +/// \return true if element is an OMEMO IQ stanza, otherwise false +/// +bool QXmppOmemoIq::isOmemoIq(const QDomElement &element) +{ + auto child = element.firstChildElement(); + return !child.isNull() && QXmppOmemoElement::isOmemoElement(child); +} diff --git a/src/base/QXmppOmemoIq_p.h b/src/base/QXmppOmemoIq_p.h new file mode 100644 index 00000000..36b53adf --- /dev/null +++ b/src/base/QXmppOmemoIq_p.h @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2022 Melvin Keskin <melvo@olomono.de> +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#ifndef QXMPPOMEMOIQ_H +#define QXMPPOMEMOIQ_H + +#include "QXmppIq.h" +#include "QXmppOmemoElement.h" + +class QXmppOmemoIqPrivate; + +class QXmppOmemoIq : public QXmppIq +{ +public: + QXmppOmemoElement omemoElement(); + void setOmemoElement(const QXmppOmemoElement &omemoElement); + + /// \cond + void parseElementFromChild(const QDomElement &element) override; + void toXmlElementFromChild(QXmlStreamWriter *writer) const override; + /// \endcond + + static bool isOmemoIq(const QDomElement &element); + +private: + QXmppOmemoElement m_omemoElement; +}; + +#endif // QXMPPOMEMOIQ_H |
