1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-02-01 16:33:02 +01:00

* keyid.c (keyid_from_sk): Minor performance boost by caching secret key

keyids so we don't have to calculate them each time.
This commit is contained in:
David Shaw 2004-03-06 04:08:06 +00:00
parent ea73c94bc6
commit efec599797
2 changed files with 41 additions and 25 deletions

View File

@ -1,5 +1,8 @@
2004-03-05 David Shaw <dshaw@jabberwocky.com>
* keyid.c (keyid_from_sk): Minor performance boost by caching
secret key keyids so we don't have to calculate them each time.
* getkey.c (merge_selfsigs_subkey): Do not mark subkeys valid if
we do not support their pk algorithm. This allows for early
(during get_*) rejection of a subkey, and selection of another.

View File

@ -210,15 +210,26 @@ keyid_from_sk( PKT_secret_key *sk, u32 *keyid )
if( !keyid )
keyid = dummy_keyid;
if( sk->version < 4 )
if( sk->keyid[0] || sk->keyid[1] )
{
keyid[0] = sk->keyid[0];
keyid[1] = sk->keyid[1];
lowbits = keyid[1];
}
else if( sk->version < 4 )
{
if( is_RSA(sk->pubkey_algo) )
{
lowbits = pubkey_get_npkey(sk->pubkey_algo) ?
mpi_get_keyid( sk->skey[0], keyid ) : 0; /* take n */
else
keyid[0]=keyid[1]=lowbits=0;
sk->keyid[0]=keyid[0];
sk->keyid[1]=keyid[1];
}
else {
else
sk->keyid[0]=sk->keyid[1]=keyid[0]=keyid[1]=lowbits=0;
}
else
{
const byte *dp;
MD_HANDLE md;
md = do_fingerprint_md_sk(sk);
@ -229,9 +240,11 @@ keyid_from_sk( PKT_secret_key *sk, u32 *keyid )
keyid[1] = dp[16] << 24 | dp[17] << 16 | dp[18] << 8 | dp[19] ;
lowbits = keyid[1];
md_close(md);
sk->keyid[0] = keyid[0];
sk->keyid[1] = keyid[1];
}
else
keyid[0]=keyid[1]=lowbits=0;
sk->keyid[0]=sk->keyid[1]=keyid[0]=keyid[1]=lowbits=0;
}
return lowbits;