Mercurial > ~mikael > mcabber > hg
diff mcabber/mcabber/main.c @ 2196:8811fe9d6ef0
Improve support for GnuPG v2+
If the gnupg engine detected is not 1.x, do not check the environment
variable GPG_AGENT_INFO and do not set up a password callback.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Wed, 07 Oct 2015 21:58:38 +0200 |
parents | f30459c47092 |
children | 1afa40f1d80d |
line wrap: on
line diff
--- a/mcabber/mcabber/main.c Wed Oct 07 21:55:51 2015 +0200 +++ b/mcabber/mcabber/main.c Wed Oct 07 21:58:38 2015 +0200 @@ -262,25 +262,39 @@ bool pgp_agent; int retries; + pk = settings_opt_get("pgp_private_key"); + + if (!pk) + scr_LogPrint(LPRINT_LOGNORM, "WARNING: unknown PGP private key"); + + if (gpg_init(pk, NULL)) { + scr_LogPrint(LPRINT_LOGNORM, "WARNING: Could not initialize PGP."); + return; + } + + // We're done if the PGP engine version is > 1 + // since the agent is mandatory and password mechanism is external. + if (!gpg_is_version1()) + return; + + p = getenv("GPG_AGENT_INFO"); pgp_agent = (p && strchr(p, ':')); - pk = settings_opt_get("pgp_private_key"); - pp = settings_opt_get("pgp_passphrase"); - if (settings_opt_get("pgp_passphrase_retries")) retries = settings_opt_get_int("pgp_passphrase_retries"); else retries = 2; + pp = settings_opt_get("pgp_passphrase"); + if (!pk) { - scr_LogPrint(LPRINT_LOGNORM, "WARNING: unknown PGP private key"); pgp_invalid = TRUE; } else if (!(pp || pgp_agent)) { // Request PGP passphrase pp = typed_passwd = ask_password("your PGP passphrase"); } - gpg_init(pk, pp); + gpg_set_passphrase(pp); // Erase password from the settings array if (pp) { memset((char*)pp, 0, strlen(pp));