Mercurial > ~mikael > mcabber > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
2195:40ddaebeb81e | 2196:8811fe9d6ef0 |
---|---|
260 char *p; | 260 char *p; |
261 bool pgp_invalid = FALSE; | 261 bool pgp_invalid = FALSE; |
262 bool pgp_agent; | 262 bool pgp_agent; |
263 int retries; | 263 int retries; |
264 | 264 |
265 pk = settings_opt_get("pgp_private_key"); | |
266 | |
267 if (!pk) | |
268 scr_LogPrint(LPRINT_LOGNORM, "WARNING: unknown PGP private key"); | |
269 | |
270 if (gpg_init(pk, NULL)) { | |
271 scr_LogPrint(LPRINT_LOGNORM, "WARNING: Could not initialize PGP."); | |
272 return; | |
273 } | |
274 | |
275 // We're done if the PGP engine version is > 1 | |
276 // since the agent is mandatory and password mechanism is external. | |
277 if (!gpg_is_version1()) | |
278 return; | |
279 | |
280 | |
265 p = getenv("GPG_AGENT_INFO"); | 281 p = getenv("GPG_AGENT_INFO"); |
266 pgp_agent = (p && strchr(p, ':')); | 282 pgp_agent = (p && strchr(p, ':')); |
267 | |
268 pk = settings_opt_get("pgp_private_key"); | |
269 pp = settings_opt_get("pgp_passphrase"); | |
270 | 283 |
271 if (settings_opt_get("pgp_passphrase_retries")) | 284 if (settings_opt_get("pgp_passphrase_retries")) |
272 retries = settings_opt_get_int("pgp_passphrase_retries"); | 285 retries = settings_opt_get_int("pgp_passphrase_retries"); |
273 else | 286 else |
274 retries = 2; | 287 retries = 2; |
275 | 288 |
289 pp = settings_opt_get("pgp_passphrase"); | |
290 | |
276 if (!pk) { | 291 if (!pk) { |
277 scr_LogPrint(LPRINT_LOGNORM, "WARNING: unknown PGP private key"); | |
278 pgp_invalid = TRUE; | 292 pgp_invalid = TRUE; |
279 } else if (!(pp || pgp_agent)) { | 293 } else if (!(pp || pgp_agent)) { |
280 // Request PGP passphrase | 294 // Request PGP passphrase |
281 pp = typed_passwd = ask_password("your PGP passphrase"); | 295 pp = typed_passwd = ask_password("your PGP passphrase"); |
282 } | 296 } |
283 gpg_init(pk, pp); | 297 gpg_set_passphrase(pp); |
284 // Erase password from the settings array | 298 // Erase password from the settings array |
285 if (pp) { | 299 if (pp) { |
286 memset((char*)pp, 0, strlen(pp)); | 300 memset((char*)pp, 0, strlen(pp)); |
287 if (typed_passwd) | 301 if (typed_passwd) |
288 g_free(typed_passwd); | 302 g_free(typed_passwd); |