aboutsummaryrefslogtreecommitdiffstats
path: root/g10
diff options
context:
space:
mode:
Diffstat (limited to 'g10')
-rw-r--r--g10/ChangeLog34
-rw-r--r--g10/armor.c25
-rw-r--r--g10/card-util.c137
-rw-r--r--g10/gpg.c26
-rw-r--r--g10/import.c4
-rw-r--r--g10/kbnode.c122
-rw-r--r--g10/keyedit.c23
-rw-r--r--g10/keylist.c395
-rw-r--r--g10/main.h8
-rw-r--r--g10/mainproc.c17
-rw-r--r--g10/misc.c38
-rw-r--r--g10/parse-packet.c385
-rw-r--r--g10/pkclist.c11
-rw-r--r--g10/plaintext.c3
-rw-r--r--g10/seckey-cert.c2
-rw-r--r--g10/trustdb.c3
16 files changed, 626 insertions, 607 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 878627c12..dbb913e6e 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,5 +1,39 @@
+2010-03-15 Werner Koch <[email protected]>
+
+ * card-util.c: Replace stdio by estream.
+ * keylist.c: Ditto.
+
+2010-03-12 Werner Koch <[email protected]>
+
+ * plaintext.c (setup_plaintext_name): Do not encode pipe like
+ filenames. This helps with bug#1201.
+
+ * seckey-cert.c (do_check): Return GPG_ERR_CANCELED.
+ * keyedit.c (change_passphrase): Add arg R_ERR.
+ (keyedit_passwd): Return the correct error or emit a success
+ status message.
+
2010-03-11 Werner Koch <[email protected]>
+ * misc.c (mpi_print): Change to take a estream_t arg.
+
+ * parse-packet.c (listfp): Change to an estream_t. Change all
+ users to use estream functions.
+
+ * kbnode.c (dump_kbnode): Change to use log functions.
+ * pkclist.c (do_show_revocation_reason): Ditto
+
+ * armor.c (parse_header_line): Replace print_string by
+ es_print_sanitized.
+ (fake_packet): Ditto.
+ * keyedit.c (print_and_check_one_sig_colon): Ditto.
+ (show_key_with_all_names_colon): Ditto.
+ (ask_revoke_sig): Ditto.
+ * keylist.c (list_keyblock_colon): Ditto.
+ * mainproc.c (print_userid, list_node): Ditto.
+ * trustdb.c (dump_key_array): Ditto.
+ * gpg.c (list_config): ditto.
+
* gpg.c: Include "asshelp.h".
(main): Remove assuan_set_assuan_log_prefix. Add
assuan_set_log_cb.
diff --git a/g10/armor.c b/g10/armor.c
index 2dde9fe05..19cca3fd4 100644
--- a/g10/armor.c
+++ b/g10/armor.c
@@ -415,9 +415,9 @@ parse_header_line( armor_filter_context_t *afx, byte *line, unsigned int len )
if( !p || (RFC2440 && p[1]!=' ')
|| (!RFC2440 && p[1]!=' ' && p[1]!='\n' && p[1]!='\r'))
{
- log_error(_("invalid armor header: "));
- print_string( stderr, line, len, 0 );
- putc('\n', stderr);
+ log_error (_("invalid armor header: "));
+ es_write_sanitized (log_get_stream (), line, len, NULL, NULL);
+ log_printf ("\n");
return -1;
}
@@ -427,8 +427,8 @@ parse_header_line( armor_filter_context_t *afx, byte *line, unsigned int len )
if( opt.verbose ) {
log_info(_("armor header: "));
- print_string( stderr, line, len, 0 );
- putc('\n', stderr);
+ es_write_sanitized (log_get_stream (), line, len, NULL, NULL);
+ log_printf ("\n");
}
if( afx->in_cleartext )
@@ -453,8 +453,8 @@ parse_header_line( armor_filter_context_t *afx, byte *line, unsigned int len )
signed data section is "Hash". */
log_info(_("unknown armor header: "));
- print_string( stderr, line, len, 0 );
- putc('\n', stderr);
+ es_write_sanitized (log_get_stream (), line, len, NULL, NULL);
+ log_printf ("\n");
}
return 1;
@@ -641,8 +641,9 @@ fake_packet( armor_filter_context_t *afx, IOBUF a,
if( type != BEGIN_SIGNATURE )
{
log_info(_("unexpected armor: "));
- print_string( stderr, p, n, 0 );
- putc('\n', stderr);
+ es_write_sanitized (log_get_stream (), p, n,
+ NULL, NULL);
+ log_printf ("\n");
}
lastline = 1;
@@ -652,9 +653,9 @@ fake_packet( armor_filter_context_t *afx, IOBUF a,
else if(!afx->not_dash_escaped)
{
/* Bad dash-escaping. */
- log_info(_("invalid dash escaped line: "));
- print_string( stderr, p, n, 0 );
- putc('\n', stderr);
+ log_info (_("invalid dash escaped line: "));
+ es_write_sanitized (log_get_stream (), p, n, NULL, NULL);
+ log_printf ("\n");
}
}
diff --git a/g10/card-util.c b/g10/card-util.c
index 9bd5013a1..0723a1c51 100644
--- a/g10/card-util.c
+++ b/g10/card-util.c
@@ -218,7 +218,7 @@ get_manufacturer (unsigned int no)
static void
-print_sha1_fpr (FILE *fp, const unsigned char *fpr)
+print_sha1_fpr (estream_t fp, const unsigned char *fpr)
{
int i;
@@ -238,21 +238,21 @@ print_sha1_fpr (FILE *fp, const unsigned char *fpr)
static void
-print_sha1_fpr_colon (FILE *fp, const unsigned char *fpr)
+print_sha1_fpr_colon (estream_t fp, const unsigned char *fpr)
{
int i;
if (fpr)
{
for (i=0; i < 20 ; i++, fpr++)
- fprintf (fp, "%02X", *fpr);
+ es_fprintf (fp, "%02X", *fpr);
}
- putc (':', fp);
+ es_putc (':', fp);
}
static void
-print_name (FILE *fp, const char *text, const char *name)
+print_name (estream_t fp, const char *text, const char *name)
{
tty_fprintf (fp, "%s", text);
@@ -261,7 +261,7 @@ print_name (FILE *fp, const char *text, const char *name)
if (name && *name)
{
if (fp)
- print_utf8_string2 (fp, name, strlen (name), '\n');
+ print_utf8_buffer2 (fp, name, strlen (name), '\n');
else
tty_print_utf8_string2 (name, strlen (name), 0);
}
@@ -271,10 +271,11 @@ print_name (FILE *fp, const char *text, const char *name)
}
static void
-print_isoname (FILE *fp, const char *text, const char *tag, const char *name)
+print_isoname (estream_t fp, const char *text,
+ const char *tag, const char *name)
{
if (opt.with_colons)
- fprintf (fp, "%s:", tag);
+ es_fprintf (fp, "%s:", tag);
else
tty_fprintf (fp, "%s", text);
@@ -291,22 +292,22 @@ print_isoname (FILE *fp, const char *text, const char *tag, const char *name)
*given = 0;
given += 2;
if (opt.with_colons)
- print_string (fp, given, strlen (given), ':');
+ es_write_sanitized (fp, given, strlen (given), ":", NULL);
else if (fp)
- print_utf8_string2 (fp, given, strlen (given), '\n');
+ print_utf8_buffer2 (fp, given, strlen (given), '\n');
else
tty_print_utf8_string2 (given, strlen (given), 0);
if (opt.with_colons)
- putc (':', fp);
+ es_putc (':', fp);
else if (*buf)
tty_fprintf (fp, " ");
}
if (opt.with_colons)
- print_string (fp, buf, strlen (buf), ':');
+ es_write_sanitized (fp, buf, strlen (buf), ":", NULL);
else if (fp)
- print_utf8_string2 (fp, buf, strlen (buf), '\n');
+ print_utf8_buffer2 (fp, buf, strlen (buf), '\n');
else
tty_print_utf8_string2 (buf, strlen (buf), 0);
xfree (buf);
@@ -314,13 +315,13 @@ print_isoname (FILE *fp, const char *text, const char *tag, const char *name)
else
{
if (opt.with_colons)
- putc (':', fp);
+ es_putc (':', fp);
else
tty_fprintf (fp, _("[not set]"));
}
if (opt.with_colons)
- fputs (":\n", fp);
+ es_fputs (":\n", fp);
else
tty_fprintf (fp, "\n");
}
@@ -351,7 +352,7 @@ fpr_is_ff (const char *fpr)
/* Print all available information about the current card. */
void
-card_status (FILE *fp, char *serialno, size_t serialnobuflen)
+card_status (estream_t fp, char *serialno, size_t serialnobuflen)
{
struct agent_card_info_s info;
PKT_public_key *pk = xcalloc (1, sizeof *pk);
@@ -367,15 +368,14 @@ card_status (FILE *fp, char *serialno, size_t serialnobuflen)
if (rc)
{
if (opt.with_colons)
- fputs ("AID:::\n", fp);
- log_error (_("OpenPGP card not available: %s\n"),
- gpg_strerror (rc));
+ es_fputs ("AID:::\n", fp);
+ log_error (_("OpenPGP card not available: %s\n"), gpg_strerror (rc));
xfree (pk);
return;
}
if (opt.with_colons)
- fprintf (fp, "AID:%s:", info.serialno? info.serialno : "");
+ es_fprintf (fp, "AID:%s:", info.serialno? info.serialno : "");
else
tty_fprintf (fp, "Application ID ...: %s\n",
info.serialno? info.serialno : "[none]");
@@ -385,31 +385,31 @@ card_status (FILE *fp, char *serialno, size_t serialnobuflen)
if (info.apptype && !strcmp (info.apptype, "NKS"))
{
if (opt.with_colons)
- fputs ("netkey-card:\n", fp);
+ es_fputs ("netkey-card:\n", fp);
log_info ("this is a NetKey card\n");
}
else if (info.apptype && !strcmp (info.apptype, "DINSIG"))
{
if (opt.with_colons)
- fputs ("dinsig-card:\n", fp);
+ es_fputs ("dinsig-card:\n", fp);
log_info ("this is a DINSIG compliant card\n");
}
else if (info.apptype && !strcmp (info.apptype, "P15"))
{
if (opt.with_colons)
- fputs ("pkcs15-card:\n", fp);
+ es_fputs ("pkcs15-card:\n", fp);
log_info ("this is a PKCS#15 compliant card\n");
}
else if (info.apptype && !strcmp (info.apptype, "GELDKARTE"))
{
if (opt.with_colons)
- fputs ("geldkarte-card:\n", fp);
+ es_fputs ("geldkarte-card:\n", fp);
log_info ("this is a Geldkarte compliant card\n");
}
else
{
if (opt.with_colons)
- fputs ("unknown:\n", fp);
+ es_fputs ("unknown:\n", fp);
}
log_info ("not an OpenPGP card\n");
agent_release_card_info (&info);
@@ -425,69 +425,72 @@ card_status (FILE *fp, char *serialno, size_t serialnobuflen)
strcpy (serialno, info.serialno);
if (opt.with_colons)
- fputs ("openpgp-card:\n", fp);
+ es_fputs ("openpgp-card:\n", fp);
if (opt.with_colons)
{
- fprintf (fp, "version:%.4s:\n", info.serialno+12);
+ es_fprintf (fp, "version:%.4s:\n", info.serialno+12);
uval = xtoi_2(info.serialno+16)*256 + xtoi_2 (info.serialno+18);
- fprintf (fp, "vendor:%04x:%s:\n", uval, get_manufacturer (uval));
- fprintf (fp, "serial:%.8s:\n", info.serialno+20);
+ es_fprintf (fp, "vendor:%04x:%s:\n", uval, get_manufacturer (uval));
+ es_fprintf (fp, "serial:%.8s:\n", info.serialno+20);
print_isoname (fp, "Name of cardholder: ", "name", info.disp_name);
- fputs ("lang:", fp);
+ es_fputs ("lang:", fp);
if (info.disp_lang)
- print_string (fp, info.disp_lang, strlen (info.disp_lang), ':');
- fputs (":\n", fp);
+ es_write_sanitized (fp, info.disp_lang, strlen (info.disp_lang),
+ ":", NULL);
+ es_fputs (":\n", fp);
- fprintf (fp, "sex:%c:\n", (info.disp_sex == 1? 'm':
+ es_fprintf (fp, "sex:%c:\n", (info.disp_sex == 1? 'm':
info.disp_sex == 2? 'f' : 'u'));
- fputs ("url:", fp);
+ es_fputs ("url:", fp);
if (info.pubkey_url)
- print_string (fp, info.pubkey_url, strlen (info.pubkey_url), ':');
- fputs (":\n", fp);
+ es_write_sanitized (fp, info.pubkey_url, strlen (info.pubkey_url),
+ ":", NULL);
+ es_fputs (":\n", fp);
- fputs ("login:", fp);
+ es_fputs ("login:", fp);
if (info.login_data)
- print_string (fp, info.login_data, strlen (info.login_data), ':');
- fputs (":\n", fp);
+ es_write_sanitized (fp, info.login_data, strlen (info.login_data),
+ ":", NULL);
+ es_fputs (":\n", fp);
- fprintf (fp, "forcepin:%d:::\n", !info.chv1_cached);
+ es_fprintf (fp, "forcepin:%d:::\n", !info.chv1_cached);
for (i=0; i < DIM (info.key_attr); i++)
if (info.key_attr[0].algo)
- fprintf (fp, "keyattr:%d:%d:%u:\n", i+1,
- info.key_attr[i].algo, info.key_attr[i].nbits);
- fprintf (fp, "maxpinlen:%d:%d:%d:\n",
- info.chvmaxlen[0], info.chvmaxlen[1], info.chvmaxlen[2]);
- fprintf (fp, "pinretry:%d:%d:%d:\n",
- info.chvretry[0], info.chvretry[1], info.chvretry[2]);
- fprintf (fp, "sigcount:%lu:::\n", info.sig_counter);
+ es_fprintf (fp, "keyattr:%d:%d:%u:\n", i+1,
+ info.key_attr[i].algo, info.key_attr[i].nbits);
+ es_fprintf (fp, "maxpinlen:%d:%d:%d:\n",
+ info.chvmaxlen[0], info.chvmaxlen[1], info.chvmaxlen[2]);
+ es_fprintf (fp, "pinretry:%d:%d:%d:\n",
+ info.chvretry[0], info.chvretry[1], info.chvretry[2]);
+ es_fprintf (fp, "sigcount:%lu:::\n", info.sig_counter);
for (i=0; i < 4; i++)
{
if (info.private_do[i])
{
- fprintf (fp, "private_do:%d:", i+1);
- print_string (fp, info.private_do[i],
- strlen (info.private_do[i]), ':');
- fputs (":\n", fp);
+ es_fprintf (fp, "private_do:%d:", i+1);
+ es_write_sanitized (fp, info.private_do[i],
+ strlen (info.private_do[i]), ":", NULL);
+ es_fputs (":\n", fp);
}
}
- fputs ("cafpr:", fp);
+ es_fputs ("cafpr:", fp);
print_sha1_fpr_colon (fp, info.cafpr1valid? info.cafpr1:NULL);
print_sha1_fpr_colon (fp, info.cafpr2valid? info.cafpr2:NULL);
print_sha1_fpr_colon (fp, info.cafpr3valid? info.cafpr3:NULL);
- putc ('\n', fp);
- fputs ("fpr:", fp);
+ es_putc ('\n', fp);
+ es_fputs ("fpr:", fp);
print_sha1_fpr_colon (fp, info.fpr1valid? info.fpr1:NULL);
print_sha1_fpr_colon (fp, info.fpr2valid? info.fpr2:NULL);
print_sha1_fpr_colon (fp, info.fpr3valid? info.fpr3:NULL);
- putc ('\n', fp);
- fprintf (fp, "fprtime:%lu:%lu:%lu:\n",
+ es_putc ('\n', fp);
+ es_fprintf (fp, "fprtime:%lu:%lu:%lu:\n",
(unsigned long)info.fpr1time, (unsigned long)info.fpr2time,
(unsigned long)info.fpr3time);
}
@@ -764,13 +767,13 @@ fetch_url(void)
static int
get_data_from_file (const char *fname, size_t maxlen, char **r_buffer)
{
- FILE *fp;
+ estream_t fp;
char *data;
int n;
*r_buffer = NULL;
- fp = fopen (fname, "rb");
+ fp = es_fopen (fname, "rb");
#if GNUPG_MAJOR_VERSION == 1
if (fp && is_secured_file (fileno (fp)))
{
@@ -789,15 +792,15 @@ get_data_from_file (const char *fname, size_t maxlen, char **r_buffer)
if (!data)
{
tty_printf (_("error allocating enough memory: %s\n"), strerror (errno));
- fclose (fp);
+ es_fclose (fp);
return -1;
}
if (maxlen)
- n = fread (data, 1, maxlen, fp);
+ n = es_fread (data, 1, maxlen, fp);
else
n = 0;
- fclose (fp);
+ es_fclose (fp);
if (n < 0)
{
tty_printf (_("error reading `%s': %s\n"), fname, strerror (errno));
@@ -814,9 +817,9 @@ get_data_from_file (const char *fname, size_t maxlen, char **r_buffer)
static int
put_data_to_file (const char *fname, const void *buffer, size_t length)
{
- FILE *fp;
+ estream_t fp;
- fp = fopen (fname, "wb");
+ fp = es_fopen (fname, "wb");
#if GNUPG_MAJOR_VERSION == 1
if (fp && is_secured_file (fileno (fp)))
{
@@ -831,13 +834,13 @@ put_data_to_file (const char *fname, const void *buffer, size_t length)
return -1;
}
- if (length && fwrite (buffer, length, 1, fp) != 1)
+ if (length && es_fwrite (buffer, length, 1, fp) != 1)
{
tty_printf (_("error writing `%s': %s\n"), fname, strerror (errno));
- fclose (fp);
+ es_fclose (fp);
return -1;
}
- fclose (fp);
+ es_fclose (fp);
return 0;
}
@@ -1785,7 +1788,7 @@ card_edit (strlist_t commands)
{
if (opt.with_colons)
{
- card_status (stdout, serialnobuf, DIM (serialnobuf));
+ card_status (es_stdout, serialnobuf, DIM (serialnobuf));
fflush (stdout);
}
else
diff --git a/g10/gpg.c b/g10/gpg.c
index b24157b29..e365a8b8d 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -1497,9 +1497,10 @@ list_config(char *items)
{
strlist_t sl;
- printf("cfg:group:");
- print_string(stdout,iter->name,strlen(iter->name),':');
- printf(":");
+ es_fprintf (es_stdout, "cfg:group:");
+ es_write_sanitized (es_stdout, iter->name, strlen(iter->name),
+ ":", NULL);
+ es_putc (':', es_stdout);
for(sl=iter->values;sl;sl=sl->next)
{
@@ -1517,7 +1518,7 @@ list_config(char *items)
if(show_all || ascii_strcasecmp(name,"version")==0)
{
printf("cfg:version:");
- print_string(stdout,VERSION,strlen(VERSION),':');
+ es_write_sanitized (es_stdout, VERSION, strlen(VERSION), ":", NULL);
printf("\n");
any=1;
}
@@ -3828,29 +3829,30 @@ main (int argc, char **argv)
{ int mode = argc < 2 ? 0 : atoi(*argv);
if( mode == 1 && argc == 2 ) {
- mpi_print( stdout, generate_public_prime( atoi(argv[1]) ), 1);
+ mpi_print (es_stdout,
+ generate_public_prime( atoi(argv[1]) ), 1);
}
else if( mode == 2 && argc == 3 ) {
- mpi_print( stdout, generate_elg_prime(
+ mpi_print (es_stdout, generate_elg_prime(
0, atoi(argv[1]),
atoi(argv[2]), NULL,NULL ), 1);
}
else if( mode == 3 && argc == 3 ) {
MPI *factors;
- mpi_print( stdout, generate_elg_prime(
+ mpi_print (es_stdout, generate_elg_prime(
1, atoi(argv[1]),
atoi(argv[2]), NULL,&factors ), 1);
putchar('\n');
- mpi_print( stdout, factors[0], 1 ); /* print q */
+ mpi_print (es_stdout, factors[0], 1 ); /* print q */
}
else if( mode == 4 && argc == 3 ) {
MPI g = mpi_alloc(1);
- mpi_print( stdout, generate_elg_prime(
+ mpi_print (es_stdout, generate_elg_prime(
0, atoi(argv[1]),
atoi(argv[2]), g, NULL ), 1);
putchar('\n');
- mpi_print( stdout, g, 1 );
- mpi_free(g);
+ mpi_print (es_stdout, g, 1 );
+ mpi_free (g);
}
else
wrong_args("--gen-prime mode bits [qbits] ");
@@ -3987,7 +3989,7 @@ main (int argc, char **argv)
case aCardStatus:
if (argc)
wrong_args ("--card-status");
- card_status (stdout, NULL, 0);
+ card_status (es_stdout, NULL, 0);
break;
case aCardEdit:
diff --git a/g10/import.c b/g10/import.c
index 8de1d29f0..a46542f65 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -718,7 +718,7 @@ import_one( const char *fname, KBNODE keyblock, struct stats_s *stats,
pubkey_letter( pk->pubkey_algo ),
keystr_from_pk(pk), datestr_from_pk(pk) );
if (uidnode)
- print_utf8_string (log_get_stream (),
+ print_utf8_buffer (log_get_stream (),
uidnode->pkt->pkt.user_id->name,
uidnode->pkt->pkt.user_id->len );
log_printf ("\n");
@@ -1127,7 +1127,7 @@ import_secret_one( const char *fname, KBNODE keyblock,
pubkey_letter( sk->pubkey_algo ),
keystr_from_sk(sk), datestr_from_sk(sk) );
if( uidnode )
- print_utf8_string( stderr, uidnode->pkt->pkt.user_id->name,
+ print_utf8_buffer (es_stderr, uidnode->pkt->pkt.user_id->name,
uidnode->pkt->pkt.user_id->len );
log_printf ("\n");
}
diff --git a/g10/kbnode.c b/g10/kbnode.c
index 3d7d9be5c..f481c9fdb 100644
--- a/g10/kbnode.c
+++ b/g10/kbnode.c
@@ -1,6 +1,6 @@
/* kbnode.c - keyblock node utility functions
* Copyright (C) 1998, 1999, 2000, 2001, 2002,
- * 2005 Free Software Foundation, Inc.
+ * 2005, 2010 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -336,63 +336,71 @@ move_kbnode( KBNODE *root, KBNODE node, KBNODE where )
void
-dump_kbnode( KBNODE node )
+dump_kbnode (KBNODE node)
{
- for(; node; node = node->next ) {
- const char *s;
- switch( node->pkt->pkttype ) {
- case 0: s="empty"; break;
- case PKT_PUBLIC_KEY: s="public-key"; break;
- case PKT_SECRET_KEY: s="secret-key"; break;
- case PKT_SECRET_SUBKEY: s= "secret-subkey"; break;
- case PKT_PUBKEY_ENC: s="public-enc"; break;
- case PKT_SIGNATURE: s="signature"; break;
- case PKT_ONEPASS_SIG: s="onepass-sig"; break;
- case PKT_USER_ID: s="user-id"; break;
- case PKT_PUBLIC_SUBKEY: s="public-subkey"; break;
- case PKT_COMMENT: s="comment"; break;
- case PKT_RING_TRUST: s="trust"; break;
- case PKT_PLAINTEXT: s="plaintext"; break;
- case PKT_COMPRESSED: s="compressed"; break;
- case PKT_ENCRYPTED: s="encrypted"; break;
- case PKT_GPG_CONTROL: s="gpg-control"; break;
- default: s="unknown"; break;
+ for (; node; node = node->next )
+ {
+ const char *s;
+ switch (node->pkt->pkttype)
+ {
+ case 0: s="empty"; break;
+ case PKT_PUBLIC_KEY: s="public-key"; break;
+ case PKT_SECRET_KEY: s="secret-key"; break;
+ case PKT_SECRET_SUBKEY: s= "secret-subkey"; break;
+ case PKT_PUBKEY_ENC: s="public-enc"; break;
+ case PKT_SIGNATURE: s="signature"; break;
+ case PKT_ONEPASS_SIG: s="onepass-sig"; break;
+ case PKT_USER_ID: s="user-id"; break;
+ case PKT_PUBLIC_SUBKEY: s="public-subkey"; break;
+ case PKT_COMMENT: s="comment"; break;
+ case PKT_RING_TRUST: s="trust"; break;
+ case PKT_PLAINTEXT: s="plaintext"; break;
+ case PKT_COMPRESSED: s="compressed"; break;
+ case PKT_ENCRYPTED: s="encrypted"; break;
+ case PKT_GPG_CONTROL: s="gpg-control"; break;
+ default: s="unknown"; break;
}
- fprintf(stderr, "node %p %02x/%02x type=%s",
- node, node->flag, node->private_flag, s);
- if( node->pkt->pkttype == PKT_USER_ID ) {
- PKT_user_id *uid = node->pkt->pkt.user_id;
- fputs(" \"", stderr);
- print_string( stderr, uid->name, uid->len, 0 );
- fprintf (stderr, "\" %c%c%c%c\n",
- uid->is_expired? 'e':'.',
- uid->is_revoked? 'r':'.',
- uid->created? 'v':'.',
- uid->is_primary? 'p':'.' );
- }
- else if( node->pkt->pkttype == PKT_SIGNATURE ) {
- fprintf(stderr, " class=%02x keyid=%08lX ts=%lu\n",
- node->pkt->pkt.signature->sig_class,
- (ulong)node->pkt->pkt.signature->keyid[1],
- (ulong)node->pkt->pkt.signature->timestamp);
- }
- else if( node->pkt->pkttype == PKT_GPG_CONTROL ) {
- fprintf(stderr, " ctrl=%d len=%u\n",
- node->pkt->pkt.gpg_control->control,
- (unsigned int)node->pkt->pkt.gpg_control->datalen);
- }
- else if( node->pkt->pkttype == PKT_PUBLIC_KEY
- || node->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
- PKT_public_key *pk = node->pkt->pkt.public_key;
- fprintf(stderr, " keyid=%08lX a=%d u=%d %c%c%c%c\n",
- (ulong)keyid_from_pk( pk, NULL ),
- pk->pubkey_algo, pk->pubkey_usage,
- pk->has_expired? 'e':'.',
- pk->is_revoked? 'r':'.',
- pk->is_valid? 'v':'.',
- pk->mdc_feature? 'm':'.');
- }
- else
- fputs("\n", stderr);
+ log_debug ("node %p %02x/%02x type=%s",
+ node, node->flag, node->private_flag, s);
+ if (node->pkt->pkttype == PKT_USER_ID)
+ {
+ PKT_user_id *uid = node->pkt->pkt.user_id;
+ log_printf (" \"");
+ es_write_sanitized (log_get_stream (), uid->name, uid->len,
+ NULL, NULL);
+ log_printf ("\" %c%c%c%c\n",
+ uid->is_expired? 'e':'.',
+ uid->is_revoked? 'r':'.',
+ uid->created? 'v':'.',
+ uid->is_primary? 'p':'.' );
+ }
+ else if (node->pkt->pkttype == PKT_SIGNATURE)
+ {
+ log_printf (" class=%02x keyid=%08lX ts=%lu\n",
+ node->pkt->pkt.signature->sig_class,
+ (ulong)node->pkt->pkt.signature->keyid[1],
+ (ulong)node->pkt->pkt.signature->timestamp);
+ }
+ else if (node->pkt->pkttype == PKT_GPG_CONTROL)
+ {
+ log_printf (" ctrl=%d len=%u\n",
+ node->pkt->pkt.gpg_control->control,
+ (unsigned int)node->pkt->pkt.gpg_control->datalen);
+ }
+ else if (node->pkt->pkttype == PKT_PUBLIC_KEY
+ || node->pkt->pkttype == PKT_PUBLIC_SUBKEY)
+ {
+ PKT_public_key *pk = node->pkt->pkt.public_key;
+
+ log_printf (" keyid=%08lX a=%d u=%d %c%c%c%c\n",
+ (ulong)keyid_from_pk( pk, NULL ),
+ pk->pubkey_algo, pk->pubkey_usage,
+ pk->has_expired? 'e':'.',
+ pk->is_revoked? 'r':'.',
+ pk->is_valid? 'v':'.',
+ pk->mdc_feature? 'm':'.');
+ }
+
+ log_flush ();
}
}
diff --git a/g10/keyedit.c b/g10/keyedit.c
index 270b3bacb..e9b92b232 100644
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -188,7 +188,9 @@ print_and_check_one_sig_colon( KBNODE keyblock, KBNODE node,
printf(":");
if(sig->trust_regexp)
- print_string(stdout,sig->trust_regexp,strlen(sig->trust_regexp),':');
+ es_write_sanitized (es_stdout,
+ sig->trust_regexp, strlen (sig->trust_regexp),
+ ":", NULL);
printf("::%02x%c\n",sig->sig_class,sig->flags.exportable?'x':'l');
@@ -1100,7 +1102,7 @@ sign_uids( KBNODE keyblock, strlist_t locusr, int *ret_modified,
* We use only one passphrase for all keys.
*/
static int
-change_passphrase( KBNODE keyblock )
+change_passphrase (KBNODE keyblock, int *r_err)
{
int rc = 0;
int changed=0;
@@ -1264,6 +1266,8 @@ change_passphrase( KBNODE keyblock )
leave:
xfree( passphrase );
set_next_passphrase( NULL );
+ if (r_err)
+ *r_err = rc;
return changed && !rc;
}
@@ -2150,7 +2154,7 @@ keyedit_menu( const char *username, strlist_t locusr,
break;
case cmdPASSWD:
- if( change_passphrase( sec_keyblock ) )
+ if (change_passphrase (sec_keyblock, NULL))
sec_modified = 1;
break;
@@ -2372,11 +2376,8 @@ keyedit_passwd (const char *username)
if (err)
goto leave;
- if (!change_passphrase (keyblock))
- {
- err = gpg_error (GPG_ERR_GENERAL);
- goto leave;
- }
+ if (!change_passphrase (keyblock, &err))
+ goto leave;
err = keydb_update_keyblock (kdh, keyblock);
if (err)
@@ -2393,6 +2394,8 @@ keyedit_passwd (const char *username)
username, gpg_strerror (err));
write_status_error ("keyedit.passwd", err);
}
+ else
+ write_status_text (STATUS_SUCCESS, "keyedit.passwd");
}
@@ -2685,7 +2688,7 @@ show_key_with_all_names_colon (KBNODE keyblock)
if(uid->attrib_data)
printf ("%u %lu",uid->numattribs,uid->attrib_len);
else
- print_string (stdout, uid->name, uid->len, ':');
+ es_write_sanitized (es_stdout, uid->name, uid->len, ":", NULL);
putchar (':');
/* signature class */
@@ -4791,7 +4794,7 @@ ask_revoke_sig( KBNODE keyblock, KBNODE node )
else
{
printf("uid:::::::::");
- print_string (stdout, uid->name, uid->len, ':');
+ es_write_sanitized (es_stdout, uid->name, uid->len, ":", NULL);
}
printf("\n");
diff --git a/g10/keylist.c b/g10/keylist.c
index f5a977362..6d70b2bb4 100644
--- a/g10/keylist.c
+++ b/g10/keylist.c
@@ -54,7 +54,7 @@ struct sig_stats
};
/* The stream used to write attribute packets to. */
-static FILE *attrib_fp = NULL;
+static estream_t attrib_fp;
/* List the keys. If list is NULL, all available keys are listed.
@@ -71,32 +71,32 @@ public_key_list (strlist_t list, int locate_mode)
read_trust_options (&trust_model, &created, &nextcheck,
&marginals, &completes, &cert_depth);
- printf ("tru:");
+ es_fprintf (es_stdout, "tru:");
if (nextcheck && nextcheck <= make_timestamp ())
- printf ("o");
+ es_fprintf (es_stdout, "o");
if (trust_model != opt.trust_model)
- printf ("t");
+ es_fprintf (es_stdout, "t");
if (opt.trust_model == TM_PGP || opt.trust_model == TM_CLASSIC)
{
if (marginals != opt.marginals_needed)
- printf ("m");
+ es_fprintf (es_stdout, "m");
if (completes != opt.completes_needed)
- printf ("c");
+ es_fprintf (es_stdout, "c");
if (cert_depth != opt.max_cert_depth)
- printf ("d");
+ es_fprintf (es_stdout, "d");
}
- printf (":%d:%lu:%lu", trust_model, created, nextcheck);
+ es_fprintf (es_stdout, ":%d:%lu:%lu", trust_model, created, nextcheck);
/* Only show marginals, completes, and cert_depth in the classic
or PGP trust models since they are not meaningful
otherwise. */
if (trust_model == TM_PGP || trust_model == TM_CLASSIC)
- printf (":%d:%d:%d", marginals, completes, cert_depth);
+ es_fprintf (es_stdout, ":%d:%d:%d", marginals, completes, cert_depth);
- printf ("\n");
+ es_fprintf (es_stdout, "\n");
}
/* We need to do the stale check right here because it might need to
@@ -147,7 +147,7 @@ print_seckey_info (PKT_public_key *pk)
the tty output interface is used, otherwise output is directted to
the given stream. */
void
-print_pubkey_info (FILE * fp, PKT_public_key * pk)
+print_pubkey_info (estream_t fp, PKT_public_key * pk)
{
u32 keyid[2];
char *p;
@@ -162,15 +162,11 @@ print_pubkey_info (FILE * fp, PKT_public_key * pk)
p = get_user_id_native (keyid);
if (fp)
- fprintf (fp, "pub %4u%c/%s %s %s\n",
- nbits_from_pk (pk),
- pubkey_letter (pk->pubkey_algo),
- keystr (keyid), datestr_from_pk (pk), p);
- else
- tty_printf ("\npub %4u%c/%s %s %s\n",
- nbits_from_pk (pk), pubkey_letter (pk->pubkey_algo),
- keystr (keyid), datestr_from_pk (pk), p);
-
+ tty_printf ("\n");
+ tty_fprintf (fp, "pub %4u%c/%s %s %s\n",
+ nbits_from_pk (pk),
+ pubkey_letter (pk->pubkey_algo),
+ keystr (keyid), datestr_from_pk (pk), p);
xfree (p);
}
@@ -178,7 +174,7 @@ print_pubkey_info (FILE * fp, PKT_public_key * pk)
/* Print basic information of a secret key including the card serial
number information. */
void
-print_card_key_info (FILE * fp, KBNODE keyblock)
+print_card_key_info (estream_t fp, KBNODE keyblock)
{
KBNODE node;
int i;
@@ -239,7 +235,8 @@ status_one_subpacket (sigsubpkttype_t type, size_t len, int flags,
if (len > 256)
return;
- sprintf (status, "%d %u %u ", type, flags, (unsigned int) len);
+ snprintf (status, sizeof status,
+ "%d %u %u ", type, flags, (unsigned int) len);
write_status_text_and_buffer (STATUS_SIG_SUBPACKET, status, buf, len, 0);
}
@@ -256,7 +253,7 @@ show_policy_url (PKT_signature * sig, int indent, int mode)
const byte *p;
size_t len;
int seq = 0, crit;
- FILE *fp = mode ? log_get_stream () : stdout;
+ estream_t fp = mode ? log_get_stream () : es_stdout;
while ((p =
enum_sig_subpkt (sig->hashed, SIGSUBPKT_POLICY, &len, &seq, &crit)))
@@ -267,7 +264,7 @@ show_policy_url (PKT_signature * sig, int indent, int mode)
const char *str;
for (i = 0; i < indent; i++)
- putchar (' ');
+ es_putc (' ', fp);
if (crit)
str = _("Critical signature policy: ");
@@ -276,9 +273,9 @@ show_policy_url (PKT_signature * sig, int indent, int mode)
if (mode)
log_info ("%s", str);
else
- printf ("%s", str);
- print_utf8_string (fp, p, len);
- fprintf (fp, "\n");
+ es_fprintf (fp, "%s", str);
+ print_utf8_buffer (fp, p, len);
+ es_fprintf (fp, "\n");
}
if (mode)
@@ -299,7 +296,7 @@ show_keyserver_url (PKT_signature * sig, int indent, int mode)
const byte *p;
size_t len;
int seq = 0, crit;
- FILE *fp = mode ? log_get_stream () : stdout;
+ estream_t fp = mode ? log_get_stream () : es_stdout;
while ((p =
enum_sig_subpkt (sig->hashed, SIGSUBPKT_PREF_KS, &len, &seq,
@@ -311,7 +308,7 @@ show_keyserver_url (PKT_signature * sig, int indent, int mode)
const char *str;
for (i = 0; i < indent; i++)
- putchar (' ');
+ es_putc (' ', es_stdout);
if (crit)
str = _("Critical preferred keyserver: ");
@@ -320,9 +317,9 @@ show_keyserver_url (PKT_signature * sig, int indent, int mode)
if (mode)
log_info ("%s", str);
else
- printf ("%s", str);
- print_utf8_string (fp, p, len);
- fprintf (fp, "\n");
+ es_fprintf (es_stdout, "%s", str);
+ print_utf8_buffer (fp, p, len);
+ es_fprintf (fp, "\n");
}
if (mode)
@@ -343,7 +340,7 @@ show_keyserver_url (PKT_signature * sig, int indent, int mode)
void
show_notation (PKT_signature * sig, int indent, int mode, int which)
{
- FILE *fp = mode ? log_get_stream () : stdout;
+ estream_t fp = mode ? log_get_stream () : es_stdout;
struct notation *nd, *notations;
if (which == 0)
@@ -364,7 +361,7 @@ show_notation (PKT_signature * sig, int indent, int mode, int which)
const char *str;
for (i = 0; i < indent; i++)
- putchar (' ');
+ es_putc (' ', es_stdout);
if (nd->flags.critical)
str = _("Critical signature notation: ");
@@ -373,12 +370,12 @@ show_notation (PKT_signature * sig, int indent, int mode, int which)
if (mode)
log_info ("%s", str);
else
- printf ("%s", str);
+ es_fprintf (es_stdout, "%s", str);
/* This is all UTF8 */
- print_utf8_string (fp, nd->name, strlen (nd->name));
- fprintf (fp, "=");
- print_utf8_string (fp, nd->value, strlen (nd->value));
- fprintf (fp, "\n");
+ print_utf8_buffer (fp, nd->name, strlen (nd->name));
+ es_fprintf (fp, "=");
+ print_utf8_buffer (fp, nd->value, strlen (nd->value));
+ es_fprintf (fp, "\n");
}
}
@@ -455,10 +452,10 @@ list_all (int secret)
{
int i;
- printf ("%s\n", resname);
+ es_fprintf (es_stdout, "%s\n", resname);
for (i = strlen (resname); i; i--)
- putchar ('-');
- putchar ('\n');
+ es_putc ('-', es_stdout);
+ es_putc ('\n', es_stdout);
lastresname = resname;
}
}
@@ -517,10 +514,10 @@ list_one (strlist_t names, int secret)
if ((opt.list_options & LIST_SHOW_KEYRING) && !opt.with_colons)
{
resname = keydb_get_resource_name (get_ctx_handle (ctx));
- printf ("%s: %s\n", keyring_str, resname);
+ es_fprintf (es_stdout, "%s: %s\n", keyring_str, resname);
for (i = strlen (resname) + strlen (keyring_str) + 2; i; i--)
- putchar ('-');
- putchar ('\n');
+ es_putc ('-', es_stdout);
+ es_putc ('\n', es_stdout);
}
list_keyblock (keyblock, secret, opt.fingerprint,
(!secret && opt.check_sigs)? &stats : NULL);
@@ -580,10 +577,10 @@ print_key_data (PKT_public_key * pk)
for (i = 0; i < n; i++)
{
- printf ("pkd:%d:%u:", i, mpi_get_nbits (pk->pkey[i]));
- mpi_print (stdout, pk->pkey[i], 1);
- putchar (':');
- putchar ('\n');
+ es_fprintf (es_stdout, "pkd:%d:%u:", i, mpi_get_nbits (pk->pkey[i]));
+ mpi_print (es_stdout, pk->pkey[i], 1);
+ es_putc (':', es_stdout);
+ es_putc ('\n', es_stdout);
}
}
@@ -594,14 +591,14 @@ print_capabilities (PKT_public_key *pk, KBNODE keyblock)
int c_printed = 0;
if (use & PUBKEY_USAGE_ENC)
- putchar ('e');
+ es_putc ('e', es_stdout);
if (use & PUBKEY_USAGE_SIG)
{
- putchar ('s');
+ es_putc ('s', es_stdout);
if (pk->is_primary)
{
- putchar ('c');
+ es_putc ('c', es_stdout);
/* The PUBKEY_USAGE_CERT flag was introduced later and we
used to always print 'c' for a primary key. To avoid any
regression here we better track whether we printed 'c'
@@ -611,10 +608,10 @@ print_capabilities (PKT_public_key *pk, KBNODE keyblock)
}
if ((use & PUBKEY_USAGE_CERT) && !c_printed)
- putchar ('c');
+ es_putc ('c', es_stdout);
if ((use & PUBKEY_USAGE_AUTH))
- putchar ('a');
+ es_putc ('a', es_stdout);
if (keyblock)
{
@@ -650,18 +647,18 @@ print_capabilities (PKT_public_key *pk, KBNODE keyblock)
}
}
if (enc)
- putchar ('E');
+ es_putc ('E', es_stdout);
if (sign)
- putchar ('S');
+ es_putc ('S', es_stdout);
if (cert)
- putchar ('C');
+ es_putc ('C', es_stdout);
if (auth)
- putchar ('A');
+ es_putc ('A', es_stdout);
if (disabled)
- putchar ('D');
+ es_putc ('D', es_stdout);
}
- putchar (':');
+ es_putc (':', es_stdout);
}
@@ -673,18 +670,18 @@ print_one_subpacket (sigsubpkttype_t type, size_t len, int flags,
{
size_t i;
- printf ("spk:%d:%u:%u:", type, flags, (unsigned int) len);
+ es_fprintf (es_stdout, "spk:%d:%u:%u:", type, flags, (unsigned int) len);
for (i = 0; i < len; i++)
{
/* printable ascii other than : and % */
if (buf[i] >= 32 && buf[i] <= 126 && buf[i] != ':' && buf[i] != '%')
- printf ("%c", buf[i]);
+ es_fprintf (es_stdout, "%c", buf[i]);
else
- printf ("%%%02X", buf[i]);
+ es_fprintf (es_stdout, "%%%02X", buf[i]);
}
- printf ("\n");
+ es_fprintf (es_stdout, "\n");
}
@@ -748,8 +745,8 @@ dump_attribs (const PKT_user_id *uid, PKT_public_key *pk)
write_status_text (STATUS_ATTRIBUTE, buf);
}
- fwrite (uid->attribs[i].data, uid->attribs[i].len, 1, attrib_fp);
- fflush (attrib_fp);
+ es_fwrite (uid->attribs[i].data, uid->attribs[i].len, 1, attrib_fp);
+ es_fflush (attrib_fp);
}
}
@@ -782,7 +779,7 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr, void *opaque)
check_trustdb_stale ();
- printf ("%s%c %4u%c/%s %s",
+ es_fprintf (es_stdout, "%s%c %4u%c/%s %s",
secret? "sec":"pub",
s2k_char,
nbits_from_pk (pk), pubkey_letter (pk->pubkey_algo),
@@ -790,21 +787,21 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr, void *opaque)
if (pk->is_revoked)
{
- printf (" [");
- printf (_("revoked: %s"), revokestr_from_pk (pk));
- printf ("]");
+ es_fprintf (es_stdout, " [");
+ es_fprintf (es_stdout, _("revoked: %s"), revokestr_from_pk (pk));
+ es_fprintf (es_stdout, "]");
}
else if (pk->has_expired)
{
- printf (" [");
- printf (_("expired: %s"), expirestr_from_pk (pk));
- printf ("]");
+ es_fprintf (es_stdout, " [");
+ es_fprintf (es_stdout, _("expired: %s"), expirestr_from_pk (pk));
+ es_fprintf (es_stdout, "]");
}
else if (pk->expiredate)
{
- printf (" [");
- printf (_("expires: %s"), expirestr_from_pk (pk));
- printf ("]");
+ es_fprintf (es_stdout, " [");
+ es_fprintf (es_stdout, _("expires: %s"), expirestr_from_pk (pk));
+ es_fprintf (es_stdout, "]");
}
#if 0
@@ -813,11 +810,11 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr, void *opaque)
if (opt.list_options & LIST_SHOW_VALIDITY)
{
int validity = get_validity (pk, NULL);
- printf (" [%s]", trust_value_to_string (validity));
+ es_fprintf (es_stdout, " [%s]", trust_value_to_string (validity));
}
#endif
- printf ("\n");
+ es_fprintf (es_stdout, "\n");
if (fpr)
print_fingerprint (pk, NULL, 0);
@@ -860,13 +857,13 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr, void *opaque)
if (indent < 0 || indent > 40)
indent = 0;
- printf ("uid%*s%s ", indent, "", validity);
+ es_fprintf (es_stdout, "uid%*s%s ", indent, "", validity);
}
else
- printf ("uid%*s", (int) keystrlen () + 10, "");
+ es_fprintf (es_stdout, "uid%*s", (int) keystrlen () + 10, "");
- print_utf8_string (stdout, uid->name, uid->len);
- putchar ('\n');
+ print_utf8_buffer (es_stdout, uid->name, uid->len);
+ es_putc ('\n', es_stdout);
if ((opt.list_options & LIST_SHOW_PHOTOS) && uid->attribs != NULL)
show_photos (uid->attribs, uid->numattribs, pk, NULL, uid);
@@ -888,30 +885,30 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr, void *opaque)
s2k_char = (/*(sk->protect.s2k.mode == 1001)? '#' :
(sk->protect.s2k.mode == 1002)? '>' : */' ');
- printf ("%s%c %4u%c/%s %s",
+ es_fprintf (es_stdout, "%s%c %4u%c/%s %s",
secret? "ssb":"sub",
s2k_char,
nbits_from_pk (pk2), pubkey_letter (pk2->pubkey_algo),
keystr_from_pk (pk2), datestr_from_pk (pk2));
if (pk2->is_revoked)
{
- printf (" [");
- printf (_("revoked: %s"), revokestr_from_pk (pk2));
- printf ("]");
+ es_fprintf (es_stdout, " [");
+ es_fprintf (es_stdout, _("revoked: %s"), revokestr_from_pk (pk2));
+ es_fprintf (es_stdout, "]");
}
else if (pk2->has_expired)
{
- printf (" [");
- printf (_("expired: %s"), expirestr_from_pk (pk2));
- printf ("]");
+ es_fprintf (es_stdout, " [");
+ es_fprintf (es_stdout, _("expired: %s"), expirestr_from_pk (pk2));
+ es_fprintf (es_stdout, "]");
}
else if (pk2->expiredate)
{
- printf (" [");
- printf (_("expires: %s"), expirestr_from_pk (pk2));
- printf ("]");
+ es_fprintf (es_stdout, " [");
+ es_fprintf (es_stdout, _("expires: %s"), expirestr_from_pk (pk2));
+ es_fprintf (es_stdout, "]");
}
- putchar ('\n');
+ es_putc ('\n', es_stdout);
if (fpr > 1)
{
print_fingerprint (pk2, NULL, 0);
@@ -972,14 +969,14 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr, void *opaque)
sigstr = "sig";
else
{
- printf ("sig "
+ es_fprintf (es_stdout, "sig "
"[unexpected signature class 0x%02x]\n",
sig->sig_class);
continue;
}
- fputs (sigstr, stdout);
- printf ("%c%c %c%c%c%c%c%c %s %s",
+ es_fputs (sigstr, es_stdout);
+ es_fprintf (es_stdout, "%c%c %c%c%c%c%c%c %s %s",
sigrc, (sig->sig_class - 0x10 > 0 &&
sig->sig_class - 0x10 <
4) ? '0' + sig->sig_class - 0x10 : ' ',
@@ -993,20 +990,20 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr, void *opaque)
sig->trust_depth : ' ', keystr (sig->keyid),
datestr_from_sig (sig));
if (opt.list_options & LIST_SHOW_SIG_EXPIRE)
- printf (" %s", expirestr_from_sig (sig));
- printf (" ");
+ es_fprintf (es_stdout, " %s", expirestr_from_sig (sig));
+ es_fprintf (es_stdout, " ");
if (sigrc == '%')
- printf ("[%s] ", g10_errstr (rc));
+ es_fprintf (es_stdout, "[%s] ", g10_errstr (rc));
else if (sigrc == '?')
;
else if (!opt.fast_list_mode)
{
size_t n;
char *p = get_user_id (sig->keyid, &n);
- print_utf8_string (stdout, p, n);
+ print_utf8_buffer (es_stdout, p, n);
xfree (p);
}
- putchar ('\n');
+ es_putc ('\n', es_stdout);
if (sig->flags.policy_url
&& (opt.list_options & LIST_SHOW_POLICY_URLS))
@@ -1028,7 +1025,7 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr, void *opaque)
/* fixme: check or list other sigs here */
}
}
- putchar ('\n');
+ es_putc ('\n', es_stdout);
}
void
@@ -1045,11 +1042,11 @@ print_revokers (PKT_public_key * pk)
{
byte *p;
- printf ("rvk:::%d::::::", pk->revkey[i].algid);
+ es_fprintf (es_stdout, "rvk:::%d::::::", pk->revkey[i].algid);
p = pk->revkey[i].fpr;
for (j = 0; j < 20; j++, p++)
- printf ("%02X", *p);
- printf (":%02x%s:\n", pk->revkey[i].class,
+ es_fprintf (es_stdout, "%02X", *p);
+ es_fprintf (es_stdout, ":%02x%s:\n", pk->revkey[i].class,
(pk->revkey[i].class & 0x40) ? "s" : "");
}
}
@@ -1079,13 +1076,13 @@ list_keyblock_colon (KBNODE keyblock, int secret, int fpr)
pk = node->pkt->pkt.public_key;
keyid_from_pk (pk, keyid);
- fputs (secret? "sec:":"pub:", stdout);
+ es_fputs (secret? "sec:":"pub:", es_stdout);
if (!pk->is_valid)
- putchar ('i');
+ es_putc ('i', es_stdout);
else if (pk->is_revoked)
- putchar ('r');
+ es_putc ('r', es_stdout);
else if (pk->has_expired)
- putchar ('e');
+ es_putc ('e', es_stdout);
else if (opt.fast_list_mode || opt.no_expensive_trust_checks)
;
else
@@ -1093,39 +1090,39 @@ list_keyblock_colon (KBNODE keyblock, int secret, int fpr)
trustletter = get_validity_info (pk, NULL);
if (trustletter == 'u')
ulti_hack = 1;
- putchar (trustletter);
+ es_putc (trustletter, es_stdout);
}
- printf (":%u:%d:%08lX%08lX:%s:%s::",
+ es_fprintf (es_stdout, ":%u:%d:%08lX%08lX:%s:%s::",
nbits_from_pk (pk),
pk->pubkey_algo,
(ulong) keyid[0], (ulong) keyid[1],
colon_datestr_from_pk (pk), colon_strtime (pk->expiredate));
if (!opt.fast_list_mode && !opt.no_expensive_trust_checks)
- putchar (get_ownertrust_info (pk));
- putchar (':');
+ es_putc (get_ownertrust (pk), es_stdout);
+ es_putc (':', es_stdout);
- putchar (':');
- putchar (':');
+ es_putc (':', es_stdout);
+ es_putc (':', es_stdout);
print_capabilities (pk, keyblock);
if (secret)
{
- putchar (':'); /* End of field 13. */
- putchar (':'); /* End of field 14. */
+ es_putc (':', es_stdout); /* End of field 13. */
+ es_putc (':', es_stdout); /* End of field 14. */
if (/*FIXME sk->protect.s2k.mode*/1 == 1001)
- putchar ('#'); /* Key is just a stub. */
+ es_putc ('#', es_stdout); /* Key is just a stub. */
else if (/*FIXME sk->protect.s2k.mode*/1 == 1002)
{
/* Key is stored on an external token (card) or handled by
the gpg-agent. Print the serial number of that token
here. */
/* FIXME: for (i = 0; i < sk->protect.ivlen; i++) */
- /* printf ("%02X", sk->protect.iv[i]); */
+ /* es_fprintf (es_stdout, "%02X", sk->protect.iv[i]); */
}
- putchar (':'); /* End of field 15. */
+ es_putc (':', es_stdout); /* End of field 15. */
}
- putchar ('\n');
+ es_putc ('\n', es_stdout);
print_revokers (pk);
if (fpr)
@@ -1147,11 +1144,11 @@ list_keyblock_colon (KBNODE keyblock, int secret, int fpr)
*/
str = uid->attrib_data ? "uat" : "uid";
if (uid->is_revoked)
- printf ("%s:r::::", str);
+ es_fprintf (es_stdout, "%s:r::::", str);
else if (uid->is_expired)
- printf ("%s:e::::", str);
+ es_fprintf (es_stdout, "%s:e::::", str);
else if (opt.no_expensive_trust_checks)
- printf ("%s:::::", str);
+ es_fprintf (es_stdout, "%s:::::", str);
else
{
int uid_validity;
@@ -1160,25 +1157,25 @@ list_keyblock_colon (KBNODE keyblock, int secret, int fpr)
uid_validity = get_validity_info (pk, uid);
else
uid_validity = 'u';
- printf ("%s:%c::::", str, uid_validity);
+ es_fprintf (es_stdout, "%s:%c::::", str, uid_validity);
}
- printf ("%s:", colon_strtime (uid->created));
- printf ("%s:", colon_strtime (uid->expiredate));
+ es_fprintf (es_stdout, "%s:", colon_strtime (uid->created));
+ es_fprintf (es_stdout, "%s:", colon_strtime (uid->expiredate));
namehash_from_uid (uid);
for (i = 0; i < 20; i++)
- printf ("%02X", uid->namehash[i]);
+ es_fprintf (es_stdout, "%02X", uid->namehash[i]);
- printf ("::");
+ es_fprintf (es_stdout, "::");
if (uid->attrib_data)
- printf ("%u %lu", uid->numattribs, uid->attrib_len);
+ es_fprintf (es_stdout, "%u %lu", uid->numattribs, uid->attrib_len);
else
- print_string (stdout, uid->name, uid->len, ':');
- putchar (':');
- putchar ('\n');
+ es_write_sanitized (es_stdout, uid->name, uid->len, ":", NULL);
+ es_putc (':', es_stdout);
+ es_putc ('\n', es_stdout);
}
else if (node->pkt->pkttype == PKT_PUBLIC_SUBKEY)
{
@@ -1186,22 +1183,22 @@ list_keyblock_colon (KBNODE keyblock, int secret, int fpr)
PKT_public_key *pk2 = node->pkt->pkt.public_key;
keyid_from_pk (pk2, keyid2);
- fputs (secret? "ssb:":"sub:", stdout);
+ es_fputs (secret? "ssb:":"sub:", es_stdout);
if (!pk2->is_valid)
- putchar ('i');
+ es_putc ('i', es_stdout);
else if (pk2->is_revoked)
- putchar ('r');
+ es_putc ('r', es_stdout);
else if (pk2->has_expired)
- putchar ('e');
+ es_putc ('e', es_stdout);
else if (opt.fast_list_mode || opt.no_expensive_trust_checks)
;
else
{
/* TRUSTLETTER should always be defined here. */
if (trustletter)
- printf ("%c", trustletter);
+ es_fprintf (es_stdout, "%c", trustletter);
}
- printf (":%u:%d:%08lX%08lX:%s:%s:::::",
+ es_fprintf (es_stdout, ":%u:%d:%08lX%08lX:%s:%s:::::",
nbits_from_pk (pk2),
pk2->pubkey_algo,
(ulong) keyid2[0], (ulong) keyid2[1],
@@ -1211,21 +1208,21 @@ list_keyblock_colon (KBNODE keyblock, int secret, int fpr)
print_capabilities (pk2, NULL);
if (secret)
{
- putchar (':'); /* End of field 13. */
- putchar (':'); /* End of field 14. */
+ es_putc (':', es_stdout); /* End of field 13. */
+ es_putc (':', es_stdout); /* End of field 14. */
if (/*FIXME:sk2->protect.s2k.mode*/1 == 1001)
- putchar ('#'); /* Key is just a stub. */
+ es_putc ('#', es_stdout); /* Key is just a stub. */
else if (/*FIXME: sk2->protect.s2k.mode*/1 == 1002)
{
/* Key is stored on an external token (card) or
handled by the gpg-agent. Print the serial
number of that token here. */
/* FIXME: for (i = 0; i < sk2->protect.ivlen; i++)
- printf ("%02X", sk2->protect.iv[i]); */
+ es_fprintf (es_stdout, "%02X", sk2->protect.iv[i]); */
}
- putchar (':'); /* End of field 15. */
+ es_putc (':', es_stdout); /* End of field 15. */
}
- putchar ('\n');
+ es_putc ('\n', es_stdout);
if (fpr > 1)
print_fingerprint (pk2, NULL, 0);
if (opt.with_key_data)
@@ -1250,7 +1247,7 @@ list_keyblock_colon (KBNODE keyblock, int secret, int fpr)
sigstr = "sig";
else
{
- printf ("sig::::::::::%02x%c:\n",
+ es_fprintf (es_stdout, "sig::::::::::%02x%c:\n",
sig->sig_class, sig->flags.exportable ? 'x' : 'l');
continue;
}
@@ -1297,49 +1294,49 @@ list_keyblock_colon (KBNODE keyblock, int secret, int fpr)
rc = 0;
sigrc = ' ';
}
- fputs (sigstr, stdout);
- putchar (':');
+ es_fputs (sigstr, es_stdout);
+ es_putc (':', es_stdout);
if (sigrc != ' ')
- putchar (sigrc);
- printf ("::%d:%08lX%08lX:%s:%s:", sig->pubkey_algo,
+ es_putc (sigrc, es_stdout);
+ es_fprintf (es_stdout, "::%d:%08lX%08lX:%s:%s:", sig->pubkey_algo,
(ulong) sig->keyid[0], (ulong) sig->keyid[1],
colon_datestr_from_sig (sig),
colon_expirestr_from_sig (sig));
if (sig->trust_depth || sig->trust_value)
- printf ("%d %d", sig->trust_depth, sig->trust_value);
- printf (":");
+ es_fprintf (es_stdout, "%d %d", sig->trust_depth, sig->trust_value);
+ es_fprintf (es_stdout, ":");
if (sig->trust_regexp)
- print_string (stdout, sig->trust_regexp,
- strlen (sig->trust_regexp), ':');
- printf (":");
+ es_write_sanitized (es_stdout, sig->trust_regexp,
+ strlen (sig->trust_regexp), ":", NULL);
+ es_fprintf (es_stdout, ":");
if (sigrc == '%')
- printf ("[%s] ", g10_errstr (rc));
+ es_fprintf (es_stdout, "[%s] ", g10_errstr (rc));
else if (sigrc == '?')
;
else if (!opt.fast_list_mode)
{
size_t n;
char *p = get_user_id (sig->keyid, &n);
- print_string (stdout, p, n, ':');
+ es_write_sanitized (es_stdout, p, n, ":", NULL);
xfree (p);
}
- printf (":%02x%c:", sig->sig_class,
+ es_fprintf (es_stdout, ":%02x%c:", sig->sig_class,
sig->flags.exportable ? 'x' : 'l');
if (opt.no_sig_cache && opt.check_sigs && fprokay)
{
- putchar (':');
+ es_putc (':', es_stdout);
for (i = 0; i < fplen; i++)
- printf ("%02X", fparray[i]);
+ es_fprintf (es_stdout, "%02X", fparray[i]);
- putchar (':');
+ es_putc (':', es_stdout);
}
- printf ("\n");
+ es_fprintf (es_stdout, "\n");
if (opt.show_subpackets)
print_subpackets_colon (sig);
@@ -1428,7 +1425,7 @@ print_fingerprint (PKT_public_key * pk, PKT_secret_key * sk, int mode)
{
byte array[MAX_FINGERPRINT_LEN], *p;
size_t i, n;
- FILE *fp;
+ estream_t fp;
const char *text;
int primary = 0;
@@ -1497,7 +1494,7 @@ print_fingerprint (PKT_public_key * pk, PKT_secret_key * sk, int mode)
}
else
{
- fp = stdout;
+ fp = es_stdout;
text = _(" Key fingerprint =");
}
@@ -1508,58 +1505,26 @@ print_fingerprint (PKT_public_key * pk, PKT_secret_key * sk, int mode)
p = array;
if (opt.with_colons && !mode)
{
- fprintf (fp, "fpr:::::::::");
+ es_fprintf (fp, "fpr:::::::::");
for (i = 0; i < n; i++, p++)
- fprintf (fp, "%02X", *p);
- putc (':', fp);
+ es_fprintf (fp, "%02X", *p);
+ es_putc (':', fp);
}
else
{
- if (fp)
- fputs (text, fp);
- else
- tty_printf ("%s", text);
+ tty_fprintf (fp, "%s", text);
if (n == 20)
{
for (i = 0; i < n; i++, i++, p += 2)
- {
- if (fp)
- {
- if (i == 10)
- putc (' ', fp);
- fprintf (fp, " %02X%02X", *p, p[1]);
- }
- else
- {
- if (i == 10)
- tty_printf (" ");
- tty_printf (" %02X%02X", *p, p[1]);
- }
- }
+ tty_fprintf (fp, "%s %02X%02X", i==10? " ":"", *p, p[1]);
}
else
{
for (i = 0; i < n; i++, p++)
- {
- if (fp)
- {
- if (i && !(i % 8))
- putc (' ', fp);
- fprintf (fp, " %02X", *p);
- }
- else
- {
- if (i && !(i % 8))
- tty_printf (" ");
- tty_printf (" %02X", *p);
- }
- }
+ tty_fprintf (fp, "%s %02X", (i && !(i % 8))? " ":"", *p);
}
}
- if (fp)
- putc ('\n', fp);
- else
- tty_printf ("\n");
+ tty_fprintf (fp, "\n");
}
/* Print the serial number of an OpenPGP card if available. */
@@ -1575,8 +1540,8 @@ print_card_serialno (PKT_secret_key * sk)
if (opt.with_colons)
return; /* Handled elsewhere. */
- fputs (_(" Card serial no. ="), stdout);
- putchar (' ');
+ es_fputs (_(" Card serial no. ="), es_stdout);
+ es_putc (' ', es_stdout);
if (sk->protect.ivlen == 16
&& !memcmp (sk->protect.iv, "\xD2\x76\x00\x01\x24\x01", 6))
{
@@ -1584,17 +1549,17 @@ print_card_serialno (PKT_secret_key * sk)
for (i = 8; i < 14; i++)
{
if (i == 10)
- putchar (' ');
- printf ("%02X", sk->protect.iv[i]);
+ es_putc (' ', es_stdout);
+ es_fprintf (es_stdout, "%02X", sk->protect.iv[i]);
}
}
else
{
/* Something is wrong: Print all. */
for (i = 0; i < sk->protect.ivlen; i++)
- printf ("%02X", sk->protect.iv[i]);
+ es_fprintf (es_stdout, "%02X", sk->protect.iv[i]);
}
- putchar ('\n');
+ es_putc ('\n', es_stdout);
}
@@ -1607,9 +1572,9 @@ set_attrib_fd (int fd)
if (fd != -1 && last_fd == fd)
return;
- if (attrib_fp && attrib_fp != stdout && attrib_fp != stderr
- && attrib_fp != log_get_stream ())
- fclose (attrib_fp);
+ /* Fixme: Do we need to check for the log stream here? */
+ if (attrib_fp && attrib_fp != log_get_stream ())
+ es_fclose (attrib_fp);
attrib_fp = NULL;
if (fd == -1)
return;
@@ -1618,11 +1583,11 @@ set_attrib_fd (int fd)
setmode (fd, O_BINARY);
#endif
if (fd == 1)
- attrib_fp = stdout;
+ attrib_fp = es_stdout;
else if (fd == 2)
- attrib_fp = stderr;
+ attrib_fp = es_stderr;
else
- attrib_fp = fdopen (fd, "wb");
+ attrib_fp = es_fdopen (fd, "wb");
if (!attrib_fp)
{
log_fatal ("can't open fd %d for attribute output: %s\n",
diff --git a/g10/main.h b/g10/main.h
index ec09124bd..8ce422f2c 100644
--- a/g10/main.h
+++ b/g10/main.h
@@ -149,7 +149,7 @@ int pubkey_get_nskey( int algo );
int pubkey_get_nsig( int algo );
int pubkey_get_nenc( int algo );
unsigned int pubkey_nbits( int algo, gcry_mpi_t *pkey );
-int mpi_print( FILE *fp, gcry_mpi_t a, int mode );
+int mpi_print (estream_t stream, gcry_mpi_t a, int mode);
/*-- status.c --*/
void set_status_fd ( int fd );
@@ -308,8 +308,8 @@ void show_notation(PKT_signature *sig,int indent,int mode,int which);
void dump_attribs (const PKT_user_id *uid, PKT_public_key *pk);
void set_attrib_fd(int fd);
void print_seckey_info (PKT_public_key *pk);
-void print_pubkey_info (FILE *fp, PKT_public_key *pk);
-void print_card_key_info (FILE *fp, KBNODE keyblock);
+void print_pubkey_info (estream_t fp, PKT_public_key *pk);
+void print_card_key_info (estream_t fp, KBNODE keyblock);
/*-- verify.c --*/
void print_file_status( int status, const char *name, int what );
@@ -341,7 +341,7 @@ int gpg_server (ctrl_t);
#ifdef ENABLE_CARD_SUPPORT
/*-- card-util.c --*/
void change_pin (int no, int allow_admin);
-void card_status (FILE *fp, char *serialno, size_t serialnobuflen);
+void card_status (estream_t fp, char *serialno, size_t serialnobuflen);
void card_edit (strlist_t commands);
int card_generate_subkey (KBNODE pub_keyblock, KBNODE sec_keyblock);
int card_store_subkey (KBNODE node, int use);
diff --git a/g10/mainproc.c b/g10/mainproc.c
index 5d568474b..a61325aba 100644
--- a/g10/mainproc.c
+++ b/g10/mainproc.c
@@ -892,12 +892,12 @@ print_userid( PACKET *pkt )
pkt->pkt.user_id->numattribs,
pkt->pkt.user_id->attrib_len);
else
- print_string( stdout, pkt->pkt.user_id->name,
- pkt->pkt.user_id->len, ':');
+ es_write_sanitized (es_stdout, pkt->pkt.user_id->name,
+ pkt->pkt.user_id->len, ":", NULL);
}
else
- print_utf8_string( stdout, pkt->pkt.user_id->name,
- pkt->pkt.user_id->len );
+ print_utf8_buffer (es_stdout, pkt->pkt.user_id->name,
+ pkt->pkt.user_id->len );
}
@@ -1135,8 +1135,8 @@ list_node( CTX c, KBNODE node )
printf(":");
if(sig->trust_regexp)
- print_string(stdout,sig->trust_regexp,
- strlen(sig->trust_regexp),':');
+ es_write_sanitized (es_stdout,sig->trust_regexp,
+ strlen(sig->trust_regexp), ":", NULL);
printf(":");
}
else
@@ -1155,7 +1155,8 @@ list_node( CTX c, KBNODE node )
}
else if( !opt.fast_list_mode ) {
p = get_user_id( sig->keyid, &n );
- print_string( stdout, p, n, opt.with_colons );
+ es_write_sanitized (es_stdout, p, n,
+ opt.with_colons?":":NULL, NULL );
xfree(p);
}
if( opt.with_colons )
@@ -1633,7 +1634,7 @@ check_sig_and_print( CTX c, KBNODE node )
page, but "from" if it is located on a keyserver. I'm
not going to even try to make two strings here :) */
log_info(_("Key available at: ") );
- print_utf8_string( log_get_stream(), p, n );
+ print_utf8_buffer (log_get_stream(), p, n);
log_printf ("\n");
if(opt.keyserver_options.options&KEYSERVER_AUTO_KEY_RETRIEVE
diff --git a/g10/misc.c b/g10/misc.c
index f34e1e36d..5e0ba9449 100644
--- a/g10/misc.c
+++ b/g10/misc.c
@@ -1394,26 +1394,28 @@ pubkey_nbits( int algo, gcry_mpi_t *key )
/* FIXME: Use gcry_mpi_print directly. */
int
-mpi_print( FILE *fp, gcry_mpi_t a, int mode )
+mpi_print (estream_t fp, gcry_mpi_t a, int mode)
{
- int n=0;
-
- if( !a )
- return fprintf(fp, "[MPI_NULL]");
- if( !mode ) {
- unsigned int n1;
- n1 = gcry_mpi_get_nbits(a);
- n += fprintf(fp, "[%u bits]", n1);
+ int n=0;
+
+ if (!a)
+ return es_fprintf (fp, "[MPI_NULL]");
+ if (!mode)
+ {
+ unsigned int n1;
+ n1 = gcry_mpi_get_nbits(a);
+ n += es_fprintf (fp, "[%u bits]", n1);
}
- else {
- unsigned char *buffer;
-
- if (gcry_mpi_aprint (GCRYMPI_FMT_HEX, &buffer, NULL, a))
- BUG ();
- fputs( buffer, fp );
- n += strlen(buffer);
- gcry_free( buffer );
+ else
+ {
+ unsigned char *buffer;
+
+ if (gcry_mpi_aprint (GCRYMPI_FMT_HEX, &buffer, NULL, a))
+ BUG ();
+ es_fputs (buffer, fp);
+ n += strlen (buffer);
+ gcry_free (buffer);
}
- return n;
+ return n;
}
diff --git a/g10/parse-packet.c b/g10/parse-packet.c
index e2a5ea39d..2065c22ef 100644
--- a/g10/parse-packet.c
+++ b/g10/parse-packet.c
@@ -1,6 +1,6 @@
/* parse-packet.c - read packets
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2009 Free Software Foundation, Inc.
+ * 2007, 2009, 2010 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -37,7 +37,7 @@
static int mpi_print_mode;
static int list_mode;
-static FILE *listfp;
+static estream_t listfp;
static int parse (IOBUF inp, PACKET * pkt, int onlykeypkts,
off_t * retpos, int *skip, IOBUF out, int do_skip
@@ -169,7 +169,7 @@ set_packet_list_mode (int mode)
list_mode = mode;
/* FIXME(gcrypt) mpi_print_mode = DBG_MPI; */
/* We use stdout print only if invoked by the --list-packets command
- but switch to stderr in all otehr cases. This breaks the
+ but switch to stderr in all other cases. This breaks the
previous behaviour but that seems to be more of a bug than
intentional. I don't believe that any application makes use of
this long standing annoying way of printing to stdout except when
@@ -180,11 +180,11 @@ set_packet_list_mode (int mode)
stream.
Using stderr is not actually very clean because it bypasses the
- logging code but it is a special thing anyay. I am not sure
+ logging code but it is a special thing anyway. I am not sure
whether using log_stream() would be better. Perhaps we should
enable the list mdoe only with a special option. */
if (!listfp)
- listfp = opt.list_packets == 2 ? stdout : stderr;
+ listfp = opt.list_packets == 2 ? es_stdout : es_stderr;
return old;
}
@@ -639,14 +639,14 @@ dump_hex_line (int c, int *i)
if (*i && !(*i % 8))
{
if (*i && !(*i % 24))
- fprintf (listfp, "\n%4d:", *i);
+ es_fprintf (listfp, "\n%4d:", *i);
else
- putc (' ', listfp);
+ es_putc (' ', listfp);
}
if (c == -1)
- fprintf (listfp, " EOF");
+ es_fprintf (listfp, " EOF");
else
- fprintf (listfp, " %02x", c);
+ es_fprintf (listfp, " %02x", c);
++*i;
}
@@ -694,12 +694,12 @@ skip_packet (IOBUF inp, int pkttype, unsigned long pktlen, int partial)
{
if (list_mode)
{
- fprintf (listfp, ":unknown packet: type %2d, length %lu\n",
- pkttype, pktlen);
+ es_fprintf (listfp, ":unknown packet: type %2d, length %lu\n",
+ pkttype, pktlen);
if (pkttype)
{
int c, i = 0;
- fputs ("dump:", listfp);
+ es_fputs ("dump:", listfp);
if (partial)
{
while ((c = iobuf_get (inp)) != -1)
@@ -714,7 +714,7 @@ skip_packet (IOBUF inp, int pkttype, unsigned long pktlen, int partial)
break;
}
}
- putc ('\n', listfp);
+ es_putc ('\n', listfp);
return;
}
}
@@ -770,7 +770,7 @@ parse_marker (IOBUF inp, int pkttype, unsigned long pktlen)
}
if (list_mode)
- fputs (":marker packet: PGP\n", listfp);
+ es_fputs (":marker packet: PGP\n", listfp);
return 0;
@@ -870,22 +870,21 @@ parse_symkeyenc (IOBUF inp, int pkttype, unsigned long pktlen,
if (list_mode)
{
- fprintf (listfp,
- ":symkey enc packet: version %d, cipher %d, s2k %d, hash %d",
- version, cipher_algo, s2kmode, hash_algo);
+ es_fprintf (listfp,
+ ":symkey enc packet: version %d, cipher %d, s2k %d, hash %d",
+ version, cipher_algo, s2kmode, hash_algo);
if (seskeylen)
- fprintf (listfp, ", seskey %d bits", (seskeylen - 1) * 8);
- fprintf (listfp, "\n");
+ es_fprintf (listfp, ", seskey %d bits", (seskeylen - 1) * 8);
+ es_fprintf (listfp, "\n");
if (s2kmode == 1 || s2kmode == 3)
{
- fprintf (listfp, "\tsalt ");
- for (i = 0; i < 8; i++)
- fprintf (listfp, "%02x", k->s2k.salt[i]);
+ es_fprintf (listfp, "\tsalt ");
+ es_write_hexstring (listfp, k->s2k.salt, 8, 0, NULL);
if (s2kmode == 3)
- fprintf (listfp, ", count %lu (%lu)",
- S2K_DECODE_COUNT ((ulong) k->s2k.count),
- (ulong) k->s2k.count);
- fprintf (listfp, "\n");
+ es_fprintf (listfp, ", count %lu (%lu)",
+ S2K_DECODE_COUNT ((ulong) k->s2k.count),
+ (ulong) k->s2k.count);
+ es_fprintf (listfp, "\n");
}
}
@@ -927,16 +926,16 @@ parse_pubkeyenc (IOBUF inp, int pkttype, unsigned long pktlen,
pktlen--;
k->throw_keyid = 0; /* Only used as flag for build_packet. */
if (list_mode)
- fprintf (listfp,
- ":pubkey enc packet: version %d, algo %d, keyid %08lX%08lX\n",
- k->version, k->pubkey_algo, (ulong) k->keyid[0],
- (ulong) k->keyid[1]);
+ es_fprintf (listfp,
+ ":pubkey enc packet: version %d, algo %d, keyid %08lX%08lX\n",
+ k->version, k->pubkey_algo, (ulong) k->keyid[0],
+ (ulong) k->keyid[1]);
ndata = pubkey_get_nenc (k->pubkey_algo);
if (!ndata)
{
if (list_mode)
- fprintf (listfp, "\tunsupported algorithm %d\n", k->pubkey_algo);
+ es_fprintf (listfp, "\tunsupported algorithm %d\n", k->pubkey_algo);
unknown_pubkey_warning (k->pubkey_algo);
k->data[0] = NULL; /* No need to store the encrypted data. */
}
@@ -949,9 +948,9 @@ parse_pubkeyenc (IOBUF inp, int pkttype, unsigned long pktlen,
pktlen -= n;
if (list_mode)
{
- fprintf (listfp, "\tdata: ");
+ es_fprintf (listfp, "\tdata: ");
mpi_print (listfp, k->data[i], mpi_print_mode);
- putc ('\n', listfp);
+ es_putc ('\n', listfp);
}
if (!k->data[i])
rc = gpg_error (GPG_ERR_INV_PACKET);
@@ -976,98 +975,98 @@ dump_sig_subpkt (int hashed, int type, int critical,
* and add an additional notice. */
if (type == SIGSUBPKT_ARR && !hashed)
{
- fprintf (listfp,
- "\tsubpkt %d len %u (additional recipient request)\n"
- "WARNING: PGP versions > 5.0 and < 6.5.8 will automagically "
- "encrypt to this key and thereby reveal the plaintext to "
- "the owner of this ARR key. Detailed info follows:\n",
- type, (unsigned) length);
+ es_fprintf (listfp,
+ "\tsubpkt %d len %u (additional recipient request)\n"
+ "WARNING: PGP versions > 5.0 and < 6.5.8 will automagically "
+ "encrypt to this key and thereby reveal the plaintext to "
+ "the owner of this ARR key. Detailed info follows:\n",
+ type, (unsigned) length);
}
buffer++;
length--;
- fprintf (listfp, "\t%s%ssubpkt %d len %u (", /*) */
- critical ? "critical " : "",
- hashed ? "hashed " : "", type, (unsigned) length);
+ es_fprintf (listfp, "\t%s%ssubpkt %d len %u (", /*) */
+ critical ? "critical " : "",
+ hashed ? "hashed " : "", type, (unsigned) length);
if (length > buflen)
{
- fprintf (listfp, "too short: buffer is only %u)\n", (unsigned) buflen);
+ es_fprintf (listfp, "too short: buffer is only %u)\n", (unsigned) buflen);
return;
}
switch (type)
{
case SIGSUBPKT_SIG_CREATED:
if (length >= 4)
- fprintf (listfp, "sig created %s",
- strtimestamp (buffer_to_u32 (buffer)));
+ es_fprintf (listfp, "sig created %s",
+ strtimestamp (buffer_to_u32 (buffer)));
break;
case SIGSUBPKT_SIG_EXPIRE:
if (length >= 4)
{
if (buffer_to_u32 (buffer))
- fprintf (listfp, "sig expires after %s",
- strtimevalue (buffer_to_u32 (buffer)));
+ es_fprintf (listfp, "sig expires after %s",
+ strtimevalue (buffer_to_u32 (buffer)));
else
- fprintf (listfp, "sig does not expire");
+ es_fprintf (listfp, "sig does not expire");
}
break;
case SIGSUBPKT_EXPORTABLE:
if (length)
- fprintf (listfp, "%sexportable", *buffer ? "" : "not ");
+ es_fprintf (listfp, "%sexportable", *buffer ? "" : "not ");
break;
case SIGSUBPKT_TRUST:
if (length != 2)
p = "[invalid trust subpacket]";
else
- fprintf (listfp, "trust signature of depth %d, value %d", buffer[0],
- buffer[1]);
+ es_fprintf (listfp, "trust signature of depth %d, value %d", buffer[0],
+ buffer[1]);
break;
case SIGSUBPKT_REGEXP:
if (!length)
p = "[invalid regexp subpacket]";
else
- fprintf (listfp, "regular expression: \"%s\"", buffer);
+ es_fprintf (listfp, "regular expression: \"%s\"", buffer);
break;
case SIGSUBPKT_REVOCABLE:
if (length)
- fprintf (listfp, "%srevocable", *buffer ? "" : "not ");
+ es_fprintf (listfp, "%srevocable", *buffer ? "" : "not ");
break;
case SIGSUBPKT_KEY_EXPIRE:
if (length >= 4)
{
if (buffer_to_u32 (buffer))
- fprintf (listfp, "key expires after %s",
- strtimevalue (buffer_to_u32 (buffer)));
+ es_fprintf (listfp, "key expires after %s",
+ strtimevalue (buffer_to_u32 (buffer)));
else
- fprintf (listfp, "key does not expire");
+ es_fprintf (listfp, "key does not expire");
}
break;
case SIGSUBPKT_PREF_SYM:
- fputs ("pref-sym-algos:", listfp);
+ es_fputs ("pref-sym-algos:", listfp);
for (i = 0; i < length; i++)
- fprintf (listfp, " %d", buffer[i]);
+ es_fprintf (listfp, " %d", buffer[i]);
break;
case SIGSUBPKT_REV_KEY:
- fputs ("revocation key: ", listfp);
+ es_fputs ("revocation key: ", listfp);
if (length < 22)
p = "[too short]";
else
{
- fprintf (listfp, "c=%02x a=%d f=", buffer[0], buffer[1]);
+ es_fprintf (listfp, "c=%02x a=%d f=", buffer[0], buffer[1]);
for (i = 2; i < length; i++)
- fprintf (listfp, "%02X", buffer[i]);
+ es_fprintf (listfp, "%02X", buffer[i]);
}
break;
case SIGSUBPKT_ISSUER:
if (length >= 8)
- fprintf (listfp, "issuer key ID %08lX%08lX",
- (ulong) buffer_to_u32 (buffer),
- (ulong) buffer_to_u32 (buffer + 4));
+ es_fprintf (listfp, "issuer key ID %08lX%08lX",
+ (ulong) buffer_to_u32 (buffer),
+ (ulong) buffer_to_u32 (buffer + 4));
break;
case SIGSUBPKT_NOTATION:
{
- fputs ("notation: ", listfp);
+ es_fputs ("notation: ", listfp);
if (length < 8)
p = "[too short]";
else
@@ -1082,11 +1081,11 @@ dump_sig_subpkt (int hashed, int type, int critical,
p = "[error]";
else
{
- print_string (listfp, s, n1, ')');
- putc ('=', listfp);
+ es_write_sanitized (listfp, s, n1, ")", NULL);
+ es_putc ('=', listfp);
if (*buffer & 0x80)
- print_string (listfp, s + n1, n2, ')');
+ es_write_sanitized (listfp, s + n1, n2, ")", NULL);
else
p = "[not human readable]";
}
@@ -1094,35 +1093,35 @@ dump_sig_subpkt (int hashed, int type, int critical,
}
break;
case SIGSUBPKT_PREF_HASH:
- fputs ("pref-hash-algos:", listfp);
+ es_fputs ("pref-hash-algos:", listfp);
for (i = 0; i < length; i++)
- fprintf (listfp, " %d", buffer[i]);
+ es_fprintf (listfp, " %d", buffer[i]);
break;
case SIGSUBPKT_PREF_COMPR:
- fputs ("pref-zip-algos:", listfp);
+ es_fputs ("pref-zip-algos:", listfp);
for (i = 0; i < length; i++)
- fprintf (listfp, " %d", buffer[i]);
+ es_fprintf (listfp, " %d", buffer[i]);
break;
case SIGSUBPKT_KS_FLAGS:
- fputs ("key server preferences:", listfp);
+ es_fputs ("key server preferences:", listfp);
for (i = 0; i < length; i++)
- fprintf (listfp, " %02X", buffer[i]);
+ es_fprintf (listfp, " %02X", buffer[i]);
break;
case SIGSUBPKT_PREF_KS:
- fputs ("preferred key server: ", listfp);
- print_string (listfp, buffer, length, ')');
+ es_fputs ("preferred key server: ", listfp);
+ es_write_sanitized (listfp, buffer, length, ")", NULL);
break;
case SIGSUBPKT_PRIMARY_UID:
p = "primary user ID";
break;
case SIGSUBPKT_POLICY:
- fputs ("policy: ", listfp);
- print_string (listfp, buffer, length, ')');
+ es_fputs ("policy: ", listfp);
+ es_write_sanitized (listfp, buffer, length, ")", NULL);
break;
case SIGSUBPKT_KEY_FLAGS:
- fputs ("key flags:", listfp);
+ es_fputs ("key flags:", listfp);
for (i = 0; i < length; i++)
- fprintf (listfp, " %02X", buffer[i]);
+ es_fprintf (listfp, " %02X", buffer[i]);
break;
case SIGSUBPKT_SIGNERS_UID:
p = "signer's user ID";
@@ -1130,37 +1129,37 @@ dump_sig_subpkt (int hashed, int type, int critical,
case SIGSUBPKT_REVOC_REASON:
if (length)
{
- fprintf (listfp, "revocation reason 0x%02x (", *buffer);
- print_string (listfp, buffer + 1, length - 1, ')');
+ es_fprintf (listfp, "revocation reason 0x%02x (", *buffer);
+ es_write_sanitized (listfp, buffer + 1, length - 1, ")", NULL);
p = ")";
}
break;
case SIGSUBPKT_ARR:
- fputs ("Big Brother's key (ignored): ", listfp);
+ es_fputs ("Big Brother's key (ignored): ", listfp);
if (length < 22)
p = "[too short]";
else
{
- fprintf (listfp, "c=%02x a=%d f=", buffer[0], buffer[1]);
- for (i = 2; i < length; i++)
- fprintf (listfp, "%02X", buffer[i]);
+ es_fprintf (listfp, "c=%02x a=%d f=", buffer[0], buffer[1]);
+ if (length > 2)
+ es_write_hexstring (listfp, buffer+2, length-2, 0, NULL);
}
break;
case SIGSUBPKT_FEATURES:
- fputs ("features:", listfp);
+ es_fputs ("features:", listfp);
for (i = 0; i < length; i++)
- fprintf (listfp, " %02x", buffer[i]);
+ es_fprintf (listfp, " %02x", buffer[i]);
break;
case SIGSUBPKT_SIGNATURE:
- fputs ("signature: ", listfp);
+ es_fputs ("signature: ", listfp);
if (length < 17)
p = "[too short]";
else
- fprintf (listfp, "v%d, class 0x%02X, algo %d, digest algo %d",
- buffer[0],
- buffer[0] == 3 ? buffer[2] : buffer[1],
- buffer[0] == 3 ? buffer[15] : buffer[2],
- buffer[0] == 3 ? buffer[16] : buffer[3]);
+ es_fprintf (listfp, "v%d, class 0x%02X, algo %d, digest algo %d",
+ buffer[0],
+ buffer[0] == 3 ? buffer[2] : buffer[1],
+ buffer[0] == 3 ? buffer[15] : buffer[2],
+ buffer[0] == 3 ? buffer[16] : buffer[3]);
break;
default:
if (type >= 100 && type <= 110)
@@ -1170,7 +1169,7 @@ dump_sig_subpkt (int hashed, int type, int critical,
break;
}
- fprintf (listfp, "%s)\n", p ? p : "");
+ es_fprintf (listfp, "%s)\n", p ? p : "");
}
@@ -1654,13 +1653,13 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
if (list_mode)
{
- fprintf (listfp, ":signature packet: algo %d, keyid %08lX%08lX\n"
- "\tversion %d, created %lu, md5len %d, sigclass 0x%02x\n"
- "\tdigest algo %d, begin of digest %02x %02x\n",
- sig->pubkey_algo,
- (ulong) sig->keyid[0], (ulong) sig->keyid[1],
- sig->version, (ulong) sig->timestamp, md5_len, sig->sig_class,
- sig->digest_algo, sig->digest_start[0], sig->digest_start[1]);
+ es_fprintf (listfp, ":signature packet: algo %d, keyid %08lX%08lX\n"
+ "\tversion %d, created %lu, md5len %d, sigclass 0x%02x\n"
+ "\tdigest algo %d, begin of digest %02x %02x\n",
+ sig->pubkey_algo,
+ (ulong) sig->keyid[0], (ulong) sig->keyid[1],
+ sig->version, (ulong) sig->timestamp, md5_len, sig->sig_class,
+ sig->digest_algo, sig->digest_start[0], sig->digest_start[1]);
if (is_v4)
{
parse_sig_subpkt (sig->hashed, SIGSUBPKT_LIST_HASHED, NULL);
@@ -1672,7 +1671,7 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
if (!ndata)
{
if (list_mode)
- fprintf (listfp, "\tunknown algorithm %d\n", sig->pubkey_algo);
+ es_fprintf (listfp, "\tunknown algorithm %d\n", sig->pubkey_algo);
unknown_pubkey_warning (sig->pubkey_algo);
/* We store the plain material in data[0], so that we are able
@@ -1701,9 +1700,9 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
pktlen -= n;
if (list_mode)
{
- fprintf (listfp, "\tdata: ");
+ es_fprintf (listfp, "\tdata: ");
mpi_print (listfp, sig->data[i], mpi_print_mode);
- putc ('\n', listfp);
+ es_putc ('\n', listfp);
}
if (!sig->data[i])
rc = G10ERR_INVALID_PACKET;
@@ -1750,13 +1749,13 @@ parse_onepass_sig (IOBUF inp, int pkttype, unsigned long pktlen,
ops->last = iobuf_get_noeof (inp);
pktlen--;
if (list_mode)
- fprintf (listfp,
- ":onepass_sig packet: keyid %08lX%08lX\n"
- "\tversion %d, sigclass 0x%02x, digest %d, pubkey %d, "
- "last=%d\n",
- (ulong) ops->keyid[0], (ulong) ops->keyid[1],
- version, ops->sig_class,
- ops->digest_algo, ops->pubkey_algo, ops->last);
+ es_fprintf (listfp,
+ ":onepass_sig packet: keyid %08lX%08lX\n"
+ "\tversion %d, sigclass 0x%02x, digest %d, pubkey %d, "
+ "last=%d\n",
+ (ulong) ops->keyid[0], (ulong) ops->keyid[1],
+ version, ops->sig_class,
+ ops->digest_algo, ops->pubkey_algo, ops->last);
leave:
@@ -1834,17 +1833,17 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
* luckily all those comments are started by a hash. */
if (list_mode)
{
- fprintf (listfp, ":rfc1991 comment packet: \"");
+ es_fprintf (listfp, ":rfc1991 comment packet: \"");
for (; pktlen; pktlen--)
{
int c;
c = iobuf_get_noeof (inp);
if (c >= ' ' && c <= 'z')
- putc (c, listfp);
+ es_putc (c, listfp);
else
- fprintf (listfp, "\\x%02x", c);
+ es_fprintf (listfp, "\\x%02x", c);
}
- fprintf (listfp, "\"\n");
+ es_fprintf (listfp, "\"\n");
}
iobuf_skip_rest (inp, pktlen, 0);
return 0;
@@ -1887,13 +1886,13 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
algorithm = iobuf_get_noeof (inp);
pktlen--;
if (list_mode)
- fprintf (listfp, ":%s key packet:\n"
- "\tversion %d, algo %d, created %lu, expires %lu\n",
- pkttype == PKT_PUBLIC_KEY ? "public" :
- pkttype == PKT_SECRET_KEY ? "secret" :
- pkttype == PKT_PUBLIC_SUBKEY ? "public sub" :
- pkttype == PKT_SECRET_SUBKEY ? "secret sub" : "??",
- version, algorithm, timestamp, expiredate);
+ es_fprintf (listfp, ":%s key packet:\n"
+ "\tversion %d, algo %d, created %lu, expires %lu\n",
+ pkttype == PKT_PUBLIC_KEY ? "public" :
+ pkttype == PKT_SECRET_KEY ? "secret" :
+ pkttype == PKT_PUBLIC_SUBKEY ? "public sub" :
+ pkttype == PKT_SECRET_SUBKEY ? "secret sub" : "??",
+ version, algorithm, timestamp, expiredate);
if (pkttype == PKT_SECRET_KEY || pkttype == PKT_SECRET_SUBKEY)
{
@@ -1932,7 +1931,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
if (!npkey)
{
if (list_mode)
- fprintf (listfp, "\tunknown algorithm %d\n", algorithm);
+ es_fprintf (listfp, "\tunknown algorithm %d\n", algorithm);
unknown_pubkey_warning (algorithm);
}
@@ -1958,9 +1957,9 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
pktlen -= n;
if (list_mode)
{
- fprintf (listfp, "\tskey[%d]: ", i);
+ es_fprintf (listfp, "\tskey[%d]: ", i);
mpi_print (listfp, sk->skey[i], mpi_print_mode);
- putc ('\n', listfp);
+ es_putc ('\n', listfp);
}
if (!sk->skey[i])
rc = G10ERR_INVALID_PACKET;
@@ -1999,8 +1998,8 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
if (i < 4 || memcmp (temp, "GNU", 3))
{
if (list_mode)
- fprintf (listfp, "\tunknown S2K %d\n",
- sk->protect.s2k.mode);
+ es_fprintf (listfp, "\tunknown S2K %d\n",
+ sk->protect.s2k.mode);
rc = G10ERR_INVALID_PACKET;
goto leave;
}
@@ -2023,46 +2022,46 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
{
case 0:
if (list_mode)
- fprintf (listfp, "\tsimple S2K");
+ es_fprintf (listfp, "\tsimple S2K");
break;
case 1:
if (list_mode)
- fprintf (listfp, "\tsalted S2K");
+ es_fprintf (listfp, "\tsalted S2K");
break;
case 3:
if (list_mode)
- fprintf (listfp, "\titer+salt S2K");
+ es_fprintf (listfp, "\titer+salt S2K");
break;
case 1001:
if (list_mode)
- fprintf (listfp, "\tgnu-dummy S2K");
+ es_fprintf (listfp, "\tgnu-dummy S2K");
break;
case 1002:
if (list_mode)
- fprintf (listfp, "\tgnu-divert-to-card S2K");
+ es_fprintf (listfp, "\tgnu-divert-to-card S2K");
break;
default:
if (list_mode)
- fprintf (listfp, "\tunknown %sS2K %d\n",
- sk->protect.s2k.mode < 1000 ? "" : "GNU ",
- sk->protect.s2k.mode);
+ es_fprintf (listfp, "\tunknown %sS2K %d\n",
+ sk->protect.s2k.mode < 1000 ? "" : "GNU ",
+ sk->protect.s2k.mode);
rc = G10ERR_INVALID_PACKET;
goto leave;
}
if (list_mode)
{
- fprintf (listfp, ", algo: %d,%s hash: %d",
- sk->protect.algo,
- sk->protect.sha1chk ? " SHA1 protection,"
- : " simple checksum,", sk->protect.s2k.hash_algo);
+ es_fprintf (listfp, ", algo: %d,%s hash: %d",
+ sk->protect.algo,
+ sk->protect.sha1chk ? " SHA1 protection,"
+ : " simple checksum,", sk->protect.s2k.hash_algo);
if (sk->protect.s2k.mode == 1 || sk->protect.s2k.mode == 3)
{
- fprintf (listfp, ", salt: ");
- for (i = 0; i < 8; i++)
- fprintf (listfp, "%02x", sk->protect.s2k.salt[i]);
+ es_fprintf (listfp, ", salt: ");
+ es_write_hexstring (listfp, sk->protect.s2k.salt, 8,
+ 0, NULL);
}
- putc ('\n', listfp);
+ es_putc ('\n', listfp);
}
if (sk->protect.s2k.mode == 3)
@@ -2075,8 +2074,8 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
sk->protect.s2k.count = iobuf_get (inp);
pktlen--;
if (list_mode)
- fprintf (listfp, "\tprotect count: %lu\n",
- (ulong) sk->protect.s2k.count);
+ es_fprintf (listfp, "\tprotect count: %lu\n",
+ (ulong) sk->protect.s2k.count);
}
else if (sk->protect.s2k.mode == 1002)
{
@@ -2103,8 +2102,8 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
sk->protect.s2k.mode = 0;
sk->protect.s2k.hash_algo = DIGEST_ALGO_MD5;
if (list_mode)
- fprintf (listfp, "\tprotect algo: %d (hash algo: %d)\n",
- sk->protect.algo, sk->protect.s2k.hash_algo);
+ es_fprintf (listfp, "\tprotect algo: %d (hash algo: %d)\n",
+ sk->protect.algo, sk->protect.s2k.hash_algo);
}
/* It is really ugly that we don't know the size
@@ -2131,12 +2130,12 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
temp[i] = iobuf_get_noeof (inp);
if (list_mode)
{
- fprintf (listfp,
+ es_fprintf (listfp,
sk->protect.s2k.mode == 1002 ? "\tserial-number: "
: "\tprotect IV: ");
for (i = 0; i < sk->protect.ivlen; i++)
- fprintf (listfp, " %02x", temp[i]);
- putc ('\n', listfp);
+ es_fprintf (listfp, " %02x", temp[i]);
+ es_putc ('\n', listfp);
}
memcpy (sk->protect.iv, temp, sk->protect.ivlen);
}
@@ -2166,7 +2165,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
pktlen = 0;
if (list_mode)
{
- fprintf (listfp, "\tencrypted stuff follows\n");
+ es_fprintf (listfp, "\tencrypted stuff follows\n");
}
}
else /* The v3 method: The mpi length is not encrypted. */
@@ -2177,7 +2176,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
{
sk->skey[i] = read_protected_v3_mpi (inp, &pktlen);
if (list_mode)
- fprintf (listfp, "\tskey[%d]: [encrypted]\n", i);
+ es_fprintf (listfp, "\tskey[%d]: [encrypted]\n", i);
}
else
{
@@ -2186,9 +2185,9 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
pktlen -= n;
if (list_mode)
{
- fprintf (listfp, "\tskey[%d]: ", i);
+ es_fprintf (listfp, "\tskey[%d]: ", i);
mpi_print (listfp, sk->skey[i], mpi_print_mode);
- putc ('\n', listfp);
+ es_putc ('\n', listfp);
}
}
@@ -2202,7 +2201,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
pktlen -= 2;
if (list_mode)
{
- fprintf (listfp, "\tchecksum: %04hx\n", sk->csum);
+ es_fprintf (listfp, "\tchecksum: %04hx\n", sk->csum);
}
}
@@ -2229,9 +2228,9 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
pktlen -= n;
if (list_mode)
{
- fprintf (listfp, "\tpkey[%d]: ", i);
+ es_fprintf (listfp, "\tpkey[%d]: ", i);
mpi_print (listfp, pk->pkey[i], mpi_print_mode);
- putc ('\n', listfp);
+ es_putc ('\n', listfp);
}
if (!pk->pkey[i])
rc = G10ERR_INVALID_PACKET;
@@ -2243,8 +2242,8 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
}
if (list_mode)
- fprintf (listfp, "\tkeyid: %08lX%08lX\n",
- (ulong) keyid[0], (ulong) keyid[1]);
+ es_fprintf (listfp, "\tkeyid: %08lX%08lX\n",
+ (ulong) keyid[0], (ulong) keyid[1]);
leave:
iobuf_skip_rest (inp, pktlen, 0);
@@ -2352,16 +2351,16 @@ parse_user_id (IOBUF inp, int pkttype, unsigned long pktlen, PACKET * packet)
if (list_mode)
{
int n = packet->pkt.user_id->len;
- fprintf (listfp, ":user ID packet: \"");
- /* fixme: Hey why don't we replace this with print_string?? */
+ es_fprintf (listfp, ":user ID packet: \"");
+ /* fixme: Hey why don't we replace this with es_write_sanitized?? */
for (p = packet->pkt.user_id->name; n; p++, n--)
{
if (*p >= ' ' && *p <= 'z')
- putc (*p, listfp);
+ es_putc (*p, listfp);
else
- fprintf (listfp, "\\x%02x", *p);
+ es_fprintf (listfp, "\\x%02x", *p);
}
- fprintf (listfp, "\"\n");
+ es_fprintf (listfp, "\"\n");
}
return 0;
}
@@ -2429,7 +2428,7 @@ parse_attribute (IOBUF inp, int pkttype, unsigned long pktlen,
if (list_mode)
{
- fprintf (listfp, ":attribute packet: %s\n", packet->pkt.user_id->name);
+ es_fprintf (listfp, ":attribute packet: %s\n", packet->pkt.user_id->name);
}
return 0;
}
@@ -2459,16 +2458,16 @@ parse_comment (IOBUF inp, int pkttype, unsigned long pktlen, PACKET * packet)
if (list_mode)
{
int n = packet->pkt.comment->len;
- fprintf (listfp, ":%scomment packet: \"", pkttype == PKT_OLD_COMMENT ?
- "OpenPGP draft " : "");
+ es_fprintf (listfp, ":%scomment packet: \"", pkttype == PKT_OLD_COMMENT ?
+ "OpenPGP draft " : "");
for (p = packet->pkt.comment->data; n; p++, n--)
{
if (*p >= ' ' && *p <= 'z')
- putc (*p, listfp);
+ es_putc (*p, listfp);
else
- fprintf (listfp, "\\x%02x", *p);
+ es_fprintf (listfp, "\\x%02x", *p);
}
- fprintf (listfp, "\"\n");
+ es_fprintf (listfp, "\"\n");
}
return 0;
}
@@ -2498,14 +2497,14 @@ parse_trust (IOBUF inp, int pkttype, unsigned long pktlen, PACKET * pkt)
pkt->pkt.ring_trust->sigcache = c;
}
if (list_mode)
- fprintf (listfp, ":trust packet: flag=%02x sigcache=%02x\n",
- pkt->pkt.ring_trust->trustval,
- pkt->pkt.ring_trust->sigcache);
+ es_fprintf (listfp, ":trust packet: flag=%02x sigcache=%02x\n",
+ pkt->pkt.ring_trust->trustval,
+ pkt->pkt.ring_trust->sigcache);
}
else
{
if (list_mode)
- fprintf (listfp, ":trust packet: empty\n");
+ es_fprintf (listfp, ":trust packet: empty\n");
}
iobuf_skip_rest (inp, pktlen, 0);
}
@@ -2562,22 +2561,22 @@ parse_plaintext (IOBUF inp, int pkttype, unsigned long pktlen,
if (list_mode)
{
- fprintf (listfp, ":literal data packet:\n"
- "\tmode %c (%X), created %lu, name=\"",
- mode >= ' ' && mode < 'z' ? mode : '?', mode,
- (ulong) pt->timestamp);
+ es_fprintf (listfp, ":literal data packet:\n"
+ "\tmode %c (%X), created %lu, name=\"",
+ mode >= ' ' && mode < 'z' ? mode : '?', mode,
+ (ulong) pt->timestamp);
for (p = pt->name, i = 0; i < namelen; p++, i++)
{
if (*p >= ' ' && *p <= 'z')
- putc (*p, listfp);
+ es_putc (*p, listfp);
else
- fprintf (listfp, "\\x%02x", *p);
+ es_fprintf (listfp, "\\x%02x", *p);
}
- fprintf (listfp, "\",\n\traw data: ");
+ es_fprintf (listfp, "\",\n\traw data: ");
if (partial)
- fprintf (listfp, "unknown length\n");
+ es_fprintf (listfp, "unknown length\n");
else
- fprintf (listfp, "%lu bytes\n", (ulong) pt->len);
+ es_fprintf (listfp, "%lu bytes\n", (ulong) pt->len);
}
leave:
@@ -2603,7 +2602,7 @@ parse_compressed (IOBUF inp, int pkttype, unsigned long pktlen,
zd->new_ctb = new_ctb;
zd->buf = inp;
if (list_mode)
- fprintf (listfp, ":compressed packet: algo=%d\n", zd->algorithm);
+ es_fprintf (listfp, ":compressed packet: algo=%d\n", zd->algorithm);
return 0;
}
@@ -2663,12 +2662,12 @@ parse_encrypted (IOBUF inp, int pkttype, unsigned long pktlen,
if (list_mode)
{
if (orig_pktlen)
- fprintf (listfp, ":encrypted data packet:\n\tlength: %lu\n",
- orig_pktlen);
+ es_fprintf (listfp, ":encrypted data packet:\n\tlength: %lu\n",
+ orig_pktlen);
else
- fprintf (listfp, ":encrypted data packet:\n\tlength: unknown\n");
+ es_fprintf (listfp, ":encrypted data packet:\n\tlength: unknown\n");
if (ed->mdc_method)
- fprintf (listfp, "\tmdc_method: %d\n", ed->mdc_method);
+ es_fprintf (listfp, "\tmdc_method: %d\n", ed->mdc_method);
}
ed->buf = inp;
@@ -2693,7 +2692,7 @@ parse_mdc (IOBUF inp, int pkttype, unsigned long pktlen,
mdc = pkt->pkt.mdc = xmalloc (sizeof *pkt->pkt.mdc);
if (list_mode)
- fprintf (listfp, ":mdc packet: length=%lu\n", pktlen);
+ es_fprintf (listfp, ":mdc packet: length=%lu\n", pktlen);
if (!new_ctb || pktlen != 20)
{
log_error ("mdc_packet with invalid encoding\n");
@@ -2732,7 +2731,7 @@ parse_gpg_control (IOBUF inp, int pkttype, unsigned long pktlen,
(void) pkttype;
if (list_mode)
- fprintf (listfp, ":packet 63: length %lu ", pktlen);
+ es_fprintf (listfp, ":packet 63: length %lu ", pktlen);
sesmark = get_session_marker (&sesmarklen);
if (pktlen < sesmarklen + 1) /* 1 is for the control bytes */
@@ -2765,7 +2764,7 @@ parse_gpg_control (IOBUF inp, int pkttype, unsigned long pktlen,
int c;
i = 0;
- fprintf (listfp, "- private (rest length %lu)\n", pktlen);
+ es_fprintf (listfp, "- private (rest length %lu)\n", pktlen);
if (partial)
{
while ((c = iobuf_get (inp)) != -1)
@@ -2780,7 +2779,7 @@ parse_gpg_control (IOBUF inp, int pkttype, unsigned long pktlen,
break;
}
}
- putc ('\n', listfp);
+ es_putc ('\n', listfp);
}
iobuf_skip_rest (inp, pktlen, 0);
return gpg_error (GPG_ERR_INV_PACKET);
diff --git a/g10/pkclist.c b/g10/pkclist.c
index cbc76c76d..ca5624a4b 100644
--- a/g10/pkclist.c
+++ b/g10/pkclist.c
@@ -81,12 +81,11 @@ do_show_revocation_reason( PKT_signature *sig )
else
text = NULL;
- log_info( _("reason for revocation: ") );
- if( text )
- fputs( text, log_get_stream() );
+ log_info ( _("reason for revocation: "));
+ if (text)
+ log_printf ("%s\n", text);
else
- fprintf( log_get_stream(), "code=%02x", *p );
- log_printf ("\n");
+ log_printf ("code=%02x\n", *p );
n--; p++;
pp = NULL;
do {
@@ -99,7 +98,7 @@ do_show_revocation_reason( PKT_signature *sig )
pp = memchr( p, '\n', n );
nn = pp? pp - p : n;
log_info ( _("revocation comment: ") );
- print_string ( log_get_stream(), p, nn, 0 );
+ es_write_sanitized (log_get_stream(), p, nn, NULL, NULL);
log_printf ("\n");
p += nn; n -= nn;
}
diff --git a/g10/plaintext.c b/g10/plaintext.c
index ee0d41357..0a7415c9e 100644
--- a/g10/plaintext.c
+++ b/g10/plaintext.c
@@ -689,7 +689,8 @@ setup_plaintext_name (const char *filename, IOBUF iobuf)
{
PKT_plaintext *pt;
- if (filename || opt.set_filename)
+ if ((filename && !iobuf_is_pipe_filename (filename))
+ || (opt.set_filename && !iobuf_is_pipe_filename (opt.set_filename)))
{
char *s;
diff --git a/g10/seckey-cert.c b/g10/seckey-cert.c
index 1398b181b..9995aa416 100644
--- a/g10/seckey-cert.c
+++ b/g10/seckey-cert.c
@@ -83,7 +83,7 @@ do_check( PKT_secret_key *sk, const char *tryagain_text, int mode,
&sk->protect.s2k, mode,
tryagain_text, canceled );
if (!dek && canceled && *canceled)
- return G10ERR_GENERAL;
+ return GPG_ERR_CANCELED;
err = openpgp_cipher_open (&cipher_hd, sk->protect.algo,
diff --git a/g10/trustdb.c b/g10/trustdb.c
index 2a1fc87bd..f1377aa1f 100644
--- a/g10/trustdb.c
+++ b/g10/trustdb.c
@@ -1376,7 +1376,8 @@ dump_key_array (int depth, struct key_array *keys)
(node->flag & 4)? 'f':
(node->flag & 2)? 'm':
(node->flag & 1)? 'q':'-');
- print_string (stdout, node->pkt->pkt.user_id->name, len, ':');
+ es_write_sanitized (es_stdout, node->pkt->pkt.user_id->name,
+ len, ":", NULL);
putchar (':');
putchar ('\n');
}