Hello,

with respect to my post "get id of key used for s/mime signature" on the
mutt-users list, I have written a brief patch to show the key id. To
reduce code duplication, I added a function mutt_align to curs_lib.c,
but I am not sure whether that's the best place to go. I hope my aged C
skills have not introduced too many errors, so feedback is very welcome.

Best regards,
Robert


-- >8 --
---
 crypt-gpgme.c | 21 +++++++--------------
 curs_lib.c    | 12 ++++++++++++
 protos.h      |  1 +
 3 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/crypt-gpgme.c b/crypt-gpgme.c
index ccae5503..e42be23d 100644
--- a/crypt-gpgme.c
+++ b/crypt-gpgme.c
@@ -1619,9 +1619,8 @@ static void show_one_sig_validity(gpgme_ctx_t ctx, int 
idx, STATE *s)
 static void print_smime_keyinfo(const char *msg, gpgme_signature_t sig,
                                 gpgme_key_t key, STATE *s)
 {
-  int msgwid;
   gpgme_user_id_t uids = NULL;
-  int i, aka = 0;
+  int aka = 0;
 
   state_puts(msg, s);
   state_puts(" ", s);
@@ -1634,18 +1633,17 @@ static void print_smime_keyinfo(const char *msg, 
gpgme_signature_t sig,
         continue;
       if (aka)
       {
-        msgwid = mutt_strwidth(msg) - mutt_strwidth(_("aka: ")) + 1;
-        if (msgwid < 0)
-          msgwid = 0;
-        for (i = 0; i < msgwid; i++)
-          state_puts(" ", s);
-        state_puts(_("aka: "), s);
+        mutt_align(msg, _("aka: "), s);
       }
       state_puts(uids->uid, s);
       state_puts("\n", s);
 
       aka = 1;
     }
+
+    mutt_align(msg, _("KeyId: "), s);
+    state_puts(key->fpr, s);
+    state_puts("\n", s);
   }
   else
   {
@@ -1666,12 +1664,7 @@ static void print_smime_keyinfo(const char *msg, 
gpgme_signature_t sig,
      "Jan 1 1970" is not the created date. */
   if (sig->timestamp)
   {
-    msgwid = mutt_strwidth(msg) - mutt_strwidth(_("created: ")) + 1;
-    if (msgwid < 0)
-      msgwid = 0;
-    for (i = 0; i < msgwid; i++)
-      state_puts(" ", s);
-    state_puts(_("created: "), s);
+    mutt_align(msg, _("created: "), s);
     print_time(sig->timestamp, s);
     state_puts("\n", s);
   }
diff --git a/curs_lib.c b/curs_lib.c
index 5c93cbb0..e6d1f7d5 100644
--- a/curs_lib.c
+++ b/curs_lib.c
@@ -1654,3 +1654,15 @@ int mutt_strwidth(const char *s)
   }
   return w;
 }
+
+void mutt_align(const char *msg, const char *key, STATE *s)
+{
+  int msgwid = mutt_strwidth(msg) - mutt_strwidth(_(key)) + 1;
+  int i;
+
+  if (msgwid < 0)
+    msgwid = 0;
+  for (i = 0; i < msgwid; i++)
+    state_puts(" ", s);
+  state_puts(key, s);
+}
diff --git a/protos.h b/protos.h
index 4958aa0e..407f4859 100644
--- a/protos.h
+++ b/protos.h
@@ -407,6 +407,7 @@ int mutt_smtp_send(const ADDRESS *, const ADDRESS *, const 
ADDRESS *,
 size_t mutt_wstr_trunc(const char *, size_t, size_t, size_t *);
 int mutt_charlen(const char *s, int *);
 int mutt_strwidth(const char *);
+void mutt_align(const char *msg, const char *key, STATE *s);
 int mutt_compose_menu(SEND_CONTEXT *);
 int mutt_thread_set_flag(HEADER *, int, int, int);
 int mutt_user_is_recipient(HEADER *);
-- 
2.47.3


Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to