2004-09-30 Marcus Brinkmann <marcus@g10code.de>
[gpgme.git] / gpgme / context.h
index 26467ca..64c5276 100644 (file)
@@ -1,4 +1,4 @@
-/* context.h
+/* context.h - Definitions for a GPGME context.
    Copyright (C) 2000 Werner Koch (dd9jn)
    Copyright (C) 2001, 2002, 2003 g10 Code GmbH
 
@@ -22,7 +22,6 @@
 #define CONTEXT_H
 
 #include "gpgme.h"
-#include "types.h"
 #include "engine.h"
 #include "wait.h"
 
@@ -35,8 +34,9 @@ typedef enum
   {
     OPDATA_DECRYPT, OPDATA_SIGN, OPDATA_ENCRYPT, OPDATA_PASSPHRASE,
     OPDATA_IMPORT, OPDATA_GENKEY, OPDATA_KEYLIST, OPDATA_EDIT,
-    OPDATA_VERIFY_COLLECTING, OPDATA_VERIFY
-  } ctx_op_data_type;
+    OPDATA_VERIFY, OPDATA_TRUSTLIST
+  } ctx_op_data_id_t;
+
 
 struct ctx_op_data
 {
@@ -46,7 +46,7 @@ struct ctx_op_data
 
   /* The type of the hook data, which can be used by a routine to
      lookup the hook data.  */
-  ctx_op_data_type type;
+  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.  */
@@ -55,106 +55,57 @@ struct ctx_op_data
   /* The hook that points to the operation data.  */
   void *hook;
 };
+typedef struct ctx_op_data *ctx_op_data_t;
 
 \f
-struct key_queue_item_s
-{
-  struct key_queue_item_s *next;
-  GpgmeKey key;
-};
-
-
-struct trust_queue_item_s
+/* The context defines an environment in which crypto operations can
+   be performed (sequentially).  */
+struct gpgme_context
 {
-  struct trust_queue_item_s *next;
-  GpgmeTrustItem item;
-};
+  /* The protocol used by this context.  */
+  gpgme_protocol_t protocol;
 
+  /* The running engine process.  */
+  engine_t engine;
 
-/* Currently we need it at several places, so we put the definition
-   into this header file.  */
-struct gpgme_context_s
-{
-  int initialized;
-  /* An engine request is still pending.  */
-  int pending;
+  /* True if armor mode should be used.  */
+  unsigned int use_armor : 1;
 
-  int use_cms;
+  /* True if text mode should be used.  */
+  unsigned int use_textmode : 1;
 
-  /* Cancel operation requested.  */
-  int cancel;
+  /* Flags for keylist mode.  */
+  gpgme_keylist_mode_t keylist_mode;
 
-  /* The running engine process.  */
-  EngineObject engine;
-
-  /* Level of verbosity to use.  */
-  int verbosity;
-  int use_armor;  
-  int use_textmode;
-  int keylist_mode;
-  int include_certs;
+  /* Number of certs to be included.  */
+  unsigned int include_certs;
 
   /* The number of keys in signers.  */
-  int signers_len;
+  unsigned int signers_len;
+
   /* Size of the following array.  */
-  int signers_size;
-  GpgmeKey *signers;
+  unsigned int signers_size;
+  gpgme_key_t *signers;
+
+  /* The locale for the pinentry.  */
+  char *lc_ctype;
+  char *lc_messages;
 
   /* The operation data hooked into the context.  */
-  struct ctx_op_data *op_data;
-
-  /* Last signature notation.  */
-  GpgmeData notation;
-  /* Last operation info.  */
-  GpgmeData op_info;
-
-  /* Used by keylist.c.  */
-  GpgmeKey tmp_key;
-  struct user_id_s *tmp_uid;
-  /* Something new is available.  */
-  volatile int key_cond;
-  struct key_queue_item_s *key_queue;
-  struct trust_queue_item_s *trust_queue;
-
-  GpgmePassphraseCb passphrase_cb;
+  ctx_op_data_t op_data;
+
+  /* The user provided passphrase callback and its hook value.  */
+  gpgme_passphrase_cb_t passphrase_cb;
   void *passphrase_cb_value;
 
-  GpgmeProgressCb progress_cb;
+  /* The user provided progress callback and its hook value.  */
+  gpgme_progress_cb_t progress_cb;
   void *progress_cb_value;
 
   /* A list of file descriptors in active use by the current
      operation.  */
   struct fd_table fdt;
-  struct GpgmeIOCbs io_cbs;
-  
-  GpgmeData help_data_1;
-};
-
-/* Forward declaration of a structure to store certification
-   signatures.  */
-struct certsig_s;
-
-/* Structure to store user IDs.  */
-struct user_id_s
-{
-  struct user_id_s *next;
-  unsigned int revoked : 1;
-  unsigned int invalid : 1;
-  GpgmeValidity validity; 
-  struct certsig_s *certsigs;
-  struct certsig_s *last_certsig;
-  const char *name_part;       /* All 3 point into strings behind name  */
-  const char *email_part;      /* or to read-only strings.  */
-  const char *comment_part;
-  char name[1];
+  struct gpgme_io_cbs io_cbs;
 };
 
-
-struct gpgme_recipients_s
-{
-  struct user_id_s *list;
-  int checked; /* Whether the recipients are all valid.  */
-};
-
-
 #endif /* CONTEXT_H */