f73c183e05bdb1bb2497c9c34dbd5f1275a6361a
[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 max_pending;      /* Seconds to wait for a confirmation.  */
67 };
68 typedef struct policy_flags_s *policy_flags_t;
69
70
71
72 /*-- wks-util.c --*/
73 void wks_set_status_fd (int fd);
74 void wks_write_status (int no, const char *format, ...) GPGRT_ATTR_PRINTF(2,3);
75 gpg_error_t wks_list_key (estream_t key, char **r_fpr, strlist_t *r_mboxes);
76 gpg_error_t wks_send_mime (mime_maker_t mime);
77 gpg_error_t wks_parse_policy (policy_flags_t flags, estream_t stream,
78                               int ignore_unknown);
79
80 /*-- wks-receive.c --*/
81
82 /* Flag values for the receive callback.  */
83 #define WKS_RECEIVE_DRAFT2 1
84
85 gpg_error_t wks_receive (estream_t fp,
86                          gpg_error_t (*result_cb)(void *opaque,
87                                                   const char *mediatype,
88                                                   estream_t data,
89                                                   unsigned int flags),
90                          void *cb_data);
91
92
93
94 #endif /*GNUPG_GPG_WKS_H*/