Notation stuff added
[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 typedef enum {
72     GPGME_SIG_STAT_NONE = 0,
73     GPGME_SIG_STAT_GOOD = 1,
74     GPGME_SIG_STAT_BAD  = 2,
75     GPGME_SIG_STAT_NOKEY = 3,
76     GPGME_SIG_STAT_NOSIG = 4,
77     GPGME_SIG_STAT_ERROR = 5
78 } GpgmeSigStat;
79
80
81
82 /* Context management */
83 GpgmeError gpgme_new (GpgmeCtx *r_ctx);
84 void       gpgme_release ( GpgmeCtx c );
85 GpgmeCtx   gpgme_wait ( GpgmeCtx c, int hang );
86
87 char *gpgme_op_get_notation ( GpgmeCtx c );
88
89
90 /* Functions to handle recipients */
91 GpgmeError   gpgme_recipients_new (GpgmeRecipients *r_rset);
92 void         gpgme_recipients_release ( GpgmeRecipients rset);
93 GpgmeError   gpgme_recipients_add_name (GpgmeRecipients rset,
94                                         const char *name);
95 unsigned int gpgme_recipients_count ( const GpgmeRecipients rset );
96
97 /* Functions to handle data sources */
98 GpgmeError    gpgme_data_new ( GpgmeData *r_dh,
99                                const char *buffer, size_t size, int copy );
100 void          gpgme_data_release ( GpgmeData dh );
101 GpgmeDataType gpgme_data_get_type ( GpgmeData dh );
102 GpgmeError    gpgme_data_rewind ( GpgmeData dh );
103 GpgmeError    gpgme_data_read ( GpgmeData dh,
104                                 char *buffer, size_t length, size_t *nread );
105
106 /* Key functions */
107 char *gpgme_key_get_as_xml ( GpgmeKey key );
108
109
110 /* Basic GnuPG functions */
111 GpgmeError gpgme_op_encrypt_start ( GpgmeCtx c, GpgmeRecipients recp,
112                                     GpgmeData in, GpgmeData out );
113 GpgmeError gpgme_op_verify_start ( GpgmeCtx c,
114                                    GpgmeData sig, GpgmeData text );
115
116
117 /* Key management functions */
118 GpgmeError gpgme_op_keylist_start ( GpgmeCtx c,
119                                     const char *pattern, int secret_only );
120 GpgmeError gpgme_op_keylist_next ( GpgmeCtx c, GpgmeKey *r_key );
121
122
123 /* Convenience functions for normal usage */
124 GpgmeError gpgme_op_encrypt ( GpgmeCtx c, GpgmeRecipients recp,
125                               GpgmeData in, GpgmeData out );
126 GpgmeError gpgme_op_verify ( GpgmeCtx c, GpgmeData sig, GpgmeData text,
127                              GpgmeSigStat *r_status );
128
129
130 /* miscellaneous functions */
131 const char *gpgme_strerror (GpgmeError err);
132
133
134 #ifdef __cplusplus
135 }
136 #endif
137 #endif /* GPGME_H */
138
139
140
141
142
143
144