diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-03-29 13:20:14 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-03-29 13:20:14 +0000 |
| commit | 75a0cb2036ebd6c1913caec6d4d9c4497481ec2f (patch) | |
| tree | 2119507630d04f09c90fe05138e866fa3c88ba69 /src/QXmppOutgoingClient.cpp | |
| parent | 4f738fbb73b3b15b6022635b78dac71f91909cd0 (diff) | |
| download | qxmpp-75a0cb2036ebd6c1913caec6d4d9c4497481ec2f.tar.gz | |
refactor SASL authentication to allow server-side password checkers which natively support MD5
Diffstat (limited to 'src/QXmppOutgoingClient.cpp')
| -rw-r--r-- | src/QXmppOutgoingClient.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/QXmppOutgoingClient.cpp b/src/QXmppOutgoingClient.cpp index 0c2af465..fdb3cc8a 100644 --- a/src/QXmppOutgoingClient.cpp +++ b/src/QXmppOutgoingClient.cpp @@ -22,6 +22,7 @@ * */ +#include <QCryptographicHash> #include <QSslSocket> #include "QXmppConfiguration.h" @@ -615,15 +616,15 @@ void QXmppOutgoingClient::sendAuthDigestMD5ResponseStep1(const QString& challeng d->saslDigest.setNc("00000001"); d->saslDigest.setNonce(map.value("nonce")); d->saslDigest.setQop("auth"); - d->saslDigest.setRealm(map.value("realm")); - d->saslDigest.setUsername(configuration().user().toUtf8()); - d->saslDigest.setPassword(configuration().password().toUtf8()); + d->saslDigest.setSecret(QCryptographicHash::hash( + configuration().user().toUtf8() + ":" + map.value("realm") + ":" + configuration().password().toUtf8(), + QCryptographicHash::Md5)); // Build response QMap<QByteArray, QByteArray> response; - response["username"] = d->saslDigest.username(); - if(!d->saslDigest.realm().isEmpty()) - response["realm"] = d->saslDigest.realm(); + response["username"] = configuration().user().toUtf8(); + if (map.contains("realm")) + response["realm"] = map.value("realm"); response["nonce"] = d->saslDigest.nonce(); response["cnonce"] = d->saslDigest.cnonce(); response["nc"] = d->saslDigest.nc(); |
