aboutsummaryrefslogtreecommitdiffstats
path: root/common/userids.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/userids.c')
-rw-r--r--common/userids.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/common/userids.c b/common/userids.c
index 55bd85546..eb714a9af 100644
--- a/common/userids.c
+++ b/common/userids.c
@@ -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')
{