g10: Fix another race condition for trustdb access.
[gnupg.git] / g10 / options.h
index 7ec81af..0a87b90 100644 (file)
@@ -1,6 +1,7 @@
 /* options.h
  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
  *               2007, 2010, 2011 Free Software Foundation, Inc.
+ * Copyright (C) 2015 g10 Code GmbH
  *
  * This file is part of GnuPG.
  *
@@ -24,6 +25,7 @@
 #include <types.h>
 #include "main.h"
 #include "packet.h"
+#include "tofu.h"
 #include "../common/session-env.h"
 
 #ifndef EXTERN_UNLESS_MAIN_MODULE
@@ -67,11 +69,16 @@ struct
   int check_sigs; /* check key signatures */
   int with_colons;
   int with_key_data;
+  int with_icao_spelling; /* Print ICAO spelling with fingerprints.  */
   int with_fingerprint; /* Option --with-fingerprint active.  */
+  int with_subkey_fingerprint; /* Option --with-subkey-fingerprint active.  */
   int with_keygrip;     /* Option --with-keygrip active.  */
   int with_secret;      /* Option --with-secret active.  */
+  int with_wkd_hash;    /* Option --with-wkd-hash.  */
   int fingerprint; /* list fingerprints */
   int list_sigs;   /* list signatures */
+  int print_pka_records;
+  int print_dane_records;
   int no_armor;
   int list_packets; /* list-packets mode: 1=normal, 2=invoked by command*/
   int def_cipher_algo;
@@ -83,7 +90,7 @@ struct
   int compress_level;
   int bz2_compress_level;
   int bz2_decompress_lowmem;
-  const char *def_secret_key;
+  strlist_t def_secret_key;
   char *def_recipient;
   int def_recipient_self;
   strlist_t secret_keys_to_try;
@@ -99,7 +106,6 @@ struct
   int marginals_needed;
   int completes_needed;
   int max_cert_depth;
-  const char *homedir;
   const char *agent_program;
   const char *dirmngr_program;
 
@@ -111,12 +117,18 @@ struct
   int skip_verify;
   int skip_hidden_recipients;
 
-  /* TM_CLASSIC must be zero to accomodate trustdbs generated before
+  /* TM_CLASSIC must be zero to accommodate trustdbs generated before
      we started storing the trust model inside the trustdb. */
   enum
     {
-      TM_CLASSIC=0, TM_PGP=1, TM_EXTERNAL=2, TM_ALWAYS, TM_DIRECT, TM_AUTO
+      TM_CLASSIC=0, TM_PGP=1, TM_EXTERNAL=2,
+      TM_ALWAYS, TM_DIRECT, TM_AUTO, TM_TOFU, TM_TOFU_PGP
     } trust_model;
+  enum
+    {
+      TOFU_DB_AUTO=0, TOFU_DB_SPLIT, TOFU_DB_FLAT
+    } tofu_db_format;
+  enum tofu_policy tofu_default_policy;
   int force_ownertrust;
   enum
     {
@@ -125,12 +137,12 @@ struct
     } compliance;
   enum
     {
-      KF_SHORT, KF_LONG, KF_0xSHORT, KF_0xLONG
+      KF_DEFAULT, KF_NONE, KF_SHORT, KF_LONG, KF_0xSHORT, KF_0xLONG
     } keyid_format;
   int shm_coprocess;
   const char *set_filename;
   strlist_t comments;
-  int throw_keyid;
+  int throw_keyids;
   const char *photo_viewer;
   int s2k_mode;
   int s2k_digest_algo;
@@ -146,7 +158,7 @@ struct
     unsigned int options;
     unsigned int import_options;
     unsigned int export_options;
-    strlist_t other;
+    char *http_proxy;
   } keyserver_options;
   int exec_disable;
   int exec_path_set;
@@ -159,10 +171,12 @@ struct
   prefitem_t *personal_cipher_prefs;
   prefitem_t *personal_digest_prefs;
   prefitem_t *personal_compress_prefs;
+  struct weakhash *weak_digests;
   int no_perm_warn;
   int no_mdc_warn;
   char *temp_dir;
   int no_encrypt_to;
+  int encrypt_to_default_key;
   int interactive;
   struct notation *sig_notations;
   struct notation *cert_notations;
@@ -189,7 +203,6 @@ struct
   int try_all_secrets;
   int no_expensive_trust_checks;
   int no_sig_cache;
-  int no_sig_create_check;
   int no_auto_check_trustdb;
   int preserve_permissions;
   int no_homedir_creation;
@@ -208,13 +221,6 @@ struct
      value. */
   int limit_card_insert_tries;
 
-#ifdef ENABLE_CARD_SUPPORT
-  /* FIXME: We don't needs this here as it is done in scdaemon. */
-  const char *ctapi_driver; /* Library to access the ctAPI. */
-  const char *pcsc_driver;  /* Library to access the PC/SC system. */
-  int disable_ccid;    /* Disable the use of the internal CCID driver. */
-#endif /*ENABLE_CARD_SUPPORT*/
-
   struct
   {
     /* If set, require an 0x19 backsig to be present on signatures
@@ -228,6 +234,7 @@ struct
     unsigned int allow_multiple_messages:1;
     unsigned int allow_weak_digest_algos:1;
     unsigned int large_rsa:1;
+    unsigned int disable_signer_uid:1;
   } flags;
 
   /* Linked list of ways to find a key if the key isn't on the local
@@ -239,6 +246,8 @@ struct
       AKL_LOCAL,
       AKL_CERT,
       AKL_PKA,
+      AKL_DANE,
+      AKL_WKD,
       AKL_LDAP,
       AKL_KEYSERVER,
       AKL_SPEC
@@ -249,6 +258,9 @@ struct
 
   int passphrase_repeat;
   int pinentry_mode;
+
+  int unwrap_encryption;
+  int only_sign_text_ids;
 } opt;
 
 /* CTRL is used to keep some global variables we currently can't
@@ -267,34 +279,34 @@ struct {
 
 #define DBG_PACKET_VALUE  1    /* debug packet reading/writing */
 #define DBG_MPI_VALUE    2     /* debug mpi details */
-#define DBG_CIPHER_VALUE  4    /* debug cipher handling */
+#define DBG_CRYPTO_VALUE  4    /* debug crypto handling */
                                /* (may reveal sensitive data) */
 #define DBG_FILTER_VALUE  8    /* debug internal filter handling */
 #define DBG_IOBUF_VALUE   16   /* debug iobuf stuff */
 #define DBG_MEMORY_VALUE  32   /* debug memory allocation stuff */
-#define DBG_CACHE_VALUE   64   /* debug the cacheing */
+#define DBG_CACHE_VALUE   64   /* debug the caching */
 #define DBG_MEMSTAT_VALUE 128  /* show memory statistics */
 #define DBG_TRUST_VALUE   256  /* debug the trustdb */
 #define DBG_HASHING_VALUE 512  /* debug hashing operations */
-#define DBG_EXTPROG_VALUE 1024  /* debug external program calls */
+#define DBG_IPC_VALUE     1024  /* debug assuan communication */
 #define DBG_CARD_IO_VALUE 2048  /* debug smart card I/O.  */
 #define DBG_CLOCK_VALUE   4096
-
-/* Fixme: For now alias this value.  */
-#define DBG_ASSUAN_VALUE  DBG_EXTPROG_VALUE
-
+#define DBG_LOOKUP_VALUE  8192 /* debug the key lookup */
+#define DBG_EXTPROG_VALUE 16384 /* debug external program calls */
 
 /* Tests for the debugging flags.  */
 #define DBG_PACKET (opt.debug & DBG_PACKET_VALUE)
-#define DBG_CIPHER (opt.debug & DBG_CIPHER_VALUE)
+#define DBG_CRYPTO (opt.debug & DBG_CRYPTO_VALUE)
 #define DBG_FILTER (opt.debug & DBG_FILTER_VALUE)
 #define DBG_CACHE  (opt.debug & DBG_CACHE_VALUE)
 #define DBG_TRUST  (opt.debug & DBG_TRUST_VALUE)
 #define DBG_HASHING (opt.debug & DBG_HASHING_VALUE)
-#define DBG_EXTPROG (opt.debug & DBG_EXTPROG_VALUE)
+#define DBG_IPC     (opt.debug & DBG_IPC_VALUE)
 #define DBG_CARD_IO (opt.debug & DBG_CARD_IO_VALUE)
-#define DBG_ASSUAN  (opt.debug & DBG_ASSUAN_VALUE)
+#define DBG_IPC     (opt.debug & DBG_IPC_VALUE)
 #define DBG_CLOCK   (opt.debug & DBG_CLOCK_VALUE)
+#define DBG_LOOKUP  (opt.debug & DBG_LOOKUP_VALUE)
+#define DBG_EXTPROG (opt.debug & DBG_EXTPROG_VALUE)
 
 /* FIXME: We need to check whey we did not put this into opt. */
 #define DBG_MEMORY    memory_debug_mode
@@ -332,7 +344,7 @@ EXTERN_UNLESS_MAIN_MODULE int memory_stat_debug_mode;
 #define EXPORT_RESET_SUBKEY_PASSWD       (1<<3)
 #define EXPORT_MINIMAL                   (1<<4)
 #define EXPORT_CLEAN                     (1<<5)
-#define EXPORT_SEXP_FORMAT               (1<<6)
+#define EXPORT_DANE_FORMAT               (1<<6)
 
 #define LIST_SHOW_PHOTOS                 (1<<0)
 #define LIST_SHOW_POLICY_URLS            (1<<1)
@@ -360,8 +372,8 @@ EXTERN_UNLESS_MAIN_MODULE int memory_stat_debug_mode;
 #define VERIFY_PKA_TRUST_INCREASE        (1<<8)
 #define VERIFY_SHOW_PRIMARY_UID_ONLY     (1<<9)
 
-#define KEYSERVER_USE_TEMP_FILES         (1<<0)
-#define KEYSERVER_KEEP_TEMP_FILES        (1<<1)
+#define KEYSERVER_HTTP_PROXY             (1<<0)
+#define KEYSERVER_TIMEOUT                (1<<1)
 #define KEYSERVER_ADD_FAKE_V3            (1<<2)
 #define KEYSERVER_AUTO_KEY_RETRIEVE      (1<<3)
 #define KEYSERVER_HONOR_KEYSERVER_URL    (1<<4)