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

Contents of /trunk/Include/wptGPG.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 32 - (show annotations)
Mon Oct 24 08:03:48 2005 UTC (19 years, 4 months ago) by twoaday
File MIME type: text/plain
File size: 7688 byte(s)
2005-10-23  Timo Schulz  <twoaday@g10code.com>
 
        * wptFileManager.cpp (fm_get_file_type): Detect detached sigs.
        * wptKeyList.cpp (keylist_cmp_cb): Take care of expired/revoked keys.
        (get_ext_validity): New.
        * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Several cleanups.
        * wptClipEditDlg.cpp (load_clipboard): Factored out some code into
        this function.
        (load_clipboard_from_file): Likewise.
        (save_clipboard_to_file): New.
        * wptKeyManagerDlg.cpp (keyprops_dlg_proc): Fix stack overflow.

For complete details, see the ChangeLog files.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26