gpg: New card function agent_scd_keypairinfo.
[gnupg.git] / g10 / gpg.h
1 /* gpg.h - top level include file for gpg etc.
2  * Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc.
3  *
4  * This file is part of GnuPG.
5  *
6  * GnuPG is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GnuPG is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see <https://www.gnu.org/licenses/>.
18  */
19 #ifndef GNUPG_G10_GPG_H
20 #define GNUPG_G10_GPG_H
21
22 /* Note, that this file should be the first one after the system
23    header files.  This is required to set the error source to the
24    correct value and may be of advantage if we ever have to do
25    special things. */
26
27 #ifdef HAVE_W32_SYSTEM
28 # define WIN32_LEAN_AND_MEAN 1
29 #endif
30
31 #ifdef GPG_ERR_SOURCE_DEFAULT
32 #error GPG_ERR_SOURCE_DEFAULT already defined
33 #endif
34 #define GPG_ERR_SOURCE_DEFAULT  GPG_ERR_SOURCE_GPG
35 #define map_assuan_err(a) \
36         map_assuan_err_with_source (GPG_ERR_SOURCE_DEFAULT, (a))
37 #include <gpg-error.h>
38 #include <gcrypt.h>
39
40
41 /* Number of bits we accept when reading or writing MPIs. */
42 #define MAX_EXTERN_MPI_BITS 16384
43
44 /* The maximum length of a binary fingerprints.  This is used to
45  * provide a static buffer and will be increased if we need to support
46  * longer fingerprints.  Warning: At some places we have some
47  * assumption on a 20 byte fingerprint.
48  * Watch out for FIXME(fingerprint) */
49 #define MAX_FINGERPRINT_LEN 32
50
51 /* The maximum length of a formatted fingerprint as returned by
52  * format_hexfingerprint().  */
53 #define MAX_FORMATTED_FINGERPRINT_LEN 59
54
55
56 /*
57    Forward declarations.
58  */
59
60 /* Object used to keep state locally to server.c . */
61 struct server_local_s;
62
63 /* Object used to keep state locally to call-dirmngr.c .  */
64 struct dirmngr_local_s;
65 typedef struct dirmngr_local_s *dirmngr_local_t;
66
67 /* Object used to describe a keyblock node.  */
68 typedef struct kbnode_struct *KBNODE;   /* Deprecated use kbnode_t. */
69 typedef struct kbnode_struct *kbnode_t;
70
71 /* The handle for keydb operations.  */
72 typedef struct keydb_handle *KEYDB_HANDLE;
73
74 /* TOFU database meta object.  */
75 struct tofu_dbs_s;
76 typedef struct tofu_dbs_s *tofu_dbs_t;
77
78
79 #if SIZEOF_UNSIGNED_LONG == 8
80 # define SERVER_CONTROL_MAGIC 0x53616c696e676572
81 #else
82 # define SERVER_CONTROL_MAGIC 0x53616c69
83 #endif
84
85 /* Session control object.  This object is passed to most functions to
86    convey the status of a session.  Note that the defaults are set by
87    gpg_init_default_ctrl(). */
88 struct server_control_s
89 {
90   /* Always has the value SERVER_CONTROL_MAGIC.  */
91   unsigned long magic;
92
93   /* Local data for server.c  */
94   struct server_local_s *server_local;
95
96   /* Local data for call-dirmngr.c  */
97   dirmngr_local_t dirmngr_local;
98
99   /* Local data for tofu.c  */
100   struct {
101     tofu_dbs_t dbs;
102     int batch_updated_wanted;
103   } tofu;
104
105   /* This is used to cache a key data base handle.  */
106   KEYDB_HANDLE cached_getkey_kdb;
107 };
108
109
110
111 #endif /*GNUPG_G10_GPG_H*/