From 59466bbc70b5b51f35458bddac6e7df4203c42b7 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Mon, 3 Sep 2012 07:09:43 +0200 Subject: Add support for X-MESSENGER-OAUTH2 authentication for Windows Live Messenger. --- src/base/QXmppSasl.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/base/QXmppSasl.cpp') diff --git a/src/base/QXmppSasl.cpp b/src/base/QXmppSasl.cpp index 9e593cc0..6d1511cc 100644 --- a/src/base/QXmppSasl.cpp +++ b/src/base/QXmppSasl.cpp @@ -230,7 +230,7 @@ QXmppSaslClient::~QXmppSaslClient() QStringList QXmppSaslClient::availableMechanisms() { - return QStringList() << "PLAIN" << "DIGEST-MD5" << "ANONYMOUS" << "X-FACEBOOK-PLATFORM"; + return QStringList() << "PLAIN" << "DIGEST-MD5" << "ANONYMOUS" << "X-FACEBOOK-PLATFORM" << "X-MESSENGER-OAUTH2"; } /// Creates an SASL client for the given mechanism. @@ -245,6 +245,8 @@ QXmppSaslClient* QXmppSaslClient::create(const QString &mechanism, QObject *pare return new QXmppSaslClientAnonymous(parent); } else if (mechanism == "X-FACEBOOK-PLATFORM") { return new QXmppSaslClientFacebook(parent); + } else if (mechanism == "X-MESSENGER-OAUTH2") { + return new QXmppSaslClientWindowsLive(parent); } else { return 0; } @@ -478,6 +480,30 @@ bool QXmppSaslClientPlain::respond(const QByteArray &challenge, QByteArray &resp } } +QXmppSaslClientWindowsLive::QXmppSaslClientWindowsLive(QObject *parent) + : QXmppSaslClient(parent) + , m_step(0) +{ +} + +QString QXmppSaslClientWindowsLive::mechanism() const +{ + return "X-MESSENGER-OAUTH2"; +} + +bool QXmppSaslClientWindowsLive::respond(const QByteArray &challenge, QByteArray &response) +{ + if (m_step == 0) { + // send initial response + response = QByteArray::fromBase64(password().toLatin1()); + m_step++; + return true; + } else { + warning("QXmppSaslClientWindowsLive : Invalid step"); + return false; + } +} + class QXmppSaslServerPrivate { public: -- cgit v1.2.3