sm: Print Yubikey attestation extensions with --dump-cert.
[gnupg.git] / g10 / gpg.h
index 100a8e3..28a77b6 100644 (file)
--- a/g10/gpg.h
+++ b/g10/gpg.h
@@ -1,11 +1,11 @@
 /* gpg.h - top level include file for gpg etc.
- * Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+ * Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
  * 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
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * GnuPG is distributed in the hope that it will be useful,
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- * USA.
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 #ifndef GNUPG_G10_GPG_H
-#define GNUPG_G10_GPG_H 
+#define GNUPG_G10_GPG_H
 
 /* Note, that this file should be the first one after the system
    header files.  This is required to set the error source to the
    correct value and may be of advantage if we ever have to do
    special things. */
 
+#ifdef HAVE_W32_SYSTEM
+# define WIN32_LEAN_AND_MEAN 1
+#endif
+
 #ifdef GPG_ERR_SOURCE_DEFAULT
 #error GPG_ERR_SOURCE_DEFAULT already defined
 #endif
 /* Number of bits we accept when reading or writing MPIs. */
 #define MAX_EXTERN_MPI_BITS 16384
 
-/* The maximum length of a binary fingerprints.  */
-#define MAX_FINGERPRINT_LEN 20
-
-
-/* Forward declarations. */
-typedef struct kbnode_struct *KBNODE;
-typedef struct keydb_search_desc KEYDB_SEARCH_DESC;
-
-
-
-/* Simple wrappers. */
-#define g10_errstr(a)  gpg_strerror ((a))
-
-
-/* Mapping of the old erro codes to the gpg-error ones.  Fixme: This
-   is just a temporary solution: We need to do all these gpg_error()
-   calls in the code.  */
-#define G10ERR_BAD_KEY         GPG_ERR_BAD_KEY          
-#define G10ERR_BAD_PASS        GPG_ERR_BAD_PASS         
-#define G10ERR_BAD_PUBKEY      GPG_ERR_BAD_PUBKEY       
-#define G10ERR_BAD_SIGN        GPG_ERR_BAD_SIGNATURE
-#define G10ERR_BAD_URI         GPG_ERR_BAD_URI          
-#define G10ERR_CHECKSUM        GPG_ERR_CHECKSUM         
-#define G10ERR_CIPHER_ALGO     GPG_ERR_CIPHER_ALGO      
-#define G10ERR_CLOSE_FILE      GPG_ERR_CLOSE_FILE       
-#define G10ERR_COMPR_ALGO      GPG_ERR_COMPR_ALGO       
-#define G10ERR_CREATE_FILE     GPG_ERR_CREATE_FILE      
-#define G10ERR_DIGEST_ALGO     GPG_ERR_DIGEST_ALGO      
-#define G10ERR_FILE_EXISTS     GPG_ERR_EEXIST
-#define G10ERR_GENERAL         GPG_ERR_GENERAL          
-#define G10ERR_INV_ARG         GPG_ERR_INV_ARG          
-#define G10ERR_INV_KEYRING     GPG_ERR_INV_KEYRING      
-#define G10ERR_INV_USER_ID     GPG_ERR_INV_USER_ID      
-#define G10ERR_INVALID_ARMOR   GPG_ERR_INV_ARMOR    
-#define G10ERR_INVALID_PACKET  GPG_ERR_INV_PACKET   
-#define G10ERR_KEYRING_OPEN    GPG_ERR_KEYRING_OPEN     
-#define G10ERR_KEYSERVER       GPG_ERR_KEYSERVER        
-#define G10ERR_NO_DATA         GPG_ERR_NO_DATA          
-#define G10ERR_NO_PUBKEY       GPG_ERR_NO_PUBKEY        
-#define G10ERR_NO_SECKEY       GPG_ERR_NO_SECKEY        
-#define G10ERR_NO_USER_ID      GPG_ERR_NO_USER_ID       
-#define G10ERR_NOT_PROCESSED   GPG_ERR_NOT_PROCESSED    
-#define G10ERR_OPEN_FILE       GPG_ERR_OPEN_FILE        
-#define G10ERR_PASSPHRASE      GPG_ERR_PASSPHRASE       
-#define G10ERR_PUBKEY_ALGO     GPG_ERR_PUBKEY_ALGO      
-#define G10ERR_READ_FILE       GPG_ERR_READ_FILE        
-#define G10ERR_RENAME_FILE     GPG_ERR_RENAME_FILE      
-#define G10ERR_RESOURCE_LIMIT  GPG_ERR_RESOURCE_LIMIT   
-#define G10ERR_SIG_CLASS       GPG_ERR_SIG_CLASS        
-#define G10ERR_TIME_CONFLICT   GPG_ERR_TIME_CONFLICT    
-#define G10ERR_TRUSTDB         GPG_ERR_TRUSTDB          
-#define G10ERR_UNEXPECTED      GPG_ERR_UNEXPECTED       
-#define G10ERR_UNKNOWN_PACKET  GPG_ERR_UNKNOWN_PACKET   
-#define G10ERR_UNSUPPORTED     GPG_ERR_UNSUPPORTED      
-#define G10ERR_UNU_PUBKEY      GPG_ERR_UNUSABLE_PUBKEY       
-#define G10ERR_UNU_SECKEY      GPG_ERR_UNUSABLE_SECKEY       
-#define G10ERR_WRONG_SECKEY    GPG_ERR_WRONG_SECKEY        
+/* The maximum length of a binary fingerprints.  This is used to
+ * provide a static buffer and will be increased if we need to support
+ * longer fingerprints.  Warning: At some places we have some
+ * assumption on a 20 byte fingerprint.
+ * Watch out for FIXME(fingerprint) */
+#define MAX_FINGERPRINT_LEN 32
+
+/* The maximum length of a formatted fingerprint as returned by
+ * format_hexfingerprint().  */
+#define MAX_FORMATTED_FINGERPRINT_LEN 59
+
+
+/*
+   Forward declarations.
+ */
+
+/* Object used to keep state locally to server.c . */
+struct server_local_s;
+
+/* Object used to keep state locally to call-dirmngr.c .  */
+struct dirmngr_local_s;
+typedef struct dirmngr_local_s *dirmngr_local_t;
+
+/* Object used to describe a keyblock node.  */
+typedef struct kbnode_struct *KBNODE;   /* Deprecated use kbnode_t. */
+typedef struct kbnode_struct *kbnode_t;
+
+/* The handle for keydb operations.  */
+typedef struct keydb_handle *KEYDB_HANDLE;
+
+/* TOFU database meta object.  */
+struct tofu_dbs_s;
+typedef struct tofu_dbs_s *tofu_dbs_t;
+
+
+#if SIZEOF_UNSIGNED_LONG == 8
+# define SERVER_CONTROL_MAGIC 0x53616c696e676572
+#else
+# define SERVER_CONTROL_MAGIC 0x53616c69
+#endif
+
+/* Session control object.  This object is passed to most functions to
+   convey the status of a session.  Note that the defaults are set by
+   gpg_init_default_ctrl(). */
+struct server_control_s
+{
+  /* Always has the value SERVER_CONTROL_MAGIC.  */
+  unsigned long magic;
+
+  /* Local data for server.c  */
+  struct server_local_s *server_local;
+
+  /* Local data for call-dirmngr.c  */
+  dirmngr_local_t dirmngr_local;
+
+  /* Local data for tofu.c  */
+  struct {
+    tofu_dbs_t dbs;
+    int batch_updated_wanted;
+  } tofu;
+
+  /* This is used to cache a key data base handle.  */
+  KEYDB_HANDLE cached_getkey_kdb;
+};