Reanmed public functions
[gpgme.git] / gpgme / gpgme.h
1 /* gpgme.h -  GnuPG Made Easy
2  *      Copyright (C) 2000 Werner Koch (dd9jn)
3  *
4  * This file is part of GPGME.
5  *
6  * GPGME is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * GPGME is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19  */
20
21 #ifndef GPGME_H
22 #define GPGME_H
23 #ifdef __cplusplus
24 extern "C" { 
25 #if 0 /* just to make Emacs auto-indent happy */
26 }
27 #endif
28 #endif
29
30 struct gpgme_context_s;
31 typedef struct gpgme_context_s *GpgmeCtx;
32
33 struct gpgme_data_s;
34 typedef struct gpgme_data_s *GpgmeData;
35
36 struct gpgme_recipients_s;
37 typedef struct gpgme_recipients_s *GpgmeRecipients;
38
39 struct gpgme_key_s;
40 typedef struct gpgme_key_s *GpgmeKey;
41
42
43 typedef enum {
44     GPGME_EOF = -1,
45     GPGME_No_Error = 0,
46     GPGME_General_Error = 1,
47     GPGME_Out_Of_Core = 2,
48     GPGME_Invalid_Value = 3,
49     GPGME_Busy = 4,
50     GPGME_No_Request = 5,
51     GPGME_Exec_Error = 6,
52     GPGME_Too_Many_Procs = 7,
53     GPGME_Pipe_Error = 8,
54     GPGME_No_Recipients = 9,
55     GPGME_No_Data = 10,
56     GPGME_Conflict = 11,
57     GPGME_Not_Implemented = 12,
58     GPGME_Read_Error = 13,
59     GPGME_Write_Error = 14,
60     GPGME_Invalid_Type = 15,
61     GPGME_Invalid_Mode = 16,
62 } GpgmeError;
63
64 typedef enum {
65     GPGME_DATA_TYPE_NONE = 0,
66     GPGME_DATA_TYPE_MEM  = 1,
67     GPGME_DATA_TYPE_FD   = 2,
68     GPGME_DATA_TYPE_FILE = 3
69 } GpgmeDataType;
70
71
72 /* Context management */
73 GpgmeError gpgme_new (GpgmeCtx *r_ctx);
74 void       gpgme_release ( GpgmeCtx c );
75 GpgmeCtx   gpgme_wait ( GpgmeCtx c, int hang );
76
77 /* Functions to handle recipients */
78 GpgmeError   gpgme_recipients_new (GpgmeRecipients *r_rset);
79 void         gpgme_recipients_release ( GpgmeRecipients rset);
80 GpgmeError   gpgme_recipients_add_name (GpgmeRecipients rset,
81                                         const char *name);
82 unsigned int gpgme_recipients_count ( const GpgmeRecipients rset );
83
84 /* Functions to handle data sources */
85 GpgmeError    gpgme_data_new ( GpgmeData *r_dh,
86                                const char *buffer, size_t size, int copy );
87 void          gpgme_data_release ( GpgmeData dh );
88 GpgmeDataType gpgme_data_get_type ( GpgmeData dh );
89 GpgmeError    gpgme_data_rewind ( GpgmeData dh );
90 GpgmeError    gpgme_data_read ( GpgmeData dh,
91                                 char *buffer, size_t length, size_t *nread );
92
93
94
95 /* Basic GnuPG functions */
96 GpgmeError gpgme_op_encrypt_start ( GpgmeCtx c, GpgmeRecipients recp,
97                                     GpgmeData in, GpgmeData out );
98 GpgmeError gpgme_op_verify_start ( GpgmeCtx c,
99                                    GpgmeData sig, GpgmeData text );
100
101
102 /* Key management functions */
103 GpgmeError gpgme_op_keylist_start ( GpgmeCtx c,
104                                     const char *pattern, int secret_only );
105 GpgmeError gpgme_op_keylist_next ( GpgmeCtx c, GpgmeKey *r_key );
106
107
108 /* Convenience functions for syncronous usage */
109 GpgmeError gpgme_op_encrypt ( GpgmeCtx c, GpgmeRecipients recp,
110                               GpgmeData in, GpgmeData out );
111 GpgmeError gpgme_op_verify ( GpgmeCtx c, GpgmeData sig, GpgmeData text );
112
113
114 /* miscellaneous functions */
115 const char *gpgme_strerror (GpgmeError err);
116
117
118 #ifdef __cplusplus
119 }
120 #endif
121 #endif /* GPGME_H */
122
123
124
125
126
127
128