/cpw/tomkiewicz/masterpassword: 5a6598847e76: Merge soc.2008.mas...

Tomasz Wasilczyk tomkiewicz at cpw.pidgin.im
Sun Jun 9 13:55:00 EDT 2013


Changeset: 5a6598847e765d04bd23f8b6e11416424e91e12c
Author:	 Tomasz Wasilczyk <tomkiewicz at cpw.pidgin.im>
Date:	 2013-06-09 19:54 +0200
Branch:	 default
URL: https://hg.pidgin.im/cpw/tomkiewicz/masterpassword/rev/5a6598847e76

Description:

Merge soc.2008.masterpassword branch

diffstat:

 .hgignore                                    |     1 +
 COPYRIGHT                                    |     1 +
 configure.ac                                 |   154 ++
 finch/gntaccount.c                           |    15 +-
 finch/gntprefs.c                             |    49 +
 finch/gntprefs.h                             |     5 +
 finch/gntui.c                                |     1 +
 libpurple/Makefile.am                        |     4 +
 libpurple/Makefile.mingw                     |    11 +
 libpurple/account.c                          |   235 +++-
 libpurple/account.h                          |    25 +-
 libpurple/cipher.c                           |     9 +-
 libpurple/ciphers/Makefile.am                |    14 +-
 libpurple/ciphers/aes.c                      |   566 ++++++++++
 libpurple/ciphers/ciphers.h                  |    28 +
 libpurple/ciphers/pbkdf2.c                   |   323 ++++++
 libpurple/connection.c                       |     9 +-
 libpurple/core.c                             |     6 +
 libpurple/example/nullclient.c               |     2 +-
 libpurple/keyring.c                          |  1357 ++++++++++++++++++++++++++
 libpurple/keyring.h                          |   548 ++++++++++
 libpurple/plugins/Makefile.am                |    11 +-
 libpurple/plugins/Makefile.mingw             |     4 +
 libpurple/plugins/ciphertest.c               |   339 ++++++
 libpurple/plugins/keyrings/Makefile.am       |    76 +
 libpurple/plugins/keyrings/Makefile.mingw    |    81 +
 libpurple/plugins/keyrings/gnomekeyring.c    |   454 ++++++++
 libpurple/plugins/keyrings/internalkeyring.c |  1043 +++++++++++++++++++
 libpurple/plugins/keyrings/kwallet.cpp       |   582 +++++++++++
 libpurple/plugins/keyrings/secretservice.c   |   337 ++++++
 libpurple/plugins/keyrings/wincred.c         |   321 ++++++
 libpurple/plugins/one_time_password.c        |     2 +-
 libpurple/plugins/perl/common/Account.xs     |    15 +-
 libpurple/plugins/perl/perl-handlers.c       |   118 ++
 libpurple/plugins/perl/perl-handlers.h       |     6 +
 libpurple/plugins/perl/scripts/account.pl    |    33 +
 libpurple/protocols/gg/account.c             |     8 +-
 libpurple/protocols/gg/gg.c                  |     3 +-
 libpurple/protocols/gg/oauth/oauth-purple.c  |     8 +-
 libpurple/protocols/irc/msgs.c               |     3 +-
 libpurple/protocols/jabber/auth.c            |     6 +-
 libpurple/protocols/jabber/auth_cyrus.c      |    12 +-
 libpurple/protocols/jabber/jabber.c          |     6 +-
 libpurple/protocols/msn/session.c            |     4 +-
 libpurple/protocols/mxit/actions.c           |     7 +-
 libpurple/protocols/mxit/cipher.c            |     4 +-
 libpurple/protocols/mxit/login.c             |     2 +-
 libpurple/protocols/myspace/myspace.c        |    10 +-
 libpurple/protocols/novell/novell.c          |     4 +-
 libpurple/protocols/oscar/clientlogin.c      |     2 +-
 libpurple/protocols/oscar/flap_connection.c  |     2 +-
 libpurple/protocols/oscar/oscar.c            |     2 +-
 libpurple/protocols/sametime/sametime.c      |     2 +-
 libpurple/protocols/silc/silc.c              |     4 +-
 libpurple/protocols/simple/simple.c          |     2 +-
 libpurple/protocols/yahoo/libymsg.c          |     6 +-
 libpurple/prpl.c                             |     7 +-
 libpurple/request.h                          |     2 +
 libpurple/util.c                             |    35 +
 libpurple/util.h                             |    27 +
 pidgin/gtkaccount.c                          |    44 +-
 pidgin/gtkconn.c                             |     3 -
 pidgin/gtkprefs.c                            |   459 +++++++-
 pidgin/gtkutils.c                            |    14 +-
 po/POTFILES.in                               |     6 +
 65 files changed, 7274 insertions(+), 205 deletions(-)

diffs (truncated from 8856 to 300 lines):

diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -28,6 +28,7 @@ syntax: regexp
 .*\.pyo$
 .*\.rej$
 .*\.so$
+.*\.moc$
 Doxyfile(\.mingw)?$
 VERSION$
 aclocal.m4
diff --git a/COPYRIGHT b/COPYRIGHT
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -55,6 +55,7 @@ Matthew W.S. Bell
 Igor Belyi
 David Benjamin
 Brian Bernas
+Vivien Bernet-Rollande
 Paul Betts
 Runa Bhattacharjee
 Jonas Birmé
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -110,6 +110,7 @@ AC_DEFINE_UNQUOTED(CONFIG_ARGS, "$ac_con
 dnl Checks for programs.
 AC_PROG_CC
 AM_PROG_CC_C_O
+AC_PROG_CXX
 LT_PREREQ([2.2.6])
 LT_INIT([disable-static])
 LIBTOOL="$LIBTOOL --silent"
@@ -1487,6 +1488,7 @@ if test "x$GCC" = "xyes"; then
 	DEBUG_CFLAGS="-Wall $DEBUG_CFLAGS"
 	CFLAGS="-g $CFLAGS"
 fi
+DEBUG_CPPFLAGS=`echo "$DEBUG_CFLAGS" | $sedpath 's/-Wdeclaration-after-statement//' | $sedpath 's/-Wmissing-prototypes//' | $sedpath 's/-Waggregate-return//'`
 
 if test "x$SUNCC" = "xyes"; then
         CFLAGS="$CFLAGS -features=extensions" 
@@ -1542,6 +1544,152 @@ else
 fi
 
 dnl #######################################################################
+dnl # Check for Secret Service headers
+dnl #######################################################################
+
+# disabled - see secretservice.c
+#AC_ARG_ENABLE(libsecret, [AC_HELP_STRING([--disable-libsecret], [enable Secret Service support])], enable_secret_service=no, enable_secret_service=yes)
+
+#if test "x$enable_secret_service" = "xyes" ; then
+#	PKG_CHECK_MODULES(SECRETSERVICE, [libsecret-1], [
+#		AC_SUBST(SECRETSERVICE_CFLAGS)
+#		AC_SUBST(SECRETSERVICE_LIBS)
+#		AC_DEFINE(HAVE_SECRETSERVICE, 1, [Define if we have Secret Service.])
+#	])
+#fi
+
+#AM_CONDITIONAL(ENABLE_SECRETSERVICE, test "x$enable_secret_service" = "xyes")
+AM_CONDITIONAL(ENABLE_SECRETSERVICE, test "x1" = "x2")
+
+dnl #######################################################################
+dnl # Check for GNOME Keyring headers
+dnl #######################################################################
+
+AC_ARG_ENABLE(gnome-keyring, [AC_HELP_STRING([--disable-gnome-keyring], [enable GNOME Keyring support])], enable_gnome_keyring=no, enable_gnome_keyring=yes)
+
+if test "x$enable_gnome_keyring" = "xyes" ; then
+	PKG_CHECK_MODULES(GNOMEKEYRING, [gnome-keyring-1], [
+		AC_SUBST(GNOMEKEYRING_CFLAGS)
+		AC_SUBST(GNOMEKEYRING_LIBS)
+		AC_DEFINE(HAVE_GNOMEKEYRING, 1, [Define if we have GNOME Keyring.])
+	])
+fi
+
+AM_CONDITIONAL(ENABLE_GNOMEKEYRING, test "x$enable_gnome_keyring" = "xyes")
+
+dnl #######################################################################
+dnl # Check for KWallet headers
+dnl #######################################################################
+
+AC_ARG_ENABLE(kwallet, [AC_HELP_STRING([--disable-kwallet], [enable KWallet support])], enable_kwallet=no, enable_kwallet=yes)
+AC_ARG_WITH(kwallet-includes, [AC_HELP_STRING([--with-kwallet-includes=DIR], [compile the KWallet plugin against includes in DIR])], [ac_kwallet_includes="$withval"], [ac_kwallet_includes="no"])
+AC_ARG_WITH(kwallet-libs, [AC_HELP_STRING([--with-kwallet-libs=DIR], [compile the KWallet plugin against the KWallet libs in DIR])], [ac_kwallet_libs="$withval"], [ac_kwallet_libs="no"])
+
+if test "x$enable_kwallet" = "xyes"; then
+	KWALLET_CXXFLAGS=""
+	KWALLET_LIBS=""
+	if test -z "$with_kwallet_includes" || test -z "$with_kwallet_libs"; then
+		AC_CHECK_PROG(KDE4_CONFIG, kde4-config, kde4-config, no)
+		if test "x$KDE4_CONFIG" = "xno"; then
+			if test "x$force_deps" = "xyes"; then
+				AC_MSG_WARN([
+kde4-config not found. $KDE4_CONFIG
+Use --disable-kwallet if you do not need KWallet support.
+Use --with-kwallet-includes and --with-kwallet-libs to set up includes manually.
+])
+			enable_kwallet=no
+			fi
+		fi
+	fi
+fi
+
+if test "x$enable_kwallet" = "xyes"; then
+	AC_LANG_PUSH([C++])
+	CPPFLAGS_save="$CPPFLAGS"
+
+	if test "$ac_kwallet_includes" != "no"; then
+		KWALLET_CXXFLAGS="-I$ac_kwallet_includes"
+	elif test "x$KDE4_CONFIG" != "xno"; then
+		KWALLET_CXXFLAGS="-I`$KDE4_CONFIG --path include`"
+	fi
+	CPPFLAGS="$CPPFLAGS $KWALLET_CXXFLAGS"
+	AC_CHECK_HEADER([kwallet.h], , [enable_kwallet=no])
+
+	CPPFLAGS="$CPPFLAGS_save"
+	AC_LANG_POP
+fi
+
+if test "x$enable_kwallet" = "xyes"; then
+	dnl Ensure C++ compiler works
+	AC_CHECK_PROG(CXXTEST, [$CXX], [$CXX])
+	if test "x$CXXTEST" = "x"; then
+		if test "x$force_deps" = "xyes"; then
+			AC_MSG_WARN([
+A C++ compiler was not found.
+Use --disable-kwallet if you do not need KWallet support.
+])
+		enable_kwallet=no
+		fi
+	fi
+fi
+
+AC_LANG_PUSH([C++])
+CPPFLAGS_save="$CPPFLAGS"
+LDFLAGS_save="$LDFLAGS"
+if test "x$enable_kwallet" = "xyes"; then
+
+	PKG_CHECK_MODULES(QT4, [QtCore], [
+			AC_SUBST(QT4_CFLAGS)
+			AC_SUBST(QT4_LIBS)
+		], [
+			AC_MSG_RESULT(no)
+			AC_MSG_WARN([
+Qt4 development headers not found.
+Use --disable-kwallet if you do not need KWallet support.
+])
+			enable_kwallet=no
+		])
+fi
+
+if test "x$enable_kwallet" = "xyes"; then
+	AC_MSG_CHECKING([for metaobject compiler])
+	MOC=`$PKG_CONFIG --variable=moc_location QtCore`
+	AC_SUBST(MOC)
+	AC_MSG_RESULT([$MOC])
+
+
+	AC_MSG_CHECKING([for KWallet libraries])
+	if test "$ac_kwallet_libs" != "no"; then
+		KWALLET_LIBS="-L$ac_kwallet_libs -lkdeui"
+	elif test "x$KDE4_CONFIG" != "xno"; then
+		KWALLET_LIBS="-L`$KDE4_CONFIG --install lib`/kde4/devel -lkdeui"
+	else
+		KWALLET_LIBS="-lkdeui"
+	fi
+	KWALLET_LIBS="$KWALLET_LIBS"
+	CPPFLAGS="$CPPFLAGS $KWALLET_CXXFLAGS"
+	LDFLAGS="$LDFLAGS $KWALLET_LIBS $QT4_LIBS"
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <kwallet.h>],
+		[KWallet::Wallet::LocalWallet();])], [AC_MSG_RESULT([yes])],
+		[if test "x$force_deps" = "xyes"; then
+AC_MSG_ERROR([
+KWallet development libraries not found.
+Use --disable-kwallet if you do not need KWallet support.
+])
+fi
+])
+
+fi
+CPPFLAGS="$CPPFLAGS_save"
+LDFLAGS="$LDFLAGS_save"
+AC_LANG_POP
+
+AC_SUBST(KWALLET_CXXFLAGS)
+AC_SUBST(KWALLET_LIBS)
+
+AM_CONDITIONAL(ENABLE_KWALLET, test "x$enable_kwallet" = "xyes")
+
+dnl #######################################################################
 dnl # Check for Python
 dnl #######################################################################
 
@@ -2437,6 +2585,7 @@ if test "$ac_cv_cygwin" = yes ; then
 	AC_DEFINE(DEBUG, 1, [Define if debugging is enabled.])
 fi
 
+AC_SUBST(DEBUG_CPPFLAGS)
 AC_SUBST(DEBUG_CFLAGS)
 AC_SUBST(LDADD)
 AC_SUBST(LIBS)
@@ -2715,6 +2864,7 @@ AC_CONFIG_FILES([Makefile
 		   libpurple/purple-3.pc
 		   libpurple/purple-3-uninstalled.pc
 		   libpurple/plugins/Makefile
+		   libpurple/plugins/keyrings/Makefile
 		   libpurple/plugins/mono/Makefile
 		   libpurple/plugins/mono/api/Makefile
 		   libpurple/plugins/mono/loader/Makefile
@@ -2798,6 +2948,10 @@ echo Use startup notification...... : $e
 echo Build with GtkSpell support... : $enable_gtkspell
 echo Build with GCR widgets........ : $enable_gcr
 echo
+echo Build with GNOME Keyring...... : $enable_gnome_keyring
+echo Build with KWallet............ : $enable_kwallet
+#echo Build with Secret Service..... : $enable_secret_service
+echo
 echo Build with plugin support..... : $enable_plugins
 echo Build with Mono support....... : $enable_mono
 echo Build with Perl support....... : $enable_perl
diff --git a/finch/gntaccount.c b/finch/gntaccount.c
--- a/finch/gntaccount.c
+++ b/finch/gntaccount.c
@@ -195,9 +195,9 @@ save_account_cb(AccountEditDialog *dialo
 			gnt_check_box_get_checked(GNT_CHECK_BOX(dialog->remember)));
 	value = gnt_entry_get_text(GNT_ENTRY(dialog->password));
 	if (value && *value)
-		purple_account_set_password(account, value);
+		purple_account_set_password(account, value, NULL, NULL);
 	else
-		purple_account_set_password(account, NULL);
+		purple_account_set_password(account, NULL, NULL, NULL);
 
 	/* Mail notification */
 	purple_account_set_check_mail(account,
@@ -534,7 +534,8 @@ prpl_changed_cb(GntWidget *combo, Purple
 }
 
 static void
-edit_account(PurpleAccount *account)
+edit_account_continue(PurpleAccount *account, 
+	const gchar *password, GError *error, gpointer user_data)
 {
 	GntWidget *window, *hbox;
 	GntWidget *combo, *button, *entry;
@@ -617,7 +618,7 @@ edit_account(PurpleAccount *account)
 	gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(_("Password:")));
 	gnt_box_add_widget(GNT_BOX(hbox), entry);
 	if (account)
-		gnt_entry_set_text(GNT_ENTRY(entry), purple_account_get_password(account));
+		gnt_entry_set_text(GNT_ENTRY(entry), password);
 
 	hbox = gnt_hbox_new(TRUE);
 	gnt_box_set_pad(GNT_BOX(hbox), 0);
@@ -667,6 +668,12 @@ edit_account(PurpleAccount *account)
 }
 
 static void
+edit_account(PurpleAccount *account)
+{
+	purple_account_get_password(account, edit_account_continue, account);
+}
+
+static void
 add_account_cb(GntWidget *widget, gpointer null)
 {
 	edit_account(NULL);
diff --git a/finch/gntprefs.c b/finch/gntprefs.c
--- a/finch/gntprefs.c
+++ b/finch/gntprefs.c
@@ -41,6 +41,7 @@ static struct {
 	GList *freestrings;  /* strings to be freed when the pref-window is closed */
 	gboolean showing;
 	GntWidget *window;
+	GntWidget *keyring_window;
 } pref_request;
 
 void finch_prefs_init()
@@ -195,6 +196,12 @@ static Prefs logging[] =
 	{PURPLE_PREF_NONE, NULL, NULL, NULL},
 };
 
+static Prefs keyring[] =
+{
+	{PURPLE_PREF_STRING, "/purple/keyring/active", N_("Active keyring"), purple_keyring_get_options},
+	{PURPLE_PREF_NONE, NULL, NULL, NULL}
+};
+
 static Prefs idle[] =
 {
 	{PURPLE_PREF_STRING, "/purple/away/idle_reporting", N_("Report Idle time"), get_idle_options},
@@ -246,10 +253,15 @@ void finch_prefs_show_all()
 		return;
 	}
 
+	if (pref_request.keyring_window != NULL)
+		purple_request_close(PURPLE_REQUEST_FIELDS,
+			pref_request.keyring_window);
+



More information about the Commits mailing list