See ChangeLog: Tue Aug 31 17:20:44 CEST 1999 Werner Koch
[gnupg.git] / g10 / tdbio.h
index 68011d4..a64f21b 100644 (file)
@@ -1,14 +1,14 @@
 /* tdbio.h - Trust database I/O functions
  *     Copyright (C) 1998 Free Software Foundation, Inc.
  *
- * This file is part of GNUPG.
+ * This file is part of GnuPG.
  *
- * GNUPG is free software; you can redistribute it and/or modify
+ * GnuPG is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
  *
- * GNUPG is distributed in the hope that it will be useful,
+ * GnuPG is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
@@ -47,7 +47,7 @@
 #define RECTYPE_FREE 254
 
 
-#define DIRF_CHECKED  1 /* has been checkd - other bits are valid */
+#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 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 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_IGNORED  64  /* this signature is ignored by the system */
 #define SIGF_NOPUBKEY 128 /* there is no pubkey for this sig */
 
 struct trust_record {
@@ -77,9 +78,12 @@ struct trust_record {
     union {
        struct {             /* version record: */
            byte version;    /* should be 2 */
+           byte  marginals;
+           byte  completes;
+           byte  cert_depth;
            ulong created;   /* timestamp of trustdb creation  */
-           ulong modified;  /* timestamp of last modification */
-           ulong validated; /* timestamp of last validation   */
+           ulong mod_down;  /* timestamp of last modification downward */
+           ulong mod_up;    /* timestamp of last modification upward */
            ulong keyhashtbl;
            ulong firstfree;
            ulong sdirhashtbl;
@@ -94,6 +98,9 @@ struct trust_record {
            ulong cacherec; /* the cache record */
            byte ownertrust;
            byte dirflags;
+           byte validity;   /* calculated trustlevel over all uids */
+           ulong valcheck;  /* timestamp of last validation check */
+           ulong checkat;   /* Check key when this time has been reached*/
        } dir;
        struct {            /* primary public key record */
            ulong lid;
@@ -109,6 +116,7 @@ struct trust_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 */
@@ -168,13 +176,22 @@ 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 up, int down );
+int tdbio_is_dirty(void);
 int tdbio_sync(void);
+int tdbio_begin_transaction(void);
+int tdbio_end_transaction(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_dir(  u32 *keyid, int pubkey_algo, TRUSTREC *rec );
 int tdbio_search_sdir( u32 *keyid, int pubkey_algo, TRUSTREC *rec );
 
+void tdbio_invalid(void);
 
 #endif /*G10_TDBIO_H*/