diff options
-rw-r--r-- | gnupgparse.c | 16 | ||||
-rw-r--r-- | init.h | 7 | ||||
-rw-r--r-- | mutt.h | 1 |
3 files changed, 18 insertions, 6 deletions
diff --git a/gnupgparse.c b/gnupgparse.c index 0800add8..20f8834a 100644 --- a/gnupgparse.c +++ b/gnupgparse.c @@ -153,7 +153,7 @@ static pgp_key_t *parse_pub_line (char *buf, int *is_subkey, pgp_key_t *k) else return NULL; - if (!is_uid) + if (!(is_uid || (*is_subkey && option (OPTPGPIGNORESUB)))) k = safe_calloc (sizeof (pgp_key_t), 1); break; @@ -194,7 +194,8 @@ static pgp_key_t *parse_pub_line (char *buf, int *is_subkey, pgp_key_t *k) dprint (2, (debugfile, "key len: %s\n", p)); - k->keylen = atoi (p); /* fixme: add validation checks */ + if (!(*is_subkey && option (OPTPGPIGNORESUB))) + k->keylen = atoi (p); /* fixme: add validation checks */ break; } case 4: /* pubkey algo */ @@ -202,8 +203,12 @@ static pgp_key_t *parse_pub_line (char *buf, int *is_subkey, pgp_key_t *k) dprint (2, (debugfile, "pubkey algorithm: %s\n", p)); - k->numalg = atoi (p); - k->algorithm = pgp_pkalgbytype (atoi (p)); + if (!(*is_subkey && option (OPTPGPIGNORESUB))) + { + k->numalg = atoi (p); + k->algorithm = pgp_pkalgbytype (atoi (p)); + } + k->flags |= pgp_get_abilities (atoi (p)); break; } @@ -212,7 +217,7 @@ static pgp_key_t *parse_pub_line (char *buf, int *is_subkey, pgp_key_t *k) dprint (2, (debugfile, "key id: %s\n", p)); /* We really should do a check here */ - k->keyid = safe_strdup (p); + mutt_str_replace (&k->keyid, p); break; } @@ -333,7 +338,6 @@ pgp_key_t *pgp_get_candidates (pgp_ring_t keyring, LIST * hints) mutt_wait_filter (thepid); close (devnull); - return db; } @@ -1067,6 +1067,13 @@ struct option_t MuttVars[] = { ** \fIpgp-menu\fP, when encryption is not required or signing is ** requested as well. */ + { "pgp_ignore_subkeys", DT_BOOL, R_NONE, OPTPGPIGNORESUB, 1}, + /* + ** .pp + ** Setting this variable will cause Mutt to ignore OpenPGP subkeys. Instead, + ** the principal key will inherit the subkeys' capabilities. Unset this + ** if you want to play interesting key selection games. + */ { "pgp_entry_format", DT_STR, R_NONE, UL &PgpEntryFormat, UL "%4n %t%f %4l/0x%k %-4a %2c %u" }, /* ** .pp @@ -375,6 +375,7 @@ enum #ifdef HAVE_PGP OPTPGPAUTOSIGN, OPTPGPAUTOENCRYPT, + OPTPGPIGNORESUB, OPTPGPLONGIDS, OPTPGPREPLYENCRYPT, OPTPGPREPLYSIGN, |