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

Annotation of /trunk/Include/wptGPG.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 33 - (hide annotations)
Tue Oct 25 07:46:20 2005 UTC (19 years, 4 months ago) by twoaday
File MIME type: text/plain
File size: 8170 byte(s)
More bug fixes and cleanups.
See ChangeLog for details.

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 twoaday 23 #include "w32gpgme.h"
25 twoaday 32 #include "wptKeyCache.h"
26 twoaday 2 #include "wptNLS.h"
27    
28 twoaday 23
29 twoaday 2 #define NO_STRICT 0
30    
31 twoaday 23 #define key_is_useable(key) (!(key)->revoked && !(key)->expired && !(key)->disabled)
32    
33 twoaday 33 enum setup_t {
34 twoaday 2 SETUP_KEYGEN = 1,
35     SETUP_IMPORT = 2,
36     SETUP_EXISTING = 3
37     };
38    
39 twoaday 33 enum gpg_cmd_t {
40 twoaday 2 GPG_CMD_DECRYPT = 0,
41     GPG_CMD_SIGN = 1
42     };
43    
44 twoaday 33 enum keycache_t {
45 twoaday 2 KEYCACHE_PRV = 0,
46     KEYCACHE_PUB = 1
47     };
48    
49 twoaday 33 enum entry_t {
50 twoaday 2 ENTRY_OPAQUE = 1,
51     ENTRY_SINGLE = 2,
52     ENTRY_MULTI = 3,
53     ENTRY_GROUP = 4,
54     };
55    
56 twoaday 23 struct gpg_card_s;
57     typedef struct gpg_card_s * gpg_card_t;
58    
59     /* GPG file association context. */
60 twoaday 2 struct gpg_filetype {
61     const char *descr;
62     const char *ext;
63     int nicon;
64     };
65    
66 twoaday 23 /* Keycache refresh context. */
67 twoaday 2 struct refresh_cache_s {
68     int kr_reload;
69     int kr_update;
70     int tr_update;
71     };
72    
73     struct gpg_option_s {
74     struct gpg_option_s * next;
75     char * name;
76     char * val;
77     unsigned int used:1;
78     int type;
79     };
80     typedef struct gpg_option_s * gpg_option_t;
81    
82     struct gpg_member_s {
83     struct gpg_member_s * next;
84     char * name;
85     unsigned int used:1;
86     };
87     typedef struct gpg_member_s * gpg_member_t;
88    
89     struct gpg_group_s {
90     struct gpg_group_s * next;
91     struct gpg_member_s * list;
92     char * name;
93     unsigned int used:1;
94     };
95     typedef struct gpg_group_s * gpg_group_t;
96    
97     struct gpg_optfile_s {
98     struct gpg_option_s * list;
99     struct gpg_group_s * grp;
100     };
101     typedef struct gpg_optfile_s * gpg_optfile_t;
102    
103     static gpg_filetype gpg_filetypes[] = {
104     {"GPG Detached Signature", ".sig", 1},
105     {"GPG Encrypted Data", ".gpg", 2},
106     {"GPG Armored Data", ".asc", 2},
107     {0}
108     };
109    
110     struct passphrase_cb_s {
111 twoaday 33 int gpg_cmd; /* sign or decrypt. */
112     int pwd_init; /* 1 = passphrase request via dialog. */
113     char *pwd; /* actual passphrase. */
114     char info[1024]; /* hold up the info message */
115     char *title; /* dialog title. */
116     char keyid[16+1]; /* keyid of the secret key the pwd can be used for. */
117     HWND hwnd; /* handle of the dialog window. */
118     int cancel; /* 1 = user cancelled passphrase request. */
119     unsigned int is_card:1; /* 1 = key stored on a smart card. */
120     unsigned int bad_pwd:1; /* 1 = last passphrase was bad. */
121 twoaday 23 gpgme_ctx_t gpg;
122 twoaday 33 gpgme_recipient_t recipients;
123 twoaday 25 struct {
124     int sym_algo;
125     int s2k_mode;
126     int s2k_hash;
127     } sym;
128 twoaday 2 };
129    
130 twoaday 23
131 twoaday 2 static const char * gpg_sigstat[] = {
132     _("Error during verification process."),
133     _("The signature is good."),
134     _("The signature is BAD!"),
135     _("The signature could not be checked due to a missing key."),
136     _("No valid OpenPGP signature."),
137     _("Signature Error"),
138     _("Good Signature (Expired Key)"),
139     _("Good Signature (Revoked Key)"),
140     NULL
141     };
142    
143 twoaday 23 int sigsum_to_index (gpgme_sigsum_t sum);
144 twoaday 2 #define SIGSTAT_MASK 8
145 twoaday 23 #define get_gpg_sigstat(sum) gpg_sigstat[sigsum_to_index ((sum)) % SIGSTAT_MASK]
146 twoaday 2
147 twoaday 23 /* This variable is 1 if IDEA is available. */
148 twoaday 2 extern int idea_available;
149    
150     /*-- wptGPG.cpp --*/
151     char* get_gnupg_default_key( void );
152     int set_gnupg_default_key( const char *key );
153     char* get_gnupg_config (void);
154     char* get_gnupg_keyring_from_options( const char *fname, int pub );
155     int check_gnupg_config (const char *fname, int *secrings, int *pubrings);
156     char* get_gnupg_path( void );
157     int check_gnupg_prog( void );
158     int gnupg_access_files (void);
159     char* get_gnupg_prog( void );
160     char* get_gnupg_keyring (int pub, int strict);
161     char* get_gnupg_cfgfile (void);
162     int set_gnupg_options( const char *buf, size_t buflen );
163    
164     int check_gnupg_options (const char *buf);
165     void init_gnupg_table (void);
166     void free_gnupg_table (void);
167     int keyring_check_last_access (void);
168 twoaday 32 const char* gnupg_check_file_ext (const char *fname, int *r_type);
169 twoaday 2 int gpg_check_permissions (int showmsg);
170     int gnupg_check_homedir (void);
171     int gnupg_access_keyring (int _pub);
172 twoaday 23 void gnupg_backup_options ();
173 twoaday 2 void gnupg_backup_keyrings (void);
174     void gnupg_display_error (void);
175     int gnupg_copy_keyrings (void);
176     int check_gnupg_engine (int *r_major, int *r_minor, int *r_patch);
177    
178     /*-- wptGPGME.cpp --*/
179 twoaday 23 const char * get_signature_status( gpgme_sigsum_t sigstat );
180 twoaday 2 void keycache_reload( HWND dlg );
181    
182 twoaday 23 int get_pubkey (const char *keyid, gpgme_key_t *ret_key);
183     int winpt_get_pubkey (const char *keyid, struct winpt_key_s *k);
184     int get_seckey (const char *keyid, gpgme_key_t *ret_skey);
185     int winpt_get_seckey (const char *keyid, struct winpt_key_s *k);
186 twoaday 2
187     void keycache_reload( HWND dlg );
188 twoaday 25 void keycache_release (int cleanup);
189 twoaday 22 gpgme_error_t keycache_update (int is_sec, const char *keyid);
190 twoaday 2 gpgme_error_t keycache_init( const char *pubring, const char * secring );
191     void keycache_set_reload( int yes );
192     int keycache_get_reload( void );
193 twoaday 25 gpg_keycache_t keycache_get_ctx( int _pub );
194 twoaday 2
195 twoaday 25 int count_insecure_elgkeys (void);
196 twoaday 2
197 twoaday 25 int gpg_encrypt_symmetric (void);
198 twoaday 2
199    
200     /*-- wptGPGParser.cpp --*/
201     /* find */
202     gpg_group_t find_group( gpg_optfile_t opt, const char *str );
203     gpg_option_t find_option( gpg_optfile_t opt, const char *str );
204     gpg_member_t find_member( gpg_optfile_t opt, const char *grp, const char *str );
205     /* delete */
206     int delete_group( gpg_optfile_t opt, const char *str );
207     int delete_member( gpg_optfile_t opt, const char *grp, const char *str );
208     int delete_option( gpg_optfile_t opt, const char *str );
209     /* add */
210     int modify_entry( gpg_optfile_t opt, int type, const char *name, const char *val );
211     int add_entry( gpg_optfile_t opt, int type, const char *name, const char *val );
212     int add_member( gpg_optfile_t opt, const char *grp, const char *str );
213     int add_group( gpg_optfile_t opt, const char *str );
214     /* high-level */
215     int parse_gpg_options( const char *file, gpg_optfile_t *r_opt );
216     int commit_gpg_options( const char *file, gpg_optfile_t opt );
217     void release_gpg_options( gpg_optfile_t opt );
218     /* memory */
219     void release_group( gpg_group_t grp );
220    
221     /*-- wptPassphraseCB.cpp --*/
222 twoaday 33 enum passdlg_t {
223 twoaday 22 PASSDLG_REPEAT = 0,
224     PASSDLG_INIT = 1,
225     PASSDLG_STRICT = 2
226     };
227 twoaday 2
228 twoaday 23 void set_gpg_passphrase_cb (passphrase_cb_s *cb, gpgme_ctx_t ctx,
229     int cmd, HWND hwnd, const char *title);
230     void release_gpg_passphrase_cb (passphrase_cb_s *cb);
231    
232 twoaday 22 char * request_passphrase (const char *title, int flags, int *ret_cancel);
233     char * request_passphrase2 (const char *title, int flags, int *ret_cancel);
234     const char * passphrase_cb (void *opaque, const char * desc, void *r_hd);
235     char * get_key_userid (const char *keyid);
236     int check_passwd_quality (const char *pass, int strict);
237    
238 twoaday 25 /*-- wptGPGUtil.cpp --*/
239     gpgme_error_t gpg_rebuild_cache (char **r_inf);
240     gpgme_error_t gpg_get_version (char **r_inf);
241     void gpg_set_debug_mode (int val);
242     gpgme_error_t gpg_export_seckey (const char *keyid, const char *outfile);
243     gpgme_error_t gpg_manage_ownertrust (char **data, int export);
244    
245     char* generate_revoc_input (int code, const char *cmt, const char *pass);
246     gpgme_error_t gpg_revoke_key (const char *inp_data,
247     const char *keyid,
248     char **r_revcert);
249     gpgme_error_t gpg_decode_c_string (const char *src, char **destp, size_t len);
250     gpgme_error_t gpg_import_key_list (const char *fname, char **r_out);
251 twoaday 33 gpgme_error_t get_uat_validity (const char *keyid, gpgme_validity_t *r_valid);
252 twoaday 25
253 twoaday 2 #endif /* WPT_GPG_H */

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26