[Pkg-owncloud-commits] [qtkeychain] 39/63: Added libsecret support.
Sandro Knauß
hefee at debian.org
Sat Jun 10 14:39:30 UTC 2017
This is an automated email from the git hooks/post-receive script.
hefee pushed a commit to branch master
in repository qtkeychain.
commit 14f7df29793d38b1d6b1d00eeee935892d71c7e7
Author: Armin Novak <armin.novak at thincast.com>
Date: Thu Jan 14 14:13:36 2016 +0100
Added libsecret support.
---
CMakeLists.txt | 15 +++++++++++++--
keychain.h | 7 ++++---
keychain_p.h | 4 ++--
keychain_unix.cpp | 28 +++++++++++++++++++++++++++-
4 files changed, 46 insertions(+), 8 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 167081e..423c69a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 2.8.11)
project(qtkeychain)
+include(FindPkgConfig)
+
###
set(QTKEYCHAIN_VERSION 0.7.90)
@@ -24,7 +26,7 @@ if (WIN32)
option(USE_CREDENTIAL_STORE "Build with windows CredentialStore support" ON)
if (USE_CREDENTIAL_STORE)
- add_definitions(-DUSE_CREDENTIAL_STORE=1)
+ add_definitions(-DUSE_CREDENTIAL_STORE=1)
endif()
endif()
@@ -148,7 +150,16 @@ if(APPLE)
endif()
if(UNIX AND NOT APPLE AND NOT ANDROID)
- list(APPEND qtkeychain_SOURCES keychain_unix.cpp gnomekeyring.cpp plaintextstore.cpp)
+ option(LIBSECRET_SUPPORT "Build with libsecret support" ON)
+
+ if(LIBSECRET_SUPPORT)
+ pkg_check_modules(LIBSECRET libsecret-1)
+
+ add_definitions(-DHAVE_LIBSECRET=${LIBSECRET_FOUND})
+ INCLUDE_DIRECTORIES(${LIBSECRET_INCLUDE_DIRS})
+ endif()
+
+ list(APPEND qtkeychain_SOURCES keychain_unix.cpp gnomekeyring.cpp libsecret.cpp plaintextstore.cpp)
qt_add_dbus_interface(qtkeychain_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.KWallet.xml kwallet_interface KWalletInterface)
list(APPEND qtkeychain_LIBRARIES ${QTDBUS_LIBRARIES} )
endif()
diff --git a/keychain.h b/keychain.h
index c2840de..aafaa57 100644
--- a/keychain.h
+++ b/keychain.h
@@ -42,7 +42,7 @@ class JobPrivate;
*/
class QKEYCHAIN_EXPORT Job : public QObject {
Q_OBJECT
-public:
+public:
~Job();
/**
@@ -134,6 +134,9 @@ public:
*/
void setKey( const QString& key );
+ void emitFinished();
+ void emitFinishedWithError(Error, const QString& errorString);
+
Q_SIGNALS:
/**
* Emitted when this job is finished.
@@ -149,8 +152,6 @@ protected:
private:
void setError( Error error );
void setErrorString( const QString& errorString );
- void emitFinished();
- void emitFinishedWithError(Error, const QString& errorString);
void scheduledStart();
diff --git a/keychain_p.h b/keychain_p.h
index d6a2f10..dc66d12 100644
--- a/keychain_p.h
+++ b/keychain_p.h
@@ -46,6 +46,8 @@ public:
static Mode stringToMode(const QString& s);
Mode mode;
+ Job* const q;
+ QByteArray data;
#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) && !defined(Q_OS_ANDROID)
org::kde::KWallet* iface;
@@ -77,8 +79,6 @@ protected:
bool insecureFallback;
QPointer<QSettings> settings;
QString key;
- Job* const q;
- QByteArray data;
friend class Job;
friend class JobExecutor;
diff --git a/keychain_unix.cpp b/keychain_unix.cpp
index d2e275d..925d262 100644
--- a/keychain_unix.cpp
+++ b/keychain_unix.cpp
@@ -8,11 +8,15 @@
*****************************************************************************/
#include "keychain_p.h"
#include "gnomekeyring_p.h"
+#include "libsecret_p.h"
#include "plaintextstore_p.h"
+#include <QScopedPointer>
+
using namespace QKeychain;
enum KeyringBackend {
+ Backend_LibSecretKeyring,
Backend_GnomeKeyring,
Backend_Kwallet4,
Backend_Kwallet5
@@ -74,6 +78,12 @@ static DesktopEnvironment detectDesktopEnvironment() {
static KeyringBackend detectKeyringBackend()
{
+ /* Libsecret unifies access to KDE and GNOME
+ * password services. */
+ if (LibSecretKeyring::isAvailable()) {
+ return Backend_LibSecretKeyring;
+ }
+
switch (detectDesktopEnvironment()) {
case DesktopEnv_Kde4:
return Backend_Kwallet4;
@@ -87,7 +97,7 @@ static KeyringBackend detectKeyringBackend()
case DesktopEnv_Xfce:
case DesktopEnv_Other:
default:
- if ( GnomeKeyring::isAvailable() ) {
+ if ( GnomeKeyring::isAvailable() ) {
return Backend_GnomeKeyring;
} else {
return Backend_Kwallet4;
@@ -120,6 +130,11 @@ static void kwalletReadPasswordScheduledStartImpl(const char * service, const ch
void ReadPasswordJobPrivate::scheduledStart() {
switch ( getKeyringBackend() ) {
+ case Backend_LibSecretKeyring: {
+ if ( !LibSecretKeyring::findPassword(key, q->service(), this) ) {
+ q->emitFinishedWithError( OtherError, tr("Unknown error") );
+ }
+ } break;
case Backend_GnomeKeyring:
this->mode = JobPrivate::Text;
if ( !GnomeKeyring::find_network_password( key.toUtf8().constData(),
@@ -352,6 +367,12 @@ static void kwalletWritePasswordScheduledStart( const char * service, const char
void WritePasswordJobPrivate::scheduledStart() {
switch ( getKeyringBackend() ) {
+ case Backend_LibSecretKeyring: {
+ if ( !LibSecretKeyring::writePassword(service, key, service, mode,
+ data, this) ) {
+ q->emitFinishedWithError( OtherError, tr("Unknown error") );
+ }
+ } break;
case Backend_GnomeKeyring: {
QString type;
QByteArray password;
@@ -470,6 +491,11 @@ void JobPrivate::kwalletFinished( QDBusPendingCallWatcher* watcher ) {
void DeletePasswordJobPrivate::scheduledStart() {
switch ( getKeyringBackend() ) {
+ case Backend_LibSecretKeyring: {
+ if ( !LibSecretKeyring::deletePassword(key, q->service(), this) ) {
+ q->emitFinishedWithError( OtherError, tr("Unknown error") );
+ }
+ } break;
case Backend_GnomeKeyring: {
if ( !GnomeKeyring::delete_network_password(
key.toUtf8().constData(), q->service().toUtf8().constData(),
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/qtkeychain.git
More information about the Pkg-owncloud-commits
mailing list