mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
kbx,gpg: Allow lookup using a UBID.
* common/userids.c (classify_user_id): Detect UBIDs. * kbx/backend-cache.c (blob_table_put): Store the public key type. (be_cache_search): Add search mode for UBIDs. * kbx/backend.h (struct db_request_part_s): Add cache.seqno_ubid. * g10/keydb.c (keydb_search_desc_dump): Fix printing of keygrip. Add ubid printing. * g10/call-keyboxd.c (keydb_search): Support search by UBID. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
280e9c9cfa
commit
4be79b5abe
7 changed files with 64 additions and 7 deletions
|
@ -65,6 +65,9 @@
|
|||
* (note that you can't search for these characters). Compare
|
||||
* is not case sensitive.
|
||||
* - If the userid starts with a '&' a 40 hex digits keygrip is expected.
|
||||
* - If the userid starts with a '^' followed by 40 hex digits it describes
|
||||
* a Unique-Blob-ID (UBID) which is the hash of keyblob or certificate as
|
||||
* stored in the database. This is used in the IPC of the keyboxd.
|
||||
*/
|
||||
|
||||
gpg_error_t
|
||||
|
@ -251,6 +254,17 @@ classify_user_id (const char *name, KEYDB_SEARCH_DESC *desc, int openpgp_hack)
|
|||
}
|
||||
break;
|
||||
|
||||
case '^': /* UBID */
|
||||
{
|
||||
if (hex2bin (s+1, desc->u.ubid, 20) < 0)
|
||||
{
|
||||
rc = gpg_error (GPG_ERR_INV_USER_ID); /* Invalid. */
|
||||
goto out;
|
||||
}
|
||||
mode = KEYDB_SEARCH_MODE_UBID;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (s[0] == '0' && s[1] == 'x')
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue