Add public function gpgme_set_pinentry_mode.
[gpgme.git] / src / context.h
index ed5d850..e921436 100644 (file)
@@ -1,23 +1,22 @@
 /* context.h - Definitions for a GPGME context.
    Copyright (C) 2000 Werner Koch (dd9jn)
-   Copyright (C) 2001, 2002, 2003, 2004, 2005 g10 Code GmbH
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2010 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, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   License along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
 
 #ifndef CONTEXT_H
 #define CONTEXT_H
@@ -28,6 +27,8 @@
 #include "sema.h"
 
 \f
+extern gpgme_error_t _gpgme_selftest;
+
 /* Operations might require to remember arbitrary information and data
    objects during invocations of the status handler.  The
    ctx_op_data structure provides a generic framework to hook in
@@ -36,14 +37,21 @@ typedef enum
   {
     OPDATA_DECRYPT, OPDATA_SIGN, OPDATA_ENCRYPT, OPDATA_PASSPHRASE,
     OPDATA_IMPORT, OPDATA_GENKEY, OPDATA_KEYLIST, OPDATA_EDIT,
-    OPDATA_VERIFY, OPDATA_TRUSTLIST
+    OPDATA_VERIFY, OPDATA_TRUSTLIST, OPDATA_ASSUAN, OPDATA_VFS_MOUNT,
+    OPDATA_PASSWD
   } ctx_op_data_id_t;
 
 
+/* "gpgmeres" in ASCII.  */
+#define CTX_OP_DATA_MAGIC 0x736572656d677067ULL
 struct ctx_op_data
 {
+  /* A magic word just to make sure people don't deallocate something
+     that ain't a result structure.  */
+  unsigned long long magic;
+
   /* The next element in the linked list, or NULL if this is the last
-     element.  */
+     element.  Used by op data structures linked into a context.  */
   struct ctx_op_data *next;
 
   /* The type of the hook data, which can be used by a routine to
@@ -51,11 +59,14 @@ struct ctx_op_data
   ctx_op_data_id_t type;
 
   /* The function to release HOOK and all its associated resources.
-     Can be NULL if no special dealllocation routine is necessary.  */
+     Can be NULL if no special deallocation routine is necessary.  */
   void (*cleanup) (void *hook);
 
   /* The hook that points to the operation data.  */
   void *hook;
+
+  /* The number of outstanding references.  */
+  int references;
 };
 typedef struct ctx_op_data *ctx_op_data_t;
 
@@ -78,6 +89,9 @@ struct gpgme_context
   /* The running engine process.  */
   engine_t engine;
 
+  /* Engine's sub protocol.  */
+  gpgme_protocol_t sub_protocol;
+
   /* True if armor mode should be used.  */
   unsigned int use_armor : 1;
 
@@ -87,6 +101,9 @@ struct gpgme_context
   /* Flags for keylist mode.  */
   gpgme_keylist_mode_t keylist_mode;
 
+  /* The current pinnetry mode.  */
+  gpgme_pinentry_mode_t pinentry_mode;
+
   /* Number of certs to be included.  */
   unsigned int include_certs;