Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37716213
en ru br
ALT Linux repos
S:3.7.0-alt0.6
4.1: 2.2.9-alt1.1
4.0: 2.2.9-alt1.1
3.0: 1.0.4-alt1

Group :: Networking/Mail
RPM: sylpheed

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: sylpheed-3.7.0-tofu.patch
Download


diff -Naurd -x '*.swp' sylpheed-3.7.0.orig/INSTALL sylpheed-3.7.0/INSTALL
--- sylpheed-3.7.0.orig/INSTALL	2017-06-28 11:38:36.000000000 +0300
+++ sylpheed-3.7.0/INSTALL	2018-08-11 21:26:14.701733236 +0300
@@ -137,7 +137,7 @@
 
   http://freshmeat.net/projects/compface/
 
-GnuPG (>= 1.2.0) and GPGME (>= 1.0.0) are required for GnuPG (PGP) support.
+GnuPG (>= 1.2.0) and GPGME (>= 1.7.0) are required for GnuPG (PGP) support.
 You can get GnuPG and GPGME from the following location:
 
   ftp://ftp.gnupg.org/gcrypt/gpgme/
diff -Naurd -x '*.swp' sylpheed-3.7.0.orig/INSTALL.ja sylpheed-3.7.0/INSTALL.ja
--- sylpheed-3.7.0.orig/INSTALL.ja	2017-06-28 11:38:43.000000000 +0300
+++ sylpheed-3.7.0/INSTALL.ja	2018-08-11 21:26:25.734570136 +0300
@@ -137,7 +137,7 @@
 
   http://freshmeat.net/projects/compface/
 
-GnuPG (PGP)対応を有効にしたい場合は、 GPGME 1.0.0 以降と GnuPG 1.2.0 以降が
+GnuPG (PGP)対応を有効にしたい場合は、 GPGME 1.7.0 以降と GnuPG 1.2.0 以降が
 必要です。 GnuPG と GPGME は以下の場所から取得できます:
 
   ftp://ftp.gnupg.org/gcrypt/gpgme/
diff -Naurd -x '*.swp' sylpheed-3.7.0.orig/configure.ac sylpheed-3.7.0/configure.ac
--- sylpheed-3.7.0.orig/configure.ac	2018-01-30 11:49:52.000000000 +0300
+++ sylpheed-3.7.0/configure.ac	2018-08-11 20:36:02.043543279 +0300
@@ -179,7 +179,7 @@
 AC_MSG_CHECKING([whether to use GPGME])
 if test $ac_cv_enable_gpgme = yes; then
 	AC_MSG_RESULT(yes)
-	AM_PATH_GPGME(1.0.0, AC_DEFINE(USE_GPGME, 1, Define if you use GPGME to support OpenPGP.),
+	AM_PATH_GPGME(1.7.0, AC_DEFINE(USE_GPGME, 1, Define if you use GPGME to support OpenPGP.),
 		      [use_gpgme=no
 		       ac_cv_enable_gpgme=no])
 	if test $ac_cv_enable_gpgme = yes; then
diff -Naurd -x '*.swp' sylpheed-3.7.0.orig/src/rfc2015.c sylpheed-3.7.0/src/rfc2015.c
--- sylpheed-3.7.0.orig/src/rfc2015.c	2014-03-26 09:55:35.000000000 +0400
+++ sylpheed-3.7.0/src/rfc2015.c	2018-08-19 08:59:42.143390253 +0300
@@ -157,6 +157,12 @@
 			(str, _("		aka \"%s\"\n"), user->uid);
 		user = user->next;
 	}
+
+	/* gpgme_get_key doesn't set tofu description field even with
+	 * GPGME_KEYLIST_MODE_WITH_TOFU flag set, so it should be
+	 * extracted from sig->key directly */
+	if (sig->key && sig->key->uids && sig->key->uids->tofu)
+		gpgmegtk_tofu_status_to_string (str, sig->key->uids);
 }
 
 static gchar *sig_status_full(gpgme_ctx_t ctx, gpgme_verify_result_t result)
diff -Naurd -x '*.swp' sylpheed-3.7.0.orig/src/sigstatus.c sylpheed-3.7.0/src/sigstatus.c
--- sylpheed-3.7.0.orig/src/sigstatus.c	2010-12-21 11:53:18.000000000 +0300
+++ sylpheed-3.7.0/src/sigstatus.c	2018-08-19 10:58:18.915063156 +0300
@@ -238,9 +238,15 @@
 	case GPG_ERR_NO_ERROR:
 		switch (signature->validity) {
 		case GPGME_VALIDITY_ULTIMATE:
+			result = use_name ? _("Good signature (ultimate trust) from \"%s\"") :
+				_("Good signature");
+			break;
 		case GPGME_VALIDITY_FULL:
+			result = use_name ? _("Good signature (full trust) from \"%s\"") :
+				_("Good signature");
+			break;
 		case GPGME_VALIDITY_MARGINAL:
-			result = use_name ? _("Good signature from \"%s\"") :
+			result = use_name ? _("Good signature (marginal trust) from \"%s\"") :
 				_("Good signature");
 			break;
 		default:
@@ -270,11 +276,100 @@
 		result = _("No public key to verify the signature");
 		break;
 	default:
-		result = _("Error verifying the signature");
+		switch (signature->summary) {
+		case GPGME_SIGSUM_KEY_REVOKED:
+			result = _("The key or at least one certificate has been revoked");
+			break;
+		case GPGME_SIGSUM_KEY_MISSING:
+			result = _("Can't verify due to a missing key or certificate");
+			break;
+		case GPGME_SIGSUM_CRL_MISSING:
+			result = _("The CRL (or an equivalent mechanism) is not available");
+			break;
+		case GPGME_SIGSUM_CRL_TOO_OLD:
+			result = _("Available CRL is too old");
+			break;
+		case GPGME_SIGSUM_BAD_POLICY:
+			result = _("A policy requirement was not met");
+			break;
+		case GPGME_SIGSUM_SYS_ERROR:
+			result = _("A system error occured");
+			break;
+		case GPGME_SIGSUM_TOFU_CONFLICT:
+			result = _("A TOFU conflict was detected");
+			break;
+		default:
+			result = _("Error verifying the signature");
+		}
 		break;
 	}
 
 	return result;
 }
 
+void tofu_to_string(GString *str, gpgme_tofu_info_t tofu, char *uid)
+{
+	if (tofu->description)
+		g_string_sprintfa(str, _("%s\n"), tofu->description);
+	else
+		g_string_sprintfa(str, _("%s:\n"), uid);
+
+	switch (tofu->validity) {
+	case 0:
+		g_string_append(str, _("	Validity [0]: CONFLICT. "));
+		break;
+	case 1:
+		g_string_append(str, _("	Validity [1]: no prior history. "));
+		break;
+	case 2:
+		g_string_append(str, _("	Validity [2]: too little history. "));
+		break;
+	case 3:
+		g_string_append(str, _("	Validity [3]: enough history for basic trust. "));
+		break;
+	case 4:
+		g_string_append(str, _("	Validity [4]: long established history. "));
+		break;
+	default:
+		g_string_append(str, _("	Validity: unknown. "));
+		break;
+	}
+
+	switch (tofu->policy) {
+	case GPGME_TOFU_POLICY_AUTO:
+		g_string_append(str, _("Policy: auto.\n"));
+		break;
+	case GPGME_TOFU_POLICY_GOOD:
+		g_string_append(str, _("Policy: good.\n"));
+		break;
+	case GPGME_TOFU_POLICY_BAD:
+		g_string_append(str, _("Policy: bad.\n"));
+		break;
+	case GPGME_TOFU_POLICY_ASK:
+		g_string_append(str, _("Policy: ask.\n"));
+		break;
+	default:
+		g_string_append(str, _("Policy: unknown.\n"));
+		break;
+	}
+}
+
+void gpgmegtk_tofu_status_to_string(GString *str, gpgme_user_id_t user)
+{
+	gpgme_tofu_info_t tofu;
+	g_string_append(str, _("TOFU status:\n"));
+
+	do {
+		if (!(tofu = user->tofu))
+			continue;
+		tofu_to_string (str, tofu, user->uid);
+
+		while ((tofu = tofu->next)) {
+			g_string_append(str, _("and:\n"));
+			tofu_to_string (str, tofu, user->uid);
+		}
+	}
+	while ((user = user->next));
+}
+
 #endif /* USE_GPGME */
diff -Naurd -x '*.swp' sylpheed-3.7.0.orig/src/sigstatus.h sylpheed-3.7.0/src/sigstatus.h
--- sylpheed-3.7.0.orig/src/sigstatus.h	2006-08-31 12:21:21.000000000 +0400
+++ sylpheed-3.7.0/src/sigstatus.h	2018-08-19 07:45:17.422291629 +0300
@@ -30,5 +30,6 @@
 
 const gchar *gpgmegtk_sig_status_to_string(gpgme_signature_t signature,
         gboolean use_name);
+void gpgmegtk_tofu_status_to_string(GString *str, gpgme_user_id_t user);
 
 #endif /* GPGMEGTK_SIGSTATUS_H */
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin