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

Contents of /trunk/Include/wptGPG.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 335 - (show annotations)
Sun Nov 27 12:20:21 2011 UTC (13 years, 3 months ago) by twoaday
File MIME type: text/plain
File size: 9043 byte(s)


1 /* wptGPG.h - GnuPG interface
2 * Copyright (C) 2000-2007, 2009 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 #ifndef WPT_GPG_H
17 #define WPT_GPG_H
18
19 #include <gpgme.h>
20 #include "wptKeyCache.h"
21 #include "wptNLS.h"
22
23
24 #define NO_STRICT 0
25
26 /* Macro to indicate if a key is useable or not. */
27 #define key_is_useable(key) (!(key)->revoked && \
28 !(key)->expired && \
29 !(key)->disabled)
30
31 enum setup_t {
32 SETUP_KEYGEN = 1,
33 SETUP_IMPORT = 2,
34 SETUP_EXISTING = 3,
35 SETUP_CARDGEN = 4
36 };
37
38 enum gpg_cmd_t {
39 GPG_CMD_DECRYPT = 0,
40 GPG_CMD_SIGN = 1
41 };
42
43 enum keycache_t {
44 KEYCACHE_PRV = 0,
45 KEYCACHE_PUB = 1
46 };
47
48
49 struct gpg_card_s;
50 typedef struct gpg_card_s *gpg_card_t;
51
52 /* Keycache refresh context. */
53 struct refresh_cache_s {
54 int kring_update; /* update the keyring cache. */
55 int sig_update; /* update the signature cache. */
56 };
57
58
59 /* Structure for the passphrase callback. */
60 struct passphrase_cb_s {
61 int gpg_cmd; /* sign or decrypt. */
62 int pwd_init; /* 1 = passphrase request via dialog. */
63 char *pwd; /* actual passphrase. */
64 char info[1024]; /* hold up the info message */
65 char *title; /* dialog title. */
66 char keyid[16+1]; /* keyid of the secret key the pwd can be used for. */
67 HWND hwnd; /* handle of the dialog window. */
68 int cancel; /* 1 = user cancelled passphrase request. */
69 unsigned int is_card:1; /* 1 = key stored on a smart card. */
70 unsigned int bad_pwd:1; /* 1 = last passphrase was bad. */
71 gpgme_ctx_t gpg;
72 gpgme_recipient_t recipients;
73 struct {
74 int sym_algo;
75 int s2k_mode;
76 int s2k_hash;
77 } sym;
78 };
79
80
81 /* This variable is 1 if IDEA is available. */
82 extern int idea_available;
83
84 /*-- wptGPG.cpp --*/
85 char* get_gnupg_default_key (void);
86 int set_gnupg_default_key (const char *key);
87 char* get_gnupg_config (void);
88 int check_gnupg_config (const char *fname, int *secrings, int *pubrings);
89 char* get_gnupg_path (void);
90 int check_gnupg_prog (void);
91 int gnupg_access_files (void);
92 char* get_gnupg_prog (void);
93 char* get_gnupg_keyring (int pub, int strict);
94 char* get_gnupg_cfgfile (void);
95 int set_gnupg_options( const char *buf, size_t buflen );
96 int gnupg_load_config (void);
97 char* multi_gnupg_path (int strict);
98
99 int check_gnupg_options (const char *buf, int showerr);
100 void init_gnupg_table (void);
101 void free_gnupg_table (void);
102 int keyring_check_last_access (void);
103 const char* gnupg_check_file_ext (const char *fname, int *r_type);
104 int gpg_check_permissions (int showmsg);
105 int gpg_check_file_permissions (const char *fname);
106 int gnupg_check_homedir (void);
107 int gnupg_access_keyring (int _pub);
108 void gnupg_backup_options ();
109 void gnupg_backup_keyrings (int auto_backup, int backup_mode,
110 int include_secr);
111 int gnupg_copy_keyrings (void);
112 int gnupg_import_keypair (void);
113 int check_gnupg_engine (const char *need_gpg_ver,
114 int *r_major, int *r_minor, int *r_patch);
115
116 /*-- wptGPGME.cpp --*/
117 const char * get_signature_status( gpgme_sigsum_t sigstat );
118
119 gpgme_error_t get_pubkey (const char *keyid, gpgme_key_t *ret_key);
120 gpgme_error_t winpt_get_pubkey (const char *keyid, struct winpt_key_s *k);
121 void winpt_release_pubkey (winpt_key_s *k);
122 gpgme_error_t get_seckey (const char *keyid, gpgme_key_t *ret_skey);
123 gpgme_error_t winpt_get_seckey (const char *keyid, struct winpt_key_s *k);
124
125 void keycache_release (int cleanup);
126 gpgme_error_t keycache_update (int is_sec, const char *keyid);
127 gpgme_error_t keycache_init (const char *pubring, const char * secring);
128 gpg_keycache_t keycache_get_ctx (int _pub);
129
130 gpgme_error_t gpg_clip_sym_encrypt (void);
131 const char *get_gpg_sigstat (gpgme_sigsum_t sum);
132 int check_ultimate_trusted_key (void);
133 bool secret_key_available (void);
134
135 /*-- wptGPGParser.cpp --*/
136 enum entry_t {
137 ENTRY_OPAQUE = 1,
138 ENTRY_SINGLE = 2,
139 ENTRY_MULTI = 3,
140 ENTRY_GROUP = 4,
141 };
142
143 struct conf_option_s {
144 struct conf_option_s *next;
145 char *name;
146 char *val;
147 unsigned int used:1;
148 int type;
149 };
150 typedef struct conf_option_s *conf_option_t;
151
152 struct conf_member_s {
153 struct conf_member_s * next;
154 char *name;
155 unsigned int used:1;
156 };
157 typedef struct conf_member_s *conf_member_t;
158
159 struct conf_group_s {
160 struct conf_group_s *next;
161 struct conf_member_s *list;
162 char *name;
163 unsigned int used:1;
164 };
165 typedef struct conf_group_s *conf_group_t;
166
167 struct conf_file_s {
168 conf_option_t list;
169 conf_group_t grp;
170 };
171 typedef struct conf_file_s *config_file_t;
172
173 /* find/delete/add */
174 conf_group_t conf_find_group (config_file_t opt, const char *str);
175 conf_option_t conf_find_option (config_file_t opt, const char *str);
176 conf_member_t conf_find_member (config_file_t opt,
177 const char *grp, const char *str);
178 int conf_delete_group (config_file_t opt, const char *str);
179 int conf_delete_member (config_file_t opt, const char *grp, const char *str);
180 int conf_delete_option (config_file_t opt, const char *str);
181 int conf_modify_entry (config_file_t opt, int type, const char *name, const char *val);
182 int conf_add_entry (config_file_t opt, int type, const char *name, const char *val);
183 int conf_add_entry_int (config_file_t opt, int type, const char *name, int val);
184 int conf_add_member (config_file_t opt, const char *grp, const char *str);
185 int conf_add_group (config_file_t opt, const char *str);
186 /* high-level */
187 void new_config (config_file_t *r_opt);
188 int parse_config (const char *file, config_file_t *r_opt);
189 int commit_config (const char *file, config_file_t opt);
190 void release_config (config_file_t opt);
191 void release_group (conf_group_t grp);
192
193 /*-- wptPassphraseCB.cpp --*/
194 enum passdlg_t {
195 PASSDLG_REPEAT = 0, /* indicate the dialig is in the 'repeat passwd' state. */
196 PASSDLG_INIT = 1,
197 PASSDLG_STRICT = 2,
198 PASSDLG_NOTEMPTY= 4,
199 PASSDLG_WARN_UTF8=8,
200 };
201
202 void set_gpg_passphrase_cb (passphrase_cb_s *cb, gpgme_ctx_t ctx,
203 int cmd, HWND hwnd, const char *title);
204 void release_gpg_passphrase_cb (passphrase_cb_s *cb);
205 void release_gpg_recipients (gpgme_recipient_t *recipients);
206
207 char *request_passphrase (const char *title, int flags, int *ret_cancel);
208 char *request_passphrase2 (const char *title, int flags, int *ret_cancel);
209 char *request_key_passphrase (gpgme_key_t key, const char *title,
210 int *ret_cancel);
211 //const char * passphrase_cb (void *opaque, const char * desc, void *r_hd);
212 char * get_key_userid (const char *keyid);
213 int check_passwd_quality (const char *pass, int strict);
214
215 /*-- wptClipboard.cpp --*/
216 gpgme_error_t gpg_clip_istext_avail (int *r_val);
217 gpgme_error_t gpg_clip_is_secured (int *r_type, int *r_val);
218 gpgme_error_t gpg_clip_get_pgptype (int *r_type);
219 gpgme_error_t gpg_clip_parse_pgpid (const char *data, int *r_type);
220
221 gpgme_error_t gpg_data_utf8_new_from_clipboard (gpgme_data_t *r_dh,
222 int wraplen, int *r_is_utf8);
223 gpgme_error_t gpg_data_new_from_clipboard (gpgme_data_t *r_dh,
224 int wraplen);
225
226 gpgme_error_t gpg_data_release_utf8_to_clipboard (gpgme_data_t dh);
227 gpgme_error_t gpg_data_release_to_clipboard (gpgme_data_t dh, int chg_ver);
228
229
230 /* wptGPGMEData.cpp --*/
231
232 size_t gpg_data_readline (gpgme_data_t dh, char *line, size_t nbytes);
233
234 gpgme_error_t gpg_data_release_and_set_file (gpgme_data_t dh, const char *fname);
235 gpgme_error_t gpg_data_mail_quote (gpgme_data_t *r_dh);
236 gpgme_error_t gpg_data_extract_plaintext (gpgme_data_t sig, gpgme_data_t *r_plain);
237 void gpg_data_putc (gpgme_data_t hd, int c);
238
239 /*-- wptGPGUtil.cpp --*/
240 gpgme_error_t gpg_rebuild_cache (char **r_inf);
241 gpgme_error_t gpg_get_version (char **r_inf);
242 void gpg_set_debug_mode (int val);
243 gpgme_error_t gpg_export_seckey (const char *keyid, const char *outfile);
244 gpgme_error_t gpg_manage_ownertrust (char **data, int do_export);
245 gpgme_error_t gpg_get_photoid_data (const char *keyid, char **r_status_data,
246 unsigned char **r_data,
247 unsigned long *ndata);
248 gpgme_error_t gpg_revoke_cert (int desig_revoke, const char *inp_data,
249 const char *keyid, char **r_revcert);
250 gpgme_error_t gpg_decode_c_string (const char *src, char **destp, size_t len);
251 gpgme_error_t gpg_import_key_list (const char *fname, char **r_out);
252 gpgme_error_t gpg_extract_keys (const char *keyfile, const char **keys, DWORD nkeys,
253 char **new_keyfile);
254 gpgme_error_t get_uat_validity (const char *keyid, gpgme_validity_t *r_valid);
255 gpgme_error_t gpg_get_recipients (const char *file, gpgme_recipient_t *r_list);
256 gpgme_error_t gpg_find_key_subpacket (const char *key, int subpktid,
257 char **value);
258 int gpg_check_return_code (const char *args);
259
260 #endif /* WPT_GPG_H */

Properties

Name Value
svn:eol-style native

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26