diff -r d4b97a2423eb -r 8a395c2cafc4 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Sun Nov 26 10:30:52 2006 +0100 +++ b/mcabber/src/jabglue.c Sun Nov 26 10:42:25 2006 +0100 @@ -32,6 +32,7 @@ #include "hbuf.h" #include "histolog.h" #include "commands.h" +#include "pgp.h" #define JABBERPORT 5222 #define JABBERSSLPORT 5223 @@ -429,7 +430,20 @@ // (But we want to update internal status even when disconnected, // in order to avoid some problems during network failures) if (online) { - x = presnew(st, recipient, (st != invisible ? msg : NULL)); + const char *s_msg = (st != invisible ? msg : NULL); + x = presnew(st, recipient, s_msg); +#ifdef HAVE_GPGME + if (s_msg && *s_msg && gpg_enabled()) { + char *signature = gpg_sign(s_msg); + if (signature) { + xmlnode y; + y = xmlnode_insert_tag(x, "x"); + xmlnode_put_attrib(y, "xmlns", NS_SIGNED); + xmlnode_insert_cdata(y, signature, (unsigned) -1); + g_free(signature); + } + } +#endif jab_send(jc, x); xmlnode_free(x); } @@ -1393,12 +1407,21 @@ { char *jid; const char *rname, *s; + char *decrypted = NULL; jid = jidtodisp(from); rname = strchr(from, JID_RESOURCE_SEPARATOR); if (rname) rname++; +#ifdef HAVE_GPGME + if (enc && gpg_enabled()) { + decrypted = gpg_decrypt(enc); + if (decrypted) + body = decrypted; + } +#endif + // Check for unexpected groupchat messages // If we receive a groupchat message from a room we're not a member of, // this is probably a server issue and the best we can do is to send @@ -1426,6 +1449,7 @@ } g_free(jid); + g_free(decrypted); buddylist_build(); scr_DrawRoster(); @@ -1444,6 +1468,7 @@ scr_LogPrint(LPRINT_LOGNORM, "Blocked a message from <%s>", jid); } g_free(jid); + g_free(decrypted); } static const char *defaulterrormsg(int code)