Started with --list-key
[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_recipient_set_s;
37 typedef struct gpgme_recipient_set_s *GpgmeRecipientSet;
38
39
40 typedef enum {
41     GPGME_EOF = -1,
42     GPGME_No_Error = 0,
43     GPGME_General_Error = 1,
44     GPGME_Out_Of_Core = 2,
45     GPGME_Invalid_Value = 3,
46     GPGME_Busy = 4,
47     GPGME_No_Request = 5,
48     GPGME_Exec_Error = 6,
49     GPGME_Too_Many_Procs = 7,
50     GPGME_Pipe_Error = 8,
51     GPGME_No_Recipients = 9,
52     GPGME_No_Data = 10,
53     GPGME_Conflict = 11,
54     GPGME_Not_Implemented = 12,
55     GPGME_Read_Error = 13,
56     GPGME_Write_Error = 14,
57     GPGME_Invalid_Type = 15,
58     GPGME_Invalid_Mode = 16,
59 } GpgmeError;
60
61 typedef enum {
62     GPGME_DATA_TYPE_NONE = 0,
63     GPGME_DATA_TYPE_MEM  = 1,
64     GPGME_DATA_TYPE_FD   = 2,
65     GPGME_DATA_TYPE_FILE = 3
66 } GpgmeDataType;
67
68
69 /* Context management */
70 GpgmeError gpgme_new_context (GpgmeCtx *r_ctx);
71 void       gpgme_release_context ( GpgmeCtx c );
72 GpgmeCtx   gpgme_wait ( GpgmeCtx c, int hang );
73
74 /* Functions to handle recipients */
75 GpgmeError   gpgme_new_recipient_set (GpgmeRecipientSet *r_rset);
76 void         gpgme_release_recipient_set ( GpgmeRecipientSet rset);
77 GpgmeError   gpgme_add_recipient (GpgmeRecipientSet rset, const char *name);
78 unsigned int gpgme_count_recipients ( const GpgmeRecipientSet rset );
79
80 /* Functions to handle data sources */
81 GpgmeError gpgme_new_data ( GpgmeData *r_dh,
82                                 const char *buffer, size_t size, int copy );
83 void gpgme_release_data ( GpgmeData dh );
84 GpgmeDataType gpgme_query_data_type ( GpgmeData dh );
85 GpgmeError gpgme_rewind_data ( GpgmeData dh );
86 GpgmeError gpgme_read_data ( GpgmeData dh,
87                              char *buffer, size_t length, size_t *nread );
88
89
90
91 /* Basic GnuPG functions */
92 GpgmeError gpgme_start_encrypt ( GpgmeCtx c, GpgmeRecipientSet recp,
93                                  GpgmeData in, GpgmeData out );
94 GpgmeError gpgme_start_verify ( GpgmeCtx c,  GpgmeData sig, GpgmeData text );
95
96
97 /* Key management functions */
98 GpgmeError gpgme_keylist_start ( GpgmeCtx c,
99                                  const char *pattern, int secret_only );
100
101
102
103
104
105
106 /* Convenience functions for syncronous usage */
107 GpgmeError gpgme_encrypt ( GpgmeCtx c, GpgmeRecipientSet recp,
108                            GpgmeData in, GpgmeData out );
109 GpgmeError gpgme_verify ( GpgmeCtx c, GpgmeData sig, GpgmeData text );
110
111
112 /* miscellaneous functions */
113 const char *gpgme_strerror (GpgmeError err);
114
115
116 #ifdef __cplusplus
117 }
118 #endif
119 #endif /* GPGME_H */
120
121
122
123
124
125
126