g10: Unattended key generation "Key-Grip" and "Subkey-Grip".
[gnupg.git] / tools / gpg-wks.h
1 /* gpg-wks.h - Common definitions for wks server and client.
2  * Copyright (C) 2016 g10 Code GmbH
3  * Copyright (C) 2016 Bundesamt für Sicherheit in der Informationstechnik
4  *
5  * This file is part of GnuPG.
6  *
7  * This file is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU Lesser General Public License as
9  * published by the Free Software Foundation; either version 2.1 of
10  * the License, or (at your option) any later version.
11  *
12  * This file is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this program; if not, see <https://www.gnu.org/licenses/>.
19  */
20
21 #ifndef GNUPG_GPG_WKS_H
22 #define GNUPG_GPG_WKS_H
23
24 #include "../common/util.h"
25 #include "../common/strlist.h"
26 #include "mime-maker.h"
27
28 /* The draft version we implement.  */
29 #define WKS_DRAFT_VERSION 3
30
31
32 /* We keep all global options in the structure OPT.  */
33 struct
34 {
35   int verbose;
36   unsigned int debug;
37   int quiet;
38   int use_sendmail;
39   const char *output;
40   const char *gpg_program;
41   const char *directory;
42   const char *default_from;
43   strlist_t extra_headers;
44 } opt;
45
46 /* Debug values and macros.  */
47 #define DBG_MIME_VALUE        1 /* Debug the MIME structure.  */
48 #define DBG_PARSER_VALUE      2 /* Debug the Mail parser.  */
49 #define DBG_CRYPTO_VALUE      4 /* Debug low level crypto.  */
50 #define DBG_MEMORY_VALUE     32 /* Debug memory allocation stuff.  */
51 #define DBG_MEMSTAT_VALUE   128 /* Show memory statistics.  */
52 #define DBG_IPC_VALUE      1024 /* Debug assuan communication.  */
53 #define DBG_EXTPROG_VALUE 16384 /* debug external program calls */
54
55 #define DBG_MIME     (opt.debug & DBG_MIME_VALUE)
56 #define DBG_PARSER   (opt.debug & DBG_PARSER_VALUE)
57 #define DBG_CRYPTO   (opt.debug & DBG_CRYPTO_VALUE)
58
59
60 /* The parsed policy flags. */
61 struct policy_flags_s
62 {
63   unsigned int mailbox_only : 1;
64   unsigned int dane_only : 1;
65   unsigned int auth_submit : 1;
66   unsigned int protocol_version; /* The supported WKS_DRAFT_VERION or 0  */
67   unsigned int max_pending;      /* Seconds to wait for a confirmation.  */
68 };
69 typedef struct policy_flags_s *policy_flags_t;
70
71
72 /* An object to convey user ids of a key.  */
73 struct uidinfo_list_s
74 {
75   struct uidinfo_list_s *next;
76   time_t created; /* Time the userid was created.  */
77   char *mbox;  /* NULL or the malloced mailbox from UID.  */
78   char uid[1];
79 };
80 typedef struct uidinfo_list_s *uidinfo_list_t;
81
82
83
84 /*-- wks-util.c --*/
85 void wks_set_status_fd (int fd);
86 void wks_write_status (int no, const char *format, ...) GPGRT_ATTR_PRINTF(2,3);
87 void free_uidinfo_list (uidinfo_list_t list);
88 gpg_error_t wks_list_key (estream_t key, char **r_fpr,
89                           uidinfo_list_t *r_mboxes);
90 gpg_error_t wks_filter_uid (estream_t *r_newkey, estream_t key,
91                             const char *uid);
92 gpg_error_t wks_send_mime (mime_maker_t mime);
93 gpg_error_t wks_parse_policy (policy_flags_t flags, estream_t stream,
94                               int ignore_unknown);
95
96 /*-- wks-receive.c --*/
97
98 /* Flag values for the receive callback.  */
99 #define WKS_RECEIVE_DRAFT2 1
100
101 gpg_error_t wks_receive (estream_t fp,
102                          gpg_error_t (*result_cb)(void *opaque,
103                                                   const char *mediatype,
104                                                   estream_t data,
105                                                   unsigned int flags),
106                          void *cb_data);
107
108
109
110 #endif /*GNUPG_GPG_WKS_H*/