diff options
Diffstat (limited to 'g10/trustdb.c')
-rw-r--r-- | g10/trustdb.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/g10/trustdb.c b/g10/trustdb.c index 64e6ec349..2c096357c 100644 --- a/g10/trustdb.c +++ b/g10/trustdb.c @@ -210,15 +210,20 @@ tdb_register_trusted_key( const char *string ) { gpg_error_t err; KEYDB_SEARCH_DESC desc; + u32 kid[2]; err = classify_user_id (string, &desc, 1); - if (err || desc.mode != KEYDB_SEARCH_MODE_LONG_KID ) + if (!err) { - log_error(_("'%s' is not a valid long keyID\n"), string ); - return; + if (desc.mode == KEYDB_SEARCH_MODE_LONG_KID) + return register_trusted_keyid(desc.u.kid); + if (desc.mode == KEYDB_SEARCH_MODE_FPR && desc.fprlen == 20) { + kid[0] = buf32_to_u32 (desc.u.fpr+12); + kid[1] = buf32_to_u32 (desc.u.fpr+16); + return register_trusted_keyid(kid); + } } - - register_trusted_keyid(desc.u.kid); + log_error(_("'%s' is not a valid long keyID or fingerprint\n"), string ); } /* |