diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-20 07:17:26 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-20 07:17:26 +0200 |
| commit | 5cc24eacef39919dabf37a2a384bb5f22db8c262 (patch) | |
| tree | 38ae5320a11d06beb98a71b362ec3067f91d035d /src | |
| parent | 6618cfaa8cf3e4d1c4df4ea3749d6171b93373bf (diff) | |
| download | qxmpp-5cc24eacef39919dabf37a2a384bb5f22db8c262.tar.gz | |
betterr quality of protection handling
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/QXmppSaslAuth.cpp | 20 |
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()); |
