* getkey.c: Set MAX_PK_CACHE_ENTRIES and MAX_UID_CACHE_ENTRIES to
[gnupg.git] / g10 / tdbio.h
index 9c97dd1..708e06d 100644 (file)
@@ -1,5 +1,5 @@
 /* tdbio.h - Trust database I/O functions
 /* tdbio.h - Trust database I/O functions
- *     Copyright (C) 1998 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
  *
  * This file is part of GnuPG.
  *
 #define ITEMS_PER_HLST_RECORD  ((TRUST_RECORD_LEN-6)/5)
 #define ITEMS_PER_PREF_RECORD  (TRUST_RECORD_LEN-10)
 #if ITEMS_PER_PREF_RECORD % 2
 #define ITEMS_PER_HLST_RECORD  ((TRUST_RECORD_LEN-6)/5)
 #define ITEMS_PER_PREF_RECORD  (TRUST_RECORD_LEN-10)
 #if ITEMS_PER_PREF_RECORD % 2
-  #error ITEMS_PER_PREF_RECORD must be even
+#error ITEMS_PER_PREF_RECORD must be even
 #endif
 #define MAX_LIST_SIGS_DEPTH  20
 
 
 #define RECTYPE_VER  1
 #endif
 #define MAX_LIST_SIGS_DEPTH  20
 
 
 #define RECTYPE_VER  1
-#define RECTYPE_DIR  2
-#define RECTYPE_KEY  3
-#define RECTYPE_UID  4
-#define RECTYPE_PREF 5
-#define RECTYPE_SIG  6
-#define RECTYPE_SDIR 8
-#define RECTYPE_CACH 9
 #define RECTYPE_HTBL 10
 #define RECTYPE_HLST 11
 #define RECTYPE_HTBL 10
 #define RECTYPE_HLST 11
+#define RECTYPE_TRUST 12
+#define RECTYPE_VALID 13
 #define RECTYPE_FREE 254
 
 
 #define RECTYPE_FREE 254
 
 
-#define DIRF_CHECKED  1 /* has been checked - bits 1,2,3 are valid */
-#define DIRF_VALID    2 /* This key is valid:  There is at least */
-                       /* one uid with a selfsignature or an revocation */
-#define DIRF_EXPIRED  4 /* the complete key has expired */
-#define DIRF_REVOKED  8 /* the complete key has been revoked */
-
-#define KEYF_CHECKED  1 /* This key has been checked */
-#define KEYF_VALID    2 /* This is a valid (sub)key */
-#define KEYF_EXPIRED  4 /* this key is expired */
-#define KEYF_REVOKED  8 /* this key has been revoked */
-
-#define UIDF_CHECKED  1  /* user id has been checked - other bits are valid */
-#define UIDF_VALID    2  /* this is a valid user id */
-#define UIDF_REVOKED  8  /* this user id has been revoked */
-
-#define SIGF_CHECKED  1 /* signature has been checked - bits 0..6 are valid */
-#define SIGF_VALID    2 /* the signature is valid */
-#define SIGF_EXPIRED  4 /* the key of this signature has expired */
-#define SIGF_REVOKED  8 /* this signature has been revoked */
-#define SIGF_NOPUBKEY 128 /* there is no pubkey for this sig */
-
 struct trust_record {
     int  rectype;
     int  mark;
 struct trust_record {
     int  rectype;
     int  mark;
@@ -76,72 +50,22 @@ struct trust_record {
     ulong recnum;
     union {
        struct {             /* version record: */
     ulong recnum;
     union {
        struct {             /* version record: */
-           byte version;    /* should be 2 */
+           byte  version;   /* should be 3 */
            byte  marginals;
            byte  completes;
            byte  cert_depth;
            byte  marginals;
            byte  completes;
            byte  cert_depth;
+           byte  trust_model;
            ulong created;   /* timestamp of trustdb creation  */
            ulong created;   /* timestamp of trustdb creation  */
-           ulong mod_down;  /* timestamp of last modification downward */
-           ulong mod_up;    /* timestamp of last modification upward */
-           ulong keyhashtbl;
+           ulong nextcheck; /* timestamp of next scheduled check */
+           ulong reserved;  
+           ulong reserved2;
            ulong firstfree;
            ulong firstfree;
-           ulong sdirhashtbl;
+           ulong reserved3;
+            ulong trusthashtbl;
        } ver;
        struct {            /* free record */
            ulong next;
        } free;
        } ver;
        struct {            /* free record */
            ulong next;
        } free;
-       struct {            /* directory record */
-           ulong lid;
-           ulong keylist;  /* List of keys (the first is the primary key)*/
-           ulong uidlist;  /* list of uid records */
-           ulong cacherec; /* the cache record */
-           byte ownertrust;
-           byte dirflags;
-           byte validity;  /* calculated trustlevel over all uids */
-           ulong valcheck; /* timestamp of last validation check */
-       } dir;
-       struct {            /* primary public key record */
-           ulong lid;
-           ulong next;    /* next key */
-           byte keyflags;
-           byte pubkey_algo;
-           byte fingerprint_len;
-           byte fingerprint[20];
-       } key;
-       struct {            /* user id reord */
-           ulong lid;      /* point back to the directory record */
-           ulong next;    /* points to next user id record */
-           ulong prefrec;   /* recno of preference record */
-           ulong siglist;   /* list of valid signatures (w/o self-sig)*/
-           byte uidflags;
-           byte validity;  /* calculated trustlevel of this uid */
-           byte namehash[20]; /* ripemd hash of the username */
-       } uid;
-       struct {            /* preference record */
-           ulong lid;      /* point back to the directory record */
-                           /* or 0 for a glocal pref record */
-           ulong next;    /* points to next pref record */
-           byte  data[ITEMS_PER_PREF_RECORD];
-       } pref;
-       struct {            /* signature record */
-           ulong lid;
-           ulong next;   /* recnno of next record or NULL for last one */
-           struct {
-               ulong lid;       /* of pubkey record of signator (0=unused) */
-               byte flag;       /* SIGF_xxxxx */
-           } sig[SIGS_PER_RECORD];
-       } sig;
-       struct {
-           ulong lid;
-           u32  keyid[2];
-           byte pubkey_algo;
-           u32  hintlist;
-       } sdir;
-       struct {            /* cache record */
-           ulong lid;
-           byte blockhash[20];
-           byte trustlevel;   /* calculated trustlevel */
-       } cache;
        struct {
            ulong item[ITEMS_PER_HTBL_RECORD];
        } htbl;
        struct {
            ulong item[ITEMS_PER_HTBL_RECORD];
        } htbl;
@@ -149,34 +73,35 @@ struct trust_record {
            ulong next;
            ulong rnum[ITEMS_PER_HLST_RECORD]; /* of another record */
        } hlst;
            ulong next;
            ulong rnum[ITEMS_PER_HLST_RECORD]; /* of another record */
        } hlst;
+      struct {
+        byte fingerprint[20];
+        byte ownertrust;
+        byte depth;
+        ulong validlist;
+       byte min_ownertrust;
+      } trust;
+      struct {
+        byte namehash[20];
+        ulong next;  
+        byte validity;
+       byte full_count;
+       byte marginal_count;
+      } valid;
     } r;
 };
 typedef struct trust_record TRUSTREC;
 
     } r;
 };
 typedef struct trust_record TRUSTREC;
 
-typedef struct {
-    ulong     lid;        /* localid */
-    ulong     sigrec;
-    ulong     sig_lid;    /* returned signatures LID */
-    unsigned  sig_flag;    /* returned signature record flag */
-    struct {              /* internal data */
-       int init_done;
-       int eof;
-       TRUSTREC rec;
-       ulong nextuid;
-       int index;
-    } ctl;
-} SIGREC_CONTEXT;
-
-
 /*-- tdbio.c --*/
 /*-- tdbio.c --*/
+int tdbio_update_version_record(void);
 int tdbio_set_dbname( const char *new_dbname, int create );
 const char *tdbio_get_dbname(void);
 void tdbio_dump_record( TRUSTREC *rec, FILE *fp );
 int tdbio_read_record( ulong recnum, TRUSTREC *rec, int expected );
 int tdbio_write_record( TRUSTREC *rec );
 int tdbio_db_matches_options(void);
 int tdbio_set_dbname( const char *new_dbname, int create );
 const char *tdbio_get_dbname(void);
 void tdbio_dump_record( TRUSTREC *rec, FILE *fp );
 int tdbio_read_record( ulong recnum, TRUSTREC *rec, int expected );
 int tdbio_write_record( TRUSTREC *rec );
 int tdbio_db_matches_options(void);
-ulong tdbio_read_modify_stamp( int modify_down );
-void tdbio_write_modify_stamp( int down, int up );
+byte tdbio_read_model(void);
+ulong tdbio_read_nextcheck (void);
+int tdbio_write_nextcheck (ulong stamp);
 int tdbio_is_dirty(void);
 int tdbio_sync(void);
 int tdbio_begin_transaction(void);
 int tdbio_is_dirty(void);
 int tdbio_sync(void);
 int tdbio_begin_transaction(void);
@@ -184,10 +109,8 @@ int tdbio_end_transaction(void);
 int tdbio_cancel_transaction(void);
 int tdbio_delete_record( ulong recnum );
 ulong tdbio_new_recnum(void);
 int tdbio_cancel_transaction(void);
 int tdbio_delete_record( ulong recnum );
 ulong tdbio_new_recnum(void);
-int tdbio_search_dir_bypk( PKT_public_key *pk, TRUSTREC *rec );
-int tdbio_search_dir_byfpr( const byte *fingerprint, size_t fingerlen,
-                                       int pubkey_algo, TRUSTREC *rec );
-int tdbio_search_sdir( u32 *keyid, int pubkey_algo, TRUSTREC *rec );
+int tdbio_search_trust_byfpr(const byte *fingerprint, TRUSTREC *rec );
+int tdbio_search_trust_bypk(PKT_public_key *pk, TRUSTREC *rec );
 
 void tdbio_invalid(void);
 
 
 void tdbio_invalid(void);