aboutsummaryrefslogtreecommitdiffstats
path: root/kbx/keybox-search.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Use inline functions to convert buffer data to scalars.Werner Koch2015-02-111-22/+3
| | | | | | | | | | | | | | | * common/host2net.h (buf16_to_ulong, buf16_to_uint): New. (buf16_to_ushort, buf16_to_u16): New. (buf32_to_size_t, buf32_to_ulong, buf32_to_uint, buf32_to_u32): New. -- Commit 91b826a38880fd8a989318585eb502582636ddd8 was not enough to avoid all sign extension on shift problems. Hanno Böck found a case with an invalid read due to this problem. To fix that once and for all almost all uses of "<< 24" and "<< 8" are changed by this patch to use an inline function from host2net.h. Signed-off-by: Werner Koch <[email protected]>
* kbx: Minor cleanup for the previous fix.Werner Koch2015-01-191-7/+7
| | | | | | | | | | | | | * kbx/keybox-search.c (blob_get_keyid): Rename to blob_get_first_keyid. Check number of keys and remove blob type check. -- There is no need to check the blob type. We already know that it is a key blob type and keyids are used for X.509 and OpenPGP. Also added check for number of keys because the other parser functions do it as well. Signed-off-by: Werner Koch <[email protected]>
* kbx: Call skipfnc callback to filter out keysDamien Goutte-Gattat2015-01-191-3/+30
| | | | | | | | | | | | | * kbx/keybox-search.c (blob_get_keyid): New. (keybox-search): Call skipfnc callback function. -- This patch (tentatively) fixes GnuPG-bug-id: 1794 The keybox_search function in kbx/keybox-search.c currently ignores the skipfnc callback, but the validate_key_list function in g10/trustdb.c uses such a callback to exclude ultimately trusted keys.
* gpg: Remove warning message for non-implemented search modes.Werner Koch2014-11-071-1/+1
| | | | | | * kbx/keybox-search.c (keybox_search): Silently ignore. * doc/specify-user-id.texi: Docuement '@", '+', and '.' search prefixes.
* kbx: Let keydb_search skip unwanted blobs.Werner Koch2014-10-311-14/+20
| | | | | | | | | | | | | | | * 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 <[email protected]>
* gpg: Skip overlong keys and a print a warning.Werner Koch2014-10-091-2/+11
| | | | | | | | | | | | | * kbx/keybox-search.c (keybox_search): Add arg r_skipped and skip too long blobs. * sm/keydb.c (keydb_search): Call keybox_search with a dummy param. * g10/keydb.c (struct keydb_handle): Add field skipped_long_blobs. (keydb_search_reset): Reset that field. (keydb_search): Update that field. (keydb_get_skipped_counter): New. * g10/keylist.c (list_all): Print count of skipped keys. Signed-off-by: Werner Koch <[email protected]>
* gpg: Fix uninitialized access to search descindex with gpg keyboxes.Werner Koch2014-05-141-1/+6
| | | | | | | | | | * kbx/keybox-search.c (keybox_search): Add arg R_DESCINDEX. Chnage both callers. * g10/keydb.c (keydb_search): Always set DESCINDEX. -- This only affects the new keybox for OpenPGP keys in 2.1. The bug exhibited itself by running GPA's backup command on Windows.
* kbx: Implement update operation for OpenPGP keyblocks.Werner Koch2013-11-151-13/+0
| | | | | | | | | | | | | | | * kbx/keybox-update.c (keybox_update_keyblock): Implement. * kbx/keybox-search.c (get_blob_flags): Move to ... * kbx/keybox-defs.h (blob_get_type): here. * kbx/keybox-file.c (_keybox_read_blob2): Fix calling without R_BLOB. * g10/keydb.c (build_keyblock_image): Allow calling without R_SIGSTATUS. (keydb_update_keyblock): Implement for keybox. * kbx/keybox-dump.c (_keybox_dump_blob): Fix printing of the unhashed size. Print "does not expire" also on 64 bit platforms. Signed-off-by: Werner Koch <[email protected]>
* gpg: Set the node flags while retrieving a keyblock.Werner Koch2013-01-071-19/+41
| | | | | | | | | | | | | | | | * g10/keydb.c (parse_keyblock_image): Add args PK_NO and UID_NO and set the note flags accordingly. (keydb_get_keyblock): Transfer PK_NO and UID_NO to parse_keyblock_image. * kbx/keybox-search.c (blob_cmp_fpr, blob_cmp_fpr_part) (blob_cmp_name, blob_cmp_mail): Return the key/user number. (keybox_search): Set the key and user number into the found struct. (keybox_get_keyblock): Add args R_PK_NO and R_UID_NO and set them from the found struct. -- getkey.c needs to know whether the correct subkey was found. Thus we need to set the node flags the same way we did it with the keyring storage.
* gpg: Allow searching for user ids in a keybox.Werner Koch2013-01-071-20/+37
| | | | | | | | | | * kbx/keybox-search.c (blob_cmp_name): Add arg X509 and adjust for PGP use. Change callers. (blob_cmp_mail): Add arg X509 and find the mailbox offset for PGP. Chnage callers. (has_subject_or_alt): Rename to has_username. (has_username): Allow blobtype PGP. (has_mail): Ditto.
* gpg: Add signature cache support to the keybox.Werner Koch2012-12-281-4/+30
| | | | | | | | | | | | | | | | | | | * g10/keydb.c (parse_keyblock_image): Add arg SIGSTATUS. (keydb_get_keyblock): Handle it. (build_keyblock_image): Add arg SIGSTATUS. (keydb_insert_keyblock): Handle it. * kbx/keybox-blob.c (pgp_create_sig_part): Add arg SIGSTATUS. (_keybox_create_openpgp_blob): Ditto. * kbx/kbxutil.c (import_openpgp): Adjust for above change. * kbx/keybox.h (KEYBOX_FLAG_SIG_INFO): New. * kbx/keybox-search.c (_keybox_get_flag_location): Handle new flag. (keybox_get_keyblock): Add arg R_SIGSTATUS. * kbx/keybox-update.c (keybox_insert_keyblock): Add arg SIGSTATUS. -- With this change a key listing using the keybox format is now double as fast as using a keyring. The memory use dropped as well. Measured with about 1500 keys.
* gpg: First working support for keyboxes.Werner Koch2012-12-281-1/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * g10/getkey.c (get_pubkey_fast): Improve the assertion. * kbx/keybox.h: Include iobuf.h. * kbx/keybox-blob.c (keyboxblob_uid): Add field OFF. (KEYBOX_WITH_OPENPGP): Remove use of this macro. (pgp_create_key_part_single): New. (pgp_temp_store_kid): Change to use the keybox-openpgp parser. (pgp_create_key_part): Ditto. (pgp_create_uid_part): Ditto. (pgp_create_sig_part): Ditto. (pgp_create_blob_keyblock): Ditto. (_keybox_create_openpgp_blob): Ditto. * kbx/keybox-search.c (keybox_get_keyblock): New. * kbx/keybox-update.c (keybox_insert_keyblock): New. * g10/keydb.c (parse_keyblock_image): (keydb_get_keyblock): Support keybox. (build_keyblock_image): New. (keydb_insert_keyblock): Support keybox. * kbx/kbxutil.c (import_openpgp, main): Add option --dry-run and print a kbx file to stdout. * kbx/keybox-file.c (_keybox_read_blob2): Allow keyblocks up to 10^6 bytes. -- Import and key listing does now work with the keybox format. It is still quite slow and signature caching is completely missing. Increasing the maximum allowed length for a keyblock was required due to a 700k keyblock which inhibited kbxutil to list the file. kbxutil's option name --import-openpgp is not quite appropriate because it only creates KBX blobs from OpenPGP data.
* Nuked almost all trailing white space.post-nuke-of-trailing-wsWerner Koch2011-02-041-37/+36
| | | | | | | | We better do this once and for all instead of cluttering all future commits with diffs of trailing white spaces. In the majority of cases blank or single lines are affected and thus this change won't disturb a git blame too much. For future commits the pre-commit scripts checks that this won't happen again.
* Merged jnlib into common.Werner Koch2010-03-101-1/+1
|
* Unification of the search descriptor usage.Werner Koch2009-12-081-7/+21
|
* Fixed a bunch of little bugs as reported by Fabian Keil.Werner Koch2009-06-241-0/+2
| | | | | Still one problem left; marked with a gcc #warning.
* New gpg-agent command to list key information.Werner Koch2009-03-061-1/+1
| | | | | | Gpgsm does now print the S/N of cards. Consider ephemeral keys during listing an export.
* Marked all unused args on non-W32 platforms.Werner Koch2008-10-201-0/+2
|
* Fixed bug#907.Werner Koch2008-05-061-4/+4
| | | | | Fixed a segv in keybox and made it more robust.
* Fix a problem with dirmngr looked up certificates.Werner Koch2008-04-011-5/+5
| | | | | Typo fixes.
* Changed to GPLv3.Werner Koch2007-07-041-4/+2
| | | | | Removed intl/.
* kbx/Werner Koch2007-03-201-1/+1
| | | | | | | | | | | | | | | | | | | | * keybox.h (KEYBOX_FLAG_BLOB_SECRET, KEYBOX_FLAG_BLOB_EPHEMERAL): New. * keybox-update.c (keybox_compress): Use it here instead of a magic constant. sm/ * fingerprint.c (gpgsm_get_fingerprint): Add caching. (gpgsm_get_fingerprint_string): Use bin2hexcolon(). (gpgsm_get_fingerprint_hexstring): Use bin2hex and allocate only as much memory as required. (gpgsm_get_keygrip_hexstring): Use bin2hex. * certchain.c (gpgsm_validate_chain): Keep track of the certificate chain and reset the ephemeral flags. * keydb.c (keydb_set_cert_flags): New args EPHEMERAL and MASK. Changed caller to use a mask of ~0. Return a proper error code if the certificate is not available.
* Allow to select X.509 certificates using the keygrip.Werner Koch2006-10-201-0/+84
|
* Updated FSF's address.Werner Koch2006-06-201-1/+2
|
* The keybox gets now compressed after 3 hours and ephemeralWerner Koch2004-04-261-18/+35
| | | | | stored certificates are deleted after about a day.
* * keybox.h (keybox_flag_t): New.Werner Koch2004-02-021-1/+115
| | | | | | | | | | | | | | | | | | | | | * keybox-search.c (get_flag_from_image, keybox_get_flags): New. (_keybox_get_flag_location): New. * certchain.c (gpgsm_validate_chain): Mark revoked certs in the keybox. * keylist.c (list_cert_colon): New arg VALIDITY; use it to print a revoked flag. (list_internal_keys): Retrieve validity flag. (list_external_cb): Pass 0 as validity flag. * keydb.c (keydb_get_flags, keydb_set_flags): New. (keydb_set_cert_flags): New. (lock_all): Return a proper error code. (keydb_lock): New. (keydb_delete): Don't lock but check that it has been locked. (keydb_update_keyblock): Ditto. * delete.c (delete_one): Take a lock.
* comment typo fixes.Werner Koch2004-01-161-1/+1
|
* Replaced deprecated type namesWerner Koch2003-12-171-3/+3
|
* Mainly changes to adjust for the changed KSBA API.Werner Koch2003-11-121-6/+6
|
* This commit was manufactured by cvs2svn to create branchRepo Admin2003-06-051-0/+813
| | | | 'GNUPG-1-9-BRANCH'.
* This commit was manufactured by cvs2svn to create branchRepo Admin2002-10-191-810/+0
| | | | 'GNUPG-1-9-BRANCH'.
* * keybox-search.c (blob_cmp_fpr_part): New.Werner Koch2002-08-101-10/+40
| | | | | (has_short_kid, has_long_kid): Implemented.
* * keybox-init.c (keybox_set_ephemeral): New.Werner Koch2002-06-191-1/+23
| | | | | | | | | | | * keybox-blob.c (create_blob_header): Store epheermal flag. (_keybox_create_x509_blob): Pass epheermal flag on. * keybox-update.c (keybox_insert_cert): Ditto. * keybox-search.c (blob_get_blob_flags): New. (keybox_search): Ignore ephemeral blobs when not in ephemeral mode. * keybox-dump.c (_keybox_dump_blob): Print blob flags as strings.
* * keybox-search.c (blob_cmp_mail): Use case-insensitive compareWerner Koch2002-02-251-20/+53
| | | | | | | | | | | | | | because mail addresses are in general case insensitive (well RFC2822 allows for case sensitive mailbox parts, but this is in general considired a Bad Thing). Add additional substr parameter to allow for substring matches within the mail address. Change all callers to pass this along. (blob_cmp_name): Likewise but do the case-insensitive search only in sub string mode. (keybox_search): Implement MAILSUB and SUBSTR mode. * stringhelp.c (ascii_memcasemem): New.
* * keybox-search.c (keybox_search): Allow KEYDB_SEARCH_MODE_FPR20.Werner Koch2002-01-211-0/+1
|
* * keybox-search.c (blob_cmp_fpr): New.Werner Koch2002-01-151-1/+33
| | | | | (has_fingerprint): Implemented;
* Changes to be used with the new libksba interface.Werner Koch2001-12-181-29/+30
| | | | | libgcrypt-1.1.5 is required (cvs or tarball)
* * keybox-search.c (blob_cmp_name): There is no terminating 0 storedWerner Koch2001-12-151-3/+2
| | | | | for the uid; fixed length compare.
* * keybox-blob.c (x509_email_kludge): New.Werner Koch2001-12-141-5/+9
| | | | | | | (_keybox_create_x509_blob): Insert an extra email address if the subject's DN has an email part. * keybox-defs.h: Added the xtoi_2 and digitp macros.
* * keybox-search.c (blob_cmp_name): Kludge to allow searching forWerner Koch2001-12-131-12/+135
| | | | | | | | | | | | more than one name. (has_subject_or_alt): New. (blob_cmp_mail): New. (has_mail): New. (keybox_search): Implemented exact search and exact mail search. * kbx/keybox-blob.c (_keybox_create_x509_blob): Insert alternate names.
* New searchmode and hack to allow a hex encoded serial numberWerner Koch2001-12-111-1/+107
|
* Base code for gpgsm --verify does workWerner Koch2001-11-161-0/+18
|
* We have reached a state where we are able to import certs andWerner Koch2001-11-131-114/+397
| | | | | check the certification path.
* Started with keybox implementation by basing it on code from the GnuPGWerner Koch2001-11-101-0/+158
devel branch.