aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppHash.h
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-09-05 17:18:20 +0200
committerLinus Jahn <lnj@kaidan.im>2022-09-06 00:46:56 +0200
commit649d56de33f7dd495f3935f3b02a43b5bd2a2069 (patch)
tree98a48ff9bcb93ac7487a75d73b4afdd59015ce55 /src/base/QXmppHash.h
parenta9dc4915371087e2d706fad95d4fccf11745ba63 (diff)
downloadqxmpp-649d56de33f7dd495f3935f3b02a43b5bd2a2069.tar.gz
Implement XEP-0300: Use of Cryptographic Hash Functions in XMPP
Parsing and serialization for XEP-0300 https://xmpp.org/extensions/xep-0300.html in version 1.0.
Diffstat (limited to 'src/base/QXmppHash.h')
-rw-r--r--src/base/QXmppHash.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/base/QXmppHash.h b/src/base/QXmppHash.h
new file mode 100644
index 00000000..96293f80
--- /dev/null
+++ b/src/base/QXmppHash.h
@@ -0,0 +1,75 @@
+// SPDX-FileCopyrightText: 2022 Linus Jahn <lnj@kaidan.im>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#ifndef QXMPPHASH_H
+#define QXMPPHASH_H
+
+#include "QXmppGlobal.h"
+
+#include <QByteArray>
+
+class QDomElement;
+class QXmlStreamWriter;
+
+namespace QXmpp {
+
+enum class HashAlgorithm : uint32_t {
+ Unknown,
+ Md2,
+ Md5,
+ Shake128,
+ Shake256,
+ Sha1,
+ Sha224,
+ Sha256,
+ Sha384,
+ Sha512,
+ Sha3_256,
+ Sha3_512,
+ Blake2b_256,
+ Blake2b_512,
+};
+
+}
+
+class QXMPP_EXPORT QXmppHash
+{
+public:
+ QXmppHash();
+
+ /// \cond
+ bool parse(const QDomElement &el);
+ void toXml(QXmlStreamWriter *writer) const;
+ /// \endcond
+
+ QXmpp::HashAlgorithm algorithm() const;
+ void setAlgorithm(QXmpp::HashAlgorithm algorithm);
+
+ QByteArray hash() const;
+ void setHash(const QByteArray &data);
+
+private:
+ QXmpp::HashAlgorithm m_algorithm = QXmpp::HashAlgorithm::Unknown;
+ QByteArray m_hash;
+};
+
+class QXMPP_EXPORT QXmppHashUsed
+{
+public:
+ QXmppHashUsed();
+ QXmppHashUsed(QXmpp::HashAlgorithm algorithm);
+
+ /// \cond
+ bool parse(const QDomElement &el);
+ void toXml(QXmlStreamWriter *writer) const;
+ /// \endcond
+
+ QXmpp::HashAlgorithm algorithm() const;
+ void setAlgorithm(QXmpp::HashAlgorithm algorithm);
+
+private:
+ QXmpp::HashAlgorithm m_algorithm = QXmpp::HashAlgorithm::Unknown;
+};
+
+#endif // QXMPPHASH_H