aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-01-27 17:06:12 +0100
committerLinus Jahn <lnj@kaidan.im>2022-04-07 19:33:45 +0200
commit2312f95365b03b3fedd2e672b2e0cec98dae3cde (patch)
tree47badca9b998a204496f4532b47a9710ee6779f0 /src
parente53841da6c0e3fc1c805d869830c8a5fdebf5cee (diff)
downloadqxmpp-2312f95365b03b3fedd2e672b2e0cec98dae3cde.tar.gz
Add QXmppOmemoIq
The IQ is only used internally and is private.
Diffstat (limited to 'src')
-rw-r--r--src/base/QXmppOmemoData.cpp57
-rw-r--r--src/base/QXmppOmemoIq_p.h30
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