From 935edf88ab29b2f63afc2a0e3af1b33c92033ab7 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 31 Oct 2014 12:15:34 +0100 Subject: kbx: Let keydb_search skip unwanted blobs. * kbx/keybox.h (keybox_blobtype_t): New. * kbx/keybox-defs.h (BLOBTYPE_*): Replace by KEYBOX_BLOBTYPE_*. * kbx/keybox-search.c (keybox_search): Add arg want_blobtype and skip non-matching blobs. * sm/keydb.c (keydb_search): Pass KEYBOX_BLOBTYPE_X509 to keybox_search. * g10/keydb.c (keydb_search): Pass KEYBOX_BLOBTYPE_PGP to keybox_search. -- Without this fix a listing of all keys would fail because the wrong blob type would be returned for the gpg or gpgsm. Signed-off-by: Werner Koch --- kbx/keybox.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'kbx/keybox.h') diff --git a/kbx/keybox.h b/kbx/keybox.h index b44f1b2ba..386fff1e6 100644 --- a/kbx/keybox.h +++ b/kbx/keybox.h @@ -56,6 +56,14 @@ typedef enum #define KEYBOX_FLAG_BLOB_SECRET 1 #define KEYBOX_FLAG_BLOB_EPHEMERAL 2 +/* The keybox blob types. */ +typedef enum + { + KEYBOX_BLOBTYPE_EMPTY = 0, + KEYBOX_BLOBTYPE_HEADER = 1, + KEYBOX_BLOBTYPE_PGP = 2, + KEYBOX_BLOBTYPE_X509 = 3 + } keybox_blobtype_t; /*-- keybox-init.c --*/ @@ -87,6 +95,7 @@ int keybox_get_flags (KEYBOX_HANDLE hd, int what, int idx, unsigned int *value); int keybox_search_reset (KEYBOX_HANDLE hd); int keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc, + keybox_blobtype_t want_blobtype, size_t *r_descindex, unsigned long *r_skipped); -- cgit v1.2.3