packages feed

bindings-gpgme (empty) → 0.1

raw patch · 7 files changed

+3072/−0 lines, 7 filesdep +basedep +bindings-DSLsetup-changed

Dependencies added: base, bindings-DSL

Files

+ LICENSE view
@@ -0,0 +1,29 @@+Copyright (c) <2009>, <Maurício C. Antunes>+All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are+met:++    * Redistributions of source code must retain the above copyright+    notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above copyright+    notice, this list of conditions and the following disclaimer in the+    documentation and/or other materials provided with the distribution.++    * Neither the name of the author nor the names of contributors+    may be used to endorse or promote products derived from this+    software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ bindings-gpgme.cabal view
@@ -0,0 +1,30 @@+cabal-version: >= 1.2.3+name: bindings-gpgme+homepage: http://bitbucket.org/mauricio/bindings-gpgme+synopsis:+  Low level bindings to gpgme.+version: 0.1+license: BSD3+license-file: LICENSE+maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>+author: Maurício C. Antunes+build-type: Simple+category: FFI+stability: Misses C dependencies.+bug-reports: http://bitbucket.org/mauricio/bindings-gpgme/issues+extra-source-files:+  include/gpgme.h+  include/gpg-error.h+library+  hs-source-dirs: src+  extensions:+    ForeignFunctionInterface+  build-depends:+    base >= 3 && < 5,+    bindings-DSL >= 1.0 && < 1.1+  exposed-modules:+    Bindings.Gpgme+  c-sources:+    src/inlines.c+  include-dirs:+    include
+ include/gpg-error.h view
@@ -0,0 +1,651 @@+/* Output of mkheader.awk.  DO NOT EDIT.  */++/* gpg-error.h - Public interface to libgpg-error.+   Copyright (C) 2003, 2004 g10 Code GmbH++   This file is part of libgpg-error.+ +   libgpg-error is free software; you can redistribute it and/or+   modify it under the terms of the GNU Lesser General Public License+   as published by the Free Software Foundation; either version 2.1 of+   the License, or (at your option) any later version.+ +   libgpg-error is distributed in the hope that it will be useful, but+   WITHOUT ANY WARRANTY; without even the implied warranty of+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU+   Lesser General Public License for more details.+ +   You should have received a copy of the GNU Lesser General Public+   License along with libgpg-error; if not, write to the Free+   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA+   02111-1307, USA.  */++#ifndef GPG_ERROR_H+#define GPG_ERROR_H	1++#include <stddef.h>++#ifdef __GNUC__+#define GPG_ERR_INLINE __inline__+#elif __STDC_VERSION__ >= 199901L+#define GPG_ERR_INLINE inline+#else+#ifndef GPG_ERR_INLINE+#define GPG_ERR_INLINE+#endif +#endif+++#ifdef __cplusplus+extern "C" {+#if 0 /* just to make Emacs auto-indent happy */+}+#endif+#endif /* __cplusplus */++/* The GnuPG project consists of many components.  Error codes are+   exchanged between all components.  The common error codes and their+   user-presentable descriptions are kept into a shared library to+   allow adding new error codes and components without recompiling any+   of the other components.  The interface will not change in a+   backward incompatible way.++   An error code together with an error source build up an error+   value.  As the error value is been passed from one component to+   another, it preserver the information about the source and nature+   of the error.++   A component of the GnuPG project can define the following macro to+   tune the behaviour of the library:++   GPG_ERR_SOURCE_DEFAULT: Define to an error source of type+   gpg_err_source_t to make that source the default for gpg_error().+   Otherwise GPG_ERR_SOURCE_UNKNOWN is used as default.  */+++/* The error source type gpg_err_source_t.++   Where as the Poo out of a welle small+   Taketh his firste springing and his sours.+					--Chaucer.  */++/* Only use free slots, never change or reorder the existing+   entries.  */+typedef enum+  {+    GPG_ERR_SOURCE_UNKNOWN = 0,+    GPG_ERR_SOURCE_GCRYPT = 1,+    GPG_ERR_SOURCE_GPG = 2,+    GPG_ERR_SOURCE_GPGSM = 3,+    GPG_ERR_SOURCE_GPGAGENT = 4,+    GPG_ERR_SOURCE_PINENTRY = 5,+    GPG_ERR_SOURCE_SCD = 6,+    GPG_ERR_SOURCE_GPGME = 7,+    GPG_ERR_SOURCE_KEYBOX = 8,+    GPG_ERR_SOURCE_KSBA = 9,+    GPG_ERR_SOURCE_DIRMNGR = 10,+    GPG_ERR_SOURCE_GSTI = 11,+    GPG_ERR_SOURCE_GPA = 12,+    GPG_ERR_SOURCE_KLEO = 13,+    GPG_ERR_SOURCE_ANY = 31,+    GPG_ERR_SOURCE_USER_1 = 32,+    GPG_ERR_SOURCE_USER_2 = 33,+    GPG_ERR_SOURCE_USER_3 = 34,+    GPG_ERR_SOURCE_USER_4 = 35,++    /* This is one more than the largest allowed entry.  */+    GPG_ERR_SOURCE_DIM = 256+  } gpg_err_source_t;+++/* The error code type gpg_err_code_t.  */++/* Only use free slots, never change or reorder the existing+   entries.  */+typedef enum+  {+    GPG_ERR_NO_ERROR = 0,+    GPG_ERR_GENERAL = 1,+    GPG_ERR_UNKNOWN_PACKET = 2,+    GPG_ERR_UNKNOWN_VERSION = 3,+    GPG_ERR_PUBKEY_ALGO = 4,+    GPG_ERR_DIGEST_ALGO = 5,+    GPG_ERR_BAD_PUBKEY = 6,+    GPG_ERR_BAD_SECKEY = 7,+    GPG_ERR_BAD_SIGNATURE = 8,+    GPG_ERR_NO_PUBKEY = 9,+    GPG_ERR_CHECKSUM = 10,+    GPG_ERR_BAD_PASSPHRASE = 11,+    GPG_ERR_CIPHER_ALGO = 12,+    GPG_ERR_KEYRING_OPEN = 13,+    GPG_ERR_INV_PACKET = 14,+    GPG_ERR_INV_ARMOR = 15,+    GPG_ERR_NO_USER_ID = 16,+    GPG_ERR_NO_SECKEY = 17,+    GPG_ERR_WRONG_SECKEY = 18,+    GPG_ERR_BAD_KEY = 19,+    GPG_ERR_COMPR_ALGO = 20,+    GPG_ERR_NO_PRIME = 21,+    GPG_ERR_NO_ENCODING_METHOD = 22,+    GPG_ERR_NO_ENCRYPTION_SCHEME = 23,+    GPG_ERR_NO_SIGNATURE_SCHEME = 24,+    GPG_ERR_INV_ATTR = 25,+    GPG_ERR_NO_VALUE = 26,+    GPG_ERR_NOT_FOUND = 27,+    GPG_ERR_VALUE_NOT_FOUND = 28,+    GPG_ERR_SYNTAX = 29,+    GPG_ERR_BAD_MPI = 30,+    GPG_ERR_INV_PASSPHRASE = 31,+    GPG_ERR_SIG_CLASS = 32,+    GPG_ERR_RESOURCE_LIMIT = 33,+    GPG_ERR_INV_KEYRING = 34,+    GPG_ERR_TRUSTDB = 35,+    GPG_ERR_BAD_CERT = 36,+    GPG_ERR_INV_USER_ID = 37,+    GPG_ERR_UNEXPECTED = 38,+    GPG_ERR_TIME_CONFLICT = 39,+    GPG_ERR_KEYSERVER = 40,+    GPG_ERR_WRONG_PUBKEY_ALGO = 41,+    GPG_ERR_TRIBUTE_TO_D_A = 42,+    GPG_ERR_WEAK_KEY = 43,+    GPG_ERR_INV_KEYLEN = 44,+    GPG_ERR_INV_ARG = 45,+    GPG_ERR_BAD_URI = 46,+    GPG_ERR_INV_URI = 47,+    GPG_ERR_NETWORK = 48,+    GPG_ERR_UNKNOWN_HOST = 49,+    GPG_ERR_SELFTEST_FAILED = 50,+    GPG_ERR_NOT_ENCRYPTED = 51,+    GPG_ERR_NOT_PROCESSED = 52,+    GPG_ERR_UNUSABLE_PUBKEY = 53,+    GPG_ERR_UNUSABLE_SECKEY = 54,+    GPG_ERR_INV_VALUE = 55,+    GPG_ERR_BAD_CERT_CHAIN = 56,+    GPG_ERR_MISSING_CERT = 57,+    GPG_ERR_NO_DATA = 58,+    GPG_ERR_BUG = 59,+    GPG_ERR_NOT_SUPPORTED = 60,+    GPG_ERR_INV_OP = 61,+    GPG_ERR_TIMEOUT = 62,+    GPG_ERR_INTERNAL = 63,+    GPG_ERR_EOF_GCRYPT = 64,+    GPG_ERR_INV_OBJ = 65,+    GPG_ERR_TOO_SHORT = 66,+    GPG_ERR_TOO_LARGE = 67,+    GPG_ERR_NO_OBJ = 68,+    GPG_ERR_NOT_IMPLEMENTED = 69,+    GPG_ERR_CONFLICT = 70,+    GPG_ERR_INV_CIPHER_MODE = 71,+    GPG_ERR_INV_FLAG = 72,+    GPG_ERR_INV_HANDLE = 73,+    GPG_ERR_TRUNCATED = 74,+    GPG_ERR_INCOMPLETE_LINE = 75,+    GPG_ERR_INV_RESPONSE = 76,+    GPG_ERR_NO_AGENT = 77,+    GPG_ERR_AGENT = 78,+    GPG_ERR_INV_DATA = 79,+    GPG_ERR_ASSUAN_SERVER_FAULT = 80,+    GPG_ERR_ASSUAN = 81,+    GPG_ERR_INV_SESSION_KEY = 82,+    GPG_ERR_INV_SEXP = 83,+    GPG_ERR_UNSUPPORTED_ALGORITHM = 84,+    GPG_ERR_NO_PIN_ENTRY = 85,+    GPG_ERR_PIN_ENTRY = 86,+    GPG_ERR_BAD_PIN = 87,+    GPG_ERR_INV_NAME = 88,+    GPG_ERR_BAD_DATA = 89,+    GPG_ERR_INV_PARAMETER = 90,+    GPG_ERR_WRONG_CARD = 91,+    GPG_ERR_NO_DIRMNGR = 92,+    GPG_ERR_DIRMNGR = 93,+    GPG_ERR_CERT_REVOKED = 94,+    GPG_ERR_NO_CRL_KNOWN = 95,+    GPG_ERR_CRL_TOO_OLD = 96,+    GPG_ERR_LINE_TOO_LONG = 97,+    GPG_ERR_NOT_TRUSTED = 98,+    GPG_ERR_CANCELED = 99,+    GPG_ERR_BAD_CA_CERT = 100,+    GPG_ERR_CERT_EXPIRED = 101,+    GPG_ERR_CERT_TOO_YOUNG = 102,+    GPG_ERR_UNSUPPORTED_CERT = 103,+    GPG_ERR_UNKNOWN_SEXP = 104,+    GPG_ERR_UNSUPPORTED_PROTECTION = 105,+    GPG_ERR_CORRUPTED_PROTECTION = 106,+    GPG_ERR_AMBIGUOUS_NAME = 107,+    GPG_ERR_CARD = 108,+    GPG_ERR_CARD_RESET = 109,+    GPG_ERR_CARD_REMOVED = 110,+    GPG_ERR_INV_CARD = 111,+    GPG_ERR_CARD_NOT_PRESENT = 112,+    GPG_ERR_NO_PKCS15_APP = 113,+    GPG_ERR_NOT_CONFIRMED = 114,+    GPG_ERR_CONFIGURATION = 115,+    GPG_ERR_NO_POLICY_MATCH = 116,+    GPG_ERR_INV_INDEX = 117,+    GPG_ERR_INV_ID = 118,+    GPG_ERR_NO_SCDAEMON = 119,+    GPG_ERR_SCDAEMON = 120,+    GPG_ERR_UNSUPPORTED_PROTOCOL = 121,+    GPG_ERR_BAD_PIN_METHOD = 122,+    GPG_ERR_CARD_NOT_INITIALIZED = 123,+    GPG_ERR_UNSUPPORTED_OPERATION = 124,+    GPG_ERR_WRONG_KEY_USAGE = 125,+    GPG_ERR_NOTHING_FOUND = 126,+    GPG_ERR_WRONG_BLOB_TYPE = 127,+    GPG_ERR_MISSING_VALUE = 128,+    GPG_ERR_HARDWARE = 129,+    GPG_ERR_PIN_BLOCKED = 130,+    GPG_ERR_USE_CONDITIONS = 131,+    GPG_ERR_PIN_NOT_SYNCED = 132,+    GPG_ERR_INV_CRL = 133,+    GPG_ERR_BAD_BER = 134,+    GPG_ERR_INV_BER = 135,+    GPG_ERR_ELEMENT_NOT_FOUND = 136,+    GPG_ERR_IDENTIFIER_NOT_FOUND = 137,+    GPG_ERR_INV_TAG = 138,+    GPG_ERR_INV_LENGTH = 139,+    GPG_ERR_INV_KEYINFO = 140,+    GPG_ERR_UNEXPECTED_TAG = 141,+    GPG_ERR_NOT_DER_ENCODED = 142,+    GPG_ERR_NO_CMS_OBJ = 143,+    GPG_ERR_INV_CMS_OBJ = 144,+    GPG_ERR_UNKNOWN_CMS_OBJ = 145,+    GPG_ERR_UNSUPPORTED_CMS_OBJ = 146,+    GPG_ERR_UNSUPPORTED_ENCODING = 147,+    GPG_ERR_UNSUPPORTED_CMS_VERSION = 148,+    GPG_ERR_UNKNOWN_ALGORITHM = 149,+    GPG_ERR_INV_ENGINE = 150,+    GPG_ERR_PUBKEY_NOT_TRUSTED = 151,+    GPG_ERR_DECRYPT_FAILED = 152,+    GPG_ERR_KEY_EXPIRED = 153,+    GPG_ERR_SIG_EXPIRED = 154,+    GPG_ERR_ENCODING_PROBLEM = 155,+    GPG_ERR_INV_STATE = 156,+    GPG_ERR_DUP_VALUE = 157,+    GPG_ERR_MISSING_ACTION = 158,+    GPG_ERR_MODULE_NOT_FOUND = 159,+    GPG_ERR_INV_OID_STRING = 160,+    GPG_ERR_INV_TIME = 161,+    GPG_ERR_INV_CRL_OBJ = 162,+    GPG_ERR_UNSUPPORTED_CRL_VERSION = 163,+    GPG_ERR_INV_CERT_OBJ = 164,+    GPG_ERR_UNKNOWN_NAME = 165,+    GPG_ERR_LOCALE_PROBLEM = 166,+    GPG_ERR_NOT_LOCKED = 167,+    GPG_ERR_PROTOCOL_VIOLATION = 168,+    GPG_ERR_INV_MAC = 169,+    GPG_ERR_INV_REQUEST = 170,+    GPG_ERR_UNKNOWN_EXTN = 171,+    GPG_ERR_UNKNOWN_CRIT_EXTN = 172,+    GPG_ERR_LOCKED = 173,+    GPG_ERR_UNKNOWN_OPTION = 174,+    GPG_ERR_UNKNOWN_COMMAND = 175,+    GPG_ERR_UNFINISHED = 199,+    GPG_ERR_BUFFER_TOO_SHORT = 200,+    GPG_ERR_SEXP_INV_LEN_SPEC = 201,+    GPG_ERR_SEXP_STRING_TOO_LONG = 202,+    GPG_ERR_SEXP_UNMATCHED_PAREN = 203,+    GPG_ERR_SEXP_NOT_CANONICAL = 204,+    GPG_ERR_SEXP_BAD_CHARACTER = 205,+    GPG_ERR_SEXP_BAD_QUOTATION = 206,+    GPG_ERR_SEXP_ZERO_PREFIX = 207,+    GPG_ERR_SEXP_NESTED_DH = 208,+    GPG_ERR_SEXP_UNMATCHED_DH = 209,+    GPG_ERR_SEXP_UNEXPECTED_PUNC = 210,+    GPG_ERR_SEXP_BAD_HEX_CHAR = 211,+    GPG_ERR_SEXP_ODD_HEX_NUMBERS = 212,+    GPG_ERR_SEXP_BAD_OCT_CHAR = 213,+    GPG_ERR_ASS_GENERAL = 257,+    GPG_ERR_ASS_ACCEPT_FAILED = 258,+    GPG_ERR_ASS_CONNECT_FAILED = 259,+    GPG_ERR_ASS_INV_RESPONSE = 260,+    GPG_ERR_ASS_INV_VALUE = 261,+    GPG_ERR_ASS_INCOMPLETE_LINE = 262,+    GPG_ERR_ASS_LINE_TOO_LONG = 263,+    GPG_ERR_ASS_NESTED_COMMANDS = 264,+    GPG_ERR_ASS_NO_DATA_CB = 265,+    GPG_ERR_ASS_NO_INQUIRE_CB = 266,+    GPG_ERR_ASS_NOT_A_SERVER = 267,+    GPG_ERR_ASS_NOT_A_CLIENT = 268,+    GPG_ERR_ASS_SERVER_START = 269,+    GPG_ERR_ASS_READ_ERROR = 270,+    GPG_ERR_ASS_WRITE_ERROR = 271,+    GPG_ERR_ASS_TOO_MUCH_DATA = 273,+    GPG_ERR_ASS_UNEXPECTED_CMD = 274,+    GPG_ERR_ASS_UNKNOWN_CMD = 275,+    GPG_ERR_ASS_SYNTAX = 276,+    GPG_ERR_ASS_CANCELED = 277,+    GPG_ERR_ASS_NO_INPUT = 278,+    GPG_ERR_ASS_NO_OUTPUT = 279,+    GPG_ERR_ASS_PARAMETER = 280,+    GPG_ERR_ASS_UNKNOWN_INQUIRE = 281,+    GPG_ERR_USER_1 = 1024,+    GPG_ERR_USER_2 = 1025,+    GPG_ERR_USER_3 = 1026,+    GPG_ERR_USER_4 = 1027,+    GPG_ERR_USER_5 = 1028,+    GPG_ERR_USER_6 = 1029,+    GPG_ERR_USER_7 = 1030,+    GPG_ERR_USER_8 = 1031,+    GPG_ERR_USER_9 = 1032,+    GPG_ERR_USER_10 = 1033,+    GPG_ERR_USER_11 = 1034,+    GPG_ERR_USER_12 = 1035,+    GPG_ERR_USER_13 = 1036,+    GPG_ERR_USER_14 = 1037,+    GPG_ERR_USER_15 = 1038,+    GPG_ERR_USER_16 = 1039,+    GPG_ERR_MISSING_ERRNO = 16381,+    GPG_ERR_UNKNOWN_ERRNO = 16382,+    GPG_ERR_EOF = 16383,++    /* The following error codes are used to map system errors.  */+#define GPG_ERR_SYSTEM_ERROR	(1 << 15)+    GPG_ERR_E2BIG = GPG_ERR_SYSTEM_ERROR | 0,+    GPG_ERR_EACCES = GPG_ERR_SYSTEM_ERROR | 1,+    GPG_ERR_EADDRINUSE = GPG_ERR_SYSTEM_ERROR | 2,+    GPG_ERR_EADDRNOTAVAIL = GPG_ERR_SYSTEM_ERROR | 3,+    GPG_ERR_EADV = GPG_ERR_SYSTEM_ERROR | 4,+    GPG_ERR_EAFNOSUPPORT = GPG_ERR_SYSTEM_ERROR | 5,+    GPG_ERR_EAGAIN = GPG_ERR_SYSTEM_ERROR | 6,+    GPG_ERR_EALREADY = GPG_ERR_SYSTEM_ERROR | 7,+    GPG_ERR_EAUTH = GPG_ERR_SYSTEM_ERROR | 8,+    GPG_ERR_EBACKGROUND = GPG_ERR_SYSTEM_ERROR | 9,+    GPG_ERR_EBADE = GPG_ERR_SYSTEM_ERROR | 10,+    GPG_ERR_EBADF = GPG_ERR_SYSTEM_ERROR | 11,+    GPG_ERR_EBADFD = GPG_ERR_SYSTEM_ERROR | 12,+    GPG_ERR_EBADMSG = GPG_ERR_SYSTEM_ERROR | 13,+    GPG_ERR_EBADR = GPG_ERR_SYSTEM_ERROR | 14,+    GPG_ERR_EBADRPC = GPG_ERR_SYSTEM_ERROR | 15,+    GPG_ERR_EBADRQC = GPG_ERR_SYSTEM_ERROR | 16,+    GPG_ERR_EBADSLT = GPG_ERR_SYSTEM_ERROR | 17,+    GPG_ERR_EBFONT = GPG_ERR_SYSTEM_ERROR | 18,+    GPG_ERR_EBUSY = GPG_ERR_SYSTEM_ERROR | 19,+    GPG_ERR_ECANCELED = GPG_ERR_SYSTEM_ERROR | 20,+    GPG_ERR_ECHILD = GPG_ERR_SYSTEM_ERROR | 21,+    GPG_ERR_ECHRNG = GPG_ERR_SYSTEM_ERROR | 22,+    GPG_ERR_ECOMM = GPG_ERR_SYSTEM_ERROR | 23,+    GPG_ERR_ECONNABORTED = GPG_ERR_SYSTEM_ERROR | 24,+    GPG_ERR_ECONNREFUSED = GPG_ERR_SYSTEM_ERROR | 25,+    GPG_ERR_ECONNRESET = GPG_ERR_SYSTEM_ERROR | 26,+    GPG_ERR_ED = GPG_ERR_SYSTEM_ERROR | 27,+    GPG_ERR_EDEADLK = GPG_ERR_SYSTEM_ERROR | 28,+    GPG_ERR_EDEADLOCK = GPG_ERR_SYSTEM_ERROR | 29,+    GPG_ERR_EDESTADDRREQ = GPG_ERR_SYSTEM_ERROR | 30,+    GPG_ERR_EDIED = GPG_ERR_SYSTEM_ERROR | 31,+    GPG_ERR_EDOM = GPG_ERR_SYSTEM_ERROR | 32,+    GPG_ERR_EDOTDOT = GPG_ERR_SYSTEM_ERROR | 33,+    GPG_ERR_EDQUOT = GPG_ERR_SYSTEM_ERROR | 34,+    GPG_ERR_EEXIST = GPG_ERR_SYSTEM_ERROR | 35,+    GPG_ERR_EFAULT = GPG_ERR_SYSTEM_ERROR | 36,+    GPG_ERR_EFBIG = GPG_ERR_SYSTEM_ERROR | 37,+    GPG_ERR_EFTYPE = GPG_ERR_SYSTEM_ERROR | 38,+    GPG_ERR_EGRATUITOUS = GPG_ERR_SYSTEM_ERROR | 39,+    GPG_ERR_EGREGIOUS = GPG_ERR_SYSTEM_ERROR | 40,+    GPG_ERR_EHOSTDOWN = GPG_ERR_SYSTEM_ERROR | 41,+    GPG_ERR_EHOSTUNREACH = GPG_ERR_SYSTEM_ERROR | 42,+    GPG_ERR_EIDRM = GPG_ERR_SYSTEM_ERROR | 43,+    GPG_ERR_EIEIO = GPG_ERR_SYSTEM_ERROR | 44,+    GPG_ERR_EILSEQ = GPG_ERR_SYSTEM_ERROR | 45,+    GPG_ERR_EINPROGRESS = GPG_ERR_SYSTEM_ERROR | 46,+    GPG_ERR_EINTR = GPG_ERR_SYSTEM_ERROR | 47,+    GPG_ERR_EINVAL = GPG_ERR_SYSTEM_ERROR | 48,+    GPG_ERR_EIO = GPG_ERR_SYSTEM_ERROR | 49,+    GPG_ERR_EISCONN = GPG_ERR_SYSTEM_ERROR | 50,+    GPG_ERR_EISDIR = GPG_ERR_SYSTEM_ERROR | 51,+    GPG_ERR_EISNAM = GPG_ERR_SYSTEM_ERROR | 52,+    GPG_ERR_EL2HLT = GPG_ERR_SYSTEM_ERROR | 53,+    GPG_ERR_EL2NSYNC = GPG_ERR_SYSTEM_ERROR | 54,+    GPG_ERR_EL3HLT = GPG_ERR_SYSTEM_ERROR | 55,+    GPG_ERR_EL3RST = GPG_ERR_SYSTEM_ERROR | 56,+    GPG_ERR_ELIBACC = GPG_ERR_SYSTEM_ERROR | 57,+    GPG_ERR_ELIBBAD = GPG_ERR_SYSTEM_ERROR | 58,+    GPG_ERR_ELIBEXEC = GPG_ERR_SYSTEM_ERROR | 59,+    GPG_ERR_ELIBMAX = GPG_ERR_SYSTEM_ERROR | 60,+    GPG_ERR_ELIBSCN = GPG_ERR_SYSTEM_ERROR | 61,+    GPG_ERR_ELNRNG = GPG_ERR_SYSTEM_ERROR | 62,+    GPG_ERR_ELOOP = GPG_ERR_SYSTEM_ERROR | 63,+    GPG_ERR_EMEDIUMTYPE = GPG_ERR_SYSTEM_ERROR | 64,+    GPG_ERR_EMFILE = GPG_ERR_SYSTEM_ERROR | 65,+    GPG_ERR_EMLINK = GPG_ERR_SYSTEM_ERROR | 66,+    GPG_ERR_EMSGSIZE = GPG_ERR_SYSTEM_ERROR | 67,+    GPG_ERR_EMULTIHOP = GPG_ERR_SYSTEM_ERROR | 68,+    GPG_ERR_ENAMETOOLONG = GPG_ERR_SYSTEM_ERROR | 69,+    GPG_ERR_ENAVAIL = GPG_ERR_SYSTEM_ERROR | 70,+    GPG_ERR_ENEEDAUTH = GPG_ERR_SYSTEM_ERROR | 71,+    GPG_ERR_ENETDOWN = GPG_ERR_SYSTEM_ERROR | 72,+    GPG_ERR_ENETRESET = GPG_ERR_SYSTEM_ERROR | 73,+    GPG_ERR_ENETUNREACH = GPG_ERR_SYSTEM_ERROR | 74,+    GPG_ERR_ENFILE = GPG_ERR_SYSTEM_ERROR | 75,+    GPG_ERR_ENOANO = GPG_ERR_SYSTEM_ERROR | 76,+    GPG_ERR_ENOBUFS = GPG_ERR_SYSTEM_ERROR | 77,+    GPG_ERR_ENOCSI = GPG_ERR_SYSTEM_ERROR | 78,+    GPG_ERR_ENODATA = GPG_ERR_SYSTEM_ERROR | 79,+    GPG_ERR_ENODEV = GPG_ERR_SYSTEM_ERROR | 80,+    GPG_ERR_ENOENT = GPG_ERR_SYSTEM_ERROR | 81,+    GPG_ERR_ENOEXEC = GPG_ERR_SYSTEM_ERROR | 82,+    GPG_ERR_ENOLCK = GPG_ERR_SYSTEM_ERROR | 83,+    GPG_ERR_ENOLINK = GPG_ERR_SYSTEM_ERROR | 84,+    GPG_ERR_ENOMEDIUM = GPG_ERR_SYSTEM_ERROR | 85,+    GPG_ERR_ENOMEM = GPG_ERR_SYSTEM_ERROR | 86,+    GPG_ERR_ENOMSG = GPG_ERR_SYSTEM_ERROR | 87,+    GPG_ERR_ENONET = GPG_ERR_SYSTEM_ERROR | 88,+    GPG_ERR_ENOPKG = GPG_ERR_SYSTEM_ERROR | 89,+    GPG_ERR_ENOPROTOOPT = GPG_ERR_SYSTEM_ERROR | 90,+    GPG_ERR_ENOSPC = GPG_ERR_SYSTEM_ERROR | 91,+    GPG_ERR_ENOSR = GPG_ERR_SYSTEM_ERROR | 92,+    GPG_ERR_ENOSTR = GPG_ERR_SYSTEM_ERROR | 93,+    GPG_ERR_ENOSYS = GPG_ERR_SYSTEM_ERROR | 94,+    GPG_ERR_ENOTBLK = GPG_ERR_SYSTEM_ERROR | 95,+    GPG_ERR_ENOTCONN = GPG_ERR_SYSTEM_ERROR | 96,+    GPG_ERR_ENOTDIR = GPG_ERR_SYSTEM_ERROR | 97,+    GPG_ERR_ENOTEMPTY = GPG_ERR_SYSTEM_ERROR | 98,+    GPG_ERR_ENOTNAM = GPG_ERR_SYSTEM_ERROR | 99,+    GPG_ERR_ENOTSOCK = GPG_ERR_SYSTEM_ERROR | 100,+    GPG_ERR_ENOTSUP = GPG_ERR_SYSTEM_ERROR | 101,+    GPG_ERR_ENOTTY = GPG_ERR_SYSTEM_ERROR | 102,+    GPG_ERR_ENOTUNIQ = GPG_ERR_SYSTEM_ERROR | 103,+    GPG_ERR_ENXIO = GPG_ERR_SYSTEM_ERROR | 104,+    GPG_ERR_EOPNOTSUPP = GPG_ERR_SYSTEM_ERROR | 105,+    GPG_ERR_EOVERFLOW = GPG_ERR_SYSTEM_ERROR | 106,+    GPG_ERR_EPERM = GPG_ERR_SYSTEM_ERROR | 107,+    GPG_ERR_EPFNOSUPPORT = GPG_ERR_SYSTEM_ERROR | 108,+    GPG_ERR_EPIPE = GPG_ERR_SYSTEM_ERROR | 109,+    GPG_ERR_EPROCLIM = GPG_ERR_SYSTEM_ERROR | 110,+    GPG_ERR_EPROCUNAVAIL = GPG_ERR_SYSTEM_ERROR | 111,+    GPG_ERR_EPROGMISMATCH = GPG_ERR_SYSTEM_ERROR | 112,+    GPG_ERR_EPROGUNAVAIL = GPG_ERR_SYSTEM_ERROR | 113,+    GPG_ERR_EPROTO = GPG_ERR_SYSTEM_ERROR | 114,+    GPG_ERR_EPROTONOSUPPORT = GPG_ERR_SYSTEM_ERROR | 115,+    GPG_ERR_EPROTOTYPE = GPG_ERR_SYSTEM_ERROR | 116,+    GPG_ERR_ERANGE = GPG_ERR_SYSTEM_ERROR | 117,+    GPG_ERR_EREMCHG = GPG_ERR_SYSTEM_ERROR | 118,+    GPG_ERR_EREMOTE = GPG_ERR_SYSTEM_ERROR | 119,+    GPG_ERR_EREMOTEIO = GPG_ERR_SYSTEM_ERROR | 120,+    GPG_ERR_ERESTART = GPG_ERR_SYSTEM_ERROR | 121,+    GPG_ERR_EROFS = GPG_ERR_SYSTEM_ERROR | 122,+    GPG_ERR_ERPCMISMATCH = GPG_ERR_SYSTEM_ERROR | 123,+    GPG_ERR_ESHUTDOWN = GPG_ERR_SYSTEM_ERROR | 124,+    GPG_ERR_ESOCKTNOSUPPORT = GPG_ERR_SYSTEM_ERROR | 125,+    GPG_ERR_ESPIPE = GPG_ERR_SYSTEM_ERROR | 126,+    GPG_ERR_ESRCH = GPG_ERR_SYSTEM_ERROR | 127,+    GPG_ERR_ESRMNT = GPG_ERR_SYSTEM_ERROR | 128,+    GPG_ERR_ESTALE = GPG_ERR_SYSTEM_ERROR | 129,+    GPG_ERR_ESTRPIPE = GPG_ERR_SYSTEM_ERROR | 130,+    GPG_ERR_ETIME = GPG_ERR_SYSTEM_ERROR | 131,+    GPG_ERR_ETIMEDOUT = GPG_ERR_SYSTEM_ERROR | 132,+    GPG_ERR_ETOOMANYREFS = GPG_ERR_SYSTEM_ERROR | 133,+    GPG_ERR_ETXTBSY = GPG_ERR_SYSTEM_ERROR | 134,+    GPG_ERR_EUCLEAN = GPG_ERR_SYSTEM_ERROR | 135,+    GPG_ERR_EUNATCH = GPG_ERR_SYSTEM_ERROR | 136,+    GPG_ERR_EUSERS = GPG_ERR_SYSTEM_ERROR | 137,+    GPG_ERR_EWOULDBLOCK = GPG_ERR_SYSTEM_ERROR | 138,+    GPG_ERR_EXDEV = GPG_ERR_SYSTEM_ERROR | 139,+    GPG_ERR_EXFULL = GPG_ERR_SYSTEM_ERROR | 140,++    /* This is one more than the largest allowed entry.  */+    GPG_ERR_CODE_DIM = 65536+  } gpg_err_code_t;+++/* The error value type gpg_error_t.  */++/* We would really like to use bit-fields in a struct, but using+   structs as return values can cause binary compatibility issues, in+   particular if you want to do it effeciently (also see+   -freg-struct-return option to GCC).  */+typedef unsigned int gpg_error_t;++/* We use the lowest 16 bits of gpg_error_t for error codes.  The 16th+   bit indicates system errors.  */+#define GPG_ERR_CODE_MASK	(GPG_ERR_CODE_DIM - 1)++/* Bits 17 to 24 are reserved.  */++/* We use the upper 8 bits of gpg_error_t for error sources.  */+#define GPG_ERR_SOURCE_MASK	(GPG_ERR_SOURCE_DIM - 1)+#define GPG_ERR_SOURCE_SHIFT	24+++/* GCC feature test.  */+#undef _GPG_ERR_HAVE_CONSTRUCTOR+#if __GNUC__+#define _GPG_ERR_GCC_VERSION (__GNUC__ * 10000 \+                            + __GNUC_MINOR__ * 100 \+                            + __GNUC_PATCHLEVEL__)++#if _GPG_ERR_GCC_VERSION > 30100+#define _GPG_ERR_CONSTRUCTOR	__attribute__ ((__constructor__))+#define _GPG_ERR_HAVE_CONSTRUCTOR+#endif+#endif++#ifndef _GPG_ERR_CONSTRUCTOR+#define _GPG_ERR_CONSTRUCTOR+#endif+++/* Initialization function.  */++/* Initialize the library.  This function should be run early.  */+gpg_error_t gpg_err_init (void) _GPG_ERR_CONSTRUCTOR;++/* If this is defined, the library is already initialized by the+   constructor and does not need to be initialized explicitely.  */+#undef GPG_ERR_INITIALIZED+#ifdef _GPG_ERR_HAVE_CONSTRUCTOR+#define GPG_ERR_INITIALIZED	1+#endif+++/* Constructor and accessor functions.  */++/* Construct an error value from an error code and source.  Within a+   subsystem, use gpg_error.  */+static GPG_ERR_INLINE gpg_error_t+gpg_err_make (gpg_err_source_t source, gpg_err_code_t code)+{+  return code == GPG_ERR_NO_ERROR ? GPG_ERR_NO_ERROR+    : (((source & GPG_ERR_SOURCE_MASK) << GPG_ERR_SOURCE_SHIFT)+       | (code & GPG_ERR_CODE_MASK));+}+++/* The user should define GPG_ERR_SOURCE_DEFAULT before including this+   file to specify a default source for gpg_error.  */+#ifndef GPG_ERR_SOURCE_DEFAULT+#define GPG_ERR_SOURCE_DEFAULT	GPG_ERR_SOURCE_UNKNOWN+#endif++static GPG_ERR_INLINE gpg_error_t+gpg_error (gpg_err_code_t code)+{+  return gpg_err_make (GPG_ERR_SOURCE_DEFAULT, code);+}+++/* Retrieve the error code from an error value.  */+static GPG_ERR_INLINE gpg_err_code_t+gpg_err_code (gpg_error_t err)+{+  return (gpg_err_code_t) (err & GPG_ERR_CODE_MASK);+}+++/* Retrieve the error source from an error value.  */+static GPG_ERR_INLINE gpg_err_source_t+gpg_err_source (gpg_error_t err)+{+  return (gpg_err_source_t) ((err >> GPG_ERR_SOURCE_SHIFT)+			     & GPG_ERR_SOURCE_MASK);+}+++/* String functions.  */++/* Return a pointer to a string containing a description of the error+   code in the error value ERR.  This function is not thread-safe.  */+const char *gpg_strerror (gpg_error_t err);++/* Return the error string for ERR in the user-supplied buffer BUF of+   size BUFLEN.  This function is, in contrast to gpg_strerror,+   thread-safe if a thread-safe strerror_r() function is provided by+   the system.  If the function succeeds, 0 is returned and BUF+   contains the string describing the error.  If the buffer was not+   large enough, ERANGE is returned and BUF contains as much of the+   beginning of the error string as fits into the buffer.  */+int gpg_strerror_r (gpg_error_t err, char *buf, size_t buflen);++/* Return a pointer to a string containing a description of the error+   source in the error value ERR.  */+const char *gpg_strsource (gpg_error_t err);+++/* Mapping of system errors (errno).  */++/* Retrieve the error code for the system error ERR.  This returns+   GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped (report+   this). */+gpg_err_code_t gpg_err_code_from_errno (int err);+++/* Retrieve the system error for the error code CODE.  This returns 0+   if CODE is not a system error code.  */+int gpg_err_code_to_errno (gpg_err_code_t code);+++/* Retrieve the error code directly from the ERRNO variable.  This+   returns GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped+   (report this) and GPG_ERR_MISSING_ERRNO if ERRNO has the value 0. */+gpg_err_code_t gpg_err_code_from_syserror (void);+++++/* Self-documenting convenience functions.  */++static GPG_ERR_INLINE gpg_error_t+gpg_err_make_from_errno (gpg_err_source_t source, int err)+{+  return gpg_err_make (source, gpg_err_code_from_errno (err));+}+++static GPG_ERR_INLINE gpg_error_t+gpg_error_from_errno (int err)+{+  return gpg_error (gpg_err_code_from_errno (err));+}++static GPG_ERR_INLINE gpg_error_t+gpg_error_from_syserror (void)+{+  return gpg_error (gpg_err_code_from_syserror ());+}++#ifdef __cplusplus+}+#endif+++#endif	/* GPG_ERROR_H */
+ include/gpgme.h view
@@ -0,0 +1,1893 @@+/* gpgme.h - Public interface to GnuPG Made Easy.                   -*- c -*-+   Copyright (C) 2000 Werner Koch (dd9jn)+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007 g10 Code GmbH++   This file is part of GPGME.+ +   GPGME is free software; you can redistribute it and/or modify it+   under the terms of the GNU Lesser General Public License as+   published by the Free Software Foundation; either version 2.1 of+   the License, or (at your option) any later version.+   +   GPGME is distributed in the hope that it will be useful, but+   WITHOUT ANY WARRANTY; without even the implied warranty of+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU+   Lesser General Public License for more details.+   +   You should have received a copy of the GNU Lesser General Public+   License along with this program; if not, see <http://www.gnu.org/licenses/>.+ +   File: src/gpgme.h.  Generated from gpgme.h.in by configure.  */++#ifndef GPGME_H+#define GPGME_H++#ifdef __GNUC__+#define _GPGME_INLINE __inline__+#elif __STDC_VERSION__ >= 199901L+#define _GPGME_INLINE inline+#else+#define _GPGME_INLINE+#endif++/* Include stdio.h for the FILE type definition.  */+#include <stdio.h>++#ifdef _MSC_VER+  typedef long off_t;+  typedef long ssize_t;+#else+# include <sys/types.h>+#endif++#include <gpg-error.h>++#ifdef __cplusplus+extern "C" {+#if 0 /* just to make Emacs auto-indent happy */+}+#endif+#endif /* __cplusplus */++++/* Check for compiler features.  */+#if __GNUC__+#define _GPGME_GCC_VERSION (__GNUC__ * 10000 \+                            + __GNUC_MINOR__ * 100 \+                            + __GNUC_PATCHLEVEL__)++#if _GPGME_GCC_VERSION > 30100+#define _GPGME_DEPRECATED	__attribute__ ((__deprecated__))+#endif+#endif++#ifndef _GPGME_DEPRECATED+#define _GPGME_DEPRECATED+#endif+++/* The version of this header should match the one of the library.  Do+   not use this symbol in your application, use gpgme_check_version+   instead.  The purpose of this macro is to let autoconf (using the+   AM_PATH_GPGME macro) check that this header matches the installed+   library.  */+#define GPGME_VERSION "1.1.8"++++/* Some opaque data types used by GPGME.  */++/* The context holds some global state and configration options, as+   well as the results of a crypto operation.  */+struct gpgme_context;+typedef struct gpgme_context *gpgme_ctx_t;++/* The data object is used by GPGME to exchange arbitrary data.  */+struct gpgme_data;+typedef struct gpgme_data *gpgme_data_t;+++/* Wrappers for the libgpg-error library.  */++typedef gpg_error_t gpgme_error_t;+typedef gpg_err_code_t gpgme_err_code_t;+typedef gpg_err_source_t gpgme_err_source_t;+++static _GPGME_INLINE gpgme_error_t+gpgme_err_make (gpgme_err_source_t source, gpgme_err_code_t code)+{+  return gpg_err_make (source, code);+}+++/* The user can define GPGME_ERR_SOURCE_DEFAULT before including this+   file to specify a default source for gpgme_error.  */+#ifndef GPGME_ERR_SOURCE_DEFAULT+#define GPGME_ERR_SOURCE_DEFAULT  GPG_ERR_SOURCE_USER_1+#endif++static _GPGME_INLINE gpgme_error_t+gpgme_error (gpgme_err_code_t code)+{+  return gpgme_err_make (GPGME_ERR_SOURCE_DEFAULT, code);+}+++static _GPGME_INLINE gpgme_err_code_t+gpgme_err_code (gpgme_error_t err)+{+  return gpg_err_code (err);+}+++static _GPGME_INLINE gpgme_err_source_t+gpgme_err_source (gpgme_error_t err)+{+  return gpg_err_source (err);+}+++/* Return a pointer to a string containing a description of the error+   code in the error value ERR.  This function is not thread safe.  */+const char *gpgme_strerror (gpgme_error_t err);++/* Return the error string for ERR in the user-supplied buffer BUF of+   size BUFLEN.  This function is, in contrast to gpg_strerror,+   thread-safe if a thread-safe strerror_r() function is provided by+   the system.  If the function succeeds, 0 is returned and BUF+   contains the string describing the error.  If the buffer was not+   large enough, ERANGE is returned and BUF contains as much of the+   beginning of the error string as fits into the buffer.  */+int gpgme_strerror_r (gpg_error_t err, char *buf, size_t buflen);+++/* Return a pointer to a string containing a description of the error+   source in the error value ERR.  */+const char *gpgme_strsource (gpgme_error_t err);+++/* Retrieve the error code for the system error ERR.  This returns+   GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped (report+   this).  */+gpgme_err_code_t gpgme_err_code_from_errno (int err);+++/* Retrieve the system error for the error code CODE.  This returns 0+   if CODE is not a system error code.  */+int gpgme_err_code_to_errno (gpgme_err_code_t code);++  +/* Return an error value with the error source SOURCE and the system+   error ERR.  */+gpgme_error_t gpgme_err_make_from_errno (gpgme_err_source_t source, int err);+++/* Return an error value with the system error ERR.  */+gpgme_err_code_t gpgme_error_from_errno (int err);+++/* The possible encoding mode of gpgme_data_t objects.  */+typedef enum+  {+    GPGME_DATA_ENCODING_NONE   = 0,	/* Not specified.  */+    GPGME_DATA_ENCODING_BINARY = 1,+    GPGME_DATA_ENCODING_BASE64 = 2,+    GPGME_DATA_ENCODING_ARMOR  = 3	/* Either PEM or OpenPGP Armor.  */+  }+gpgme_data_encoding_t;+++/* Public key algorithms from libgcrypt.  */+typedef enum+  {+    GPGME_PK_RSA   = 1,+    GPGME_PK_RSA_E = 2,+    GPGME_PK_RSA_S = 3,+    GPGME_PK_ELG_E = 16,+    GPGME_PK_DSA   = 17,+    GPGME_PK_ELG   = 20+  }+gpgme_pubkey_algo_t;+++/* Hash algorithms from libgcrypt.  */+typedef enum+  {+    GPGME_MD_NONE          = 0,  +    GPGME_MD_MD5           = 1,+    GPGME_MD_SHA1          = 2,+    GPGME_MD_RMD160        = 3,+    GPGME_MD_MD2           = 5,+    GPGME_MD_TIGER         = 6,   /* TIGER/192. */+    GPGME_MD_HAVAL         = 7,   /* HAVAL, 5 pass, 160 bit. */+    GPGME_MD_SHA256        = 8,+    GPGME_MD_SHA384        = 9,+    GPGME_MD_SHA512        = 10,+    GPGME_MD_MD4           = 301,+    GPGME_MD_CRC32	   = 302,+    GPGME_MD_CRC32_RFC1510 = 303,+    GPGME_MD_CRC24_RFC2440 = 304+  }+gpgme_hash_algo_t;+++/* The possible signature stati.  Deprecated, use error value in sig+   status.  */+typedef enum+  {+    GPGME_SIG_STAT_NONE  = 0,+    GPGME_SIG_STAT_GOOD  = 1,+    GPGME_SIG_STAT_BAD   = 2,+    GPGME_SIG_STAT_NOKEY = 3,+    GPGME_SIG_STAT_NOSIG = 4,+    GPGME_SIG_STAT_ERROR = 5,+    GPGME_SIG_STAT_DIFF  = 6,+    GPGME_SIG_STAT_GOOD_EXP = 7,+    GPGME_SIG_STAT_GOOD_EXPKEY = 8+  }+_gpgme_sig_stat_t;+typedef _gpgme_sig_stat_t gpgme_sig_stat_t _GPGME_DEPRECATED;+++/* The available signature modes.  */+typedef enum+  {+    GPGME_SIG_MODE_NORMAL = 0,+    GPGME_SIG_MODE_DETACH = 1,+    GPGME_SIG_MODE_CLEAR  = 2+  }+gpgme_sig_mode_t;+++/* The available key and signature attributes.  Deprecated, use the+   individual result structures instead.  */+typedef enum+  {+    GPGME_ATTR_KEYID        = 1,+    GPGME_ATTR_FPR          = 2,+    GPGME_ATTR_ALGO         = 3,+    GPGME_ATTR_LEN          = 4,+    GPGME_ATTR_CREATED      = 5,+    GPGME_ATTR_EXPIRE       = 6,+    GPGME_ATTR_OTRUST       = 7,+    GPGME_ATTR_USERID       = 8,+    GPGME_ATTR_NAME         = 9,+    GPGME_ATTR_EMAIL        = 10,+    GPGME_ATTR_COMMENT      = 11,+    GPGME_ATTR_VALIDITY     = 12,+    GPGME_ATTR_LEVEL        = 13,+    GPGME_ATTR_TYPE         = 14,+    GPGME_ATTR_IS_SECRET    = 15,+    GPGME_ATTR_KEY_REVOKED  = 16,+    GPGME_ATTR_KEY_INVALID  = 17,+    GPGME_ATTR_UID_REVOKED  = 18,+    GPGME_ATTR_UID_INVALID  = 19,+    GPGME_ATTR_KEY_CAPS     = 20,+    GPGME_ATTR_CAN_ENCRYPT  = 21,+    GPGME_ATTR_CAN_SIGN     = 22,+    GPGME_ATTR_CAN_CERTIFY  = 23,+    GPGME_ATTR_KEY_EXPIRED  = 24,+    GPGME_ATTR_KEY_DISABLED = 25,+    GPGME_ATTR_SERIAL       = 26,+    GPGME_ATTR_ISSUER       = 27,+    GPGME_ATTR_CHAINID      = 28,+    GPGME_ATTR_SIG_STATUS   = 29,+    GPGME_ATTR_ERRTOK       = 30,+    GPGME_ATTR_SIG_SUMMARY  = 31,+    GPGME_ATTR_SIG_CLASS    = 32+  }+_gpgme_attr_t;+typedef _gpgme_attr_t gpgme_attr_t _GPGME_DEPRECATED;+++/* The available validities for a trust item or key.  */+typedef enum+  {+    GPGME_VALIDITY_UNKNOWN   = 0,+    GPGME_VALIDITY_UNDEFINED = 1,+    GPGME_VALIDITY_NEVER     = 2,+    GPGME_VALIDITY_MARGINAL  = 3,+    GPGME_VALIDITY_FULL      = 4,+    GPGME_VALIDITY_ULTIMATE  = 5+  }+gpgme_validity_t;+++/* The available protocols.  */+typedef enum+  {+    GPGME_PROTOCOL_OpenPGP = 0,  /* The default mode.  */+    GPGME_PROTOCOL_CMS     = 1,+    GPGME_PROTOCOL_GPGCONF = 2,  /* Special code for gpgconf.  */+    GPGME_PROTOCOL_UNKNOWN = 255+  }+gpgme_protocol_t;+++/* The available keylist mode flags.  */+#define GPGME_KEYLIST_MODE_LOCAL		1+#define GPGME_KEYLIST_MODE_EXTERN		2+#define GPGME_KEYLIST_MODE_SIGS			4+#define GPGME_KEYLIST_MODE_SIG_NOTATIONS	8+#define GPGME_KEYLIST_MODE_VALIDATE		256++typedef unsigned int gpgme_keylist_mode_t;+++/* Flags for the audit log functions.  */+#define GPGME_AUDITLOG_HTML      1 +#define GPGME_AUDITLOG_WITH_HELP 128+++/* Signature notations.  */++/* The available signature notation flags.  */+#define GPGME_SIG_NOTATION_HUMAN_READABLE	1+#define GPGME_SIG_NOTATION_CRITICAL		2++typedef unsigned int gpgme_sig_notation_flags_t;++struct _gpgme_sig_notation+{+  struct _gpgme_sig_notation *next;++  /* If NAME is a null pointer, then VALUE contains a policy URL+     rather than a notation.  */+  char *name;++  /* The value of the notation data.  */+  char *value;++  /* The length of the name of the notation data.  */+  int name_len;++  /* The length of the value of the notation data.  */+  int value_len;++  /* The accumulated flags.  */+  gpgme_sig_notation_flags_t flags;++  /* Notation data is human-readable.  */+  unsigned int human_readable : 1;++  /* Notation data is critical.  */+  unsigned int critical : 1;++  /* Internal to GPGME, do not use.  */+  int _unused : 30;+};+typedef struct _gpgme_sig_notation *gpgme_sig_notation_t;+++/* The possible stati for the edit operation.  */+typedef enum+  {+    GPGME_STATUS_EOF,+    /* mkstatus processing starts here */+    GPGME_STATUS_ENTER,+    GPGME_STATUS_LEAVE,+    GPGME_STATUS_ABORT,++    GPGME_STATUS_GOODSIG,+    GPGME_STATUS_BADSIG,+    GPGME_STATUS_ERRSIG,++    GPGME_STATUS_BADARMOR,++    GPGME_STATUS_RSA_OR_IDEA,+    GPGME_STATUS_KEYEXPIRED,+    GPGME_STATUS_KEYREVOKED,++    GPGME_STATUS_TRUST_UNDEFINED,+    GPGME_STATUS_TRUST_NEVER,+    GPGME_STATUS_TRUST_MARGINAL,+    GPGME_STATUS_TRUST_FULLY,+    GPGME_STATUS_TRUST_ULTIMATE,++    GPGME_STATUS_SHM_INFO,+    GPGME_STATUS_SHM_GET,+    GPGME_STATUS_SHM_GET_BOOL,+    GPGME_STATUS_SHM_GET_HIDDEN,++    GPGME_STATUS_NEED_PASSPHRASE,+    GPGME_STATUS_VALIDSIG,+    GPGME_STATUS_SIG_ID,+    GPGME_STATUS_ENC_TO,+    GPGME_STATUS_NODATA,+    GPGME_STATUS_BAD_PASSPHRASE,+    GPGME_STATUS_NO_PUBKEY,+    GPGME_STATUS_NO_SECKEY,+    GPGME_STATUS_NEED_PASSPHRASE_SYM,+    GPGME_STATUS_DECRYPTION_FAILED,+    GPGME_STATUS_DECRYPTION_OKAY,+    GPGME_STATUS_MISSING_PASSPHRASE,+    GPGME_STATUS_GOOD_PASSPHRASE,+    GPGME_STATUS_GOODMDC,+    GPGME_STATUS_BADMDC,+    GPGME_STATUS_ERRMDC,+    GPGME_STATUS_IMPORTED,+    GPGME_STATUS_IMPORT_OK,+    GPGME_STATUS_IMPORT_PROBLEM,+    GPGME_STATUS_IMPORT_RES,+    GPGME_STATUS_FILE_START,+    GPGME_STATUS_FILE_DONE,+    GPGME_STATUS_FILE_ERROR,++    GPGME_STATUS_BEGIN_DECRYPTION,+    GPGME_STATUS_END_DECRYPTION,+    GPGME_STATUS_BEGIN_ENCRYPTION,+    GPGME_STATUS_END_ENCRYPTION,++    GPGME_STATUS_DELETE_PROBLEM,+    GPGME_STATUS_GET_BOOL,+    GPGME_STATUS_GET_LINE,+    GPGME_STATUS_GET_HIDDEN,+    GPGME_STATUS_GOT_IT,+    GPGME_STATUS_PROGRESS,+    GPGME_STATUS_SIG_CREATED,+    GPGME_STATUS_SESSION_KEY,+    GPGME_STATUS_NOTATION_NAME,+    GPGME_STATUS_NOTATION_DATA,+    GPGME_STATUS_POLICY_URL,+    GPGME_STATUS_BEGIN_STREAM,+    GPGME_STATUS_END_STREAM,+    GPGME_STATUS_KEY_CREATED,+    GPGME_STATUS_USERID_HINT,+    GPGME_STATUS_UNEXPECTED,+    GPGME_STATUS_INV_RECP,+    GPGME_STATUS_NO_RECP,+    GPGME_STATUS_ALREADY_SIGNED,+    GPGME_STATUS_SIGEXPIRED,+    GPGME_STATUS_EXPSIG,+    GPGME_STATUS_EXPKEYSIG,+    GPGME_STATUS_TRUNCATED,+    GPGME_STATUS_ERROR,+    GPGME_STATUS_NEWSIG,+    GPGME_STATUS_REVKEYSIG,+    GPGME_STATUS_SIG_SUBPACKET,+    GPGME_STATUS_NEED_PASSPHRASE_PIN,+    GPGME_STATUS_SC_OP_FAILURE,+    GPGME_STATUS_SC_OP_SUCCESS,+    GPGME_STATUS_CARDCTRL,+    GPGME_STATUS_BACKUP_KEY_CREATED,+    GPGME_STATUS_PKA_TRUST_BAD,+    GPGME_STATUS_PKA_TRUST_GOOD,++    GPGME_STATUS_PLAINTEXT+  }+gpgme_status_code_t;+++/* The engine information structure.  */+struct _gpgme_engine_info+{+  struct _gpgme_engine_info *next;++  /* The protocol ID.  */+  gpgme_protocol_t protocol;++  /* The file name of the engine binary.  */+  char *file_name;+  +  /* The version string of the installed engine.  */+  char *version;++  /* The minimum version required for GPGME.  */+  const char *req_version;++  /* The home directory used, or NULL if default.  */+  char *home_dir;+};+typedef struct _gpgme_engine_info *gpgme_engine_info_t;+++/* A subkey from a key.  */+struct _gpgme_subkey+{+  struct _gpgme_subkey *next;++  /* True if subkey is revoked.  */+  unsigned int revoked : 1;++  /* True if subkey is expired.  */+  unsigned int expired : 1;++  /* True if subkey is disabled.  */+  unsigned int disabled : 1;++  /* True if subkey is invalid.  */+  unsigned int invalid : 1;++  /* True if subkey can be used for encryption.  */+  unsigned int can_encrypt : 1;++  /* True if subkey can be used for signing.  */+  unsigned int can_sign : 1;++  /* True if subkey can be used for certification.  */+  unsigned int can_certify : 1;++  /* True if subkey is secret.  */+  unsigned int secret : 1;++  /* True if subkey can be used for authentication.  */+  unsigned int can_authenticate : 1;++  /* True if subkey is qualified for signatures according to German law.  */+  unsigned int is_qualified : 1;++  /* Internal to GPGME, do not use.  */+  unsigned int _unused : 22;+  +  /* Public key algorithm supported by this subkey.  */+  gpgme_pubkey_algo_t pubkey_algo;++  /* Length of the subkey.  */+  unsigned int length;++  /* The key ID of the subkey.  */+  char *keyid;++  /* Internal to GPGME, do not use.  */+  char _keyid[16 + 1];++  /* The fingerprint of the subkey in hex digit form.  */+  char *fpr;++  /* The creation timestamp, -1 if invalid, 0 if not available.  */+  long int timestamp;++  /* The expiration timestamp, 0 if the subkey does not expire.  */+  long int expires;+};+typedef struct _gpgme_subkey *gpgme_subkey_t;+++/* A signature on a user ID.  */+struct _gpgme_key_sig+{+  struct _gpgme_key_sig *next;++  /* True if the signature is a revocation signature.  */+  unsigned int revoked : 1;++  /* True if the signature is expired.  */+  unsigned int expired : 1;++  /* True if the signature is invalid.  */+  unsigned int invalid : 1;++  /* True if the signature should be exported.  */+  unsigned int exportable : 1;++  /* Internal to GPGME, do not use.  */+  unsigned int _unused : 28;++  /* The public key algorithm used to create the signature.  */+  gpgme_pubkey_algo_t pubkey_algo;++  /* The key ID of key used to create the signature.  */+  char *keyid;++  /* Internal to GPGME, do not use.  */+  char _keyid[16 + 1];++  /* The creation timestamp, -1 if invalid, 0 if not available.  */+  long int timestamp;++  /* The expiration timestamp, 0 if the subkey does not expire.  */+  long int expires;++  /* Same as in gpgme_signature_t.  */+  gpgme_error_t status;++#ifdef __cplusplus+  unsigned int _obsolete_class _GPGME_DEPRECATED;+#else+  /* Must be set to SIG_CLASS below.  */+  unsigned int class _GPGME_DEPRECATED;+#endif++  /* The user ID string.  */+  char *uid;++  /* The name part of the user ID.  */+  char *name;++  /* The email part of the user ID.  */+  char *email;++  /* The comment part of the user ID.  */+  char *comment;++  /* Crypto backend specific signature class.  */+  unsigned int sig_class;++  /* Notation data and policy URLs.  */+  gpgme_sig_notation_t notations;++  /* Internal to GPGME, do not use.  */+  gpgme_sig_notation_t _last_notation;+};+typedef struct _gpgme_key_sig *gpgme_key_sig_t;+++/* An user ID from a key.  */+struct _gpgme_user_id+{+  struct _gpgme_user_id *next;++  /* True if the user ID is revoked.  */+  unsigned int revoked : 1;++  /* True if the user ID is invalid.  */+  unsigned int invalid : 1;++  /* Internal to GPGME, do not use.  */+  unsigned int _unused : 30;++  /* The validity of the user ID.  */+  gpgme_validity_t validity; ++  /* The user ID string.  */+  char *uid;++  /* The name part of the user ID.  */+  char *name;++  /* The email part of the user ID.  */+  char *email;++  /* The comment part of the user ID.  */+  char *comment;++  /* The signatures of the user ID.  */+  gpgme_key_sig_t signatures;++  /* Internal to GPGME, do not use.  */+  gpgme_key_sig_t _last_keysig;+};+typedef struct _gpgme_user_id *gpgme_user_id_t;+++/* A key from the keyring.  */+struct _gpgme_key+{+  /* Internal to GPGME, do not use.  */+  unsigned int _refs;++  /* True if key is revoked.  */+  unsigned int revoked : 1;++  /* True if key is expired.  */+  unsigned int expired : 1;++  /* True if key is disabled.  */+  unsigned int disabled : 1;++  /* True if key is invalid.  */+  unsigned int invalid : 1;++  /* True if key can be used for encryption.  */+  unsigned int can_encrypt : 1;++  /* True if key can be used for signing.  */+  unsigned int can_sign : 1;++  /* True if key can be used for certification.  */+  unsigned int can_certify : 1;++  /* True if key is secret.  */+  unsigned int secret : 1;++  /* True if key can be used for authentication.  */+  unsigned int can_authenticate : 1;++  /* True if subkey is qualified for signatures according to German law.  */+  unsigned int is_qualified : 1;++  /* Internal to GPGME, do not use.  */+  unsigned int _unused : 22;++  /* This is the protocol supported by this key.  */+  gpgme_protocol_t protocol;++  /* If protocol is GPGME_PROTOCOL_CMS, this string contains the+     issuer serial.  */+  char *issuer_serial;++  /* If protocol is GPGME_PROTOCOL_CMS, this string contains the+     issuer name.  */+  char *issuer_name;++  /* If protocol is GPGME_PROTOCOL_CMS, this string contains the chain+     ID.  */+  char *chain_id;++  /* If protocol is GPGME_PROTOCOL_OpenPGP, this field contains the+     owner trust.  */+  gpgme_validity_t owner_trust;++  /* The subkeys of the key.  */+  gpgme_subkey_t subkeys;++  /* The user IDs of the key.  */+  gpgme_user_id_t uids;++  /* Internal to GPGME, do not use.  */+  gpgme_subkey_t _last_subkey;++  /* Internal to GPGME, do not use.  */+  gpgme_user_id_t _last_uid;++  /* The keylist mode that was active when listing the key.  */+  gpgme_keylist_mode_t keylist_mode;+};+typedef struct _gpgme_key *gpgme_key_t;++++/* Types for callback functions.  */++/* Request a passphrase from the user.  */+typedef gpgme_error_t (*gpgme_passphrase_cb_t) (void *hook,+						const char *uid_hint,+						const char *passphrase_info,+						int prev_was_bad, int fd);++/* Inform the user about progress made.  */+typedef void (*gpgme_progress_cb_t) (void *opaque, const char *what,+				     int type, int current, int total);++/* Interact with the user about an edit operation.  */+typedef gpgme_error_t (*gpgme_edit_cb_t) (void *opaque,+					  gpgme_status_code_t status,+					  const char *args, int fd);+++/* Context management functions.  */++/* Create a new context and return it in CTX.  */+gpgme_error_t gpgme_new (gpgme_ctx_t *ctx);++/* Release the context CTX.  */+void gpgme_release (gpgme_ctx_t ctx);++/* Set the protocol to be used by CTX to PROTO.  */+gpgme_error_t gpgme_set_protocol (gpgme_ctx_t ctx, gpgme_protocol_t proto);++/* Get the protocol used with CTX */+gpgme_protocol_t gpgme_get_protocol (gpgme_ctx_t ctx);++/* Get the string describing protocol PROTO, or NULL if invalid.  */+const char *gpgme_get_protocol_name (gpgme_protocol_t proto);++/* If YES is non-zero, enable armor mode in CTX, disable it otherwise.  */+void gpgme_set_armor (gpgme_ctx_t ctx, int yes);++/* Return non-zero if armor mode is set in CTX.  */+int gpgme_get_armor (gpgme_ctx_t ctx);++/* If YES is non-zero, enable text mode in CTX, disable it otherwise.  */+void gpgme_set_textmode (gpgme_ctx_t ctx, int yes);++/* Return non-zero if text mode is set in CTX.  */+int gpgme_get_textmode (gpgme_ctx_t ctx);++/* Use whatever the default of the backend crypto engine is.  */+#define GPGME_INCLUDE_CERTS_DEFAULT	-256++/* Include up to NR_OF_CERTS certificates in an S/MIME message.  */+void gpgme_set_include_certs (gpgme_ctx_t ctx, int nr_of_certs);++/* Return the number of certs to include in an S/MIME message.  */+int gpgme_get_include_certs (gpgme_ctx_t ctx);++/* Set keylist mode in CTX to MODE.  */+gpgme_error_t gpgme_set_keylist_mode (gpgme_ctx_t ctx,+				      gpgme_keylist_mode_t mode);++/* Get keylist mode in CTX.  */+gpgme_keylist_mode_t gpgme_get_keylist_mode (gpgme_ctx_t ctx);++/* Set the passphrase callback function in CTX to CB.  HOOK_VALUE is+   passed as first argument to the passphrase callback function.  */+void gpgme_set_passphrase_cb (gpgme_ctx_t ctx,+                              gpgme_passphrase_cb_t cb, void *hook_value);++/* Get the current passphrase callback function in *CB and the current+   hook value in *HOOK_VALUE.  */+void gpgme_get_passphrase_cb (gpgme_ctx_t ctx, gpgme_passphrase_cb_t *cb,+			      void **hook_value);++/* Set the progress callback function in CTX to CB.  HOOK_VALUE is+   passed as first argument to the progress callback function.  */+void gpgme_set_progress_cb (gpgme_ctx_t c, gpgme_progress_cb_t cb,+			    void *hook_value);++/* Get the current progress callback function in *CB and the current+   hook value in *HOOK_VALUE.  */+void gpgme_get_progress_cb (gpgme_ctx_t ctx, gpgme_progress_cb_t *cb,+			    void **hook_value);++/* This function sets the locale for the context CTX, or the default+   locale if CTX is a null pointer.  */+gpgme_error_t gpgme_set_locale (gpgme_ctx_t ctx, int category,+				const char *value);++/* Get the information about the configured engines.  A pointer to the+   first engine in the statically allocated linked list is returned.+   The returned data is valid until the next gpgme_ctx_set_engine_info.  */+gpgme_engine_info_t gpgme_ctx_get_engine_info (gpgme_ctx_t ctx);++/* Set the engine info for the context CTX, protocol PROTO, to the+   file name FILE_NAME and the home directory HOME_DIR.  */+gpgme_error_t gpgme_ctx_set_engine_info (gpgme_ctx_t ctx,+					 gpgme_protocol_t proto,+					 const char *file_name,+					 const char *home_dir);+++/* Return a statically allocated string with the name of the public+   key algorithm ALGO, or NULL if that name is not known.  */+const char *gpgme_pubkey_algo_name (gpgme_pubkey_algo_t algo);++/* Return a statically allocated string with the name of the hash+   algorithm ALGO, or NULL if that name is not known.  */+const char *gpgme_hash_algo_name (gpgme_hash_algo_t algo);+++/* Delete all signers from CTX.  */+void gpgme_signers_clear (gpgme_ctx_t ctx);++/* Add KEY to list of signers in CTX.  */+gpgme_error_t gpgme_signers_add (gpgme_ctx_t ctx, const gpgme_key_t key);++/* Return the SEQth signer's key in CTX.  */+gpgme_key_t gpgme_signers_enum (const gpgme_ctx_t ctx, int seq);++/* Retrieve the signature status of signature IDX in CTX after a+   successful verify operation in R_STAT (if non-null).  The creation+   time stamp of the signature is returned in R_CREATED (if non-null).+   The function returns a string containing the fingerprint.+   Deprecated, use verify result directly.  */+const char *gpgme_get_sig_status (gpgme_ctx_t ctx, int idx,+                                  _gpgme_sig_stat_t *r_stat,+				  time_t *r_created) _GPGME_DEPRECATED;++/* Retrieve certain attributes of a signature.  IDX is the index+   number of the signature after a successful verify operation.  WHAT+   is an attribute where GPGME_ATTR_EXPIRE is probably the most useful+   one.  WHATIDX is to be passed as 0 for most attributes . */+unsigned long gpgme_get_sig_ulong_attr (gpgme_ctx_t c, int idx,+                                        _gpgme_attr_t what, int whatidx)+     _GPGME_DEPRECATED;+const char *gpgme_get_sig_string_attr (gpgme_ctx_t c, int idx,+				       _gpgme_attr_t what, int whatidx)+     _GPGME_DEPRECATED;+++/* Get the key used to create signature IDX in CTX and return it in+   R_KEY.  */+gpgme_error_t gpgme_get_sig_key (gpgme_ctx_t ctx, int idx, gpgme_key_t *r_key)+     _GPGME_DEPRECATED;+++/* Clear all notation data from the context.  */+void gpgme_sig_notation_clear (gpgme_ctx_t ctx);++/* Add the human-readable notation data with name NAME and value VALUE+   to the context CTX, using the flags FLAGS.  If NAME is NULL, then+   VALUE should be a policy URL.  The flag+   GPGME_SIG_NOTATION_HUMAN_READABLE is forced to be true for notation+   data, and false for policy URLs.  */+gpgme_error_t gpgme_sig_notation_add (gpgme_ctx_t ctx, const char *name,+				      const char *value,+				      gpgme_sig_notation_flags_t flags);++/* Get the sig notations for this context.  */+gpgme_sig_notation_t gpgme_sig_notation_get (gpgme_ctx_t ctx);+++/* Run control.  */++/* The type of an I/O callback function.  */+typedef gpgme_error_t (*gpgme_io_cb_t) (void *data, int fd);++/* The type of a function that can register FNC as the I/O callback+   function for the file descriptor FD with direction dir (0: for writing,+   1: for reading).  FNC_DATA should be passed as DATA to FNC.  The+   function should return a TAG suitable for the corresponding+   gpgme_remove_io_cb_t, and an error value.  */+typedef gpgme_error_t (*gpgme_register_io_cb_t) (void *data, int fd, int dir,+						 gpgme_io_cb_t fnc,+						 void *fnc_data, void **tag);++/* The type of a function that can remove a previously registered I/O+   callback function given TAG as returned by the register+   function.  */+typedef void (*gpgme_remove_io_cb_t) (void *tag);++typedef enum+  {+    GPGME_EVENT_START,+    GPGME_EVENT_DONE,+    GPGME_EVENT_NEXT_KEY,+    GPGME_EVENT_NEXT_TRUSTITEM+  }+gpgme_event_io_t;++/* The type of a function that is called when a context finished an+   operation.  */+typedef void (*gpgme_event_io_cb_t) (void *data, gpgme_event_io_t type,+				     void *type_data);++struct gpgme_io_cbs+{+  gpgme_register_io_cb_t add;+  void *add_priv;+  gpgme_remove_io_cb_t remove;+  gpgme_event_io_cb_t event;+  void *event_priv;+};+typedef struct gpgme_io_cbs *gpgme_io_cbs_t;++/* Set the I/O callback functions in CTX to IO_CBS.  */+void gpgme_set_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs);++/* Get the current I/O callback functions.  */+void gpgme_get_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs);++/* Process the pending operation and, if HANG is non-zero, wait for+   the pending operation to finish.  */+gpgme_ctx_t gpgme_wait (gpgme_ctx_t ctx, gpgme_error_t *status, int hang);+++/* Functions to handle data objects.  */++/* Read up to SIZE bytes into buffer BUFFER from the data object with+   the handle HANDLE.  Return the number of characters read, 0 on EOF+   and -1 on error.  If an error occurs, errno is set.  */+typedef ssize_t (*gpgme_data_read_cb_t) (void *handle, void *buffer,+					 size_t size);++/* Write up to SIZE bytes from buffer BUFFER to the data object with+   the handle HANDLE.  Return the number of characters written, or -1+   on error.  If an error occurs, errno is set.  */+typedef ssize_t (*gpgme_data_write_cb_t) (void *handle, const void *buffer,+					  size_t size);++/* Set the current position from where the next read or write starts+   in the data object with the handle HANDLE to OFFSET, relativ to+   WHENCE.  */+typedef off_t (*gpgme_data_seek_cb_t) (void *handle, off_t offset, int whence);++/* Close the data object with the handle DL.  */+typedef void (*gpgme_data_release_cb_t) (void *handle);++struct gpgme_data_cbs+{+  gpgme_data_read_cb_t read;+  gpgme_data_write_cb_t write;+  gpgme_data_seek_cb_t seek;+  gpgme_data_release_cb_t release;+};+typedef struct gpgme_data_cbs *gpgme_data_cbs_t;++/* Read up to SIZE bytes into buffer BUFFER from the data object with+   the handle DH.  Return the number of characters read, 0 on EOF and+   -1 on error.  If an error occurs, errno is set.  */+ssize_t gpgme_data_read (gpgme_data_t dh, void *buffer, size_t size);++/* Write up to SIZE bytes from buffer BUFFER to the data object with+   the handle DH.  Return the number of characters written, or -1 on+   error.  If an error occurs, errno is set.  */+ssize_t gpgme_data_write (gpgme_data_t dh, const void *buffer, size_t size);++/* Set the current position from where the next read or write starts+   in the data object with the handle DH to OFFSET, relativ to+   WHENCE.  */+off_t gpgme_data_seek (gpgme_data_t dh, off_t offset, int whence);++/* Create a new data buffer and return it in R_DH.  */+gpgme_error_t gpgme_data_new (gpgme_data_t *r_dh);++/* Destroy the data buffer DH.  */+void gpgme_data_release (gpgme_data_t dh);++/* Create a new data buffer filled with SIZE bytes starting from+   BUFFER.  If COPY is zero, copying is delayed until necessary, and+   the data is taken from the original location when needed.  */+gpgme_error_t gpgme_data_new_from_mem (gpgme_data_t *r_dh,+				       const char *buffer, size_t size,+				       int copy);++/* Destroy the data buffer DH and return a pointer to its content.+   The memory has be to released with gpgme_free() by the user.  It's+   size is returned in R_LEN.  */+char *gpgme_data_release_and_get_mem (gpgme_data_t dh, size_t *r_len);++/* Release the memory returned by gpgme_data_release_and_get_mem().  */+void gpgme_free (void *buffer);++gpgme_error_t gpgme_data_new_from_cbs (gpgme_data_t *dh,+				       gpgme_data_cbs_t cbs,+				       void *handle);++gpgme_error_t gpgme_data_new_from_fd (gpgme_data_t *dh, int fd);++gpgme_error_t gpgme_data_new_from_stream (gpgme_data_t *dh, FILE *stream);++/* Return the encoding attribute of the data buffer DH */+gpgme_data_encoding_t gpgme_data_get_encoding (gpgme_data_t dh);++/* Set the encoding attribute of data buffer DH to ENC */+gpgme_error_t gpgme_data_set_encoding (gpgme_data_t dh,+				       gpgme_data_encoding_t enc);++/* Get the file name associated with the data object with handle DH, or+   NULL if there is none.  */+char *gpgme_data_get_file_name (gpgme_data_t dh);++/* Set the file name associated with the data object with handle DH to+   FILE_NAME.  */+gpgme_error_t gpgme_data_set_file_name (gpgme_data_t dh,+					const char *file_name);+++/* Create a new data buffer which retrieves the data from the callback+   function READ_CB.  Deprecated, please use gpgme_data_new_from_cbs+   instead.  */+gpgme_error_t gpgme_data_new_with_read_cb (gpgme_data_t *r_dh,+					   int (*read_cb) (void*,char *,+							   size_t,size_t*),+					   void *read_cb_value)+     _GPGME_DEPRECATED;++/* Create a new data buffer filled with the content of file FNAME.+   COPY must be non-zero.  For delayed read, please use+   gpgme_data_new_from_fd or gpgme_data_new_from stream instead.  */+gpgme_error_t gpgme_data_new_from_file (gpgme_data_t *r_dh,+					const char *fname,+					int copy);++/* Create a new data buffer filled with LENGTH bytes starting from+   OFFSET within the file FNAME or stream FP (exactly one must be+   non-zero).  */+gpgme_error_t gpgme_data_new_from_filepart (gpgme_data_t *r_dh,+					    const char *fname, FILE *fp,+					    off_t offset, size_t length);++/* Reset the read pointer in DH.  Deprecated, please use+   gpgme_data_seek instead.  */+gpgme_error_t gpgme_data_rewind (gpgme_data_t dh) _GPGME_DEPRECATED;+++/* Key and trust functions.  */++/* Get the key with the fingerprint FPR from the crypto backend.  If+   SECRET is true, get the secret key.  */+gpgme_error_t gpgme_get_key (gpgme_ctx_t ctx, const char *fpr,+			     gpgme_key_t *r_key, int secret);++/* Acquire a reference to KEY.  */+void gpgme_key_ref (gpgme_key_t key);++/* Release a reference to KEY.  If this was the last one the key is+   destroyed.  */+void gpgme_key_unref (gpgme_key_t key);+void gpgme_key_release (gpgme_key_t key);++/* Return the value of the attribute WHAT of KEY, which has to be+   representable by a string.  IDX specifies the sub key or user ID+   for attributes related to sub keys or user IDs.  Deprecated, use+   key structure directly instead. */+const char *gpgme_key_get_string_attr (gpgme_key_t key, _gpgme_attr_t what,+				       const void *reserved, int idx)+     _GPGME_DEPRECATED;++/* Return the value of the attribute WHAT of KEY, which has to be+   representable by an unsigned integer.  IDX specifies the sub key or+   user ID for attributes related to sub keys or user IDs.+   Deprecated, use key structure directly instead.  */+unsigned long gpgme_key_get_ulong_attr (gpgme_key_t key, _gpgme_attr_t what,+					const void *reserved, int idx)+     _GPGME_DEPRECATED;++/* Return the value of the attribute WHAT of a signature on user ID+   UID_IDX in KEY, which has to be representable by a string.  IDX+   specifies the signature.  Deprecated, use key structure directly+   instead.  */+const char *gpgme_key_sig_get_string_attr (gpgme_key_t key, int uid_idx,+					   _gpgme_attr_t what,+					   const void *reserved, int idx)+     _GPGME_DEPRECATED;++/* Return the value of the attribute WHAT of a signature on user ID+   UID_IDX in KEY, which has to be representable by an unsigned+   integer string.  IDX specifies the signature.  Deprecated, use key+   structure directly instead.  */+unsigned long gpgme_key_sig_get_ulong_attr (gpgme_key_t key, int uid_idx,+					    _gpgme_attr_t what,+					    const void *reserved, int idx)+     _GPGME_DEPRECATED;+++/* Crypto Operations.  */++/* Cancel a pending asynchronous operation.  */+gpgme_error_t gpgme_cancel (gpgme_ctx_t ctx);++/* Cancel a pending operation asynchronously.  */+gpgme_error_t gpgme_cancel_async (gpgme_ctx_t ctx);+++struct _gpgme_invalid_key+{+  struct _gpgme_invalid_key *next;+  char *fpr;+  gpgme_error_t reason;+};+typedef struct _gpgme_invalid_key *gpgme_invalid_key_t;+++/* Encryption.  */+struct _gpgme_op_encrypt_result+{+  /* The list of invalid recipients.  */+  gpgme_invalid_key_t invalid_recipients;+};+typedef struct _gpgme_op_encrypt_result *gpgme_encrypt_result_t;++/* Retrieve a pointer to the result of the encrypt operation.  */+gpgme_encrypt_result_t gpgme_op_encrypt_result (gpgme_ctx_t ctx);++/* The valid encryption flags.  */+typedef enum+  {+    GPGME_ENCRYPT_ALWAYS_TRUST = 1+  }+gpgme_encrypt_flags_t;++/* Encrypt plaintext PLAIN within CTX for the recipients RECP and+   store the resulting ciphertext in CIPHER.  */+gpgme_error_t gpgme_op_encrypt_start (gpgme_ctx_t ctx, gpgme_key_t recp[],+				      gpgme_encrypt_flags_t flags,+				      gpgme_data_t plain, gpgme_data_t cipher);+gpgme_error_t gpgme_op_encrypt (gpgme_ctx_t ctx, gpgme_key_t recp[],+				gpgme_encrypt_flags_t flags,+				gpgme_data_t plain, gpgme_data_t cipher);++/* Encrypt plaintext PLAIN within CTX for the recipients RECP and+   store the resulting ciphertext in CIPHER.  Also sign the ciphertext+   with the signers in CTX.  */+gpgme_error_t gpgme_op_encrypt_sign_start (gpgme_ctx_t ctx,+					   gpgme_key_t recp[],+					   gpgme_encrypt_flags_t flags,+					   gpgme_data_t plain,+					   gpgme_data_t cipher);+gpgme_error_t gpgme_op_encrypt_sign (gpgme_ctx_t ctx, gpgme_key_t recp[],+				     gpgme_encrypt_flags_t flags,+				     gpgme_data_t plain, gpgme_data_t cipher);+++/* Decryption.  */++struct _gpgme_recipient+{+  struct _gpgme_recipient *next;++  /* The key ID of key for which the text was encrypted.  */+  char *keyid;++  /* Internal to GPGME, do not use.  */+  char _keyid[16 + 1];++  /* The public key algorithm of the recipient key.  */+  gpgme_pubkey_algo_t pubkey_algo;++  /* The status of the recipient.  */+  gpgme_error_t status;+};+typedef struct _gpgme_recipient *gpgme_recipient_t;++struct _gpgme_op_decrypt_result+{+  char *unsupported_algorithm;++  /* Key should not have been used for encryption.  */+  unsigned int wrong_key_usage : 1;++  /* Internal to GPGME, do not use.  */+  int _unused : 31;++  gpgme_recipient_t recipients;++  /* The original file name of the plaintext message, if+     available.  */+  char *file_name;+};+typedef struct _gpgme_op_decrypt_result *gpgme_decrypt_result_t;++/* Retrieve a pointer to the result of the decrypt operation.  */+gpgme_decrypt_result_t gpgme_op_decrypt_result (gpgme_ctx_t ctx);++/* Decrypt ciphertext CIPHER within CTX and store the resulting+   plaintext in PLAIN.  */+gpgme_error_t gpgme_op_decrypt_start (gpgme_ctx_t ctx, gpgme_data_t cipher,+				      gpgme_data_t plain);+gpgme_error_t gpgme_op_decrypt (gpgme_ctx_t ctx,+				gpgme_data_t cipher, gpgme_data_t plain);++/* Decrypt ciphertext CIPHER and make a signature verification within+   CTX and store the resulting plaintext in PLAIN.  */+gpgme_error_t gpgme_op_decrypt_verify_start (gpgme_ctx_t ctx,+					     gpgme_data_t cipher,+					     gpgme_data_t plain);+gpgme_error_t gpgme_op_decrypt_verify (gpgme_ctx_t ctx, gpgme_data_t cipher,+				       gpgme_data_t plain);+++/* Signing.  */+struct _gpgme_new_signature+{+  struct _gpgme_new_signature *next;++  /* The type of the signature.  */+  gpgme_sig_mode_t type;++  /* The public key algorithm used to create the signature.  */+  gpgme_pubkey_algo_t pubkey_algo;++  /* The hash algorithm used to create the signature.  */+  gpgme_hash_algo_t hash_algo;++  /* Internal to GPGME, do not use.  Must be set to the same value as+     CLASS below.  */+  unsigned long _obsolete_class;++  /* Signature creation time.  */+  long int timestamp;++  /* The fingerprint of the signature.  */+  char *fpr;++#ifdef __cplusplus+  unsigned int _obsolete_class_2;+#else+  /* Must be set to SIG_CLASS below.  */+  unsigned int class _GPGME_DEPRECATED;+#endif++  /* Crypto backend specific signature class.  */+  unsigned int sig_class;+};+typedef struct _gpgme_new_signature *gpgme_new_signature_t;++struct _gpgme_op_sign_result+{+  /* The list of invalid signers.  */+  gpgme_invalid_key_t invalid_signers;+  gpgme_new_signature_t signatures;+};+typedef struct _gpgme_op_sign_result *gpgme_sign_result_t;++/* Retrieve a pointer to the result of the signing operation.  */+gpgme_sign_result_t gpgme_op_sign_result (gpgme_ctx_t ctx);++/* Sign the plaintext PLAIN and store the signature in SIG.  */+gpgme_error_t gpgme_op_sign_start (gpgme_ctx_t ctx,+				   gpgme_data_t plain, gpgme_data_t sig,+				   gpgme_sig_mode_t mode);+gpgme_error_t gpgme_op_sign (gpgme_ctx_t ctx,+			     gpgme_data_t plain, gpgme_data_t sig,+			     gpgme_sig_mode_t mode);+++/* Verify.  */++/* Flags used for the SUMMARY field in a gpgme_signature_t.  */+typedef enum+  {+    GPGME_SIGSUM_VALID       = 0x0001,  /* The signature is fully valid.  */+    GPGME_SIGSUM_GREEN       = 0x0002,  /* The signature is good.  */+    GPGME_SIGSUM_RED         = 0x0004,  /* The signature is bad.  */+    GPGME_SIGSUM_KEY_REVOKED = 0x0010,  /* One key has been revoked.  */+    GPGME_SIGSUM_KEY_EXPIRED = 0x0020,  /* One key has expired.  */+    GPGME_SIGSUM_SIG_EXPIRED = 0x0040,  /* The signature has expired.  */+    GPGME_SIGSUM_KEY_MISSING = 0x0080,  /* Can't verify: key missing.  */+    GPGME_SIGSUM_CRL_MISSING = 0x0100,  /* CRL not available.  */+    GPGME_SIGSUM_CRL_TOO_OLD = 0x0200,  /* Available CRL is too old.  */+    GPGME_SIGSUM_BAD_POLICY  = 0x0400,  /* A policy was not met.  */+    GPGME_SIGSUM_SYS_ERROR   = 0x0800   /* A system error occured.  */+  }+gpgme_sigsum_t;++struct _gpgme_signature+{+  struct _gpgme_signature *next;++  /* A summary of the signature status.  */+  gpgme_sigsum_t summary;++  /* The fingerprint or key ID of the signature.  */+  char *fpr;++  /* The status of the signature.  */+  gpgme_error_t status;++  /* Notation data and policy URLs.  */+  gpgme_sig_notation_t notations;++  /* Signature creation time.  */+  unsigned long timestamp;++  /* Signature exipration time or 0.  */+  unsigned long exp_timestamp;++  /* Key should not have been used for signing.  */+  unsigned int wrong_key_usage : 1;++  /* PKA status: 0 = not available, 1 = bad, 2 = okay, 3 = RFU. */+  unsigned int pka_trust : 2;++  /* Validity has been verified using the chain model. */+  unsigned int chain_model : 1;++  /* Internal to GPGME, do not use.  */+  int _unused : 28;++  gpgme_validity_t validity;+  gpgme_error_t validity_reason;++  /* The public key algorithm used to create the signature.  */+  gpgme_pubkey_algo_t pubkey_algo;++  /* The hash algorithm used to create the signature.  */+  gpgme_hash_algo_t hash_algo;++  /* The mailbox from the PKA information or NULL. */+  char *pka_address;+};+typedef struct _gpgme_signature *gpgme_signature_t;++struct _gpgme_op_verify_result+{+  gpgme_signature_t signatures;++  /* The original file name of the plaintext message, if+     available.  */+  char *file_name;+};+typedef struct _gpgme_op_verify_result *gpgme_verify_result_t;++/* Retrieve a pointer to the result of the verify operation.  */+gpgme_verify_result_t gpgme_op_verify_result (gpgme_ctx_t ctx);++/* Verify within CTX that SIG is a valid signature for TEXT.  */+gpgme_error_t gpgme_op_verify_start (gpgme_ctx_t ctx, gpgme_data_t sig,+				     gpgme_data_t signed_text,+				     gpgme_data_t plaintext);+gpgme_error_t gpgme_op_verify (gpgme_ctx_t ctx, gpgme_data_t sig,+			       gpgme_data_t signed_text,+			       gpgme_data_t plaintext);+++/* Import.  */++/* The key was new.  */+#define GPGME_IMPORT_NEW	1++/* The key contained new user IDs.  */+#define GPGME_IMPORT_UID	2++/* The key contained new signatures.  */+#define GPGME_IMPORT_SIG	4++/* The key contained new sub keys.  */+#define GPGME_IMPORT_SUBKEY	8++/* The key contained a secret key.  */+#define GPGME_IMPORT_SECRET	16+++struct _gpgme_import_status+{+  struct _gpgme_import_status *next;++  /* Fingerprint.  */+  char *fpr;++  /* If a problem occured, the reason why the key could not be+     imported.  Otherwise GPGME_No_Error.  */+  gpgme_error_t result;++  /* The result of the import, the GPGME_IMPORT_* values bit-wise+     ORed.  0 means the key was already known and no new components+     have been added.  */+  unsigned int status;+};+typedef struct _gpgme_import_status *gpgme_import_status_t;++/* Import.  */+struct _gpgme_op_import_result+{+  /* Number of considered keys.  */+  int considered;++  /* Keys without user ID.  */+  int no_user_id;++  /* Imported keys.  */+  int imported;++  /* Imported RSA keys.  */+  int imported_rsa;++  /* Unchanged keys.  */+  int unchanged;++  /* Number of new user ids.  */+  int new_user_ids;++  /* Number of new sub keys.  */+  int new_sub_keys;++  /* Number of new signatures.  */+  int new_signatures;++  /* Number of new revocations.  */+  int new_revocations;++  /* Number of secret keys read.  */+  int secret_read;++  /* Number of secret keys imported.  */+  int secret_imported;++  /* Number of secret keys unchanged.  */+  int secret_unchanged;++  /* Number of new keys skipped.  */+  int skipped_new_keys;++  /* Number of keys not imported.  */+  int not_imported;++  /* List of keys for which an import was attempted.  */+  gpgme_import_status_t imports;+};+typedef struct _gpgme_op_import_result *gpgme_import_result_t;++/* Retrieve a pointer to the result of the import operation.  */+gpgme_import_result_t gpgme_op_import_result (gpgme_ctx_t ctx);++/* Import the key in KEYDATA into the keyring.  */+gpgme_error_t gpgme_op_import_start (gpgme_ctx_t ctx, gpgme_data_t keydata);+gpgme_error_t gpgme_op_import (gpgme_ctx_t ctx, gpgme_data_t keydata);+gpgme_error_t gpgme_op_import_ext (gpgme_ctx_t ctx, gpgme_data_t keydata,+				   int *nr) _GPGME_DEPRECATED;+++/* Export the keys found by PATTERN into KEYDATA.  */+gpgme_error_t gpgme_op_export_start (gpgme_ctx_t ctx, const char *pattern,+				     unsigned int reserved,+				     gpgme_data_t keydata);+gpgme_error_t gpgme_op_export (gpgme_ctx_t ctx, const char *pattern,+			       unsigned int reserved, gpgme_data_t keydata);++gpgme_error_t gpgme_op_export_ext_start (gpgme_ctx_t ctx,+					 const char *pattern[],+					 unsigned int reserved,+					 gpgme_data_t keydata);+gpgme_error_t gpgme_op_export_ext (gpgme_ctx_t ctx, const char *pattern[],+				   unsigned int reserved,+				   gpgme_data_t keydata);+++/* Key generation.  */+struct _gpgme_op_genkey_result+{+  /* A primary key was generated.  */+  unsigned int primary : 1;++  /* A sub key was generated.  */+  unsigned int sub : 1;++  /* Internal to GPGME, do not use.  */+  unsigned int _unused : 30;++  /* The fingerprint of the generated key.  */+  char *fpr;+};+typedef struct _gpgme_op_genkey_result *gpgme_genkey_result_t;++/* Generate a new keypair and add it to the keyring.  PUBKEY and+   SECKEY should be null for now.  PARMS specifies what keys should be+   generated.  */+gpgme_error_t gpgme_op_genkey_start (gpgme_ctx_t ctx, const char *parms,+				     gpgme_data_t pubkey, gpgme_data_t seckey);+gpgme_error_t gpgme_op_genkey (gpgme_ctx_t ctx, const char *parms,+			       gpgme_data_t pubkey, gpgme_data_t seckey);++/* Retrieve a pointer to the result of the genkey operation.  */+gpgme_genkey_result_t gpgme_op_genkey_result (gpgme_ctx_t ctx);+++/* Delete KEY from the keyring.  If ALLOW_SECRET is non-zero, secret+   keys are also deleted.  */+gpgme_error_t gpgme_op_delete_start (gpgme_ctx_t ctx, const gpgme_key_t key,+				     int allow_secret);+gpgme_error_t gpgme_op_delete (gpgme_ctx_t ctx, const gpgme_key_t key,+			       int allow_secret);+++/* Edit the key KEY.  Send status and command requests to FNC and+   output of edit commands to OUT.  */+gpgme_error_t gpgme_op_edit_start (gpgme_ctx_t ctx, gpgme_key_t key,+				   gpgme_edit_cb_t fnc, void *fnc_value,+				   gpgme_data_t out);+gpgme_error_t gpgme_op_edit (gpgme_ctx_t ctx, gpgme_key_t key,+			     gpgme_edit_cb_t fnc, void *fnc_value,+			     gpgme_data_t out);++/* Edit the card for the key KEY.  Send status and command requests to+   FNC and output of edit commands to OUT.  */+gpgme_error_t gpgme_op_card_edit_start (gpgme_ctx_t ctx, gpgme_key_t key,+					gpgme_edit_cb_t fnc, void *fnc_value,+					gpgme_data_t out);+gpgme_error_t gpgme_op_card_edit (gpgme_ctx_t ctx, gpgme_key_t key,+				  gpgme_edit_cb_t fnc, void *fnc_value,+				  gpgme_data_t out);+++/* Key management functions.  */+struct _gpgme_op_keylist_result+{+  unsigned int truncated : 1;++  /* Internal to GPGME, do not use.  */+  unsigned int _unused : 31;+};+typedef struct _gpgme_op_keylist_result *gpgme_keylist_result_t;++/* Retrieve a pointer to the result of the key listing operation.  */+gpgme_keylist_result_t gpgme_op_keylist_result (gpgme_ctx_t ctx);++/* Start a keylist operation within CTX, searching for keys which+   match PATTERN.  If SECRET_ONLY is true, only secret keys are+   returned.  */+gpgme_error_t gpgme_op_keylist_start (gpgme_ctx_t ctx, const char *pattern,+				      int secret_only);+gpgme_error_t gpgme_op_keylist_ext_start (gpgme_ctx_t ctx,+					  const char *pattern[],+					  int secret_only, int reserved);++/* Return the next key from the keylist in R_KEY.  */+gpgme_error_t gpgme_op_keylist_next (gpgme_ctx_t ctx, gpgme_key_t *r_key);++/* Terminate a pending keylist operation within CTX.  */+gpgme_error_t gpgme_op_keylist_end (gpgme_ctx_t ctx);+++/* Trust items and operations.  */++struct _gpgme_trust_item+{+  /* Internal to GPGME, do not use.  */+  unsigned int _refs;++  /* The key ID to which the trust item belongs.  */+  char *keyid;++  /* Internal to GPGME, do not use.  */+  char _keyid[16 + 1];++  /* The type of the trust item, 1 refers to a key, 2 to a user ID.  */+  int type;++  /* The trust level.  */+  int level;++  /* The owner trust if TYPE is 1.  */+  char *owner_trust;++  /* Internal to GPGME, do not use.  */+  char _owner_trust[2];++  /* The calculated validity.  */+  char *validity;+ +  /* Internal to GPGME, do not use.  */+  char _validity[2];++  /* The user name if TYPE is 2.  */+  char *name;+};+typedef struct _gpgme_trust_item *gpgme_trust_item_t;++/* Start a trustlist operation within CTX, searching for trust items+   which match PATTERN.  */+gpgme_error_t gpgme_op_trustlist_start (gpgme_ctx_t ctx,+					const char *pattern, int max_level);++/* Return the next trust item from the trustlist in R_ITEM.  */+gpgme_error_t gpgme_op_trustlist_next (gpgme_ctx_t ctx,+				       gpgme_trust_item_t *r_item);++/* Terminate a pending trustlist operation within CTX.  */+gpgme_error_t gpgme_op_trustlist_end (gpgme_ctx_t ctx);++/* Acquire a reference to ITEM.  */+void gpgme_trust_item_ref (gpgme_trust_item_t item);++/* Release a reference to ITEM.  If this was the last one the trust+   item is destroyed.  */+void gpgme_trust_item_unref (gpgme_trust_item_t item);++/* Release the trust item ITEM.  Deprecated, use+   gpgme_trust_item_unref.  */+void gpgme_trust_item_release (gpgme_trust_item_t item) _GPGME_DEPRECATED;++/* Return the value of the attribute WHAT of ITEM, which has to be+   representable by a string.  Deprecated, use trust item structure+   directly.  */+const char *gpgme_trust_item_get_string_attr (gpgme_trust_item_t item,+					      _gpgme_attr_t what,+					      const void *reserved, int idx)+     _GPGME_DEPRECATED;++/* Return the value of the attribute WHAT of KEY, which has to be+   representable by an integer.  IDX specifies a running index if the+   attribute appears more than once in the key.  Deprecated, use trust+   item structure directly.  */+int gpgme_trust_item_get_int_attr (gpgme_trust_item_t item, _gpgme_attr_t what,+				   const void *reserved, int idx)+     _GPGME_DEPRECATED;+++/* Return the auditlog for the current session.  This may be called+   after a successful or failed operation.  If no audit log is+   available GPG_ERR_NO_DATA is returned.  */+gpgme_error_t gpgme_op_getauditlog_start (gpgme_ctx_t ctx, gpgme_data_t output,+                                          unsigned int flags);+gpgme_error_t gpgme_op_getauditlog (gpgme_ctx_t ctx, gpgme_data_t output, +                                    unsigned int flags);+++/* Interface to gpgconf(1).  */++/* The expert level at which a configuration option or group of+   options should be displayed.  See the gpgconf(1) documentation for+   more details.  */+typedef enum+  {+    GPGME_CONF_BASIC = 0,+    GPGME_CONF_ADVANCED = 1,+    GPGME_CONF_EXPERT = 2,+    GPGME_CONF_INVISIBLE = 3,+    GPGME_CONF_INTERNAL = 4+  }+gpgme_conf_level_t;+++/* The data type of a configuration option argument.  See the gpgconf(1)+   documentation for more details.  */+typedef enum+  {+    /* Basic types.  */+    GPGME_CONF_NONE = 0,+    GPGME_CONF_STRING = 1,+    GPGME_CONF_INT32 = 2,+    GPGME_CONF_UINT32 = 3,++    /* Complex types.  */+    GPGME_CONF_FILENAME = 32,+    GPGME_CONF_LDAP_SERVER = 33,+    GPGME_CONF_KEY_FPR = 34,+    GPGME_CONF_PUB_KEY = 35,+    GPGME_CONF_SEC_KEY = 36,+    GPGME_CONF_ALIAS_LIST = 37+  }+gpgme_conf_type_t;+/* Macro for backward compatibility (even though it was undocumented+   and marked as experimental in 1.1.6 - will be removed after 1.1.7): */+#define GPGME_CONF_PATHNAME GPGME_CONF_FILENAME+++/* This represents a single argument for a configuration option.+   Which of the members of value is used depends on the ALT_TYPE.  */+typedef struct gpgme_conf_arg+{+  struct gpgme_conf_arg *next;+  /* True if the option appears without an (optional) argument.  */+  unsigned int no_arg;+  union+  {+    unsigned int count;+    unsigned int uint32;+    int int32;+    char *string;+  } value;+} *gpgme_conf_arg_t;+++/* The flags of a configuration option.  See the gpg-conf+   documentation for details.  */+#define GPGME_CONF_GROUP	(1 << 0)+#define GPGME_CONF_OPTIONAL	(1 << 1)+#define GPGME_CONF_LIST		(1 << 2)+#define GPGME_CONF_RUNTIME	(1 << 3)+#define GPGME_CONF_DEFAULT	(1 << 4)+#define GPGME_CONF_DEFAULT_DESC	(1 << 5)+#define GPGME_CONF_NO_ARG_DESC	(1 << 6)+#define GPGME_CONF_NO_CHANGE	(1 << 7)+++/* The representation of a single configuration option.  See the+   gpg-conf documentation for details.  */+typedef struct gpgme_conf_opt+{+  struct gpgme_conf_opt *next;+  +  /* The option name.  */+  char *name;++  /* The flags for this option.  */+  unsigned int flags;++  /* The level of this option.  */+  gpgme_conf_level_t level;++  /* The localized description of this option.  */+  char *description;++  /* The type and alternate type of this option.  */+  gpgme_conf_type_t type;+  gpgme_conf_type_t alt_type;++  /* The localized (short) name of the argument, if any.  */+  char *argname;++  /* The default value.  */+  gpgme_conf_arg_t default_value;+  char *default_description;+  +  /* The default value if the option is not set.  */+  gpgme_conf_arg_t no_arg_value;+  char *no_arg_description;++  /* The current value if the option is set.  */+  gpgme_conf_arg_t value;++  /* The new value, if any.  NULL means reset to default.  */+  int change_value;+  gpgme_conf_arg_t new_value;++  /* Free for application use.  */+  void *user_data;+} *gpgme_conf_opt_t;+++/* The representation of a component that can be configured.  See the+   gpg-conf documentation for details.  */+typedef struct gpgme_conf_comp+{+  struct gpgme_conf_comp *next;++  /* Internal to GPGME, do not use!  */+  gpgme_conf_opt_t *_last_opt_p;++  /* The component name.  */+  char *name;++  /* A human-readable description for the component.  */+  char *description;++  /* The program name (an absolute path to the program).  */+  char *program_name;  ++  /* A linked list of options for this component.  */+  struct gpgme_conf_opt *options;+} *gpgme_conf_comp_t;+++/* Allocate a new gpgme_conf_arg_t.  If VALUE is NULL, a "no arg+   default" is prepared.  If type is a string type, VALUE should point+   to the string.  Else, it should point to an unsigned or signed+   integer respectively.  */+gpgme_error_t gpgme_conf_arg_new (gpgme_conf_arg_t *arg_p,+				  gpgme_conf_type_t type, void *value);++/* This also releases all chained argument structures!  */+void gpgme_conf_arg_release (gpgme_conf_arg_t arg, gpgme_conf_type_t type);++/* Register a change for the value of OPT to ARG.  If RESET is 1 (do+   not use any values but 0 or 1), ARG is ignored and the option is+   not changed (reverting a previous change).  Otherwise, if ARG is+   NULL, the option is cleared or reset to its default.  */+gpgme_error_t gpgme_conf_opt_change (gpgme_conf_opt_t opt, int reset,+				     gpgme_conf_arg_t arg);++/* Release a set of configurations.  */+void gpgme_conf_release (gpgme_conf_comp_t conf);+ +/* Retrieve the current configurations.  */+gpgme_error_t gpgme_op_conf_load (gpgme_ctx_t ctx, gpgme_conf_comp_t *conf_p);++/* Save the configuration of component comp.  This function does not+   follow chained components!  */+gpgme_error_t gpgme_op_conf_save (gpgme_ctx_t ctx, gpgme_conf_comp_t comp);+++/* Various functions.  */++/* Check that the library fulfills the version requirement.  */+const char *gpgme_check_version (const char *req_version);++/* Get the information about the configured and installed engines.  A+   pointer to the first engine in the statically allocated linked list+   is returned in *INFO.  If an error occurs, it is returned.  The+   returned data is valid until the next gpgme_set_engine_info.  */+gpgme_error_t gpgme_get_engine_info (gpgme_engine_info_t *engine_info);++/* Set the default engine info for the protocol PROTO to the file name+   FILE_NAME and the home directory HOME_DIR.  */+gpgme_error_t gpgme_set_engine_info (gpgme_protocol_t proto,+				     const char *file_name,+				     const char *home_dir);+++/* Engine support functions.  */++/* Verify that the engine implementing PROTO is installed and+   available.  */+gpgme_error_t gpgme_engine_check_version (gpgme_protocol_t proto);+++/* Deprecated types.  */+typedef gpgme_ctx_t GpgmeCtx _GPGME_DEPRECATED;+typedef gpgme_data_t GpgmeData _GPGME_DEPRECATED;+typedef gpgme_error_t GpgmeError _GPGME_DEPRECATED;+typedef gpgme_data_encoding_t GpgmeDataEncoding _GPGME_DEPRECATED;+typedef gpgme_pubkey_algo_t GpgmePubKeyAlgo _GPGME_DEPRECATED;+typedef gpgme_hash_algo_t GpgmeHashAlgo _GPGME_DEPRECATED;+typedef gpgme_sig_stat_t GpgmeSigStat _GPGME_DEPRECATED;+typedef gpgme_sig_mode_t GpgmeSigMode _GPGME_DEPRECATED;+typedef gpgme_attr_t GpgmeAttr _GPGME_DEPRECATED;+typedef gpgme_validity_t GpgmeValidity _GPGME_DEPRECATED;+typedef gpgme_protocol_t GpgmeProtocol _GPGME_DEPRECATED;+typedef gpgme_engine_info_t GpgmeEngineInfo _GPGME_DEPRECATED;+typedef gpgme_subkey_t GpgmeSubkey _GPGME_DEPRECATED;+typedef gpgme_key_sig_t GpgmeKeySig _GPGME_DEPRECATED;+typedef gpgme_user_id_t GpgmeUserID _GPGME_DEPRECATED;+typedef gpgme_key_t GpgmeKey _GPGME_DEPRECATED;+typedef gpgme_passphrase_cb_t GpgmePassphraseCb _GPGME_DEPRECATED;+typedef gpgme_progress_cb_t GpgmeProgressCb _GPGME_DEPRECATED;+typedef gpgme_io_cb_t GpgmeIOCb _GPGME_DEPRECATED;+typedef gpgme_register_io_cb_t GpgmeRegisterIOCb _GPGME_DEPRECATED;+typedef gpgme_remove_io_cb_t GpgmeRemoveIOCb _GPGME_DEPRECATED;+typedef gpgme_event_io_t GpgmeEventIO _GPGME_DEPRECATED;+typedef gpgme_event_io_cb_t GpgmeEventIOCb _GPGME_DEPRECATED;+#define GpgmeIOCbs gpgme_io_cbs+typedef gpgme_data_read_cb_t GpgmeDataReadCb _GPGME_DEPRECATED;+typedef gpgme_data_write_cb_t GpgmeDataWriteCb _GPGME_DEPRECATED;+typedef gpgme_data_seek_cb_t GpgmeDataSeekCb _GPGME_DEPRECATED;+typedef gpgme_data_release_cb_t GpgmeDataReleaseCb _GPGME_DEPRECATED;+#define GpgmeDataCbs gpgme_data_cbs+typedef gpgme_encrypt_result_t GpgmeEncryptResult _GPGME_DEPRECATED;+typedef gpgme_sig_notation_t GpgmeSigNotation _GPGME_DEPRECATED;+typedef	gpgme_signature_t GpgmeSignature _GPGME_DEPRECATED;+typedef gpgme_verify_result_t GpgmeVerifyResult _GPGME_DEPRECATED;+typedef gpgme_import_status_t GpgmeImportStatus _GPGME_DEPRECATED;+typedef gpgme_import_result_t GpgmeImportResult _GPGME_DEPRECATED;+typedef gpgme_genkey_result_t GpgmeGenKeyResult _GPGME_DEPRECATED;+typedef	gpgme_trust_item_t GpgmeTrustItem _GPGME_DEPRECATED;+typedef gpgme_status_code_t GpgmeStatusCode _GPGME_DEPRECATED;++#ifdef __cplusplus+}+#endif+#endif /* GPGME_H */
+ src/Bindings/Gpgme.hsc view
@@ -0,0 +1,465 @@+#include <bindings.dsl.h>+#include <gpgme.h>++-- | <http://www.gnupg.org/gpgme.html>++module Bindings.Gpgme where+#strict_import++#integral_t off_t+#integral_t ssize_t++#integral_t gpgme_ctx_t+#integral_t gpgme_data_t+#integral_t gpg_error_t+#integral_t gpgme_error_t+#integral_t gpg_err_code_t+#integral_t gpgme_err_code_t+#integral_t gpg_err_source_t+#integral_t gpgme_err_source_t++#cinline gpgme_err_make , <gpgme_err_source_t> -> <gpgme_err_code_t> -> IO <gpgme_error_t>+#cinline gpgme_error , <gpgme_err_code_t> -> IO <gpgme_error_t>+#cinline gpgme_err_code , <gpgme_error_t> -> IO <gpgme_err_code_t>+#cinline gpgme_err_source , <gpgme_error_t> -> IO <gpgme_err_source_t>++#ccall gpgme_strerror , <gpgme_error_t> -> IO CString+#ccall gpgme_strerror_r , <gpg_error_t> -> CString -> CSize -> IO CInt+#ccall gpgme_strsource , <gpgme_error_t> -> IO CString+#ccall gpgme_err_code_from_errno , CInt -> IO <gpgme_err_code_t>+#ccall gpgme_err_code_to_errno , <gpgme_err_code_t> -> IO CInt+#ccall gpgme_err_make_from_errno , <gpgme_err_source_t> -> CInt -> IO <gpgme_error_t>+#ccall gpgme_error_from_errno , CInt -> IO <gpgme_err_code_t>++#integral_t gpgme_data_encoding_t+#num GPGME_DATA_ENCODING_NONE+#num GPGME_DATA_ENCODING_BINARY+#num GPGME_DATA_ENCODING_BASE64+#num GPGME_DATA_ENCODING_ARMOR++#integral_t gpgme_pubkey_algo_t+#num GPGME_PK_RSA+#num GPGME_PK_RSA_E+#num GPGME_PK_RSA_S+#num GPGME_PK_ELG_E+#num GPGME_PK_DSA+#num GPGME_PK_ELG++#integral_t gpgme_hash_algo_t+#num GPGME_MD_NONE+#num GPGME_MD_MD5+#num GPGME_MD_SHA1+#num GPGME_MD_RMD160+#num GPGME_MD_MD2+#num GPGME_MD_TIGER+#num GPGME_MD_HAVAL+#num GPGME_MD_SHA256+#num GPGME_MD_SHA384+#num GPGME_MD_SHA512+#num GPGME_MD_MD4+#num GPGME_MD_CRC32+#num GPGME_MD_CRC32_RFC1510+#num GPGME_MD_CRC24_RFC2440++#integral_t gpgme_sig_mode_t+#num GPGME_SIG_MODE_NORMAL+#num GPGME_SIG_MODE_DETACH+#num GPGME_SIG_MODE_CLEAR++#integral_t gpgme_validity_t+#num GPGME_VALIDITY_UNKNOWN+#num GPGME_VALIDITY_UNDEFINED+#num GPGME_VALIDITY_NEVER+#num GPGME_VALIDITY_MARGINAL+#num GPGME_VALIDITY_FULL+#num GPGME_VALIDITY_ULTIMATE++#integral_t gpgme_protocol_t+#num GPGME_PROTOCOL_OpenPGP+#num GPGME_PROTOCOL_CMS+#num GPGME_PROTOCOL_GPGCONF+#num GPGME_PROTOCOL_UNKNOWN++#integral_t gpgme_keylist_mode_t+#num GPGME_KEYLIST_MODE_LOCAL+#num GPGME_KEYLIST_MODE_EXTERN+#num GPGME_KEYLIST_MODE_SIGS+#num GPGME_KEYLIST_MODE_SIG_NOTATIONS+#num GPGME_KEYLIST_MODE_VALIDATE+#num GPGME_AUDITLOG_HTML+#num GPGME_AUDITLOG_WITH_HELP++#integral_t gpgme_sig_notation_flags_t+#num GPGME_SIG_NOTATION_HUMAN_READABLE+#num GPGME_SIG_NOTATION_CRITICAL++#integral_t gpgme_sig_notation_t++#integral_t gpgme_status_code_t+#num GPGME_STATUS_EOF+#num GPGME_STATUS_ENTER+#num GPGME_STATUS_LEAVE+#num GPGME_STATUS_ABORT+#num GPGME_STATUS_GOODSIG+#num GPGME_STATUS_BADSIG+#num GPGME_STATUS_ERRSIG+#num GPGME_STATUS_BADARMOR+#num GPGME_STATUS_RSA_OR_IDEA+#num GPGME_STATUS_KEYEXPIRED+#num GPGME_STATUS_KEYREVOKED+#num GPGME_STATUS_TRUST_UNDEFINED+#num GPGME_STATUS_TRUST_NEVER+#num GPGME_STATUS_TRUST_MARGINAL+#num GPGME_STATUS_TRUST_FULLY+#num GPGME_STATUS_TRUST_ULTIMATE+#num GPGME_STATUS_SHM_INFO+#num GPGME_STATUS_SHM_GET+#num GPGME_STATUS_SHM_GET_BOOL+#num GPGME_STATUS_SHM_GET_HIDDEN+#num GPGME_STATUS_NEED_PASSPHRASE+#num GPGME_STATUS_VALIDSIG+#num GPGME_STATUS_SIG_ID+#num GPGME_STATUS_ENC_TO+#num GPGME_STATUS_NODATA+#num GPGME_STATUS_BAD_PASSPHRASE+#num GPGME_STATUS_NO_PUBKEY+#num GPGME_STATUS_NO_SECKEY+#num GPGME_STATUS_NEED_PASSPHRASE_SYM+#num GPGME_STATUS_DECRYPTION_FAILED+#num GPGME_STATUS_DECRYPTION_OKAY+#num GPGME_STATUS_MISSING_PASSPHRASE+#num GPGME_STATUS_GOOD_PASSPHRASE+#num GPGME_STATUS_GOODMDC+#num GPGME_STATUS_BADMDC+#num GPGME_STATUS_ERRMDC+#num GPGME_STATUS_IMPORTED+#num GPGME_STATUS_IMPORT_OK+#num GPGME_STATUS_IMPORT_PROBLEM+#num GPGME_STATUS_IMPORT_RES+#num GPGME_STATUS_FILE_START+#num GPGME_STATUS_FILE_DONE+#num GPGME_STATUS_FILE_ERROR+#num GPGME_STATUS_BEGIN_DECRYPTION+#num GPGME_STATUS_END_DECRYPTION+#num GPGME_STATUS_BEGIN_ENCRYPTION+#num GPGME_STATUS_END_ENCRYPTION+#num GPGME_STATUS_DELETE_PROBLEM+#num GPGME_STATUS_GET_BOOL+#num GPGME_STATUS_GET_LINE+#num GPGME_STATUS_GET_HIDDEN+#num GPGME_STATUS_GOT_IT+#num GPGME_STATUS_PROGRESS+#num GPGME_STATUS_SIG_CREATED+#num GPGME_STATUS_SESSION_KEY+#num GPGME_STATUS_NOTATION_NAME+#num GPGME_STATUS_NOTATION_DATA+#num GPGME_STATUS_POLICY_URL+#num GPGME_STATUS_BEGIN_STREAM+#num GPGME_STATUS_END_STREAM+#num GPGME_STATUS_KEY_CREATED+#num GPGME_STATUS_USERID_HINT+#num GPGME_STATUS_UNEXPECTED+#num GPGME_STATUS_INV_RECP+#num GPGME_STATUS_NO_RECP+#num GPGME_STATUS_ALREADY_SIGNED+#num GPGME_STATUS_SIGEXPIRED+#num GPGME_STATUS_EXPSIG+#num GPGME_STATUS_EXPKEYSIG+#num GPGME_STATUS_TRUNCATED+#num GPGME_STATUS_ERROR+#num GPGME_STATUS_NEWSIG+#num GPGME_STATUS_REVKEYSIG+#num GPGME_STATUS_SIG_SUBPACKET+#num GPGME_STATUS_NEED_PASSPHRASE_PIN+#num GPGME_STATUS_SC_OP_FAILURE+#num GPGME_STATUS_SC_OP_SUCCESS+#num GPGME_STATUS_CARDCTRL+#num GPGME_STATUS_BACKUP_KEY_CREATED+#num GPGME_STATUS_PKA_TRUST_BAD+#num GPGME_STATUS_PKA_TRUST_GOOD+#num GPGME_STATUS_PLAINTEXT++#integral_t gpgme_engine_info_t+#integral_t gpgme_subkey_t+#integral_t gpgme_key_sig_t+#integral_t gpgme_user_id_t+#integral_t gpgme_key_t++#callback gpgme_passphrase_cb_t , Ptr () -> CString -> CString -> CInt -> CInt -> IO <gpgme_error_t>+#callback gpgme_progress_cb_t , Ptr () -> CString -> CInt -> CInt -> CInt -> IO ()+#callback gpgme_edit_cb_t , Ptr () -> <gpgme_status_code_t> -> CString -> CInt -> IO <gpgme_error_t>++#ccall gpgme_new , Ptr <gpgme_ctx_t> -> IO <gpgme_error_t>+#ccall gpgme_release , <gpgme_ctx_t> -> IO ()+#ccall gpgme_set_protocol , <gpgme_ctx_t> -> <gpgme_protocol_t> -> IO <gpgme_error_t>+#ccall gpgme_get_protocol , <gpgme_ctx_t> -> IO <gpgme_protocol_t>+#ccall gpgme_get_protocol_name , <gpgme_protocol_t> -> IO CString+#ccall gpgme_set_armor , <gpgme_ctx_t> -> CInt -> IO ()+#ccall gpgme_get_armor , <gpgme_ctx_t> -> IO CInt+#ccall gpgme_set_textmode , <gpgme_ctx_t> -> CInt -> IO ()+#ccall gpgme_get_textmode , <gpgme_ctx_t> -> IO CInt++#num GPGME_INCLUDE_CERTS_DEFAULT++#ccall gpgme_set_include_certs , <gpgme_ctx_t> -> CInt -> IO ()+#ccall gpgme_get_include_certs , <gpgme_ctx_t> -> IO CInt+#ccall gpgme_set_keylist_mode , <gpgme_ctx_t> -> <gpgme_keylist_mode_t> -> IO <gpgme_error_t>+#ccall gpgme_get_keylist_mode , <gpgme_ctx_t> -> IO <gpgme_keylist_mode_t>+#ccall gpgme_set_passphrase_cb , <gpgme_ctx_t> -> <gpgme_passphrase_cb_t> -> Ptr () -> IO ()+#ccall gpgme_get_passphrase_cb , <gpgme_ctx_t> -> Ptr <gpgme_passphrase_cb_t> -> Ptr (Ptr ()) -> IO ()+#ccall gpgme_set_progress_cb , <gpgme_ctx_t> -> <gpgme_progress_cb_t> -> Ptr () -> IO ()+#ccall gpgme_get_progress_cb , <gpgme_ctx_t> -> Ptr <gpgme_progress_cb_t> -> Ptr (Ptr ()) -> IO ()+#ccall gpgme_set_locale , <gpgme_ctx_t> -> CInt -> CString -> IO <gpgme_error_t>+#ccall gpgme_ctx_get_engine_info , <gpgme_ctx_t> -> IO <gpgme_engine_info_t>+#ccall gpgme_ctx_set_engine_info , <gpgme_ctx_t> -> <gpgme_protocol_t> -> CString -> CString -> IO <gpgme_error_t>+#ccall gpgme_pubkey_algo_name , <gpgme_pubkey_algo_t> -> IO CString+#ccall gpgme_hash_algo_name , <gpgme_hash_algo_t> -> IO CString+#ccall gpgme_signers_clear , <gpgme_ctx_t> -> IO ()+#ccall gpgme_signers_add , <gpgme_ctx_t> -> <gpgme_key_t> -> IO <gpgme_error_t>+#ccall gpgme_signers_enum , <gpgme_ctx_t> -> CInt -> IO <gpgme_key_t>+#ccall gpgme_sig_notation_clear , <gpgme_ctx_t> -> IO ()+#ccall gpgme_sig_notation_add , <gpgme_ctx_t> -> CString -> CString -> <gpgme_sig_notation_flags_t> -> IO <gpgme_error_t>+#ccall gpgme_sig_notation_get , <gpgme_ctx_t> -> IO <gpgme_sig_notation_t>++#callback gpgme_io_cb_t , Ptr () -> CInt -> IO <gpgme_error_t>+#callback gpgme_register_io_cb_t , Ptr () -> CInt -> CInt -> <gpgme_io_cb_t> -> Ptr () -> Ptr (Ptr ()) -> IO <gpgme_error_t>+#callback gpgme_remove_io_cb_t , Ptr () -> IO ()++#integral_t gpgme_event_io_t+#num GPGME_EVENT_START+#num GPGME_EVENT_DONE+#num GPGME_EVENT_NEXT_KEY+#num GPGME_EVENT_NEXT_TRUSTITEM++#callback gpgme_event_io_cb_t , Ptr () -> <gpgme_event_io_t> -> Ptr () -> IO ()++#starttype struct gpgme_io_cbs+#field add , <gpgme_register_io_cb_t>+#field add_priv , Ptr ()+#field remove , <gpgme_remove_io_cb_t>+#field event , <gpgme_event_io_cb_t>+#field event_priv , Ptr ()+#stoptype++#synonym_t gpgme_io_cbs_t , Ptr <gpgme_io_cbs>++#ccall gpgme_set_io_cbs , <gpgme_ctx_t> -> <gpgme_io_cbs_t> -> IO ()+#ccall gpgme_get_io_cbs , <gpgme_ctx_t> -> <gpgme_io_cbs_t> -> IO ()+#ccall gpgme_wait , <gpgme_ctx_t> -> Ptr <gpgme_error_t> -> CInt -> IO <gpgme_ctx_t>++#callback gpgme_data_read_cb_t , Ptr () -> Ptr () -> CSize -> IO <ssize_t>+#callback gpgme_data_write_cb_t , Ptr () -> Ptr () -> CSize -> IO <ssize_t>+#callback gpgme_data_seek_cb_t , Ptr () -> <off_t> -> CInt -> IO <off_t>+#callback gpgme_data_release_cb_t , Ptr () -> IO ()++#starttype struct gpgme_data_cbs+#field read , <gpgme_data_read_cb_t>+#field write , <gpgme_data_write_cb_t>+#field seek , <gpgme_data_seek_cb_t>+#field release , <gpgme_data_release_cb_t>+#stoptype++#synonym_t gpgme_data_cbs_t , Ptr <gpgme_data_cbs>++#ccall gpgme_data_read , <gpgme_data_t> -> Ptr () -> CSize -> IO <ssize_t>+#ccall gpgme_data_write , <gpgme_data_t> -> Ptr () -> CSize -> IO <ssize_t>+#ccall gpgme_data_seek , <gpgme_data_t> -> <off_t> -> CInt -> IO <off_t>+#ccall gpgme_data_new , Ptr <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_data_release , <gpgme_data_t> -> IO ()+#ccall gpgme_data_new_from_mem , Ptr <gpgme_data_t> -> CString -> CSize -> CInt -> IO <gpgme_error_t>+#ccall gpgme_data_release_and_get_mem , <gpgme_data_t> -> Ptr CSize -> IO CString+#ccall gpgme_free , Ptr () -> IO ()+#ccall gpgme_data_new_from_cbs , Ptr <gpgme_data_t> -> <gpgme_data_cbs_t> -> Ptr () -> IO <gpgme_error_t>+#ccall gpgme_data_new_from_fd , Ptr <gpgme_data_t> -> CInt -> IO <gpgme_error_t>+#ccall gpgme_data_new_from_stream , Ptr <gpgme_data_t> -> Ptr CFile -> IO <gpgme_error_t>+#ccall gpgme_data_get_encoding , <gpgme_data_t> -> IO <gpgme_data_encoding_t>+#ccall gpgme_data_set_encoding , <gpgme_data_t> -> <gpgme_data_encoding_t> -> IO <gpgme_error_t>+#ccall gpgme_data_get_file_name , <gpgme_data_t> -> IO CString+#ccall gpgme_data_set_file_name , <gpgme_data_t> -> CString -> IO <gpgme_error_t>+#ccall gpgme_data_new_from_file , Ptr <gpgme_data_t> -> CString -> CInt -> IO <gpgme_error_t>+#ccall gpgme_data_new_from_filepart , Ptr <gpgme_data_t> -> CString -> Ptr CFile -> <off_t> -> CSize -> IO <gpgme_error_t>+#ccall gpgme_get_key , <gpgme_ctx_t> -> CString -> Ptr <gpgme_key_t> -> CInt -> IO <gpgme_error_t>+#ccall gpgme_key_ref , <gpgme_key_t> -> IO ()+#ccall gpgme_key_unref , <gpgme_key_t> -> IO ()+#ccall gpgme_key_release , <gpgme_key_t> -> IO ()+#ccall gpgme_cancel , <gpgme_ctx_t> -> IO <gpgme_error_t>+#ccall gpgme_cancel_async , <gpgme_ctx_t> -> IO <gpgme_error_t>++#integral_t gpgme_invalid_key_t++#integral_t gpgme_encrypt_result_t++#ccall gpgme_op_encrypt_result , <gpgme_ctx_t> -> IO <gpgme_encrypt_result_t>++#integral_t gpgme_encrypt_flags_t+#num GPGME_ENCRYPT_ALWAYS_TRUST++#ccall gpgme_op_encrypt_start , <gpgme_ctx_t> -> Ptr <gpgme_key_t> -> <gpgme_encrypt_flags_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_encrypt , <gpgme_ctx_t> -> Ptr <gpgme_key_t> -> <gpgme_encrypt_flags_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_encrypt_sign_start , <gpgme_ctx_t> -> Ptr <gpgme_key_t> -> <gpgme_encrypt_flags_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_encrypt_sign , <gpgme_ctx_t> -> Ptr <gpgme_key_t> -> <gpgme_encrypt_flags_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>++#integral_t gpgme_recipient_t+#integral_t gpgme_decrypt_result_t++#ccall gpgme_op_decrypt_result , <gpgme_ctx_t> -> IO <gpgme_decrypt_result_t>+#ccall gpgme_op_decrypt_start , <gpgme_ctx_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_decrypt , <gpgme_ctx_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_decrypt_verify_start , <gpgme_ctx_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_decrypt_verify , <gpgme_ctx_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>++#integral_t gpgme_new_signature_t+#integral_t gpgme_sign_result_t++#ccall gpgme_op_sign_result , <gpgme_ctx_t> -> IO <gpgme_sign_result_t>+#ccall gpgme_op_sign_start , <gpgme_ctx_t> -> <gpgme_data_t> -> <gpgme_data_t> -> <gpgme_sig_mode_t> -> IO <gpgme_error_t>+#ccall gpgme_op_sign , <gpgme_ctx_t> -> <gpgme_data_t> -> <gpgme_data_t> -> <gpgme_sig_mode_t> -> IO <gpgme_error_t>++#integral_t gpgme_sigsum_t+#num GPGME_SIGSUM_VALID+#num GPGME_SIGSUM_GREEN+#num GPGME_SIGSUM_RED+#num GPGME_SIGSUM_KEY_REVOKED+#num GPGME_SIGSUM_KEY_EXPIRED+#num GPGME_SIGSUM_SIG_EXPIRED+#num GPGME_SIGSUM_KEY_MISSING+#num GPGME_SIGSUM_CRL_MISSING+#num GPGME_SIGSUM_CRL_TOO_OLD+#num GPGME_SIGSUM_BAD_POLICY+#num GPGME_SIGSUM_SYS_ERROR++#integral_t gpgme_signature_t+#integral_t  gpgme_verify_result_t++#ccall gpgme_op_verify_result , <gpgme_ctx_t> -> IO <gpgme_verify_result_t>+#ccall gpgme_op_verify_start , <gpgme_ctx_t> -> <gpgme_data_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_verify , <gpgme_ctx_t> -> <gpgme_data_t> -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>++#num GPGME_IMPORT_NEW+#num GPGME_IMPORT_UID+#num GPGME_IMPORT_SIG+#num GPGME_IMPORT_SUBKEY+#num GPGME_IMPORT_SECRET++#integral_t gpgme_import_status_t+#integral_t gpgme_import_result_t++#ccall gpgme_op_import_result , <gpgme_ctx_t> -> IO <gpgme_import_result_t>+#ccall gpgme_op_import_start , <gpgme_ctx_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_import , <gpgme_ctx_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_export_start , <gpgme_ctx_t> -> CString -> CUInt -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_export , <gpgme_ctx_t> -> CString -> CUInt -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_export_ext_start , <gpgme_ctx_t> -> Ptr CString -> CUInt -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_export_ext , <gpgme_ctx_t> -> Ptr CString -> CUInt -> <gpgme_data_t> -> IO <gpgme_error_t>++#integral_t gpgme_genkey_result_t++#ccall gpgme_op_genkey_start , <gpgme_ctx_t> -> CString -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_genkey , <gpgme_ctx_t> -> CString -> <gpgme_data_t> -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_genkey_result , <gpgme_ctx_t> -> IO <gpgme_genkey_result_t>+#ccall gpgme_op_delete_start , <gpgme_ctx_t> -> <gpgme_key_t> -> CInt -> IO <gpgme_error_t>+#ccall gpgme_op_delete , <gpgme_ctx_t> -> <gpgme_key_t> -> CInt -> IO <gpgme_error_t>+#ccall gpgme_op_edit_start , <gpgme_ctx_t> -> <gpgme_key_t> -> <gpgme_edit_cb_t> -> Ptr () -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_edit , <gpgme_ctx_t> -> <gpgme_key_t> -> <gpgme_edit_cb_t> -> Ptr () -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_card_edit_start , <gpgme_ctx_t> -> <gpgme_key_t> -> <gpgme_edit_cb_t> -> Ptr () -> <gpgme_data_t> -> IO <gpgme_error_t>+#ccall gpgme_op_card_edit , <gpgme_ctx_t> -> <gpgme_key_t> -> <gpgme_edit_cb_t> -> Ptr () -> <gpgme_data_t> -> IO <gpgme_error_t>++#integral_t  gpgme_keylist_result_t++#ccall gpgme_op_keylist_result , <gpgme_ctx_t> -> IO <gpgme_keylist_result_t>+#ccall gpgme_op_keylist_start , <gpgme_ctx_t> -> CString -> CInt -> IO <gpgme_error_t>+#ccall gpgme_op_keylist_ext_start , <gpgme_ctx_t> -> Ptr CString -> CInt -> CInt -> IO <gpgme_error_t>+#ccall gpgme_op_keylist_next , <gpgme_ctx_t> -> Ptr <gpgme_key_t> -> IO <gpgme_error_t>+#ccall gpgme_op_keylist_end , <gpgme_ctx_t> -> IO <gpgme_error_t>++#integral_t gpgme_trust_item_t++#ccall gpgme_op_trustlist_start , <gpgme_ctx_t> -> CString -> CInt -> IO <gpgme_error_t>+#ccall gpgme_op_trustlist_next , <gpgme_ctx_t> -> Ptr <gpgme_trust_item_t> -> IO <gpgme_error_t>+#ccall gpgme_op_trustlist_end , <gpgme_ctx_t> -> IO <gpgme_error_t>+#ccall gpgme_trust_item_ref , <gpgme_trust_item_t> -> IO ()+#ccall gpgme_trust_item_unref , <gpgme_trust_item_t> -> IO ()+#ccall gpgme_op_getauditlog_start , <gpgme_ctx_t> -> <gpgme_data_t> -> CUInt -> IO <gpgme_error_t>+#ccall gpgme_op_getauditlog , <gpgme_ctx_t> -> <gpgme_data_t> -> CUInt -> IO <gpgme_error_t>++#integral_t gpgme_conf_level_t+#num GPGME_CONF_BASIC+#num GPGME_CONF_ADVANCED+#num GPGME_CONF_EXPERT+#num GPGME_CONF_INVISIBLE+#num GPGME_CONF_INTERNAL++#integral_t gpgme_conf_type_t+#num GPGME_CONF_NONE+#num GPGME_CONF_STRING+#num GPGME_CONF_INT32+#num GPGME_CONF_UINT32+#num GPGME_CONF_FILENAME+#num GPGME_CONF_LDAP_SERVER+#num GPGME_CONF_KEY_FPR+#num GPGME_CONF_PUB_KEY+#num GPGME_CONF_SEC_KEY+#num GPGME_CONF_ALIAS_LIST++#starttype struct gpgme_conf_arg+#field next , Ptr <gpgme_conf_arg>+#field no_arg , CUInt+#field value.count , CUInt+#field value.uint32 , CUInt+#field value.int32 , CInt+#field value.string , CString+#stoptype++#synonym_t gpgme_conf_arg_t , Ptr <gpgme_conf_arg>++#num GPGME_CONF_GROUP+#num GPGME_CONF_OPTIONAL+#num GPGME_CONF_LIST+#num GPGME_CONF_RUNTIME+#num GPGME_CONF_DEFAULT+#num GPGME_CONF_DEFAULT_DESC+#num GPGME_CONF_NO_ARG_DESC+#num GPGME_CONF_NO_CHANGE++#starttype struct gpgme_conf_opt+#field next , Ptr <gpgme_conf_opt>+#field name , CString+#field flags , CUInt+#field level , <gpgme_conf_level_t>+#field description , CString+#field type , <gpgme_conf_type_t>+#field alt_type , <gpgme_conf_type_t>+#field argname , CString+#field default_value , <gpgme_conf_arg_t>+#field default_description , CString+#field no_arg_value , <gpgme_conf_arg_t>+#field no_arg_description , CString+#field value , <gpgme_conf_arg_t>+#field change_value , CInt+#field new_value , <gpgme_conf_arg_t>+#field user_data , Ptr ()+#stoptype++#synonym_t gpgme_conf_opt_t , Ptr <gpgme_conf_opt>++#starttype struct gpgme_conf_comp+#field next , Ptr <gpgme_conf_comp>+#field name , CString+#field description , CString+#field program_name , CString+#field options , Ptr <gpgme_conf_opt>+#stoptype++#synonym_t gpgme_conf_comp_t , Ptr <gpgme_conf_comp>++#ccall gpgme_conf_arg_new , Ptr <gpgme_conf_arg_t> -> <gpgme_conf_type_t> -> Ptr () -> IO <gpgme_error_t>+#ccall gpgme_conf_arg_release , <gpgme_conf_arg_t> -> <gpgme_conf_type_t> -> IO ()+#ccall gpgme_conf_opt_change , <gpgme_conf_opt_t> -> CInt -> <gpgme_conf_arg_t> -> IO <gpgme_error_t>+#ccall gpgme_conf_release , <gpgme_conf_comp_t> -> IO ()+#ccall gpgme_op_conf_load , <gpgme_ctx_t> -> Ptr <gpgme_conf_comp_t> -> IO <gpgme_error_t>+#ccall gpgme_op_conf_save , <gpgme_ctx_t> -> <gpgme_conf_comp_t> -> IO <gpgme_error_t>+#ccall gpgme_check_version , CString -> IO CString+#ccall gpgme_get_engine_info , Ptr <gpgme_engine_info_t> -> IO <gpgme_error_t>+#ccall gpgme_set_engine_info , <gpgme_protocol_t> -> CString -> CString -> IO <gpgme_error_t>+#ccall gpgme_engine_check_version , <gpgme_protocol_t> -> IO <gpgme_error_t>+
+ src/inlines.c view
@@ -0,0 +1,2 @@+#include <bindings.cmacros.h>+#include <gpgme.h>