diff options
| -rw-r--r-- | src/base/QXmppSasl.cpp | 13 | ||||
| -rw-r--r-- | tests/qxmppsasl/tst_qxmppsasl.cpp | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/base/QXmppSasl.cpp b/src/base/QXmppSasl.cpp index ebc3c99c..6c3c394d 100644 --- a/src/base/QXmppSasl.cpp +++ b/src/base/QXmppSasl.cpp @@ -34,6 +34,10 @@ #include <QUrlQuery> #include <QtEndian> +#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 2) +#define QT_HAS_SHA3_SUPPORT +#endif + const char *ns_xmpp_sasl = "urn:ietf:params:xml:ns:xmpp-sasl"; static QByteArray forcedNonce; @@ -43,6 +47,9 @@ static const QMap<QString, QCryptographicHash::Algorithm> SCRAM_ALGORITHMS = { { QStringLiteral("SCRAM-SHA-1"), QCryptographicHash::Sha1 }, { QStringLiteral("SCRAM-SHA-256"), QCryptographicHash::Sha256 }, { QStringLiteral("SCRAM-SHA-512"), QCryptographicHash::Sha512 }, +#ifdef QT_HAS_SHA3_SUPPORT + { QStringLiteral("SCRAM-SHA3-512"), QCryptographicHash::RealSha3_512 }, +#endif }; // Returns the hash length in bytes (QCH::hashLength() only exists since 5.12). @@ -57,6 +64,9 @@ int hashLength(QCryptographicHash::Algorithm algorithm) case QCryptographicHash::Sha256: return 256 / 8; case QCryptographicHash::Sha512: +#ifdef QT_HAS_SHA3_SUPPORT + case QCryptographicHash::RealSha3_512: +#endif return 512 / 8; default: return QCryptographicHash::hash({}, algorithm).size(); @@ -299,6 +309,9 @@ QXmppSaslClient::~QXmppSaslClient() QStringList QXmppSaslClient::availableMechanisms() { return { +#ifdef QT_HAS_SHA3_SUPPORT + QStringLiteral("SCRAM-SHA3-512"), +#endif QStringLiteral("SCRAM-SHA-512"), QStringLiteral("SCRAM-SHA-256"), QStringLiteral("SCRAM-SHA-1"), diff --git a/tests/qxmppsasl/tst_qxmppsasl.cpp b/tests/qxmppsasl/tst_qxmppsasl.cpp index 78367800..590c8c07 100644 --- a/tests/qxmppsasl/tst_qxmppsasl.cpp +++ b/tests/qxmppsasl/tst_qxmppsasl.cpp @@ -191,6 +191,9 @@ void tst_QXmppSasl::testSuccess() void tst_QXmppSasl::testClientAvailableMechanisms() { const QStringList expectedMechanisms = { +#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 2) + "SCRAM-SHA3-512", +#endif "SCRAM-SHA-512", "SCRAM-SHA-256", "SCRAM-SHA-1", |
