]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - keydb_pg.c
Update DB3 backend to use 64bit key ids.
[onak.git] / keydb_pg.c
index 3b127910467ff9e4e1f7dcf417f67983dd6bd2e9..b5afc9e46b4063597154652b71be1e4052d760c0 100644 (file)
@@ -4,13 +4,13 @@
  * Jonathan McDowell <noodles@earth.li>
  *
  * Copyright 2002 Project Purple
  * Jonathan McDowell <noodles@earth.li>
  *
  * Copyright 2002 Project Purple
+ *
+ * $Id: keydb_pg.c,v 1.14 2004/03/23 12:33:47 noodles Exp $
  */
 
 #include <postgresql/libpq-fe.h>
 #include <postgresql/libpq/libpq-fs.h>
 
  */
 
 #include <postgresql/libpq-fe.h>
 #include <postgresql/libpq/libpq-fs.h>
 
-//#include <libpq-fe.h>
-//#include <libpq/libpq-fs.h>
 #include <sys/types.h>
 #include <sys/uio.h>
 #include <errno.h>
 #include <sys/types.h>
 #include <sys/uio.h>
 #include <errno.h>
@@ -58,7 +58,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.
  */
  *     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
 {
        dbconn = PQsetdbLogin(config.pg_dbhost, // host
                        NULL, // port
@@ -174,7 +174,7 @@ int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey,
                                                "Can't open large object.");
                        } else {
                                read_openpgp_stream(keydb_fetchchar, &fd,
                                                "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);
                                parse_keys(packets, publickey);
                                lo_close(dbconn, fd);
                                free_packet_list(packets);
@@ -241,7 +241,8 @@ int fetch_key_text(const char *search, struct openpgp_publickey **publickey)
                                                "Can't open large object.");
                        } else {
                                read_openpgp_stream(keydb_fetchchar, &fd,
                                                "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);
                                parse_keys(packets, publickey);
                                lo_close(dbconn, fd);
                                free_packet_list(packets);
@@ -502,11 +503,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.
 /**
  *     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.
  */
  *
  *     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;
 {
        struct ll *sigs = NULL;
        PGresult *result = NULL;
@@ -554,9 +556,34 @@ struct ll *getkeysigs(uint64_t keyid)
                result = PQexec(dbconn, "COMMIT");
                PQclear(result);
        }
                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;
 }
 
        return sigs;
 }
 
+/**
+ *     dumpdb - dump the key database
+ *     @filenamebase: The base filename to use for the dump.
+ *
+ *     Dumps the database into one or more files, which contain pure OpenPGP
+ *     that can be reimported into onak or gpg. filenamebase provides a base
+ *     file name for the dump; several files may be created, all of which will
+ *     begin with this string and then have a unique number and a .pgp
+ *     extension.
+ *          */
+int dumpdb(char *filenamebase)
+{
+       return 0;
+}
+
 /*
  * Include the basic keydb routines.
  */
 /*
  * Include the basic keydb routines.
  */