1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-06-13 00:09:51 +02:00
gnupg/g10
Werner Koch 492792378d gpg: Cache keybox searches.
* common/iobuf.c (iobuf_seek): Fix for temp streams.
* g10/pubkey-enc.c (get_session_key, get_it): Add some log_clock calls.
* g10/keydb.c (dump_search_desc): New.
(enum_keyblock_states, struct keyblock_cache): New.
(keyblock_cache_clear): New.
(keydb_get_keyblock, keydb_search): Implement a keyblock cache.
(keydb_update_keyblock, keydb_insert_keyblock, keydb_delete_keyblock)
(keydb_rebuild_caches, keydb_search_reset): Clear the cache.
--

Gpg uses the key database at several places without a central
coordination.  This leads to several scans of the keybox for the same
key.  To improve that we now use a simple cache to store a retrieved
keyblock in certain cases.  In theory this caching could also be done
for old keyrings, but it is a bit more work and questionable whether
it is needed; the keybox scheme is anyway much faster than keyrings.

Using a keybox with 20000 384 bit ECDSA/ECHD keypairs and a 252 byte
sample text we get these values for encrypt and decrypt operations on
an Core i5 4*3.33Ghz system.  The option --trust-model=always is used.
Times are given in milliseconds wall time.

|           | enc | dec | dec,q |
|-----------+-----+-----+-------|
| key 1     |  48 |  96 |    70 |
| key 10000 |  60 |  98 |    80 |
| key 20000 |  69 | 106 |    88 |
| 10 keys   | 540 | 290 |    70 |

The 10 keys test uses a mix of keys, the first one is used for
decryption but all keys are looked up so that information about are
printed.  The last column gives decryption results w/o information
printing (--quiet).

The keybox is always scanned sequentially without using any index.  By
adding an index to the keybox it will be possible to further reduce
the time required for keys stored to the end of the file.
2013-01-08 14:46:06 +01:00
..
armor.c Fix faulty gcc warnings 2011-03-03 12:40:54 +01:00
build-packet.c Fixed set but unused variable bugs 2011-08-10 14:11:30 +02:00
call-agent.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
call-agent.h Allow creating subkeys using an existing key 2011-11-06 17:01:31 +01:00
call-dirmngr.c Add finger support to dirmngr. 2011-02-08 21:11:19 +01:00
call-dirmngr.h Require libgcrypt 1.5 2011-03-08 12:23:59 +01:00
card-util.c Add an OpenPGP card vendor. 2012-11-16 10:41:22 +01:00
ChangeLog-2011 Generate the ChangeLog from commit logs. 2011-12-01 11:09:02 +01:00
cipher.c Replace gcry_md_start_debug by gcry_md_debug. 2011-09-20 09:54:27 +02:00
comment.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
compress-bz2.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
compress.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
cpr.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
dearmor.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
decrypt-data.c Replace gcry_md_start_debug by gcry_md_debug. 2011-09-20 09:54:27 +02:00
decrypt.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
delkey.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
ecdh.c Removed memory leak in the ECDH code. 2011-04-28 10:51:14 +02:00
encrypt.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
exec.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
exec.h Changed to GPLv3. 2007-07-04 19:49:40 +00:00
export.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
filter.h Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
free-packet.c Allow NULL for free_public_key. 2011-09-20 19:24:52 +02:00
getkey.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
gpg.c New function log_clock. 2013-01-07 16:51:24 +01:00
gpg.h Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
gpgv.c gpg: First patches to support a keybox storage backend. 2012-12-27 15:04:42 +01:00
helptext.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
import.c gpg: Import only packets which are allowed in a keyblock. 2012-12-20 12:37:01 +01:00
kbnode.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
keydb.c gpg: Cache keybox searches. 2013-01-08 14:46:06 +01:00
keydb.h gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
keyedit.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
keygen.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
keyid.c Minor code cleanups. 2011-03-03 13:01:03 +01:00
keylist.c Print the hash algorithm in colon mode key listing. 2012-05-24 10:13:39 +02:00
keyring.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
keyring.h Decryption and signi via agent is now implemented. 2010-04-23 11:36:59 +00:00
keyserver-internal.h Initial code checking for backup - not yet working. 2011-01-10 14:30:17 +01:00
keyserver.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
main.h Add tweaks for the not anymore patented IDEA algorithm. 2012-05-08 18:18:32 +02:00
mainproc.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
Makefile.am gpg: First patches to support a keybox storage backend. 2012-12-27 15:04:42 +01:00
mdfilter.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
misc.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
openfile.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
OPTIONS See ChangeLog: Mon Jul 31 10:04:47 CEST 2000 Werner Koch 2000-07-31 08:04:16 +00:00
options.h New function log_clock. 2013-01-07 16:51:24 +01:00
options.skel Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
packet.h Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
parse-packet.c Print decoded S2K count in --list-packets mode. 2011-07-18 10:57:33 +02:00
passphrase.c Allow NULL for free_public_key. 2011-09-20 19:24:52 +02:00
photoid.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
photoid.h Decryption and signi via agent is now implemented. 2010-04-23 11:36:59 +00:00
pkclist.c gpg: Suppress "public key already present" in quiet mode. 2012-12-19 11:21:26 +01:00
pkglue.c Fix for latest fix in Libgcrypt. 2011-06-13 14:54:40 +02:00
pkglue.h Compute the fingerprint for ECDH only on demand. 2011-02-02 17:40:32 +01:00
plaintext.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
progress.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
pubkey-enc.c gpg: Cache keybox searches. 2013-01-08 14:46:06 +01:00
pubring.asc See ChangeLog: Mon Jul 31 10:04:47 CEST 2000 Werner Koch 2000-07-31 08:04:16 +00:00
revoke.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
rmd160.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
rmd160.h Add missing header file. 2008-12-12 08:54:50 +00:00
seckey-cert.c Add tweaks for the not anymore patented IDEA algorithm. 2012-05-08 18:18:32 +02:00
server.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
seskey.c Fix typos spotted during translations 2012-08-24 09:44:33 +02:00
sig-check.c Fixed set but unused variable bugs 2011-08-10 14:11:30 +02:00
sign.c gpg: Make commit 2b3cb2ee actually work 2012-12-19 12:40:21 +01:00
signal.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
skclist.c Allow NULL for free_public_key. 2011-09-20 19:24:52 +02:00
t-rmd160.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
tdbdump.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
tdbio.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
tdbio.h Changes to --min-cert-level should cause a trustdb rebuild (issue 1366) 2012-01-20 16:50:42 -05:00
textfilter.c Started to implement the audit log feature. 2007-11-19 16:03:50 +00:00
trustdb.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
trustdb.h Changes to --min-cert-level should cause a trustdb rebuild (issue 1366) 2012-01-20 16:50:42 -05:00
verify.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00