aboutsummaryrefslogtreecommitdiffstats
path: root/g10/getkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/getkey.c')
-rw-r--r--g10/getkey.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/g10/getkey.c b/g10/getkey.c
index ffd5042bc..8df9af58a 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -743,7 +743,8 @@ classify_user_id (const char *name, KEYDB_SEARCH_DESC *desc)
static int
key_byname( GETKEY_CTX *retctx, STRLIST namelist,
- PKT_public_key *pk, PKT_secret_key *sk, int secmode,
+ PKT_public_key *pk, PKT_secret_key *sk,
+ int secmode, int include_disabled,
KBNODE *ret_kb, KEYDB_HANDLE *ret_kdbhd )
{
int rc = 0;
@@ -776,6 +777,13 @@ key_byname( GETKEY_CTX *retctx, STRLIST namelist,
m_free (ctx);
return G10ERR_INV_USER_ID;
}
+ if(!include_disabled
+ && ctx->items[n].mode!=KEYDB_SEARCH_MODE_SHORT_KID
+ && ctx->items[n].mode!=KEYDB_SEARCH_MODE_LONG_KID
+ && ctx->items[n].mode!=KEYDB_SEARCH_MODE_FPR16
+ && ctx->items[n].mode!=KEYDB_SEARCH_MODE_FPR20
+ && ctx->items[n].mode!=KEYDB_SEARCH_MODE_FPR)
+ ctx->items[n].skipfnc=is_disabled;
}
ctx->kr_handle = keydb_new (secmode);
@@ -826,13 +834,14 @@ key_byname( GETKEY_CTX *retctx, STRLIST namelist,
int
get_pubkey_byname (PKT_public_key *pk,
const char *name, KBNODE *ret_keyblock,
- KEYDB_HANDLE *ret_kdbhd )
+ KEYDB_HANDLE *ret_kdbhd, int include_disabled )
{
int rc;
STRLIST namelist = NULL;
add_to_strlist( &namelist, name );
- rc = key_byname( NULL, namelist, pk, NULL, 0, ret_keyblock, ret_kdbhd);
+ rc = key_byname( NULL, namelist, pk, NULL, 0,
+ include_disabled, ret_keyblock, ret_kdbhd);
free_strlist( namelist );
return rc;
}
@@ -841,7 +850,7 @@ int
get_pubkey_bynames( GETKEY_CTX *retctx, PKT_public_key *pk,
STRLIST names, KBNODE *ret_keyblock )
{
- return key_byname( retctx, names, pk, NULL, 0, ret_keyblock, NULL);
+ return key_byname( retctx, names, pk, NULL, 0, 1, ret_keyblock, NULL);
}
int
@@ -998,7 +1007,7 @@ get_seckey_byname2( GETKEY_CTX *retctx,
if( !name && opt.def_secret_key && *opt.def_secret_key ) {
add_to_strlist( &namelist, opt.def_secret_key );
- rc = key_byname( retctx, namelist, NULL, sk, 1, retblock, NULL );
+ rc = key_byname( retctx, namelist, NULL, sk, 1, 1, retblock, NULL );
}
else if( !name ) { /* use the first one as default key */
struct getkey_ctx_s ctx;
@@ -1019,7 +1028,7 @@ get_seckey_byname2( GETKEY_CTX *retctx,
}
else {
add_to_strlist( &namelist, name );
- rc = key_byname( retctx, namelist, NULL, sk, 1, retblock, NULL );
+ rc = key_byname( retctx, namelist, NULL, sk, 1, 1, retblock, NULL );
}
free_strlist( namelist );
@@ -1041,7 +1050,7 @@ int
get_seckey_bynames( GETKEY_CTX *retctx, PKT_secret_key *sk,
STRLIST names, KBNODE *ret_keyblock )
{
- return key_byname( retctx, names, NULL, sk, 1, ret_keyblock, NULL );
+ return key_byname( retctx, names, NULL, sk, 1, 1, ret_keyblock, NULL );
}