QXmpp  Version: 1.15.1
QXmppHash.h
1 // SPDX-FileCopyrightText: 2022 Linus Jahn <lnj@kaidan.im>
2 //
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 
5 #ifndef QXMPPHASH_H
6 #define QXMPPHASH_H
7 
8 #include "QXmppConstants_p.h"
9 #include "QXmppGlobal.h"
10 
11 #include <tuple>
12 
13 #include <QByteArray>
14 
15 class QDomElement;
16 class QXmlStreamWriter;
17 
18 namespace QXmpp {
19 
20 enum class HashAlgorithm : uint32_t {
21  Unknown,
22  Md2,
23  Md5,
24  Shake128,
25  Shake256,
26  Sha1,
27  Sha224,
28  Sha256,
29  Sha384,
30  Sha512,
31  Sha3_256,
32  Sha3_512,
33  Blake2b_256,
34  Blake2b_512,
35 };
36 
37 }
38 
39 class QXMPP_EXPORT QXmppHash
40 {
41 public:
42  QXmppHash();
43 
45  static constexpr std::tuple XmlTag = { u"hash", QXmpp::Private::ns_hashes };
46  bool parse(const QDomElement &el);
47  void toXml(QXmlStreamWriter *writer) const;
49 
50  QXmpp::HashAlgorithm algorithm() const;
51  void setAlgorithm(QXmpp::HashAlgorithm algorithm);
52 
53  QByteArray hash() const;
54  void setHash(const QByteArray &data);
55 
56 private:
57  QXmpp::HashAlgorithm m_algorithm = QXmpp::HashAlgorithm::Unknown;
58  QByteArray m_hash;
59 };
60 
61 class QXMPP_EXPORT QXmppHashUsed
62 {
63 public:
64  QXmppHashUsed();
66 
68  static constexpr auto XmlTag = std::tuple { u"hash-used", QXmpp::Private::ns_hashes };
69  bool parse(const QDomElement &el);
70  void toXml(QXmlStreamWriter *writer) const;
72 
73  QXmpp::HashAlgorithm algorithm() const;
74  void setAlgorithm(QXmpp::HashAlgorithm algorithm);
75 
76 private:
77  QXmpp::HashAlgorithm m_algorithm = QXmpp::HashAlgorithm::Unknown;
78 };
79 
80 #endif // QXMPPHASH_H
HashAlgorithm
Definition: QXmppHash.h:20
Definition: QXmppHash.h:39
Definition: QXmppHash.h:61