# HG changeset patch # User Mikael Berthe # Date 1443978283 -7200 # Node ID 84252c616919d76bdcb761924f929c14d4ddb561 # Parent e3b66c8ead4f1195886291b4c6e7e5d3382fb350 PGP: Encrypt messages with our own PGP key when carbons are enabled diff -r e3b66c8ead4f -r 84252c616919 mcabber/mcabber/api.h --- a/mcabber/mcabber/api.h Sun Oct 04 19:04:04 2015 +0200 +++ b/mcabber/mcabber/api.h Sun Oct 04 19:04:43 2015 +0200 @@ -4,7 +4,7 @@ #include #include // For MCABBER_BRANCH -#define MCABBER_API_VERSION 36 +#define MCABBER_API_VERSION 37 #define MCABBER_API_MIN 36 #define MCABBER_BRANCH_DEV 1 diff -r e3b66c8ead4f -r 84252c616919 mcabber/mcabber/pgp.c --- a/mcabber/mcabber/pgp.c Sun Oct 04 19:04:04 2015 +0200 +++ b/mcabber/mcabber/pgp.c Sun Oct 04 19:04:43 2015 +0200 @@ -118,6 +118,13 @@ gpg.private_key = NULL; } +// gpg_get_private_key_id() +// Return the current private key id (static string). +const char *gpg_get_private_key_id(void) +{ + return gpg.private_key; +} + // strip_header_footer(data) // Remove PGP header & footer from data. // Return a new string, or NULL. diff -r e3b66c8ead4f -r 84252c616919 mcabber/mcabber/pgp.h --- a/mcabber/mcabber/pgp.h Sun Oct 04 19:04:04 2015 +0200 +++ b/mcabber/mcabber/pgp.h Sun Oct 04 19:04:43 2015 +0200 @@ -12,6 +12,7 @@ void gpg_terminate(void); void gpg_set_passphrase(const char *passphrase); void gpg_set_private_key(const char *priv_keyid); +const char *gpg_get_private_key_id(void); char *gpg_verify(const char *gpg_data, const char *text, gpgme_sigsum_t *sigsum); char *gpg_sign(const char *gpg_data); diff -r e3b66c8ead4f -r 84252c616919 mcabber/mcabber/xmpp.c --- a/mcabber/mcabber/xmpp.c Sun Oct 04 19:04:04 2015 +0200 +++ b/mcabber/mcabber/xmpp.c Sun Oct 04 19:04:43 2015 +0200 @@ -383,8 +383,13 @@ if (!key && res_pgpdata) key = res_pgpdata->sign_keyid; if (key) { - const char *keys[] = { key }; - enc = gpg_encrypt(text, keys, 1); + int nkeys = 1; + const char *keys[] = { key, 0 }; + if (carbons_enabled()) { + keys[1] = gpg_get_private_key_id(); + nkeys++; + } + enc = gpg_encrypt(text, keys, nkeys); } if (!enc && force) { if (encrypted)