diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-09-16 19:08:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-16 19:08:02 +0200 |
| commit | d858e4ae6e0adeaad8d03b055883f411e6d19ab0 (patch) | |
| tree | e306f607339bd553ba79030fcc90686c5d1422e3 /src/base/QXmppEncryptedFileSource_p.h | |
| parent | 7878aeb22cc49b31ae527dfc683f2f16b0f79075 (diff) | |
| download | qxmpp-d858e4ae6e0adeaad8d03b055883f411e6d19ab0.tar.gz | |
Implement XEP-0448: Encryption for stateless file sharing parsing (#463)
https://xmpp.org/extensions/xep-0448.html
Co-authored-by: Jonah BrĂ¼chert <jbb@kaidan.im>
Diffstat (limited to 'src/base/QXmppEncryptedFileSource_p.h')
| -rw-r--r-- | src/base/QXmppEncryptedFileSource_p.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/base/QXmppEncryptedFileSource_p.h b/src/base/QXmppEncryptedFileSource_p.h new file mode 100644 index 00000000..21270de2 --- /dev/null +++ b/src/base/QXmppEncryptedFileSource_p.h @@ -0,0 +1,59 @@ +// SPDX-FileCopyrightText: 2022 Linus Jahn <lnj@kaidan.im> +// SPDX-FileCopyrightText: 2022 Jonah BrĂ¼chert <jbb@kaidan.im> +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#ifndef QXMPPENCRYPTEDFILESOURCE_H +#define QXMPPENCRYPTEDFILESOURCE_H + +#include "QXmppGlobal.h" +#include "QXmppHash.h" +#include "QXmppHttpFileSource.h" + +#include <QSharedDataPointer> +#include <QUrl> +#include <QVector> + +class QXmppEncryptedFileSourcePrivate; + +// exported for tests +class QXMPP_EXPORT QXmppEncryptedFileSource +{ +public: + enum Cipher { + Aes128GcmNopadding, + Aes256GcmNopadding, + Aes256CbcPkcs7, + }; + + QXmppEncryptedFileSource(); + + Cipher cipher() const; + void setCipher(Cipher newCipher); + + const QByteArray &key() const; + void setKey(const QByteArray &newKey); + + const QByteArray &iv() const; + void setIv(const QByteArray &newIv); + + const QVector<QXmppHash> &hashes() const; + void setHashes(const QVector<QXmppHash> &newHashes); + + const QVector<QXmppHttpFileSource> &httpSources() const; + void setHttpSources(const QVector<QXmppHttpFileSource> &newHttpSources); + + /// \cond + bool parse(const QDomElement &el); + void toXml(QXmlStreamWriter *writer) const; + /// \endcond + +private: + Cipher m_cipher = Aes128GcmNopadding; + QByteArray m_key; + QByteArray m_iv; + QVector<QXmppHash> m_hashes; + QVector<QXmppHttpFileSource> m_httpSources; +}; + +#endif // QXMPPENCRYPTEDFILESOURCE_H |
