2004-09-30 Marcus Brinkmann <marcus@g10code.de>
[gpgme.git] / gpgme / gpgme.h
index 1e17488..a95a6e8 100644 (file)
@@ -1,6 +1,6 @@
 /* gpgme.h - Public interface to GnuPG Made Easy.
    Copyright (C) 2000 Werner Koch (dd9jn)
-   Copyright (C) 2001, 2002, 2003 g10 Code GmbH
+   Copyright (C) 2001, 2002, 2003, 2004 g10 Code GmbH
 
    This file is part of GPGME.
  
@@ -37,6 +37,9 @@
   typedef long ssize_t;
 #else
 # include <sys/types.h>
+#ifdef _WIN32
+typedef long ssize_t;
+#endif
 #endif
 
 #ifdef __cplusplus
@@ -44,7 +47,7 @@ extern "C" {
 #if 0 /* just to make Emacs auto-indent happy */
 }
 #endif
-#endif
+#endif /* __cplusplus */
 
 #include <gpg-error.h>
 
@@ -71,7 +74,7 @@ extern "C" {
    AM_PATH_GPGME macro) check that this header matches the installed
    library.  Warning: Do not edit the next line.  configure will do
    that for you!  */
-#define GPGME_VERSION "0.4.4"
+#define GPGME_VERSION "0.9.1-cvs"
 
 \f
 /* Some opaque data types used by GPGME.  */
@@ -302,6 +305,15 @@ typedef enum
 gpgme_protocol_t;
 
 \f
+/* 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_VALIDATE    256
+
+typedef unsigned int gpgme_keylist_mode_t;
+
+\f
 /* The possible stati for the edit operation.  */
 typedef enum
   {
@@ -384,7 +396,9 @@ typedef enum
     GPGME_STATUS_EXPSIG,
     GPGME_STATUS_EXPKEYSIG,
     GPGME_STATUS_TRUNCATED,
-    GPGME_STATUS_ERROR
+    GPGME_STATUS_ERROR,
+    GPGME_STATUS_NEWSIG,
+    GPGME_STATUS_REVKEYSIG
   }
 gpgme_status_code_t;
 
@@ -473,7 +487,7 @@ struct _gpgme_key_sig
 {
   struct _gpgme_key_sig *next;
 
-  /* True if the signature is revoked.  */
+  /* True if the signature is a revocation signature.  */
   unsigned int revoked : 1;
 
   /* True if the signature is expired.  */
@@ -506,8 +520,12 @@ struct _gpgme_key_sig
   /* Same as in gpgme_signature_t.  */
   gpgme_error_t status;
 
-  /* Crypto backend specific signature class.  */
-  unsigned int class;
+#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;
@@ -520,6 +538,9 @@ struct _gpgme_key_sig
 
   /* The comment part of the user ID.  */
   char *comment;
+
+  /* Crypto backend specific signature class.  */
+  unsigned int sig_class;
 };
 typedef struct _gpgme_key_sig *gpgme_key_sig_t;
 
@@ -628,6 +649,9 @@ struct _gpgme_key
 
   /* 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;
 
@@ -686,15 +710,6 @@ 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);
 
-/* The available keylist mode flags.  */
-typedef enum
-  {
-    GPGME_KEYLIST_MODE_LOCAL  = 1,
-    GPGME_KEYLIST_MODE_EXTERN = 2,
-    GPGME_KEYLIST_MODE_SIGS   = 4
-  }
-gpgme_keylist_mode_t;
-
 /* Set keylist mode in CTX to MODE.  */
 gpgme_error_t gpgme_set_keylist_mode (gpgme_ctx_t ctx,
                                      gpgme_keylist_mode_t mode);
@@ -987,6 +1002,10 @@ unsigned long gpgme_key_sig_get_ulong_attr (gpgme_key_t key, int uid_idx,
 \f
 /* Crypto Operations.  */
 
+/* Cancel a pending asynchronous operation.  */
+gpgme_error_t gpgme_cancel (gpgme_ctx_t ctx);
+
+\f
 struct _gpgme_invalid_key
 {
   struct _gpgme_invalid_key *next;
@@ -1040,6 +1059,12 @@ gpgme_error_t gpgme_op_encrypt_sign (gpgme_ctx_t ctx, gpgme_key_t recp[],
 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;
 };
 typedef struct _gpgme_op_decrypt_result *gpgme_decrypt_result_t;
 
@@ -1086,8 +1111,15 @@ struct _gpgme_new_signature
   /* 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 class;
+  unsigned int sig_class;
 };
 typedef struct _gpgme_new_signature *gpgme_new_signature_t;
 
@@ -1162,7 +1194,8 @@ struct _gpgme_signature
   /* Signature exipration time or 0.  */
   unsigned long exp_timestamp;
 
-  int wrong_key_usage : 1;
+  /* Key should not have been used for signing.  */
+  unsigned int wrong_key_usage : 1;
 
   /* Internal to GPGME, do not use.  */
   int _unused : 31;
@@ -1191,23 +1224,22 @@ gpgme_error_t gpgme_op_verify (gpgme_ctx_t ctx, gpgme_data_t sig,
 
 \f
 /* Import.  */
-enum
-  {
-    /* The key was new.  */
-    GPGME_IMPORT_NEW = 1,
 
-    /* The key contained new user IDs.  */
-    GPGME_IMPORT_UID = 2,
+/* 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 signatures.  */
-    GPGME_IMPORT_SIG = 4,
+/* The key contained new sub keys.  */
+#define GPGME_IMPORT_SUBKEY    8
 
-    /* The key contained new sub keys.  */
-    GPGME_IMPORT_SUBKEY        = 8,
+/* The key contained a secret key.  */
+#define GPGME_IMPORT_SECRET    16
 
-    /* The key contained a secret key.  */
-    GPGME_IMPORT_SECRET = 16
-  };
 
 struct _gpgme_import_status
 {