diff mcabber/src/commands.c @ 1043:ebbde723614b

Store contacts PGP keys Contacts PGP keys are retrieved from presence/message signatures; they're displayed with /info.
author Mikael Berthe <mikael@lilotux.net>
date Sun, 26 Nov 2006 17:08:21 +0100
parents f9e8fd9cb58b
children ea71d31a2607
line wrap: on
line diff
--- a/mcabber/src/commands.c	Sun Nov 26 10:42:25 2006 +0100
+++ b/mcabber/src/commands.c	Sun Nov 26 17:08:21 2006 +0100
@@ -1302,11 +1302,13 @@
       enum imstatus rstatus;
       const char *rst_msg;
       time_t rst_time;
+      struct pgp_data *rpgp;
 
       rprio   = buddy_getresourceprio(bud, resources->data);
       rstatus = buddy_getstatus(bud, resources->data);
       rst_msg = buddy_getstatusmsg(bud, resources->data);
       rst_time = buddy_getstatustime(bud, resources->data);
+      rpgp = buddy_resource_pgp(bud, resources->data);
 
       snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus],
                rprio, (char*)resources->data);
@@ -1322,6 +1324,19 @@
         snprintf(buffer, 127, "Status timestamp: %s", tbuf);
         scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_NONE);
       }
+#ifdef HAVE_GPGME
+      if (rpgp && rpgp->sign_keyid) {
+        snprintf(buffer, 4095, "PGP key id: %s", rpgp->sign_keyid);
+        scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_NONE);
+        if (rpgp->last_sigsum) {
+          gpgme_sigsum_t ss = rpgp->last_sigsum;
+          snprintf(buffer, 4095, "Last PGP signature: %s",
+                  (ss & GPGME_SIGSUM_GREEN ? "good":
+                   (ss & GPGME_SIGSUM_RED ? "bad" : "unknown")));
+          scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_NONE);
+        }
+      }
+#endif
     }
   } else {
     if (name) scr_LogPrint(LPRINT_NORMAL, "Name: %s", name);