gpg: New option --full-timestrings.

* g10/options.h (opt): Add flags.full_timestrings.
* g10/gpg.c (oFullTimestrings): New.
(opts): New option.
(main): Set new flag.
* g10/keyid.c (dateonlystr_from_pk): New.
(dateonlystr_from_sig): New.
(datestr_from_pk): Divert to isotimestamp if requested.
(datestr_from_sig): Ditto.
(expirestr_from_pk): Ditto.
(expirestr_from_sig): Ditto.
(revokestr_from_pk): Ditto.
* g10/import.c (impex_filter_getval): Use dateonlystr_from_sig and
dateonlystr_from_pk.
--

Quite helpful for debugging keys.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2020-02-13 14:01:07 +01:00
parent 14ac350f86
commit 86312b920a
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
6 changed files with 55 additions and 4 deletions

View File

@ -2942,6 +2942,14 @@ forth to @var{epoch} which is the number of seconds elapsed since the year
If you suffix @var{epoch} with an exclamation mark (!), the system time
will appear to be frozen at the specified time.
@item --full-timestrings
@opindex full-timestrings
Change the format of printed creation and expiration times from just
the date to the date and time. This is in general not useful and the
same information is anyway available in @option{--with-colons} mode.
These longer strings are also not well aligned with other printed
data.
@item --enable-progress-filter
@opindex enable-progress-filter
Enable certain PROGRESS status outputs. This option allows frontends

View File

@ -431,6 +431,7 @@ enum cmd_and_opt_values
oRequestOrigin,
oNoSymkeyCache,
oUseOnlyOpenPGPCard,
oFullTimestrings,
oNoop
};
@ -902,6 +903,7 @@ static ARGPARSE_OPTS opts[] = {
ARGPARSE_s_n (oNoAutostart, "no-autostart", "@"),
ARGPARSE_s_n (oNoSymkeyCache, "no-symkey-cache", "@"),
ARGPARSE_s_n (oUseKeyboxd, "use-keyboxd", "@"),
ARGPARSE_s_n (oFullTimestrings, "full-timestrings", "@"),
/* Options to override new security defaults. */
ARGPARSE_s_n (oAllowWeakKeySignatures, "allow-weak-key-signatures", "@"),
@ -3677,6 +3679,10 @@ main (int argc, char **argv)
opt.flags.use_only_openpgp_card = 1;
break;
case oFullTimestrings:
opt.flags.full_timestrings = 1;
break;
case oNoop: break;
default:

View File

@ -1411,7 +1411,7 @@ impex_filter_getval (void *cookie, const char *propname)
}
else if (!strcmp (propname, "sig_created_d"))
{
result = datestr_from_sig (sig);
result = dateonlystr_from_sig (sig);
}
else if (!strcmp (propname, "sig_algo"))
{
@ -1454,7 +1454,7 @@ impex_filter_getval (void *cookie, const char *propname)
}
else if (!strcmp (propname, "key_created_d"))
{
result = datestr_from_pk (pk);
result = dateonlystr_from_pk (pk);
}
else if (!strcmp (propname, "expired"))
{

View File

@ -533,7 +533,9 @@ unsigned nbits_from_pk( PKT_public_key *pk );
char *mk_datestr (char *buffer, size_t bufsize, u32 timestamp);
#define MK_DATESTR_SIZE 11
const char *dateonlystr_from_pk (PKT_public_key *pk);
const char *datestr_from_pk( PKT_public_key *pk );
const char *dateonlystr_from_sig( PKT_signature *sig );
const char *datestr_from_sig( PKT_signature *sig );
const char *expirestr_from_pk( PKT_public_key *pk );
const char *expirestr_from_sig( PKT_signature *sig );

View File

@ -679,7 +679,7 @@ mk_datestr (char *buffer, size_t bufsize, u32 timestamp)
* Format is: yyyy-mm-dd
*/
const char *
datestr_from_pk (PKT_public_key *pk)
dateonlystr_from_pk (PKT_public_key *pk)
{
static char buffer[MK_DATESTR_SIZE];
@ -687,14 +687,36 @@ datestr_from_pk (PKT_public_key *pk)
}
/* Same as dateonlystr_from_pk but with a global option a full iso
* timestamp is returned. In this case it shares a static buffer with
* isotimestamp(). */
const char *
datestr_from_sig (PKT_signature *sig )
datestr_from_pk (PKT_public_key *pk)
{
if (opt.flags.full_timestrings)
return isotimestamp (pk->timestamp);
else
return dateonlystr_from_pk (pk);
}
const char *
dateonlystr_from_sig (PKT_signature *sig )
{
static char buffer[MK_DATESTR_SIZE];
return mk_datestr (buffer, sizeof buffer, sig->timestamp);
}
const char *
datestr_from_sig (PKT_signature *sig )
{
if (opt.flags.full_timestrings)
return isotimestamp (sig->timestamp);
else
return dateonlystr_from_sig (sig);
}
const char *
expirestr_from_pk (PKT_public_key *pk)
@ -703,6 +725,10 @@ expirestr_from_pk (PKT_public_key *pk)
if (!pk->expiredate)
return _("never ");
if (opt.flags.full_timestrings)
return isotimestamp (pk->expiredate);
return mk_datestr (buffer, sizeof buffer, pk->expiredate);
}
@ -714,6 +740,10 @@ expirestr_from_sig (PKT_signature *sig)
if (!sig->expiredate)
return _("never ");
if (opt.flags.full_timestrings)
return isotimestamp (sig->expiredate);
return mk_datestr (buffer, sizeof buffer, sig->expiredate);
}
@ -725,6 +755,10 @@ revokestr_from_pk( PKT_public_key *pk )
if(!pk->revoked.date)
return _("never ");
if (opt.flags.full_timestrings)
return isotimestamp (pk->revoked.date);
return mk_datestr (buffer, sizeof buffer, pk->revoked.date);
}

View File

@ -248,6 +248,7 @@ struct
/* Force the use of the OpenPGP card and do not allow the use of
* another card. */
unsigned int use_only_openpgp_card:1;
unsigned int full_timestrings:1;
} flags;
/* Linked list of ways to find a key if the key isn't on the local