--- crypt-autoselectkey/PATCHES Dec 2002 17:44:54 -0000 3.6 +++ crypt-autoselectkey/PATCHES Feb 2003 09:41:25 -0000 @@ -0,0 +1 @@ +patch-1.5.3.dw.crypt-autoselectkey.1 --- crypt-autoselectkey/init.h Dec 2002 18:09:49 -0000 3.28 +++ crypt-autoselectkey/init.h Feb 2003 09:41:26 -0000 @@ -1197,2 +1197,12 @@ struct option_t MuttVars[] = { # ifdef HAVE_PGP + { "pgp_autoselectkey", DT_SYN, R_NONE, UL "crypt_autoselectkey", 0 }, +# endif + { "crypt_autoselectkey", DT_BOOL, R_NONE, OPTCRYPTAUTOSELECT, 0 }, + /* + ** .pp + ** If set, then a list of keys is not presented for selection when only + ** one matching key is available. This may be useful in conjunction with + ** the \fIcrypt-hook\fP command. + */ +# ifdef HAVE_PGP { "pgp_autosign", DT_SYN, R_NONE, UL "crypt_autosign", 0 }, --- crypt-autoselectkey/mutt.h Dec 2002 08:53:21 -0000 3.12 +++ crypt-autoselectkey/mutt.h Feb 2003 09:41:26 -0000 @@ -433,2 +433,3 @@ enum #if defined(HAVE_PGP) || defined(HAVE_SMIME) + OPTCRYPTAUTOSELECT, OPTCRYPTAUTOSIGN, --- crypt-autoselectkey/pgpkey.c Dec 2002 11:19:40 -0000 3.2 +++ crypt-autoselectkey/pgpkey.c Feb 2003 09:41:27 -0000 @@ -437,2 +437,7 @@ static int pgp_id_matches_addr (ADDRESS + +#define pgp_trusted_id(uid) (!option(OPTPGPCHECKTRUST) \ + || (pgp_id_is_valid((uid)) \ + && pgp_id_is_strong((uid)))) + static pgp_key_t *pgp_select_key (pgp_key_t *keys, @@ -452,2 +457,3 @@ static pgp_key_t *pgp_select_key (pgp_ke + int keymatch = 0; /* count matching keys */ int unusable = 0; @@ -481,2 +487,3 @@ static pgp_key_t *pgp_select_key (pgp_ke } + keymatch++; } @@ -489,2 +496,17 @@ static pgp_key_t *pgp_select_key (pgp_ke } + else if (keymatch == 1 && option(OPTCRYPTAUTOSELECT)) + { + /* + * Only one matching key...see if there's an id with enough trust to auto-select + */ + kp = KeyTable[0]->parent; + for (a = kp->address; a; a = a->next) + { + if (pgp_trusted_id(a)) + { + safe_free ((void **) &KeyTable); + return (kp); + } + } + } @@ -599,5 +621,3 @@ static pgp_key_t *pgp_select_key (pgp_ke - if (option (OPTPGPCHECKTRUST) && - (!pgp_id_is_valid (KeyTable[menu->current]) - || !pgp_id_is_strong (KeyTable[menu->current]))) + if (!pgp_trusted_id(KeyTable[menu->current])) {