Merge branch 'master' into ECC-INTEGRATION-2-1
[gnupg.git] / common / keyserver.h
1 /* keyserver.h - Public definitions for gpg keyserver helpers.
2  * Copyright (C) 2001, 2002, 2011 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 <http://www.gnu.org/licenses/>.
18  */
19
20 #ifndef GNUPG_COMMON_KEYSERVER_H
21 #define GNUPG_COMMON_KEYSERVER_H
22
23 #define KEYSERVER_PROTO_VERSION    1
24
25 /* These are usable for return codes for the gpgkeys_ process, and
26    also KEY FAILED codes. */
27 #define KEYSERVER_OK               0 /* not an error */
28 #define KEYSERVER_INTERNAL_ERROR   1 /* gpgkeys_ internal error */
29 #define KEYSERVER_NOT_SUPPORTED    2 /* operation not supported */
30 #define KEYSERVER_VERSION_ERROR    3 /* VERSION mismatch */
31 #define KEYSERVER_GENERAL_ERROR    4 /* keyserver internal error */
32 #define KEYSERVER_NO_MEMORY        5 /* out of memory */
33 #define KEYSERVER_KEY_NOT_FOUND    6 /* key not found */
34 #define KEYSERVER_KEY_EXISTS       7 /* key already exists */
35 #define KEYSERVER_KEY_INCOMPLETE   8 /* key incomplete (EOF) */
36 #define KEYSERVER_UNREACHABLE      9 /* unable to contact keyserver */
37 #define KEYSERVER_TIMEOUT         10 /* timeout while accessing keyserver */
38
39 /* Must be 127 due to shell internal magic. */
40 #define KEYSERVER_SCHEME_NOT_FOUND 127
41
42 /* Object to hold information pertaining to a keyserver; it further
43    allows to build a list of keyservers.  Note that g10/options.h has
44    a typedef for this.  FIXME: We should make use of the
45    parse_uri_t. */
46 struct keyserver_spec
47 {
48   struct keyserver_spec *next;
49   char *uri;
50   char *scheme;
51   char *auth;
52   char *host;
53   char *port;
54   char *path;
55   char *opaque;
56   strlist_t options;
57   struct
58   {
59     unsigned int direct_uri:1;
60   } flags;
61 };
62
63
64 #endif /*GNUPG_COMMON_KEYSERVER_H*/