diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-20 14:28:58 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-20 14:28:58 +0000 |
| commit | 89aa32bb1aaee3d8fdc1e767eff7ad0907817c2a (patch) | |
| tree | 04bf6e5442504b27a6d38d42781023591aaaceb3 /src | |
| parent | 01b9f5be8eaaf368cb0368740c52b1fb8707cca9 (diff) | |
| download | qxmpp-89aa32bb1aaee3d8fdc1e767eff7ad0907817c2a.tar.gz | |
add a method to calculate a Digest MD5
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppUtils.cpp | 19 | ||||
| -rw-r--r-- | src/QXmppUtils.h | 3 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/QXmppUtils.cpp b/src/QXmppUtils.cpp index a6e6de74..d05851db 100644 --- a/src/QXmppUtils.cpp +++ b/src/QXmppUtils.cpp @@ -286,6 +286,25 @@ QString unescapeString(const QString& str) return strOut; } +QByteArray calculateDigestMd5(const QByteArray &a1, + const QByteArray &nonce, const QByteArray &nc, const QByteArray &cnonce, + const QByteArray &digest_uri, const QByteArray &authzid) +{ + QByteArray ha1 = QCryptographicHash::hash(a1, QCryptographicHash::Md5); + ha1 += ':' + nonce + ':' + cnonce; + + if (!authzid.isEmpty()) + ha1 += ':' + authzid; + + QByteArray A1(ha1); + QByteArray A2 = "AUTHENTICATE:" + digest_uri; + QByteArray HA1 = QCryptographicHash::hash(A1, QCryptographicHash::Md5).toHex(); + QByteArray HA2 = QCryptographicHash::hash(A2, QCryptographicHash::Md5).toHex(); + QByteArray KD = HA1 + ':' + nonce + ':' + nc + ':' + cnonce + ':' + + "auth" + ':' + HA2; + return QCryptographicHash::hash(KD, QCryptographicHash::Md5).toHex(); +} + QMap<QByteArray, QByteArray> parseDigestMd5(const QByteArray &ba) { QMap<QByteArray, QByteArray> map; diff --git a/src/QXmppUtils.h b/src/QXmppUtils.h index 4fc9d9c7..3b3326b9 100644 --- a/src/QXmppUtils.h +++ b/src/QXmppUtils.h @@ -65,6 +65,9 @@ QString escapeString(const QString& str); QString unescapeString(const QString& str); // Digest MD5 authentication +QByteArray calculateDigestMd5(const QByteArray &a1, + const QByteArray &nonce, const QByteArray &nc, const QByteArray &cnonce, + const QByteArray &digest_uri, const QByteArray &authzid); QMap<QByteArray, QByteArray> parseDigestMd5(const QByteArray &ba); QByteArray serializeDigestMd5(const QMap<QByteArray, QByteArray> &map); |
