void QXmppIncomingClientPrivate::checkCredentials (const QByteArray &response) { QXmppPasswordRequest request; request.setDomain (domain); request.setUsername (saslServer->username()); if (saslServer->mechanism() == "PLAIN") { request.setPassword (saslServer->password()); QXmppPasswordReply *reply = passwordChecker->checkPassword (request); reply->setParent (q); reply->setProperty ("__sasl_raw", response); QObject::connect (reply, SIGNAL (finished()), q, SLOT (onPasswordReply())); } else if (saslServer->mechanism() == "DIGEST-MD5") { QXmppPasswordReply *reply = passwordChecker->getDigest (request); reply->setParent (q); reply->setProperty ("__sasl_raw", response); QObject::connect (reply, SIGNAL (finished()), q, SLOT (onDigestReply())); } }
void tst_QXmppSasl::testServerPlain() { QXmppSaslServer *server = QXmppSaslServer::create("PLAIN"); QVERIFY(server != 0); QCOMPARE(server->mechanism(), QLatin1String("PLAIN")); // initial step returns success QByteArray response; QCOMPARE(server->respond(QByteArray("\0foo\0bar", 8), response), QXmppSaslServer::InputNeeded); QCOMPARE(response, QByteArray()); QCOMPARE(server->username(), QLatin1String("foo")); QCOMPARE(server->password(), QLatin1String("bar")); // any further step is an error QCOMPARE(server->respond(QByteArray(), response), QXmppSaslServer::Failed); delete server; }