diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-20 17:25:41 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-20 17:25:41 +0200 |
| commit | db4fe78387247ff039602030d964e4c0d6e39f46 (patch) | |
| tree | 8e9ba8cd5e380c813376f6878b9593e84dff61b7 | |
| parent | 1e24a0feab544db99f19e55eb81c836f62c4585f (diff) | |
| download | qxmpp-db4fe78387247ff039602030d964e4c0d6e39f46.tar.gz | |
fix tests
| -rw-r--r-- | src/base/QXmppSaslAuth.cpp | 10 | ||||
| -rw-r--r-- | src/base/QXmppSaslAuth_p.h | 2 | ||||
| -rw-r--r-- | tests/sasl.cpp | 5 |
3 files changed, 15 insertions, 2 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); diff --git a/tests/sasl.cpp b/tests/sasl.cpp index 59a46174..0c57336b 100644 --- a/tests/sasl.cpp +++ b/tests/sasl.cpp @@ -86,7 +86,8 @@ void tst_QXmppSaslClient::testDigestMd5() { QFETCH(QByteArray, qop); - qsrand(0); + QXmppSaslDigestMd5::setNonce("AMzVG8Oibf+sVUCPPlWLR8lZQvbbJtJB9vJd+u3c6dw="); + QXmppSaslClient *client = QXmppSaslClient::create("DIGEST-MD5"); QVERIFY(client != 0); QCOMPARE(client->mechanism(), QLatin1String("DIGEST-MD5")); @@ -182,7 +183,7 @@ void tst_QXmppSaslServer::testAnonymous() void tst_QXmppSaslServer::testDigestMd5() { - qsrand(1); + QXmppSaslDigestMd5::setNonce("OI08/m+QRm6Ma+fKOjuqVXtz40sR5u9/u5GN6sSW0rs="); QXmppSaslServer *server = QXmppSaslServer::create("DIGEST-MD5"); QVERIFY(server != 0); |
