keylist does now return objects.
[gpgme.git] / gpgme / gpgme.h
index 4969c8e..c32449c 100644 (file)
 #ifndef GPGME_H
 #define GPGME_H
 #ifdef __cplusplus
-extern "C" {
+extern "C" { 
+#if 0 /* just to make Emacs auto-indent happy */
+}
+#endif
 #endif
 
+struct gpgme_context_s;
+typedef struct gpgme_context_s *GpgmeCtx;
+
+struct gpgme_data_s;
+typedef struct gpgme_data_s *GpgmeData;
+
+struct gpgme_recipient_set_s;
+typedef struct gpgme_recipient_set_s *GpgmeRecipientSet;
+
+struct gpgme_key_s;
+typedef struct gpgme_key_s *GpgmeKey;
+
+
+typedef enum {
+    GPGME_EOF = -1,
+    GPGME_No_Error = 0,
+    GPGME_General_Error = 1,
+    GPGME_Out_Of_Core = 2,
+    GPGME_Invalid_Value = 3,
+    GPGME_Busy = 4,
+    GPGME_No_Request = 5,
+    GPGME_Exec_Error = 6,
+    GPGME_Too_Many_Procs = 7,
+    GPGME_Pipe_Error = 8,
+    GPGME_No_Recipients = 9,
+    GPGME_No_Data = 10,
+    GPGME_Conflict = 11,
+    GPGME_Not_Implemented = 12,
+    GPGME_Read_Error = 13,
+    GPGME_Write_Error = 14,
+    GPGME_Invalid_Type = 15,
+    GPGME_Invalid_Mode = 16,
+} GpgmeError;
+
+typedef enum {
+    GPGME_DATA_TYPE_NONE = 0,
+    GPGME_DATA_TYPE_MEM  = 1,
+    GPGME_DATA_TYPE_FD   = 2,
+    GPGME_DATA_TYPE_FILE = 3
+} GpgmeDataType;
+
+
+/* Context management */
+GpgmeError gpgme_new_context (GpgmeCtx *r_ctx);
+void       gpgme_release_context ( GpgmeCtx c );
+GpgmeCtx   gpgme_wait ( GpgmeCtx c, int hang );
+
+/* Functions to handle recipients */
+GpgmeError   gpgme_new_recipient_set (GpgmeRecipientSet *r_rset);
+void         gpgme_release_recipient_set ( GpgmeRecipientSet rset);
+GpgmeError   gpgme_add_recipient (GpgmeRecipientSet rset, const char *name);
+unsigned int gpgme_count_recipients ( const GpgmeRecipientSet rset );
+
+/* Functions to handle data sources */
+GpgmeError gpgme_new_data ( GpgmeData *r_dh,
+                                const char *buffer, size_t size, int copy );
+void gpgme_release_data ( GpgmeData dh );
+GpgmeDataType gpgme_query_data_type ( GpgmeData dh );
+GpgmeError gpgme_rewind_data ( GpgmeData dh );
+GpgmeError gpgme_read_data ( GpgmeData dh,
+                             char *buffer, size_t length, size_t *nread );
+
+
+
+/* Basic GnuPG functions */
+GpgmeError gpgme_start_encrypt ( GpgmeCtx c, GpgmeRecipientSet recp,
+                                 GpgmeData in, GpgmeData out );
+GpgmeError gpgme_start_verify ( GpgmeCtx c,  GpgmeData sig, GpgmeData text );
+
+
+/* Key management functions */
+GpgmeError gpgme_keylist_start ( GpgmeCtx c,
+                                 const char *pattern, int secret_only );
+GpgmeError gpgme_keylist_next ( GpgmeCtx c, GpgmeKey *r_key );
+
+
+
+
+
+
+/* Convenience functions for syncronous usage */
+GpgmeError gpgme_encrypt ( GpgmeCtx c, GpgmeRecipientSet recp,
+                           GpgmeData in, GpgmeData out );
+GpgmeError gpgme_verify ( GpgmeCtx c, GpgmeData sig, GpgmeData text );
+
+
+/* miscellaneous functions */
+const char *gpgme_strerror (GpgmeError err);
 
 
 #ifdef __cplusplus
@@ -35,3 +126,5 @@ extern "C" {
 
 
 
+
+