diff options
Diffstat (limited to 'config.profiles/harmattan/patches/signon_authenticator4.diff')
-rw-r--r-- | config.profiles/harmattan/patches/signon_authenticator4.diff | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/config.profiles/harmattan/patches/signon_authenticator4.diff b/config.profiles/harmattan/patches/signon_authenticator4.diff deleted file mode 100644 index 63e8d51..0000000 --- a/config.profiles/harmattan/patches/signon_authenticator4.diff +++ /dev/null @@ -1,230 +0,0 @@ -Index: qt-maemo-qtp/src/3rdparty/signon/signon.pri -=================================================================== ---- /dev/null -+++ qt-maemo-qtp/src/3rdparty/signon/signon.pri -@@ -0,0 +1,2 @@ -+# signon dependency -+CONFIG += qdbus -Index: qt-maemo-qtp/src/network/access/access.pri -=================================================================== ---- qt-maemo-qtp.orig/src/network/access/access.pri -+++ qt-maemo-qtp/src/network/access/access.pri -@@ -61,3 +61,4 @@ - access/qnetworkdiskcache.cpp - - include($$PWD/../../3rdparty/zlib_dependency.pri) -+include($$PWD/../../3rdparty/signon/signon.pri) -Index: qt-maemo-qtp/src/network/kernel/qauthenticator.cpp -=================================================================== ---- qt-maemo-qtp.orig/src/network/kernel/qauthenticator.cpp -+++ qt-maemo-qtp/src/network/kernel/qauthenticator.cpp -@@ -129,6 +129,9 @@ - \sa QSslSocket - */ - -+#ifndef QT_NO_SIGNON -+#include <QtDBus/QtDBus> -+#endif //QT_NO_SIGNON - - /*! - Constructs an empty authentication object -@@ -421,17 +424,40 @@ - { - QByteArray response; - const char *methodString = 0; -+#ifndef QT_NO_SIGNON -+ bool valid = false; -+ qint32 id = 0; -+#endif //QT_NO_SIGNON -+ - switch(method) { - case QAuthenticatorPrivate::None: - methodString = ""; - phase = Done; - break; - case QAuthenticatorPrivate::Plain: -+#ifndef QT_NO_SIGNON -+ id = this->options.value(QLatin1String("identity")).toInt(&valid); -+ if (valid) { -+ //get response from sso -+ QVariantMap signon = signonResponse(id, QLatin1String("password"),QVariantMap()); -+ response = '\0' + signon.value(QLatin1String("UserName")).toString().toUtf8() -+ + '\0' + signon.value(QLatin1String("Secret")).toString().toUtf8(); -+ } else -+#endif //QT_NO_SIGNON - response = '\0' + user.toUtf8() + '\0' + password.toUtf8(); - phase = Done; - break; - case QAuthenticatorPrivate::Basic: - methodString = "Basic "; -+#ifndef QT_NO_SIGNON -+ id = this->options.value(QLatin1String("identity")).toInt(&valid); -+ if (valid) { -+ //get response from sso -+ QVariantMap signon = signonResponse(id, QLatin1String("password"),QVariantMap()); -+ response = signon.value(QLatin1String("UserName")).toString().toLatin1() -+ + ':' + signon.value(QLatin1String("Secret")).toString().toLatin1(); -+ } else -+#endif //QT_NO_SIGNON - response = user.toLatin1() + ':' + password.toLatin1(); - response = response.toBase64(); - phase = Done; -@@ -613,6 +639,90 @@ - return hash.result().toHex(); - } - -+#ifndef QT_NO_SIGNON -+ -+static QVariantMap signonResponse(const quint32 id, const QString &method, QVariantMap args) -+{ -+ //check dbus connection -+ QDBusConnection connection = QDBusConnection::sessionBus(); -+ if (!QDBusConnection::sessionBus().isConnected()) { -+ qCritical() << "DBus connection failed"; -+ return QVariantMap(); -+ } -+ -+ QDBusMessage msg = -+ QDBusMessage::createMethodCall(QLatin1String("com.nokia.SingleSignOn"), -+ QLatin1String("/com/nokia/SingleSignOn") , -+ QLatin1String("com.nokia.SingleSignOn.AuthService"), -+ QLatin1String("getAuthSessionObjectPath")); -+ msg << id << method; -+ QDBusReply<QString> pathReply = connection.call(msg); -+ -+ QString sessionPath; -+ if (pathReply.isValid()) { -+ sessionPath = pathReply.value(); -+ } else { -+ qDebug() << pathReply.error(); -+ return QVariantMap(); -+ } -+ -+ //authenticate using auth session -+ msg = QDBusMessage::createMethodCall(QLatin1String("com.nokia.SingleSignOn"), -+ sessionPath, QString(), -+ QLatin1String("process")); -+ msg << args << method; -+ QDBusReply<QVariantMap> reply = connection.call(msg); -+ -+ if (reply.isValid()) { -+ QVariantMap map = reply.value(); -+ return map; -+ } else { -+ qDebug() << reply.error(); -+ return QVariantMap(); -+ } -+ return QVariantMap(); -+} -+ -+static QByteArray signonDigestMd5( -+ const quint32 id, -+ const QByteArray &alg, -+ QString &user, -+ const QByteArray &realm, -+ const QByteArray &nonce, /* nonce from server */ -+ QByteArray &nonceCount, /* 8 hex digits */ -+ QByteArray &cNonce, /* client nonce */ -+ const QByteArray &qop, /* qop-value: "", "auth", "auth-int" */ -+ const QByteArray &method, /* method from the request */ -+ const QByteArray &digestUri, /* requested URL */ -+ const QByteArray &hEntity /* H(entity body) if qop="auth-int" */ -+ ) -+{ -+ QByteArray digest = QByteArray(); -+ nonceCount = "00000001"; -+ -+ QVariantMap args; -+ args.insert(QLatin1String("Algorithm"), alg); -+ args.insert(QLatin1String("Realm"), QLatin1String(realm)); -+ args.insert(QLatin1String("nonce"), nonce); -+ args.insert(QLatin1String("nonceCount"), nonceCount); -+ args.insert(QLatin1String("cNonce"), cNonce); -+ args.insert(QLatin1String("qop"), qop); -+ args.insert(QLatin1String("method"), method); -+ args.insert(QLatin1String("digestUri"), digestUri); -+ args.insert(QLatin1String("Entity"), hEntity); -+ -+ QVariantMap response = signonResponse(id, QLatin1String("digest"), args); -+ -+ if (response.isEmpty()) -+ return digest; -+ digest = response.value(QLatin1String("Digest")).toByteArray(); -+ user = response.value(QLatin1String("UserName")).toString(); -+ cNonce = response.value(QLatin1String("cNonce")).toByteArray(); -+ -+ return digest; -+} -+#endif //QT_NO_SIGNON -+ - QByteArray QAuthenticatorPrivate::digestMd5Response(const QByteArray &challenge, const QByteArray &method, const QByteArray &path) - { - QHash<QByteArray,QByteArray> options = parseDigestAuthenticationChallenge(challenge); -@@ -625,9 +735,23 @@ - QByteArray nonce = options.value("nonce"); - QByteArray opaque = options.value("opaque"); - QByteArray qop = options.value("qop"); -+ QByteArray response; - - // qDebug() << "calculating digest: method=" << method << "path=" << path; -- QByteArray response = digestMd5ResponseHelper(options.value("algorithm"), user.toLatin1(), -+ -+#ifndef QT_NO_SIGNON -+ bool valid = false; -+ qint32 id = this->options.value(QLatin1String("identity")).toInt(&valid); -+ if (valid) { -+ //get response from sso -+ response = signonDigestMd5(id, options.value("algorithm"), user, -+ realm.toLatin1(), -+ nonce, nonceCountString, -+ cnonce, qop, method, -+ path, QByteArray()); -+ } else -+#endif //QT_NO_SIGNON -+ response = digestMd5ResponseHelper(options.value("algorithm"), user.toLatin1(), - realm.toLatin1(), password.toLatin1(), - nonce, nonceCountString, - cnonce, qop, method, -Index: qt-maemo-qtp/src/network/kernel/qauthenticator_p.h -=================================================================== ---- qt-maemo-qtp.orig/src/network/kernel/qauthenticator_p.h -+++ qt-maemo-qtp/src/network/kernel/qauthenticator_p.h -@@ -109,6 +109,23 @@ - - }; - -+#ifndef QT_NO_SIGNON -+ static QVariantMap signonResponse(const quint32 id, const QString &method, QVariantMap args); -+ static QByteArray signonDigestMd5( -+ const quint32 id, -+ const QByteArray &alg, -+ QString &user, -+ const QByteArray &realm, -+ const QByteArray &nonce, /* nonce from server */ -+ QByteArray &nonceCount, /* 8 hex digits */ -+ QByteArray &cNonce, /* client nonce */ -+ const QByteArray &qop, /* qop-value: "", "auth", "auth-int" */ -+ const QByteArray &method, /* method from the request */ -+ const QByteArray &digestUri, /* requested URL */ -+ const QByteArray &hEntity /* H(entity body) if qop="auth-int" */ -+ ); -+#endif //QT_NO_SIGNON -+ - - QT_END_NAMESPACE - -Index: qt-maemo-qtp/src/src.pro -=================================================================== ---- qt-maemo-qtp.orig/src/src.pro -+++ qt-maemo-qtp/src/src.pro -@@ -4,8 +4,9 @@ - unset(SRC_SUBDIRS) - win32:SRC_SUBDIRS += src_winmain - symbian:SRC_SUBDIRS += src_s60main --SRC_SUBDIRS += src_corelib src_xml src_network src_sql src_testlib -+SRC_SUBDIRS += src_corelib src_xml - !symbian:contains(QT_CONFIG, dbus):SRC_SUBDIRS += src_dbus -+SRC_SUBDIRS += src_network src_sql src_testlib - !contains(QT_CONFIG, no-gui): SRC_SUBDIRS += src_gui - !wince*:!symbian:!vxworks:contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_qt3support - |