aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppNonSASLAuth.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-12 07:55:43 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-12 07:55:43 +0000
commit4e6d4908fdf5168fbd0ad4025f00a8d133622b4d (patch)
tree4f434a77e0a13f84e9b417a2fa74c68d82730f16 /src/QXmppNonSASLAuth.cpp
parent3ad23dd378b7b769ff65c6bf297d2547184e78e2 (diff)
downloadqxmpp-4e6d4908fdf5168fbd0ad4025f00a8d133622b4d.tar.gz
start refactoring and testing non-SASL auth
Diffstat (limited to 'src/QXmppNonSASLAuth.cpp')
-rw-r--r--src/QXmppNonSASLAuth.cpp81
1 files changed, 51 insertions, 30 deletions
diff --git a/src/QXmppNonSASLAuth.cpp b/src/QXmppNonSASLAuth.cpp
index c17a1ba6..7e33fa43 100644
--- a/src/QXmppNonSASLAuth.cpp
+++ b/src/QXmppNonSASLAuth.cpp
@@ -21,55 +21,70 @@
*
*/
-#include "QXmppNonSASLAuth.h"
-#include "QXmppUtils.h"
#include <QCryptographicHash>
+#include <QDomElement>
#include <QXmlStreamWriter>
-QXmppNonSASLAuthTypesRequestIq::QXmppNonSASLAuthTypesRequestIq() : QXmppIq(QXmppIq::Get)
-{
+#include "QXmppConstants.h"
+#include "QXmppNonSASLAuth.h"
+#include "QXmppUtils.h"
+QXmppNonSASLAuthIq::QXmppNonSASLAuthIq()
+ : QXmppIq(QXmppIq::Set),
+ m_useplaintext(false)
+{
}
-void QXmppNonSASLAuthTypesRequestIq::setUsername( const QString &username )
+void QXmppNonSASLAuthIq::parseElementFromChild(const QDomElement &element)
{
- m_username = username;
+ QDomElement queryElement = element.firstChildElement("query");
+ m_username = queryElement.firstChildElement("username").text();
+ m_password = queryElement.firstChildElement("password").text();
+ m_digest = queryElement.firstChildElement("digest").text();
+ m_resource = queryElement.firstChildElement("resource").text();
}
-void QXmppNonSASLAuthTypesRequestIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
+void QXmppNonSASLAuthIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
{
writer->writeStartElement("query");
- writer->writeAttribute( "xmlns","jabber:iq:auth");
- writer->writeTextElement("username", m_username );
+ writer->writeAttribute("xmlns", ns_auth);
+ if (!m_username.isEmpty())
+ writer->writeTextElement("username", m_username);
+ if (!m_password.isEmpty())
+ {
+ if ( m_useplaintext )
+ writer->writeTextElement("password", m_password);
+ else
+ {//SHA1(concat(sid, password)).
+ QByteArray textSid = m_sid.toUtf8();
+ QByteArray encodedPassword = m_password.toUtf8();
+ QByteArray digest = QCryptographicHash::hash(textSid + encodedPassword, QCryptographicHash::Sha1 ).toHex();
+ writer->writeTextElement("digest", digest);
+ }
+ }
+ if (!m_resource.isEmpty())
+ writer->writeTextElement("resource", m_resource);
writer->writeEndElement();
}
-QXmppNonSASLAuthIq::QXmppNonSASLAuthIq() : QXmppIq(QXmppIq::Set), m_useplaintext(false)
+QString QXmppNonSASLAuthIq::username() const
{
+ return m_username;
+}
+void QXmppNonSASLAuthIq::setUsername( const QString &username )
+{
+ m_username = username;
}
-void QXmppNonSASLAuthIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
+QString QXmppNonSASLAuthIq::digest() const
{
- writer->writeStartElement("query");
- writer->writeAttribute( "xmlns","jabber:iq:auth");
- writer->writeTextElement("username", m_username );
- if ( m_useplaintext )
- writer->writeTextElement("password", m_password );
- else
- {//SHA1(concat(sid, password)).
- QByteArray textSid = m_sid.toUtf8();
- QByteArray encodedPassword = m_password.toUtf8();
- QByteArray digest = QCryptographicHash::hash(textSid + encodedPassword, QCryptographicHash::Sha1 ).toHex();
- writer->writeTextElement("digest", digest );
- }
- writer->writeTextElement("resource", m_resource );
- writer->writeEndElement();
+ return m_digest;
}
-void QXmppNonSASLAuthIq::setUsername( const QString &username )
+QString QXmppNonSASLAuthIq::password() const
{
- m_username = username;
+ return m_password;
}
void QXmppNonSASLAuthIq::setPassword( const QString &password )
@@ -77,17 +92,23 @@ void QXmppNonSASLAuthIq::setPassword( const QString &password )
m_password = password;
}
-void QXmppNonSASLAuthIq::setResource( const QString &resource )
+QString QXmppNonSASLAuthIq::resource() const
+{
+ return m_resource;
+}
+
+void QXmppNonSASLAuthIq::setResource(const QString &resource)
{
m_resource = resource;
}
-void QXmppNonSASLAuthIq::setStreamId( const QString &sid )
+void QXmppNonSASLAuthIq::setStreamId(const QString &sid)
{
m_sid = sid;
}
-void QXmppNonSASLAuthIq::setUsePlainText( bool use )
+void QXmppNonSASLAuthIq::setUsePlainText(bool use)
{
m_useplaintext = use;
}
+