diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-09-05 17:18:20 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-09-06 00:46:56 +0200 |
| commit | 649d56de33f7dd495f3935f3b02a43b5bd2a2069 (patch) | |
| tree | 98a48ff9bcb93ac7487a75d73b4afdd59015ce55 /src/base/QXmppHash.h | |
| parent | a9dc4915371087e2d706fad95d4fccf11745ba63 (diff) | |
| download | qxmpp-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.h | 75 |
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 |
