mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-28 22:49:59 +01:00
* trustdb.c (reset_trust_records): New, faster, implementation that
doesn't involve a keyring scan. (clear_validity): Removed.
This commit is contained in:
parent
0fb284ac24
commit
c8ab1bd127
@ -1,5 +1,9 @@
|
|||||||
2004-01-20 David Shaw <dshaw@jabberwocky.com>
|
2004-01-20 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
|
* trustdb.c (reset_trust_records): New, faster, implementation
|
||||||
|
that doesn't involve a keyring scan.
|
||||||
|
(clear_validity): Removed.
|
||||||
|
|
||||||
* g10.c (main), keydb.h, keydb.c (keydb_rebuild_caches),
|
* g10.c (main), keydb.h, keydb.c (keydb_rebuild_caches),
|
||||||
keyring.h, keyring.c (keyring_rebuild_cache): Add "noisy" flag so
|
keyring.h, keyring.c (keyring_rebuild_cache): Add "noisy" flag so
|
||||||
cache rebuilds can remain noisy when called for itself, and quiet
|
cache rebuilds can remain noisy when called for itself, and quiet
|
||||||
|
103
g10/trustdb.c
103
g10/trustdb.c
@ -927,49 +927,6 @@ update_validity (PKT_public_key *pk, PKT_user_id *uid,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* reset validity for all user IDs. Caller must sync. */
|
|
||||||
static int
|
|
||||||
clear_validity (PKT_public_key *pk)
|
|
||||||
{
|
|
||||||
TRUSTREC trec, vrec;
|
|
||||||
int rc;
|
|
||||||
ulong recno;
|
|
||||||
int any = 0;
|
|
||||||
|
|
||||||
rc = read_trust_record (pk, &trec);
|
|
||||||
if (rc && rc != -1)
|
|
||||||
{
|
|
||||||
tdbio_invalid ();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (rc == -1) /* no record yet - no need to clear it then ;-) */
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Clear minimum ownertrust, if any */
|
|
||||||
if(trec.r.trust.min_ownertrust)
|
|
||||||
{
|
|
||||||
trec.r.trust.min_ownertrust=0;
|
|
||||||
write_record(&trec);
|
|
||||||
}
|
|
||||||
|
|
||||||
recno = trec.r.trust.validlist;
|
|
||||||
while (recno)
|
|
||||||
{
|
|
||||||
read_record (recno, &vrec, RECTYPE_VALID);
|
|
||||||
if ((vrec.r.valid.validity & TRUST_MASK)
|
|
||||||
|| vrec.r.valid.marginal_count || vrec.r.valid.full_count)
|
|
||||||
{
|
|
||||||
vrec.r.valid.validity &= ~TRUST_MASK;
|
|
||||||
vrec.r.valid.marginal_count = vrec.r.valid.full_count = 0;
|
|
||||||
write_record (&vrec);
|
|
||||||
any = 1;
|
|
||||||
}
|
|
||||||
recno = vrec.r.valid.next;
|
|
||||||
}
|
|
||||||
|
|
||||||
return any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************
|
/***********************************************
|
||||||
********* Query trustdb values **************
|
********* Query trustdb values **************
|
||||||
***********************************************/
|
***********************************************/
|
||||||
@ -1852,53 +1809,37 @@ validate_key_list (KEYDB_HANDLE hd, KeyHashTable full_trust,
|
|||||||
|
|
||||||
/* Caller must sync */
|
/* Caller must sync */
|
||||||
static void
|
static void
|
||||||
reset_trust_records (KEYDB_HANDLE hd, KeyHashTable exclude)
|
reset_trust_records(void)
|
||||||
{
|
{
|
||||||
int rc;
|
TRUSTREC rec;
|
||||||
KBNODE keyblock = NULL;
|
ulong recnum;
|
||||||
KEYDB_SEARCH_DESC desc;
|
|
||||||
int count = 0, nreset = 0;
|
int count = 0, nreset = 0;
|
||||||
|
|
||||||
rc = keydb_search_reset (hd);
|
for (recnum=1; !tdbio_read_record (recnum, &rec, 0); recnum++ )
|
||||||
if (rc)
|
|
||||||
{
|
{
|
||||||
log_error ("keydb_search_reset failed: %s\n", g10_errstr(rc));
|
if(rec.rectype==RECTYPE_TRUST)
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
memset (&desc, 0, sizeof desc);
|
|
||||||
desc.mode = KEYDB_SEARCH_MODE_FIRST;
|
|
||||||
if(exclude)
|
|
||||||
{
|
{
|
||||||
desc.skipfnc = search_skipfnc;
|
|
||||||
desc.skipfncvalue = exclude;
|
|
||||||
}
|
|
||||||
rc = keydb_search (hd, &desc, 1);
|
|
||||||
if (rc && rc != -1 )
|
|
||||||
log_error ("keydb_search_first failed: %s\n", g10_errstr(rc));
|
|
||||||
else if (!rc)
|
|
||||||
{
|
|
||||||
desc.mode = KEYDB_SEARCH_MODE_NEXT; /* change mode */
|
|
||||||
do
|
|
||||||
{
|
|
||||||
rc = keydb_get_keyblock (hd, &keyblock);
|
|
||||||
if (rc)
|
|
||||||
{
|
|
||||||
log_error ("keydb_get_keyblock failed: %s\n", g10_errstr(rc));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
count++;
|
count++;
|
||||||
|
if(rec.r.trust.min_ownertrust)
|
||||||
if (keyblock->pkt->pkttype == PKT_PUBLIC_KEY) /* paranoid assertion*/
|
|
||||||
{
|
{
|
||||||
nreset += clear_validity (keyblock->pkt->pkt.public_key);
|
rec.r.trust.min_ownertrust=0;
|
||||||
release_kbnode (keyblock);
|
write_record(&rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
while ( !(rc = keydb_search (hd, &desc, 1)) );
|
else if(rec.rectype==RECTYPE_VALID
|
||||||
if (rc && rc != -1)
|
&& ((rec.r.valid.validity&TRUST_MASK)
|
||||||
log_error ("keydb_search_next failed: %s\n", g10_errstr(rc));
|
|| rec.r.valid.marginal_count
|
||||||
|
|| rec.r.valid.full_count))
|
||||||
|
{
|
||||||
|
rec.r.valid.validity &= ~TRUST_MASK;
|
||||||
|
rec.r.valid.marginal_count=rec.r.valid.full_count=0;
|
||||||
|
nreset++;
|
||||||
|
write_record(&rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if (opt.verbose)
|
if (opt.verbose)
|
||||||
log_info (_("%d keys processed (%d validity counts cleared)\n"),
|
log_info (_("%d keys processed (%d validity counts cleared)\n"),
|
||||||
count, nreset);
|
count, nreset);
|
||||||
@ -1958,7 +1899,7 @@ validate_keys (int interactive)
|
|||||||
full_trust = new_key_hash_table ();
|
full_trust = new_key_hash_table ();
|
||||||
|
|
||||||
kdb = keydb_new (0);
|
kdb = keydb_new (0);
|
||||||
reset_trust_records (kdb,NULL);
|
reset_trust_records();
|
||||||
|
|
||||||
/* Fixme: Instead of always building a UTK list, we could just build it
|
/* Fixme: Instead of always building a UTK list, we could just build it
|
||||||
* here when needed */
|
* here when needed */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user