2005-12-09 [cleroy] 1.9.100cvs79
[claws.git] / src / plugins / pgpcore / sgpgme.c
index c0eacf1910fb240e7b82d77d6a28086f2de12333..dba63e7c93226cf1450c83dc3ffd53355f9a7609 100644 (file)
@@ -30,6 +30,9 @@
 #include <glib/gi18n.h>
 #include <stdio.h>
 #include <errno.h>
+#if HAVE_LOCALE_H
+#  include <locale.h>
+#endif
 
 #include "sgpgme.h"
 #include "privacy.h"
@@ -87,11 +90,18 @@ SignatureStatus sgpgme_sigstat_gpgme_to_privacy(gpgme_ctx_t ctx, gpgme_verify_re
        debug_print("err code %d\n", gpg_err_code(sig->status));
        switch (gpg_err_code(sig->status)) {
        case GPG_ERR_NO_ERROR:
-               if ((validity != GPGME_VALIDITY_MARGINAL) &&
-                   (validity != GPGME_VALIDITY_FULL) &&
-                   (validity != GPGME_VALIDITY_ULTIMATE))
-                       return SIGNATURE_WARN;
-               return SIGNATURE_OK;
+               switch (gpg_err_code(sig->validity)) {
+               case GPGME_VALIDITY_NEVER:
+                       return SIGNATURE_INVALID;
+               case GPGME_VALIDITY_UNKNOWN:
+               case GPGME_VALIDITY_UNDEFINED:
+               case GPGME_VALIDITY_MARGINAL:
+               case GPGME_VALIDITY_FULL:
+               case GPGME_VALIDITY_ULTIMATE:
+                       return SIGNATURE_OK;
+               default:
+                       return SIGNATURE_CHECK_FAILED;
+               }
        case GPG_ERR_SIG_EXPIRED:
        case GPG_ERR_KEY_EXPIRED:
                return SIGNATURE_WARN;
@@ -169,8 +179,19 @@ gchar *sgpgme_sigstat_info_short(gpgme_ctx_t ctx, gpgme_verify_result_t status)
                uname = g_strdup("<?>");
        switch (gpg_err_code(sig->status)) {
        case GPG_ERR_NO_ERROR:
-               result = g_strdup_printf(_("Good signature from %s (Trust: %s)."),
-                       uname, get_validity_str(sig->validity));
+               switch (gpg_err_code(sig->validity)) {
+               case GPGME_VALIDITY_MARGINAL:
+               case GPGME_VALIDITY_FULL:
+               case GPGME_VALIDITY_ULTIMATE:
+                       result = g_strdup_printf(_("Good signature from %s."), uname);
+                       break;
+               case GPGME_VALIDITY_UNKNOWN:
+               case GPGME_VALIDITY_UNDEFINED:
+               case GPGME_VALIDITY_NEVER:
+               default:
+                       result = g_strdup_printf(_("Good signature (untrusted) from %s."), uname);
+                       break;
+               }
                break;
        case GPG_ERR_SIG_EXPIRED:
                result = g_strdup_printf(_("Expired signature from %s."), uname);
@@ -181,9 +202,12 @@ gchar *sgpgme_sigstat_info_short(gpgme_ctx_t ctx, gpgme_verify_result_t status)
        case GPG_ERR_BAD_SIGNATURE:
                result = g_strdup_printf(_("Bad signature from %s."), uname);
                break;
-       case GPG_ERR_NO_PUBKEY:
-               result = g_strdup(_("No key available to verify this signature."));
+       case GPG_ERR_NO_PUBKEY: {
+               gchar *id = g_strdup(sig->fpr + strlen(sig->fpr)-8);
+               result = g_strdup_printf(_("Key 0x%s not available to verify this signature."), id);
+               g_free(id);
                break;
+               }
        default:
                result = g_strdup(_("The signature has not been checked."));
                break;
@@ -229,8 +253,8 @@ gchar *sgpgme_sigstat_info_full(gpgme_ctx_t ctx, gpgme_verify_result_t status)
                case GPG_ERR_NO_ERROR:
                case GPG_ERR_KEY_EXPIRED:
                        g_string_append_printf(siginfo,
-                               _("Good signature from \"%s\"\n"),
-                               uid);
+                               _("Good signature from \"%s\" (Trust: %s)\n"),
+                               uid, get_validity_str(sig->validity));
                        break;
                case GPG_ERR_SIG_EXPIRED:
                        g_string_append_printf(siginfo,