aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keylist.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/keylist.c')
-rw-r--r--g10/keylist.c395
1 files changed, 180 insertions, 215 deletions
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",