aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-07-20 07:17:26 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-07-20 07:17:26 +0200
commit5cc24eacef39919dabf37a2a384bb5f22db8c262 (patch)
tree38ae5320a11d06beb98a71b362ec3067f91d035d /src
parent6618cfaa8cf3e4d1c4df4ea3749d6171b93373bf (diff)
downloadqxmpp-5cc24eacef39919dabf37a2a384bb5f22db8c262.tar.gz
betterr quality of protection handling
Diffstat (limited to 'src')
-rw-r--r--src/base/QXmppSaslAuth.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/base/QXmppSaslAuth.cpp b/src/base/QXmppSaslAuth.cpp
index 9c21fe86..e913a8d8 100644
--- a/src/base/QXmppSaslAuth.cpp
+++ b/src/base/QXmppSaslAuth.cpp
@@ -158,13 +158,15 @@ bool QXmppSaslClientDigestMd5::respond(const QByteArray &challenge, QByteArray &
const QByteArray realm = input.value("realm");
// determine quality of protection
- const QList<QByteArray> qops = input.value("qop").split(',');
- if (qops.contains("auth")) {
- m_saslDigest.setQop("auth");
- m_saslDigest.setCnonce(QXmppSaslDigestMd5::generateNonce());
- m_saslDigest.setNc("00000001");
+ const QList<QByteArray> qops = input.value("qop", "auth").split(',');
+ if (!qops.contains("auth")) {
+ qWarning("QXmppSaslClientDigestMd5 : Invalid quality of protection");
+ return false;
}
+ m_saslDigest.setQop("auth");
+ m_saslDigest.setCnonce(QXmppSaslDigestMd5::generateNonce());
+ m_saslDigest.setNc("00000001");
m_saslDigest.setDigestUri(QString("xmpp/%1").arg(server()).toUtf8());
m_saslDigest.setNonce(input.value("nonce"));
m_saslDigest.setSecret(QCryptographicHash::hash(
@@ -177,11 +179,9 @@ bool QXmppSaslClientDigestMd5::respond(const QByteArray &challenge, QByteArray &
if (!realm.isEmpty())
output["realm"] = realm;
output["nonce"] = m_saslDigest.nonce();
- if (!m_saslDigest.qop().isEmpty()) {
- output["qop"] = m_saslDigest.qop();
- output["cnonce"] = m_saslDigest.cnonce();
- output["nc"] = m_saslDigest.nc();
- }
+ output["qop"] = m_saslDigest.qop();
+ output["cnonce"] = m_saslDigest.cnonce();
+ output["nc"] = m_saslDigest.nc();
output["digest-uri"] = m_saslDigest.digestUri();
output["response"] = m_saslDigest.calculateDigest(
QByteArray("AUTHENTICATE:") + m_saslDigest.digestUri());