Line | Count | Source |
1 | | /* main.h |
2 | | * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, |
3 | | * 2008, 2009, 2010 Free Software Foundation, Inc. |
4 | | * |
5 | | * This file is part of GnuPG. |
6 | | * |
7 | | * GnuPG is free software; you can redistribute it and/or modify |
8 | | * it under the terms of the GNU General Public License as published by |
9 | | * the Free Software Foundation; either version 3 of the License, or |
10 | | * (at your option) any later version. |
11 | | * |
12 | | * GnuPG is distributed in the hope that it will be useful, |
13 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | | * GNU General Public License for more details. |
16 | | * |
17 | | * You should have received a copy of the GNU General Public License |
18 | | * along with this program; if not, see <https://www.gnu.org/licenses/>. |
19 | | */ |
20 | | #ifndef G10_MAIN_H |
21 | | #define G10_MAIN_H |
22 | | |
23 | | #include "../common/types.h" |
24 | | #include "../common/iobuf.h" |
25 | | #include "../common/util.h" |
26 | | #include "keydb.h" |
27 | | #include "keyedit.h" |
28 | | |
29 | | /* It could be argued that the default cipher should be 3DES rather |
30 | | than AES128, and the default compression should be 0 |
31 | | (i.e. uncompressed) rather than 1 (zip). However, the real world |
32 | | issues of speed and size come into play here. */ |
33 | | |
34 | | #if GPG_USE_AES256 |
35 | | # define DEFAULT_CIPHER_ALGO CIPHER_ALGO_AES256 |
36 | | #elif GPG_USE_AES128 |
37 | | # define DEFAULT_CIPHER_ALGO CIPHER_ALGO_AES |
38 | | #elif GPG_USE_CAST5 |
39 | | # define DEFAULT_CIPHER_ALGO CIPHER_ALGO_CAST5 |
40 | | #else |
41 | | # define DEFAULT_CIPHER_ALGO CIPHER_ALGO_3DES |
42 | | #endif |
43 | | |
44 | 0 | #define DEFAULT_DIGEST_ALGO ((GNUPG)? DIGEST_ALGO_SHA256:DIGEST_ALGO_SHA1) |
45 | 0 | #define DEFAULT_S2K_DIGEST_ALGO DEFAULT_DIGEST_ALGO |
46 | | #ifdef HAVE_ZIP |
47 | | # define DEFAULT_COMPRESS_ALGO COMPRESS_ALGO_ZIP |
48 | | #else |
49 | 0 | # define DEFAULT_COMPRESS_ALGO COMPRESS_ALGO_NONE |
50 | | #endif |
51 | | |
52 | | |
53 | 0 | #define S2K_DIGEST_ALGO (opt.s2k_digest_algo?opt.s2k_digest_algo:DEFAULT_S2K_DIGEST_ALGO) |
54 | | |
55 | | |
56 | | /* Various data objects. */ |
57 | | |
58 | | typedef struct |
59 | | { |
60 | | ctrl_t ctrl; |
61 | | int header_okay; |
62 | | PK_LIST pk_list; |
63 | | DEK *symkey_dek; |
64 | | STRING2KEY *symkey_s2k; |
65 | | cipher_filter_context_t cfx; |
66 | | } encrypt_filter_context_t; |
67 | | |
68 | | |
69 | | struct groupitem |
70 | | { |
71 | | char *name; |
72 | | strlist_t values; |
73 | | struct groupitem *next; |
74 | | }; |
75 | | |
76 | | struct weakhash |
77 | | { |
78 | | enum gcry_md_algos algo; |
79 | | int rejection_shown; |
80 | | struct weakhash *next; |
81 | | }; |
82 | | |
83 | | |
84 | | /*-- gpg.c --*/ |
85 | | extern int g10_errors_seen; |
86 | | extern int assert_signer_true; |
87 | | extern int assert_pubkey_algo_false; |
88 | | |
89 | | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 ) |
90 | | void g10_exit(int rc) __attribute__ ((__noreturn__)); |
91 | | #else |
92 | | void g10_exit(int rc); |
93 | | #endif |
94 | | void print_pubkey_algo_note (pubkey_algo_t algo); |
95 | | void print_cipher_algo_note (cipher_algo_t algo); |
96 | | void print_digest_algo_note (digest_algo_t algo); |
97 | | void print_digest_rejected_note (enum gcry_md_algos algo); |
98 | | void print_sha1_keysig_rejected_note (void); |
99 | | void print_reported_error (gpg_error_t err, gpg_err_code_t skip_if_ec); |
100 | | void print_further_info (const char *format, ...) GPGRT_ATTR_PRINTF(1,2); |
101 | | void additional_weak_digest (const char* digestname); |
102 | | int is_weak_digest (digest_algo_t algo); |
103 | | |
104 | | /*-- armor.c --*/ |
105 | | char *make_radix64_string( const byte *data, size_t len ); |
106 | | |
107 | | /*-- misc.c --*/ |
108 | | void trap_unaligned(void); |
109 | | void register_secured_file (const char *fname); |
110 | | void unregister_secured_file (const char *fname); |
111 | | int is_secured_file (gnupg_fd_t fd); |
112 | | int is_secured_filename (const char *fname); |
113 | | u16 checksum_u16( unsigned n ); |
114 | | u16 checksum( const byte *p, unsigned n ); |
115 | | u16 checksum_mpi( gcry_mpi_t a ); |
116 | | u32 buffer_to_u32( const byte *buffer ); |
117 | | const byte *get_session_marker( size_t *rlen ); |
118 | | |
119 | | enum gcry_cipher_algos map_cipher_openpgp_to_gcry (cipher_algo_t algo); |
120 | | #define openpgp_cipher_open(_a,_b,_c,_d) \ |
121 | 0 | gcry_cipher_open((_a),map_cipher_openpgp_to_gcry((_b)),(_c),(_d)) |
122 | | #define openpgp_cipher_get_algo_keylen(_a) \ |
123 | 0 | gcry_cipher_get_algo_keylen(map_cipher_openpgp_to_gcry((_a))) |
124 | | #define openpgp_cipher_get_algo_blklen(_a) \ |
125 | 0 | gcry_cipher_get_algo_blklen(map_cipher_openpgp_to_gcry((_a))) |
126 | | int openpgp_cipher_blocklen (cipher_algo_t algo); |
127 | | int openpgp_cipher_test_algo(cipher_algo_t algo); |
128 | | const char *openpgp_cipher_algo_name (cipher_algo_t algo); |
129 | | const char *openpgp_cipher_algo_mode_name (cipher_algo_t algo, |
130 | | aead_algo_t aead); |
131 | | |
132 | | gpg_error_t openpgp_aead_test_algo (aead_algo_t algo); |
133 | | const char *openpgp_aead_algo_name (aead_algo_t algo); |
134 | | gpg_error_t openpgp_aead_algo_info (aead_algo_t algo, |
135 | | enum gcry_cipher_modes *r_mode, |
136 | | unsigned int *r_noncelen); |
137 | | |
138 | | int openpgp_pk_test_algo (pubkey_algo_t algo); |
139 | | int openpgp_pk_test_algo2 (pubkey_algo_t algo, unsigned int use); |
140 | | int openpgp_pk_algo_usage ( int algo ); |
141 | | const char *openpgp_pk_algo_name (pubkey_algo_t algo); |
142 | | |
143 | | enum gcry_md_algos map_md_openpgp_to_gcry (digest_algo_t algo); |
144 | | int openpgp_md_test_algo (digest_algo_t algo); |
145 | | const char *openpgp_md_algo_name (int algo); |
146 | | |
147 | | struct expando_args |
148 | | { |
149 | | PKT_public_key *pk; |
150 | | PKT_public_key *pksk; |
151 | | byte imagetype; |
152 | | int validity_info; |
153 | | const char *validity_string; |
154 | | const byte *namehash; |
155 | | }; |
156 | | |
157 | | char *pct_expando (ctrl_t ctrl, const char *string,struct expando_args *args); |
158 | | void deprecated_warning(const char *configname,unsigned int configlineno, |
159 | | const char *option,const char *repl1,const char *repl2); |
160 | | void deprecated_command (const char *name); |
161 | | void obsolete_scdaemon_option (const char *configname, |
162 | | unsigned int configlineno, const char *name); |
163 | | |
164 | | int string_to_cipher_algo (const char *string); |
165 | | aead_algo_t string_to_aead_algo (const char *string); |
166 | | int string_to_digest_algo (const char *string); |
167 | | |
168 | | const char *compress_algo_to_string(int algo); |
169 | | int string_to_compress_algo(const char *string); |
170 | | int check_compress_algo(int algo); |
171 | | int default_cipher_algo(void); |
172 | | int default_compress_algo(void); |
173 | | void compliance_failure(void); |
174 | | |
175 | | struct parse_options |
176 | | { |
177 | | char *name; |
178 | | unsigned int bit; |
179 | | char **value; |
180 | | char *help; |
181 | | }; |
182 | | |
183 | | char *optsep(char **stringp); |
184 | | char *argsplit(char *string); |
185 | | int parse_options(char *str,unsigned int *options, |
186 | | struct parse_options *opts,int noisy); |
187 | | const char *get_libexecdir (void); |
188 | | int path_access(const char *file,int mode); |
189 | | |
190 | | int pubkey_get_npkey (pubkey_algo_t algo); |
191 | | int pubkey_get_nskey (pubkey_algo_t algo); |
192 | | int pubkey_get_nsig (pubkey_algo_t algo); |
193 | | int pubkey_get_nenc (pubkey_algo_t algo); |
194 | | |
195 | | /* Temporary helpers. */ |
196 | | unsigned int pubkey_nbits( int algo, gcry_mpi_t *pkey ); |
197 | | int mpi_print (estream_t stream, gcry_mpi_t a, int mode); |
198 | | unsigned int ecdsa_qbits_from_Q (unsigned int qbits); |
199 | | |
200 | | |
201 | | /*-- cpr.c --*/ |
202 | | void set_status_fd ( int fd ); |
203 | | int is_status_enabled ( void ); |
204 | | void write_status ( int no ); |
205 | | void write_status_warning (const char *where, gpg_error_t err); |
206 | | void write_status_error (const char *where, gpg_error_t err); |
207 | | void write_status_errcode (const char *where, int errcode); |
208 | | void write_status_failure (const char *where, gpg_error_t err); |
209 | | void write_status_text ( int no, const char *text ); |
210 | | void write_status_printf (int no, const char *format, |
211 | | ...) GPGRT_ATTR_PRINTF(2,3); |
212 | | void write_status_strings (int no, const char *text, |
213 | | ...) GPGRT_ATTR_SENTINEL(0); |
214 | | gpg_error_t write_status_strings2 (ctrl_t dummy, int no, |
215 | | ...) GPGRT_ATTR_SENTINEL(0); |
216 | | void write_status_buffer ( int no, |
217 | | const char *buffer, size_t len, int wrap ); |
218 | | void write_status_text_and_buffer ( int no, const char *text, |
219 | | const char *buffer, size_t len, int wrap ); |
220 | | |
221 | | void write_status_begin_signing (gcry_md_hd_t md); |
222 | | |
223 | | |
224 | | int cpr_enabled(void); |
225 | | char *cpr_get( const char *keyword, const char *prompt ); |
226 | | char *cpr_get_no_help( const char *keyword, const char *prompt ); |
227 | | char *cpr_get_utf8( const char *keyword, const char *prompt ); |
228 | | char *cpr_get_hidden( const char *keyword, const char *prompt ); |
229 | | void cpr_kill_prompt(void); |
230 | | int cpr_get_answer_is_yes_def (const char *keyword, const char *prompt, |
231 | | int def_yes); |
232 | | int cpr_get_answer_is_yes( const char *keyword, const char *prompt ); |
233 | | int cpr_get_answer_yes_no_quit( const char *keyword, const char *prompt ); |
234 | | int cpr_get_answer_okay_cancel (const char *keyword, |
235 | | const char *prompt, |
236 | | int def_answer); |
237 | | |
238 | | /*-- helptext.c --*/ |
239 | | void display_online_help( const char *keyword ); |
240 | | |
241 | | /*-- encrypt.c --*/ |
242 | | gpg_error_t setup_symkey (STRING2KEY **symkey_s2k,DEK **symkey_dek); |
243 | | aead_algo_t use_aead (pk_list_t pk_list, int algo); |
244 | | int use_mdc (pk_list_t pk_list,int algo); |
245 | | int encrypt_symmetric (const char *filename ); |
246 | | int encrypt_store (const char *filename ); |
247 | | int encrypt_crypt (ctrl_t ctrl, gnupg_fd_t filefd, const char *filename, |
248 | | strlist_t remusr, int use_symkey, pk_list_t provided_keys, |
249 | | gnupg_fd_t outputfd); |
250 | | void encrypt_crypt_files (ctrl_t ctrl, |
251 | | int nfiles, char **files, strlist_t remusr); |
252 | | gpg_error_t reencrypt_to_new_recipients (ctrl_t ctrl, int armor, |
253 | | const char *filename, iobuf_t infp, |
254 | | strlist_t recipients, |
255 | | DEK *dek, |
256 | | struct seskey_enc_list *sesenc_list); |
257 | | int encrypt_filter (void *opaque, int control, |
258 | | iobuf_t a, byte *buf, size_t *ret_len); |
259 | | |
260 | | int write_pubkey_enc (ctrl_t ctrl, PKT_public_key *pk, int throw_keyid, |
261 | | DEK *dek, iobuf_t out); |
262 | | |
263 | | /*-- sign.c --*/ |
264 | | int sign_file (ctrl_t ctrl, strlist_t filenames, int detached, strlist_t locusr, |
265 | | int do_encrypt, strlist_t remusr, const char *outfile ); |
266 | | int clearsign_file (ctrl_t ctrl, |
267 | | const char *fname, strlist_t locusr, const char *outfile); |
268 | | int sign_symencrypt_file (ctrl_t ctrl, const char *fname, strlist_t locusr); |
269 | | |
270 | | /*-- sig-check.c --*/ |
271 | | void sig_check_dump_stats (void); |
272 | | |
273 | | /* SIG is a revocation signature. Check if any of PK's designated |
274 | | revokers generated it. If so, return 0. Note: this function |
275 | | (correctly) doesn't care if the designated revoker is revoked. */ |
276 | | int check_revocation_keys (ctrl_t ctrl, PKT_public_key *pk, PKT_signature *sig); |
277 | | /* Check that the backsig BACKSIG from the subkey SUB_PK to its |
278 | | primary key MAIN_PK is valid. */ |
279 | | int check_backsig(PKT_public_key *main_pk,PKT_public_key *sub_pk, |
280 | | PKT_signature *backsig); |
281 | | /* Check that the signature SIG over a key (e.g., a key binding or a |
282 | | key revocation) is valid. (To check signatures over data, use |
283 | | check_signature.) */ |
284 | | int check_key_signature (ctrl_t ctrl, kbnode_t root, kbnode_t sig, |
285 | | int *is_selfsig ); |
286 | | /* Like check_key_signature, but with the ability to specify some |
287 | | additional parameters and get back additional information. See the |
288 | | documentation for the implementation for details. */ |
289 | | int check_key_signature2 (ctrl_t ctrl, kbnode_t root, kbnode_t node, |
290 | | PKT_public_key *check_pk, PKT_public_key *ret_pk, |
291 | | int *is_selfsig, u32 *r_expiredate, int *r_expired); |
292 | | |
293 | | /* Returns whether SIGNER generated the signature SIG over the packet |
294 | | PACKET, which is a key, subkey or uid, and comes from the key block |
295 | | KB. If SIGNER is NULL, it is looked up based on the information in |
296 | | SIG. If not NULL, sets *IS_SELFSIG to indicate whether the |
297 | | signature is a self-signature and *RET_PK to a copy of the signer's |
298 | | key. */ |
299 | | gpg_error_t check_signature_over_key_or_uid (ctrl_t ctrl, |
300 | | PKT_public_key *signer, |
301 | | PKT_signature *sig, |
302 | | KBNODE kb, PACKET *packet, |
303 | | int *is_selfsig, |
304 | | PKT_public_key *ret_pk); |
305 | | |
306 | | |
307 | | /*-- delkey.c --*/ |
308 | | gpg_error_t delete_keys (ctrl_t ctrl, |
309 | | strlist_t names, int secret, int allow_both); |
310 | | |
311 | | /*-- keygen.c --*/ |
312 | | const char *get_default_pubkey_algo (void); |
313 | | u32 parse_expire_string(const char *string); |
314 | | u32 ask_expire_interval(int object,const char *def_expire); |
315 | | u32 ask_expiredate(void); |
316 | | unsigned int ask_key_flags (int algo, int subkey, unsigned int current); |
317 | | const char *ask_curve (int *algo, int *subkey_algo, const char *current); |
318 | | void quick_generate_keypair (ctrl_t ctrl, const char *uid, const char *algostr, |
319 | | const char *usagestr, const char *expirestr); |
320 | | void generate_keypair (ctrl_t ctrl, int full, const char *fname, |
321 | | const char *card_serialno, int card_backup_key); |
322 | | int keygen_set_std_prefs (const char *string,int personal); |
323 | | PKT_user_id *keygen_get_std_prefs (void); |
324 | | int keygen_add_key_expire( PKT_signature *sig, void *opaque ); |
325 | | int keygen_add_key_flags (PKT_signature *sig, void *opaque); |
326 | | int keygen_add_key_flags_and_expire (PKT_signature *sig, void *opaque); |
327 | | int keygen_add_std_prefs( PKT_signature *sig, void *opaque ); |
328 | | int keygen_upd_std_prefs( PKT_signature *sig, void *opaque ); |
329 | | int keygen_add_keyserver_url(PKT_signature *sig, void *opaque); |
330 | | int keygen_add_notations(PKT_signature *sig,void *opaque); |
331 | | int keygen_add_revkey(PKT_signature *sig, void *opaque); |
332 | | gpg_error_t make_backsig (ctrl_t ctrl, |
333 | | PKT_signature *sig, PKT_public_key *pk, |
334 | | PKT_public_key *sub_pk, PKT_public_key *sub_psk, |
335 | | u32 timestamp, const char *cache_nonce); |
336 | | void keygen_prepare_new_key_adsks (void); |
337 | | gpg_error_t append_all_default_adsks (ctrl_t ctrl, kbnode_t pub_root); |
338 | | gpg_error_t generate_subkeypair (ctrl_t ctrl, kbnode_t keyblock, |
339 | | const char *algostr, |
340 | | const char *usagestr, |
341 | | const char *expirestr); |
342 | | #ifdef ENABLE_CARD_SUPPORT |
343 | | gpg_error_t generate_card_subkeypair (ctrl_t ctrl, kbnode_t pub_keyblock, |
344 | | int keyno, const char *serialno); |
345 | | #endif |
346 | | |
347 | | |
348 | | /*-- openfile.c --*/ |
349 | | int overwrite_filep( const char *fname ); |
350 | | char *make_outfile_name( const char *iname ); |
351 | | char *ask_outfile_name( const char *name, size_t namelen ); |
352 | | int open_outfile (gnupg_fd_t out_fd, const char *iname, int mode, |
353 | | int restrictedperm, iobuf_t *a); |
354 | | char *get_matching_datafile (const char *sigfilename); |
355 | | iobuf_t open_sigfile (const char *sigfilename, progress_filter_context_t *pfx); |
356 | | void try_make_homedir( const char *fname ); |
357 | | char *get_openpgp_revocdir (const char *home); |
358 | | |
359 | | /*-- seskey.c --*/ |
360 | | void make_session_key( DEK *dek ); |
361 | | gcry_mpi_t encode_session_key( int openpgp_pk_algo, DEK *dek, unsigned nbits ); |
362 | | gcry_mpi_t encode_md_value (PKT_public_key *pk, |
363 | | gcry_md_hd_t md, int hash_algo ); |
364 | | |
365 | | /*-- import.c --*/ |
366 | | struct import_stats_s; |
367 | | typedef struct import_stats_s *import_stats_t; |
368 | | struct import_filter_s; |
369 | | typedef struct import_filter_s *import_filter_t; |
370 | | typedef gpg_error_t (*import_screener_t)(kbnode_t keyblock, void *arg); |
371 | | |
372 | | int parse_import_options(char *str,unsigned int *options,int noisy); |
373 | | |
374 | | gpg_error_t parse_and_set_import_filter (const char *string); |
375 | | import_filter_t save_and_clear_import_filter (void); |
376 | | void restore_import_filter (import_filter_t filt); |
377 | | |
378 | | gpg_error_t read_key_from_file_or_buffer (ctrl_t ctrl, const char *fname, |
379 | | const void *buffer, size_t buflen, |
380 | | kbnode_t *r_keyblock); |
381 | | gpg_error_t import_included_key_block (ctrl_t ctrl, kbnode_t keyblock); |
382 | | void import_keys (ctrl_t ctrl, char **fnames, int nnames, |
383 | | import_stats_t stats_hd, unsigned int options, |
384 | | int origin, const char *url); |
385 | | gpg_error_t import_keys_es_stream (ctrl_t ctrl, estream_t fp, |
386 | | import_stats_t stats_handle, |
387 | | unsigned char **fpr, size_t *fpr_len, |
388 | | unsigned int options, |
389 | | import_screener_t screener, void *screener_arg, |
390 | | int origin, const char *url); |
391 | | gpg_error_t import_old_secring (ctrl_t ctrl, const char *fname); |
392 | | import_stats_t import_new_stats_handle (void); |
393 | | void import_release_stats_handle (import_stats_t hd); |
394 | | void import_print_stats (import_stats_t hd); |
395 | | /* Communication for impex_filter_getval */ |
396 | | struct impex_filter_parm_s |
397 | | { |
398 | | ctrl_t ctrl; |
399 | | kbnode_t node; |
400 | | char hexfpr[2*MAX_FINGERPRINT_LEN + 1]; |
401 | | }; |
402 | | |
403 | | const char *impex_filter_getval (void *cookie, const char *propname); |
404 | | gpg_error_t transfer_secret_keys (ctrl_t ctrl, struct import_stats_s *stats, |
405 | | kbnode_t sec_keyblock, int batch, int force, |
406 | | int only_marked); |
407 | | |
408 | | int collapse_uids (kbnode_t *keyblock); |
409 | | int collapse_subkeys (kbnode_t *keyblock); |
410 | | |
411 | | const char *revocation_reason_code_to_str (int code, char **r_freeme); |
412 | | int get_revocation_reason (PKT_signature *sig, char **r_reason, |
413 | | char **r_comment, size_t *r_commentlen); |
414 | | |
415 | | |
416 | | /*-- export.c --*/ |
417 | | struct export_stats_s; |
418 | | typedef struct export_stats_s *export_stats_t; |
419 | | |
420 | | export_stats_t export_new_stats (void); |
421 | | void export_release_stats (export_stats_t stats); |
422 | | void export_print_stats (export_stats_t stats); |
423 | | void print_status_exported (PKT_public_key *pk); |
424 | | |
425 | | int parse_export_options(char *str,unsigned int *options,int noisy); |
426 | | gpg_error_t parse_and_set_export_filter (const char *string); |
427 | | void push_export_filters (void); |
428 | | void pop_export_filters (void); |
429 | | |
430 | | int exact_subkey_match_p (KEYDB_SEARCH_DESC *desc, kbnode_t node); |
431 | | |
432 | | int export_pubkeys (ctrl_t ctrl, strlist_t users, unsigned int options, |
433 | | export_stats_t stats); |
434 | | int export_seckeys (ctrl_t ctrl, strlist_t users, unsigned int options, |
435 | | export_stats_t stats); |
436 | | int export_secsubkeys (ctrl_t ctrl, strlist_t users, unsigned int options, |
437 | | export_stats_t stats); |
438 | | |
439 | | gpg_error_t export_pubkey_buffer (ctrl_t ctrl, const char *keyspec, |
440 | | unsigned int options, |
441 | | const void *prefix, size_t prefixlen, |
442 | | export_stats_t stats, |
443 | | kbnode_t *r_keyblock, |
444 | | void **r_data, size_t *r_datalen); |
445 | | |
446 | | gpg_error_t receive_seckey_from_agent (ctrl_t ctrl, gcry_cipher_hd_t cipherhd, |
447 | | int cleartext, |
448 | | int mode1003, int is_part2, |
449 | | char **cache_nonce_addr, |
450 | | const char *hexgrip, |
451 | | PKT_public_key *pk, gcry_sexp_t *r_key); |
452 | | |
453 | | gpg_error_t write_keyblock_to_output (kbnode_t keyblock, |
454 | | int with_armor, unsigned int options); |
455 | | |
456 | | gpg_error_t export_ssh_key (ctrl_t ctrl, const char *userid); |
457 | | gpg_error_t export_secret_ssh_key (ctrl_t ctrl, const char *userid); |
458 | | |
459 | | /*-- dearmor.c --*/ |
460 | | int dearmor_file( const char *fname ); |
461 | | int enarmor_file( const char *fname ); |
462 | | |
463 | | /*-- revoke.c --*/ |
464 | | struct revocation_reason_info; |
465 | | |
466 | | int gen_standard_revoke (ctrl_t ctrl, |
467 | | PKT_public_key *psk, const char *cache_nonce); |
468 | | int gen_revoke (ctrl_t ctrl, const char *uname); |
469 | | int gen_desig_revoke (ctrl_t ctrl, const char *uname, strlist_t locusr); |
470 | | int revocation_reason_build_cb( PKT_signature *sig, void *opaque ); |
471 | | struct revocation_reason_info * |
472 | | ask_revocation_reason( int key_rev, int cert_rev, int hint ); |
473 | | struct revocation_reason_info * get_default_uid_revocation_reason (void); |
474 | | struct revocation_reason_info * get_default_sig_revocation_reason (void); |
475 | | void release_revocation_reason_info (struct revocation_reason_info *reason); |
476 | | |
477 | | /*-- keylist.c --*/ |
478 | | void public_key_list (ctrl_t ctrl, strlist_t list, |
479 | | int locate_mode, int no_local); |
480 | | void secret_key_list (ctrl_t ctrl, strlist_t list ); |
481 | | gpg_error_t parse_and_set_list_filter (const char *string); |
482 | | void print_subpackets_colon(PKT_signature *sig); |
483 | | void reorder_keyblock (KBNODE keyblock); |
484 | | gpg_error_t list_keyblock_direct (ctrl_t ctrl, kbnode_t keyblock, int secret, |
485 | | int has_secret, int fpr, int no_validity); |
486 | | int cmp_signodes (const void *av, const void *bv); |
487 | | void print_fingerprint (ctrl_t ctrl, estream_t fp, |
488 | | PKT_public_key *pk, int mode); |
489 | | void print_revokers (estream_t fp, int colon_mode, PKT_public_key *pk); |
490 | | void show_preferences (PKT_user_id *uid, int indent, int mode, int verbose); |
491 | | void show_policy_url(PKT_signature *sig,int indent,int mode); |
492 | | void show_keyserver_url(PKT_signature *sig,int indent,int mode); |
493 | | void show_notation(PKT_signature *sig,int indent,int mode,int which); |
494 | | void print_matching_notations (PKT_signature *sig); |
495 | | void dump_attribs (const PKT_user_id *uid, PKT_public_key *pk); |
496 | | void set_attrib_fd(int fd); |
497 | | void print_key_info (ctrl_t ctrl, estream_t fp, int indent, |
498 | | PKT_public_key *pk, int secret); |
499 | | void print_key_info_log (ctrl_t ctrl, int loglevel, int indent, |
500 | | PKT_public_key *pk, int secret); |
501 | | void print_card_key_info (estream_t fp, KBNODE keyblock); |
502 | | void print_key_line (ctrl_t ctrl, estream_t fp, PKT_public_key *pk, int secret); |
503 | | void print_revocation_reason_comment (const char *comment, size_t comment_len); |
504 | | |
505 | | /*-- verify.c --*/ |
506 | | void print_file_status( int status, const char *name, int what ); |
507 | | int verify_signatures (ctrl_t ctrl, int nfiles, char **files ); |
508 | | int verify_files (ctrl_t ctrl, int nfiles, char **files ); |
509 | | int gpg_verify (ctrl_t ctrl, gnupg_fd_t sig_fd, gnupg_fd_t data_fd, |
510 | | estream_t out_fp); |
511 | | void check_assert_signer_list (const char *mainpkhex, const char *pkhex); |
512 | | void check_assert_pubkey_algo (const char *algostr, const char *pkhex); |
513 | | |
514 | | /*-- decrypt.c --*/ |
515 | | gpg_error_t decrypt_message (ctrl_t ctrl, const char *filename, |
516 | | strlist_t remusr); |
517 | | gpg_error_t decrypt_message_fd (ctrl_t ctrl, gnupg_fd_t input_fd, |
518 | | gnupg_fd_t output_fd); |
519 | | void decrypt_messages (ctrl_t ctrl, int nfiles, char *files[]); |
520 | | |
521 | | /*-- plaintext.c --*/ |
522 | | int hash_datafiles( gcry_md_hd_t md, gcry_md_hd_t md2, |
523 | | strlist_t files, const char *sigfilename, int textmode); |
524 | | int hash_datafile_by_fd (gcry_md_hd_t md, gcry_md_hd_t md2, |
525 | | gnupg_fd_t data_fd, int textmode); |
526 | | PKT_plaintext *setup_plaintext_name(const char *filename,IOBUF iobuf); |
527 | | |
528 | | /*-- server.c --*/ |
529 | | int gpg_server (ctrl_t); |
530 | | gpg_error_t gpg_proxy_pinentry_notify (ctrl_t ctrl, |
531 | | const unsigned char *line); |
532 | | |
533 | | #ifdef ENABLE_CARD_SUPPORT |
534 | | /*-- card-util.c --*/ |
535 | | void change_pin (int no, int allow_admin); |
536 | | void card_status (ctrl_t ctrl, estream_t fp, const char *serialno); |
537 | | void card_edit (ctrl_t ctrl, strlist_t commands); |
538 | | gpg_error_t card_generate_subkey (ctrl_t ctrl, kbnode_t pub_keyblock); |
539 | | int card_store_subkey (KBNODE node, int use, strlist_t *processed_keys); |
540 | | #endif |
541 | | |
542 | | /*-- migrate.c --*/ |
543 | | void migrate_secring (ctrl_t ctrl); |
544 | | |
545 | | |
546 | | #endif /*G10_MAIN_H*/ |