Coverage Report

Created: 2026-01-09 06:46

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gnupg/g10/main.h
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*/