diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/QXmppSaslAuth.cpp | 10 | ||||
| -rw-r--r-- | src/base/QXmppSaslAuth_p.h | 2 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/base/QXmppSaslAuth.cpp b/src/base/QXmppSaslAuth.cpp index 6c9c85fc..1c15ae02 100644 --- a/src/base/QXmppSaslAuth.cpp +++ b/src/base/QXmppSaslAuth.cpp @@ -35,6 +35,8 @@ const char *ns_xmpp_sasl = "urn:ietf:params:xml:ns:xmpp-sasl"; +static QByteArray forcedNonce; + // Calculate digest response for use with XMPP/SASL. static QByteArray calculateDigest(const QByteArray &method, const QByteArray &digestUri, const QByteArray &secret, const QByteArray &nonce, const QByteArray &cnonce, const QByteArray &nc) @@ -50,6 +52,9 @@ static QByteArray calculateDigest(const QByteArray &method, const QByteArray &di static QByteArray generateNonce() { + if (!forcedNonce.isEmpty()) + return forcedNonce; + QByteArray nonce = QXmppUtils::generateRandomBytes(32); // The random data can the '=' char is not valid as it is a delimiter, @@ -655,6 +660,11 @@ QXmppSaslServer::Response QXmppSaslServerPlain::respond(const QByteArray &reques } } +void QXmppSaslDigestMd5::setNonce(const QByteArray &nonce) +{ + forcedNonce = nonce; +} + QMap<QByteArray, QByteArray> QXmppSaslDigestMd5::parseMessage(const QByteArray &ba) { QMap<QByteArray, QByteArray> map; diff --git a/src/base/QXmppSaslAuth_p.h b/src/base/QXmppSaslAuth_p.h index ace6b29f..783e8b9b 100644 --- a/src/base/QXmppSaslAuth_p.h +++ b/src/base/QXmppSaslAuth_p.h @@ -44,6 +44,8 @@ class QXmppSaslDigestMd5 { public: + static void setNonce(const QByteArray &nonce); + // message parsing and serialization static QMap<QByteArray, QByteArray> parseMessage(const QByteArray &ba); static QByteArray serializeMessage(const QMap<QByteArray, QByteArray> &map); |
