aboutsummaryrefslogtreecommitdiffstats
path: root/g10/trustdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/trustdb.c')
-rw-r--r--g10/trustdb.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/g10/trustdb.c b/g10/trustdb.c
index 64e6ec349..00a53e0ea 100644
--- a/g10/trustdb.c
+++ b/g10/trustdb.c
@@ -205,22 +205,34 @@ tdb_register_trusted_keyid (u32 *keyid)
user_utk_list = k;
}
+
void
-tdb_register_trusted_key( const char *string )
+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)
+ {
+ register_trusted_keyid (desc.u.kid);
+ return;
+ }
+ 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);
+ register_trusted_keyid (kid);
+ return;
+ }
}
-
- register_trusted_keyid(desc.u.kid);
+ log_error (_("'%s' is not a valid long keyID\n"), string );
}
+
/*
* Helper to add a key to the global list of ultimately trusted keys.
* Returns: true = inserted, false = already in list.