/[winpt]/trunk/Include/wptGPG.h
ViewVC logotype

Annotation of /trunk/Include/wptGPG.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (hide annotations)
Mon Jan 31 11:02:21 2005 UTC (20 years, 1 month ago) by twoaday
File MIME type: text/plain
File size: 6702 byte(s)
WinPT initial checkin.


1 twoaday 2 /* wptGPG.h - GnuPG interface
2     * Copyright (C) 2000-2005 Timo Schulz
3     *
4     * This file is part of WinPT.
5     *
6     * WinPT is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU General Public License
8     * as published by the Free Software Foundation; either version 2
9     * of the License, or (at your option) any later version.
10     *
11     * WinPT 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 GNU
14     * General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with WinPT; if not, write to the Free Software Foundation,
18     * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19     */
20    
21     #ifndef WPT_GPG_H
22     #define WPT_GPG_H
23    
24     #include "wptNLS.h"
25     #include "gpgme.h"
26    
27     #define NO_STRICT 0
28    
29     enum {
30     SETUP_KEYGEN = 1,
31     SETUP_IMPORT = 2,
32     SETUP_EXISTING = 3
33     };
34    
35     enum {
36     GPG_CMD_DECRYPT = 0,
37     GPG_CMD_SIGN = 1
38     };
39    
40     enum {
41     KEYCACHE_PRV = 0,
42     KEYCACHE_PUB = 1
43     };
44    
45     enum {
46     ENTRY_OPAQUE = 1,
47     ENTRY_SINGLE = 2,
48     ENTRY_MULTI = 3,
49     ENTRY_GROUP = 4,
50     };
51    
52     struct gpg_filetype {
53     const char *descr;
54     const char *ext;
55     int nicon;
56     };
57    
58     struct refresh_cache_s {
59     int kr_reload;
60     int kr_update;
61     int tr_update;
62     };
63    
64     struct gpg_option_s {
65     struct gpg_option_s * next;
66     char * name;
67     char * val;
68     unsigned int used:1;
69     int type;
70     };
71     typedef struct gpg_option_s * gpg_option_t;
72    
73     struct gpg_member_s {
74     struct gpg_member_s * next;
75     char * name;
76     unsigned int used:1;
77     };
78     typedef struct gpg_member_s * gpg_member_t;
79    
80     struct gpg_group_s {
81     struct gpg_group_s * next;
82     struct gpg_member_s * list;
83     char * name;
84     unsigned int used:1;
85     };
86     typedef struct gpg_group_s * gpg_group_t;
87    
88     struct gpg_optfile_s {
89     struct gpg_option_s * list;
90     struct gpg_group_s * grp;
91     };
92     typedef struct gpg_optfile_s * gpg_optfile_t;
93    
94     static gpg_filetype gpg_filetypes[] = {
95     {"GPG Detached Signature", ".sig", 1},
96     {"GPG Encrypted Data", ".gpg", 2},
97     {"GPG Armored Data", ".asc", 2},
98     {0}
99     };
100    
101     struct passphrase_cb_s {
102     int gpg_cmd;
103     gpgme_recipients_t enc_to;
104     int pwd_init;
105     char pwd[256];
106     char info[1024]; /* hold up the info message */
107     char title[256];
108     const char * keyid;
109     HWND hwnd;
110     int cancel;
111     int is_card;
112     };
113    
114     static const char * gpg_sigstat[] = {
115     _("Error during verification process."),
116     _("The signature is good."),
117     _("The signature is BAD!"),
118     _("The signature could not be checked due to a missing key."),
119     _("No valid OpenPGP signature."),
120     _("Signature Error"),
121     _("Good Signature (Expired Key)"),
122     _("Good Signature (Revoked Key)"),
123     NULL
124     };
125    
126     #define SIGSTAT_MASK 8
127    
128     extern int idea_available;
129    
130     /*-- wptGPG.cpp --*/
131     char* get_gnupg_default_key( void );
132     int set_gnupg_default_key( const char *key );
133     char* get_gnupg_config (void);
134     char* get_gnupg_keyring_from_options( const char *fname, int pub );
135     int check_gnupg_config (const char *fname, int *secrings, int *pubrings);
136     char* get_gnupg_path( void );
137     int check_gnupg_prog( void );
138     int gnupg_access_files (void);
139     char* get_gnupg_prog( void );
140     char* get_gnupg_keyring (int pub, int strict);
141     char* get_gnupg_cfgfile (void);
142     int set_gnupg_options( const char *buf, size_t buflen );
143    
144     int check_gnupg_options (const char *buf);
145     void init_gnupg_table (void);
146     void free_gnupg_table (void);
147     int keyring_check_last_access (void);
148     const char* gnupg_check_file_ext (const char * fname);
149     int gpg_check_permissions (int showmsg);
150     int gnupg_check_homedir (void);
151     int gnupg_access_keyring (int _pub);
152     void gnupg_backup_options (int keep);
153     void gnupg_backup_keyrings (void);
154     void gnupg_display_error (void);
155     int gnupg_copy_keyrings (void);
156     int check_gnupg_engine (int *r_major, int *r_minor, int *r_patch);
157    
158     gpgme_card_t smartcard_init (void);
159    
160     /*-- wptGPGME.cpp --*/
161     const char * get_signature_status( gpgme_sigstat_t sigstat );
162     void keycache_reload( HWND dlg );
163    
164     int get_pubkey( const char *keyid, gpgme_key_t *ret_key );
165     int get_seckey( const char *keyid, gpgme_key_t *ret_skey );
166    
167     void keycache_reload( HWND dlg );
168     void keycache_release( void );
169     gpgme_error_t keycache_init( const char *pubring, const char * secring );
170     void keycache_set_reload( int yes );
171     int keycache_get_reload( void );
172     gpgme_keycache_t keycache_get_ctx( int _pub );
173    
174     int count_insecure_elgkeys( void );
175    
176     int gpgme_encrypt_symmetric( void );
177    
178     #define gpgme_enable_logging( ctx ) \
179     gpgme_control( (ctx), GPGME_CTRL_LOGGING, 1 )
180    
181     #define gpgme_show_error( hwnd, rc, ctx, title, mode ) \
182     do { \
183     if( (rc) == GPGME_Interal_GPG_Problem && ctx ) { \
184     char * strerr = gpgme_get_logging( (ctx) ); \
185     msg_box( (hwnd), (strerr)? (strerr) : \
186     _("No GPG error description available."), title, mode );\
187     safe_free( strerr ); \
188     } \
189     else { \
190     msg_box( (hwnd), gpgme_strerror( (rc) ), \
191     title, mode ); \
192     } \
193     } while ( 0 )
194    
195     /*-- wptGPGParser.cpp --*/
196     /* find */
197     gpg_group_t find_group( gpg_optfile_t opt, const char *str );
198     gpg_option_t find_option( gpg_optfile_t opt, const char *str );
199     gpg_member_t find_member( gpg_optfile_t opt, const char *grp, const char *str );
200     /* delete */
201     int delete_group( gpg_optfile_t opt, const char *str );
202     int delete_member( gpg_optfile_t opt, const char *grp, const char *str );
203     int delete_option( gpg_optfile_t opt, const char *str );
204     /* add */
205     int modify_entry( gpg_optfile_t opt, int type, const char *name, const char *val );
206     int add_entry( gpg_optfile_t opt, int type, const char *name, const char *val );
207     int add_member( gpg_optfile_t opt, const char *grp, const char *str );
208     int add_group( gpg_optfile_t opt, const char *str );
209     /* high-level */
210     int parse_gpg_options( const char *file, gpg_optfile_t *r_opt );
211     int commit_gpg_options( const char *file, gpg_optfile_t opt );
212     void release_gpg_options( gpg_optfile_t opt );
213     /* memory */
214     void release_group( gpg_group_t grp );
215    
216     /*-- wptPassphraseCB.cpp --*/
217     void set_gpg_passphrase_cb( gpgme_ctx_t c, passphrase_cb_s * ctx, int cmd,
218     HWND hwnd, const char * title );
219     char * request_passphrase( const char * title, int init, int * ret_cancel );
220     char * request_passphrase2 (const char * title, int * ret_cancel);
221     const char * passphrase_cb( void * opaque, const char * desc, void * r_hd );
222     char * get_key_userid( const char * keyid );
223    
224     #endif /* WPT_GPG_H */

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26