X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb_pg.c;h=88682af9bdcf2139fdc4304c35d295ae49a550d4;hb=a57a146ebc3f15f1ba2dfe8ecb9b59702fb8f799;hp=c643a79a57c38bd9e44305daec3af1a0282e6fee;hpb=7b7cb978ab032edb192effcd9eac443d8800b565;p=onak.git diff --git a/keydb_pg.c b/keydb_pg.c index c643a79..88682af 100644 --- a/keydb_pg.c +++ b/keydb_pg.c @@ -4,15 +4,11 @@ * Jonathan McDowell * * Copyright 2002 Project Purple - * - * $Id: keydb_pg.c,v 1.11 2003/06/05 07:32:00 noodles Exp $ */ #include #include -//#include -//#include #include #include #include @@ -42,7 +38,7 @@ static PGconn *dbconn = NULL; */ static int keydb_fetchchar(void *fd, size_t count, unsigned char *c) { - return (!lo_read(dbconn, *(int *) fd, c, count)); + return (!lo_read(dbconn, *(int *) fd, (char *) c, count)); } /** @@ -50,7 +46,7 @@ static int keydb_fetchchar(void *fd, size_t count, unsigned char *c) */ static int keydb_putchar(void *fd, size_t count, unsigned char *c) { - return !(lo_write(dbconn, *(int *) fd, c, count)); + return !(lo_write(dbconn, *(int *) fd, (char *) c, count)); } /** @@ -60,7 +56,7 @@ static int keydb_putchar(void *fd, size_t count, unsigned char *c) * this file are called in order to allow the DB to be initialized ready * for access. */ -void initdb(void) +void initdb(bool readonly) { dbconn = PQsetdbLogin(config.pg_dbhost, // host NULL, // port @@ -176,7 +172,7 @@ int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey, "Can't open large object."); } else { read_openpgp_stream(keydb_fetchchar, &fd, - &packets); + &packets, 0); parse_keys(packets, publickey); lo_close(dbconn, fd); free_packet_list(packets); @@ -243,7 +239,8 @@ int fetch_key_text(const char *search, struct openpgp_publickey **publickey) "Can't open large object."); } else { read_openpgp_stream(keydb_fetchchar, &fd, - &packets); + &packets, + 0); parse_keys(packets, publickey); lo_close(dbconn, fd); free_packet_list(packets); @@ -504,11 +501,12 @@ char *keyid2uid(uint64_t keyid) /** * getkeysigs - Gets a linked list of the signatures on a key. * @keyid: The keyid to get the sigs for. + * @revoked: If the key is revoked. * * This function gets the list of signatures on a key. Used for key * indexing and doing stats bits. */ -struct ll *getkeysigs(uint64_t keyid) +struct ll *getkeysigs(uint64_t keyid, bool *revoked) { struct ll *sigs = NULL; PGresult *result = NULL; @@ -556,6 +554,16 @@ struct ll *getkeysigs(uint64_t keyid) result = PQexec(dbconn, "COMMIT"); PQclear(result); } + + /* + * TODO: What do we do about revocations? We don't have the details + * stored in a separate table, so we'd have to grab the key and decode + * it, which we're trying to avoid by having a signers table. + */ + if (revoked != NULL) { + *revoked = false; + } + return sigs; } @@ -578,4 +586,5 @@ int dumpdb(char *filenamebase) * Include the basic keydb routines. */ #define NEED_GETFULLKEYID 1 +#define NEED_UPDATEKEYS 1 #include "keydb.c"