X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/4b8483ae278577a3adc8d84da81d77019704466f..5519cde50874ecd006e5ebf2421b1c7d48de0072:/maxpath.c?ds=sidebyside diff --git a/maxpath.c b/maxpath.c index 3714281..ccd5008 100644 --- a/maxpath.c +++ b/maxpath.c @@ -1,9 +1,10 @@ /* - gpgstats.c - Program to produce stats on a GPG keyring. - Written by Jonathan McDowell . - - 19/02/2000 - Started writing (sort of). -*/ + * maxpath.c - Find the longest trust path in the key database. + * + * Jonathan McDowell + * + * Copyright 2001-2002 Project Purple. + */ #include #include @@ -13,6 +14,8 @@ #include "hash.h" #include "keydb.h" #include "ll.h" +#include "log.h" +#include "onak-conf.h" #include "stats.h" void findmaxpath(unsigned long max) @@ -21,15 +24,26 @@ void findmaxpath(unsigned long max) struct ll *curkey; unsigned long distance, loop; - printf("In findmaxpath\n"); distance = 0; from = to = tmp = NULL; - hash_getkeysigs(0x5B430367); + /* + * My (noodles@earth.li, DSA) key is in the strongly connected set of + * keys, so we use it as a suitable starting seed. + */ + config.dbbackend->cached_getkeysigs(0xF1BD4BE45B430367); + + /* + * Loop through the hash examining each key present and finding the + * furthest key from it. If it's further than our current max then + * store it as our new max and print out the fact we've found a new + * max. + */ for (loop = 0; (loop < HASHSIZE) && (distance < max); loop++) { curkey = gethashtableentry(loop); while (curkey != NULL && distance < max) { - hash_getkeysigs(((struct stats_key *) + config.dbbackend->cached_getkeysigs( + ((struct stats_key *) curkey->object)->keyid); initcolour(false); tmp = furthestkey((struct stats_key *) @@ -38,7 +52,9 @@ void findmaxpath(unsigned long max) from = (struct stats_key *)curkey->object; to = tmp; distance = to->colour; - printf("Current max path (#%ld) is from %llX to %llX (%ld steps)\n", + printf("Current max path (#%ld) is from %" + PRIX64 " to %" PRIX64 + " (%ld steps)\n", loop, from->keyid, to->keyid, @@ -47,20 +63,26 @@ void findmaxpath(unsigned long max) curkey=curkey->next; } } - printf("Max path is from %llX to %llX (%ld steps)\n", + printf("Max path is from %" PRIX64 " to %" PRIX64 " (%ld steps)\n", from->keyid, to->keyid, distance); + dofindpath(to->keyid, from->keyid, false, 1); } int main(int argc, char *argv[]) { - initdb(); + readconfig(NULL); + initlogthing("maxpath", config.logfile); + config.dbbackend->initdb(true); inithash(); findmaxpath(30); printf("--------\n"); findmaxpath(30); - cleanupdb(); + destroyhash(); + config.dbbackend->cleanupdb(); + cleanuplogthing(); + cleanupconfig(); return EXIT_SUCCESS; }