Made --fixed-list-mode obsolete.

This commit is contained in:
Werner Koch 2008-06-11 08:07:54 +00:00
parent 5a788b9e00
commit 035c838f71
8 changed files with 343 additions and 380 deletions

2
NEWS
View File

@ -17,6 +17,8 @@ Noteworthy changes in version 2.0.10 (unreleased)
* gpg-connect-agent accepts commands given as command line arguments.
* The gpg2 option --fixed-list-mode is now implicitly used and obsolete.
Noteworthy changes in version 2.0.9 (2008-03-26)
------------------------------------------------

View File

@ -16,9 +16,9 @@ sub:r:1536:20:5CE086B5B5A18FF4:899817788:1025961788:::::esc:
fpr:::::::::AB059359A3B81F410FCFF97F5CE086B5B5A18FF4:
The double --with-fingerprint prints the fingerprint for the subkeys
too, --fixed-list-mode is themodern listing way printing dates in
too. --fixed-list-mode is the modern listing way printing dates in
seconds since Epoch and does not merge the first userID with the pub
record.
record; gpg2 does this by default and the option is a dummy.
1. Field: Type of record

View File

@ -1846,6 +1846,10 @@ source distribution.
@opindex fixed-list-mode
Do not merge primary user ID and primary key in @option{--with-colon}
listing mode and print all timestamps as seconds since 1970-01-01.
@ifclear gpgone
Since GnuPG 2.0.10, this mode is always used and thus this option is
obsolete; it does not harm to use it though.
@end ifclear
@item --with-fingerprint
@opindex with-fingerprint

View File

@ -1,3 +1,13 @@
2008-06-11 Werner Koch <wk@g10code.com>
* gpg.c: Make --fixed-list-mode a dummy.
* options.h (struct): Removed FIXED_LIST_MODE.
* keyid.c (colon_strtime, colon_datestr_from_pk)
(colon_datestr_from_sk, colon_datestr_from_sig)
(colon_expirestr_from_sig): Remove fixed_list_mode case.
* keylist.c (list_keyblock_colon): Ditto. Remove all now unsed
code and reindent.
2008-05-31 Werner Koch <wk@g10code.com>
* keygen.c (ask_user_id): Change the string printed as header of

View File

@ -2734,7 +2734,7 @@ main (int argc, char **argv)
"--keyserver-options ","http-proxy");
break;
case oFastListMode: opt.fast_list_mode = 1; break;
case oFixedListMode: opt.fixed_list_mode = 1; break;
case oFixedListMode: /* Dummy */ break;
case oListOnly: opt.list_only=1; break;
case oIgnoreTimeConflict: opt.ignore_time_conflict = 1; break;
case oIgnoreValidFrom: opt.ignore_valid_from = 1; break;

View File

@ -607,60 +607,51 @@ usagestr_from_pk( PKT_public_key *pk )
const char *
colon_strtime (u32 t)
{
static char buf[20];
if (!t)
return "";
if (opt.fixed_list_mode) {
static char buf[15];
sprintf (buf, "%lu", (ulong)t);
snprintf (buf, sizeof buf, "%lu", (ulong)t);
return buf;
}
return strtimestamp(t);
}
const char *
colon_datestr_from_pk (PKT_public_key *pk)
{
if (opt.fixed_list_mode) {
static char buf[15];
sprintf (buf, "%lu", (ulong)pk->timestamp);
static char buf[20];
snprintf (buf, sizeof buf, "%lu", (ulong)pk->timestamp);
return buf;
}
return datestr_from_pk (pk);
}
const char *
colon_datestr_from_sk (PKT_secret_key *sk)
{
if (opt.fixed_list_mode) {
static char buf[15];
sprintf (buf, "%lu", (ulong)sk->timestamp);
static char buf[20];
snprintf (buf, sizeof buf, "%lu", (ulong)sk->timestamp);
return buf;
}
return datestr_from_sk (sk);
}
const char *
colon_datestr_from_sig (PKT_signature *sig)
{
if (opt.fixed_list_mode) {
static char buf[15];
sprintf (buf, "%lu", (ulong)sig->timestamp);
static char buf[20];
snprintf (buf, sizeof buf, "%lu", (ulong)sig->timestamp);
return buf;
}
return datestr_from_sig (sig);
}
const char *
colon_expirestr_from_sig (PKT_signature *sig)
{
if(!sig->expiredate)
static char buf[20];
if (!sig->expiredate)
return "";
if (opt.fixed_list_mode) {
static char buf[15];
sprintf (buf, "%lu", (ulong)sig->expiredate);
snprintf (buf, sizeof buf,"%lu", (ulong)sig->expiredate);
return buf;
}
return expirestr_from_sig (sig);
}

View File

@ -1,6 +1,6 @@
/* keylist.c - print keys
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003,
* 2004, 2005 Free Software Foundation, Inc.
* 2004, 2005, 2008 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@ -1068,24 +1068,25 @@ list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
PKT_public_key *pk;
PKT_secret_key *sk;
u32 keyid[2];
int any=0;
int trustletter = 0;
int ulti_hack = 0;
int i;
/* get the keyid from the keyblock */
node = find_kbnode( keyblock, secret? PKT_SECRET_KEY : PKT_PUBLIC_KEY );
if( !node ) {
if ( !node )
{
log_error("Oops; key lost!\n");
dump_kbnode( keyblock );
return;
}
if( secret ) {
if ( secret )
{
pk = NULL;
sk = node->pkt->pkt.secret_key;
keyid_from_sk( sk, keyid );
printf("sec::%u:%d:%08lX%08lX:%s:%s:::",
keyid_from_sk ( sk, keyid );
printf ("sec::%u:%d:%08lX%08lX:%s:%s:::",
nbits_from_sk( sk ),
sk->pubkey_algo,
(ulong)keyid[0],(ulong)keyid[1],
@ -1093,7 +1094,8 @@ list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
colon_strtime (sk->expiredate)
/* fixme: add LID here */ );
}
else {
else
{
pk = node->pkt->pkt.public_key;
sk = NULL;
keyid_from_pk( pk, keyid );
@ -1106,126 +1108,109 @@ list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
putchar ('e');
else if ( opt.fast_list_mode || opt.no_expensive_trust_checks )
;
else {
else
{
trustletter = get_validity_info ( pk, NULL );
if( trustletter == 'u' )
if ( trustletter == 'u' )
ulti_hack = 1;
putchar(trustletter);
}
printf(":%u:%d:%08lX%08lX:%s:%s::",
printf (":%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 )
if ( !opt.fast_list_mode && !opt.no_expensive_trust_checks )
putchar( get_ownertrust_info(pk) );
putchar(':');
}
if (opt.fixed_list_mode) {
/* do not merge the first uid with the primary key */
putchar(':');
putchar(':');
putchar (':');
putchar (':');
print_capabilities (pk, sk, keyblock);
if (secret) {
putchar(':'); /* End of field 13. */
putchar(':'); /* End of field 14. */
if (secret)
{
putchar (':'); /* End of field 13. */
putchar (':'); /* End of field 14. */
if (sk->protect.s2k.mode == 1001)
putchar('#'); /* Key is just a stub. */
else if (sk->protect.s2k.mode == 1002) {
putchar ('#'); /* Key is just a stub. */
else if (sk->protect.s2k.mode == 1002)
{
/* Key is stored on an external token (card) or handled by
the gpg-agent. Print the serial number of that token
here. */
for (i=0; i < sk->protect.ivlen; i++)
printf ("%02X", sk->protect.iv[i]);
}
putchar(':'); /* End of field 15. */
putchar (':'); /* End of field 15. */
}
putchar('\n');
if(pk)
print_revokers(pk);
if( fpr )
print_fingerprint( pk, sk, 0 );
if( opt.with_key_data )
print_key_data( pk );
any = 1;
}
if (pk)
print_revokers (pk);
if (fpr)
print_fingerprint (pk, sk, 0);
if (opt.with_key_data)
print_key_data (pk);
for( kbctx=NULL; (node=walk_kbnode( keyblock, &kbctx, 0)) ; ) {
if( node->pkt->pkttype == PKT_USER_ID && !opt.fast_list_mode ) {
for ( kbctx=NULL; (node=walk_kbnode( keyblock, &kbctx, 0)) ; )
{
if ( node->pkt->pkttype == PKT_USER_ID && !opt.fast_list_mode )
{
char *str;
PKT_user_id *uid=node->pkt->pkt.user_id;
if(attrib_fp && node->pkt->pkt.user_id->attrib_data!=NULL)
dump_attribs(node->pkt->pkt.user_id,pk,sk);
if (attrib_fp && node->pkt->pkt.user_id->attrib_data != NULL)
dump_attribs (node->pkt->pkt.user_id,pk,sk);
/*
* Fixme: We need a is_valid flag here too
*/
if( any ) {
char *str=uid->attrib_data?"uat":"uid";
/* If we're listing a secret key, leave out the
validity values for now. This is handled better in
1.9. */
if ( sk )
printf("%s:::::",str);
str = uid->attrib_data? "uat":"uid";
/* If we're listing a secret key, leave out the validity
values for now. This is handled better in 1.9. */
if (sk)
printf ("%s:::::",str);
else if ( uid->is_revoked )
printf("%s:r::::",str);
printf ("%s:r::::",str);
else if ( uid->is_expired )
printf("%s:e::::",str);
printf ("%s:e::::",str);
else if ( opt.no_expensive_trust_checks )
printf("%s:::::",str);
else {
printf ("%s:::::",str);
else
{
int uid_validity;
if( pk && !ulti_hack )
if ( pk && !ulti_hack )
uid_validity=get_validity_info (pk, uid);
else
uid_validity = 'u';
printf("%s:%c::::",str,uid_validity);
printf ("%s:%c::::",str,uid_validity);
}
printf("%s:",colon_strtime(uid->created));
printf("%s:",colon_strtime(uid->expiredate));
printf ("%s:", colon_strtime (uid->created));
printf ("%s:", colon_strtime (uid->expiredate));
namehash_from_uid(uid);
namehash_from_uid (uid);
for(i=0; i < 20; i++ )
printf("%02X",uid->namehash[i]);
for (i=0; i < 20; i++ )
printf ("%02X",uid->namehash[i]);
printf("::");
}
if(uid->attrib_data)
printf("%u %lu",uid->numattribs,uid->attrib_len);
printf ("::");
if (uid->attrib_data)
printf ("%u %lu",uid->numattribs,uid->attrib_len);
else
print_string(stdout,uid->name,uid->len, ':' );
putchar(':');
if (any)
putchar('\n');
else {
putchar(':');
print_capabilities (pk, sk, keyblock);
putchar('\n');
if( fpr )
print_fingerprint( pk, sk, 0 );
if( opt.with_key_data )
print_key_data( pk );
any = 1;
print_string (stdout,uid->name,uid->len, ':' );
putchar (':');
putchar ('\n');
}
}
else if( node->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
else if ( node->pkt->pkttype == PKT_PUBLIC_SUBKEY )
{
u32 keyid2[2];
PKT_public_key *pk2 = node->pkt->pkt.public_key;
if( !any ) {
putchar(':');
putchar(':');
print_capabilities (pk, sk, keyblock);
putchar('\n');
if( fpr )
print_fingerprint( pk, sk, 0 ); /* of the main key */
any = 1;
}
keyid_from_pk( pk2, keyid2 );
keyid_from_pk ( pk2, keyid2 );
fputs ("sub:", stdout );
if ( !pk2->is_valid )
putchar ('i');
@ -1235,10 +1220,11 @@ list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
putchar ('e');
else if ( opt.fast_list_mode || opt.no_expensive_trust_checks )
;
else {
/* trustletter should always be defined here */
if(trustletter)
printf("%c", trustletter );
else
{
/* TRUSTLETTER should always be defined here. */
if (trustletter)
printf ("%c", trustletter );
}
printf(":%u:%d:%08lX%08lX:%s:%s:::::",
nbits_from_pk( pk2 ),
@ -1249,28 +1235,19 @@ list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
/* fixme: add LID and ownertrust here */
);
print_capabilities (pk2, NULL, NULL);
putchar('\n');
if( fpr > 1 )
print_fingerprint( pk2, NULL, 0 );
if( opt.with_key_data )
putchar ('\n');
if ( fpr > 1 )
print_fingerprint ( pk2, NULL, 0 );
if ( opt.with_key_data )
print_key_data( pk2 );
}
else if( node->pkt->pkttype == PKT_SECRET_SUBKEY ) {
else if( node->pkt->pkttype == PKT_SECRET_SUBKEY )
{
u32 keyid2[2];
PKT_secret_key *sk2 = node->pkt->pkt.secret_key;
if( !any ) {
putchar(':');
putchar(':');
print_capabilities (pk, sk, keyblock);
putchar('\n');
if( fpr )
print_fingerprint( pk, sk, 0 ); /* of the main key */
any = 1;
}
keyid_from_sk( sk2, keyid2 );
printf("ssb::%u:%d:%08lX%08lX:%s:%s:::::",
keyid_from_sk ( sk2, keyid2 );
printf ("ssb::%u:%d:%08lX%08lX:%s:%s:::::",
nbits_from_sk( sk2 ),
sk2->pubkey_algo,
(ulong)keyid2[0],(ulong)keyid2[1],
@ -1278,16 +1255,12 @@ list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
colon_strtime (sk2->expiredate)
/* fixme: add LID */ );
print_capabilities (NULL, sk2, NULL);
if (opt.fixed_list_mode) {
/* We print the serial number only in fixed list mode
for the primary key so, so avoid questions we print
it for subkeys also only in this mode. There is no
technical reason, though. */
putchar(':'); /* End of field 13. */
putchar(':'); /* End of field 14. */
if (sk2->protect.s2k.mode == 1001)
putchar('#'); /* Key is just a stub. */
else if (sk2->protect.s2k.mode == 1002) {
putchar ('#'); /* Key is just a stub. */
else if (sk2->protect.s2k.mode == 1002)
{
/* Key is stored on an external token (card) or handled by
the gpg-agent. Print the serial number of that token
here. */
@ -1295,59 +1268,47 @@ list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
printf ("%02X", sk2->protect.iv[i]);
}
putchar(':'); /* End of field 15. */
}
putchar ('\n');
if( fpr > 1 )
print_fingerprint( NULL, sk2, 0 );
if ( fpr > 1 )
print_fingerprint ( NULL, sk2, 0 );
}
else if( opt.list_sigs && node->pkt->pkttype == PKT_SIGNATURE ) {
else if ( opt.list_sigs && node->pkt->pkttype == PKT_SIGNATURE )
{
PKT_signature *sig = node->pkt->pkt.signature;
int sigrc,fprokay=0;
char *sigstr;
size_t fplen;
byte fparray[MAX_FINGERPRINT_LEN];
if( !any ) { /* no user id, (maybe a revocation follows)*/
if( sig->sig_class == 0x20 )
fputs("[revoked]:", stdout);
else if( sig->sig_class == 0x18 )
fputs("[key binding]:", stdout);
else if( sig->sig_class == 0x28 )
fputs("[subkey revoked]:", stdout);
else
putchar (':');
putchar(':');
print_capabilities (pk, sk, keyblock);
putchar('\n');
if( fpr )
print_fingerprint( pk, sk, 0 );
any=1;
}
if( sig->sig_class == 0x20 || sig->sig_class == 0x28
if ( sig->sig_class == 0x20 || sig->sig_class == 0x28
|| sig->sig_class == 0x30 )
sigstr = "rev";
else if( (sig->sig_class&~3) == 0x10 )
else if ( (sig->sig_class&~3) == 0x10 )
sigstr = "sig";
else if( sig->sig_class == 0x18 )
else if ( sig->sig_class == 0x18 )
sigstr = "sig";
else if( sig->sig_class == 0x1F )
else if ( sig->sig_class == 0x1F )
sigstr = "sig";
else {
else
{
printf ("sig::::::::::%02x%c:\n",
sig->sig_class, sig->flags.exportable?'x':'l');
continue;
}
if( opt.check_sigs ) {
if ( opt.check_sigs )
{
PKT_public_key *signer_pk=NULL;
fflush(stdout);
if(opt.no_sig_cache)
signer_pk=xmalloc_clear(sizeof(PKT_public_key));
fflush (stdout);
if (opt.no_sig_cache)
signer_pk = xmalloc_clear (sizeof(PKT_public_key));
rc = check_key_signature2( keyblock, node, NULL, signer_pk,
rc = check_key_signature2 ( keyblock, node, NULL, signer_pk,
NULL, NULL, NULL );
switch ( gpg_err_code (rc) ) {
switch ( gpg_err_code (rc) )
{
case 0: sigrc = '!'; break;
case GPG_ERR_BAD_SIGNATURE: sigrc = '-'; break;
case GPG_ERR_NO_PUBKEY:
@ -1355,74 +1316,70 @@ list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
default: sigrc = '%'; break;
}
if(opt.no_sig_cache)
if (opt.no_sig_cache)
{
if(rc==0)
if (!rc)
{
fingerprint_from_pk (signer_pk, fparray, &fplen);
fprokay=1;
fprokay = 1;
}
free_public_key(signer_pk);
}
}
else {
else
{
rc = 0;
sigrc = ' ';
}
fputs( sigstr, stdout );
putchar(':');
if( sigrc != ' ' )
putchar(sigrc);
printf("::%d:%08lX%08lX:%s:%s:", sig->pubkey_algo,
fputs ( sigstr, stdout );
putchar (':');
if ( sigrc != ' ' )
putchar (sigrc);
printf ("::%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)
if (sig->trust_depth || sig->trust_value)
printf("%d %d",sig->trust_depth,sig->trust_value);
printf(":");
printf (":");
if(sig->trust_regexp)
print_string(stdout,sig->trust_regexp,
if (sig->trust_regexp)
print_string (stdout,sig->trust_regexp,
strlen(sig->trust_regexp),':');
printf(":");
if( sigrc == '%' )
if ( sigrc == '%' )
printf("[%s] ", g10_errstr(rc) );
else if( sigrc == '?' )
else if ( sigrc == '?' )
;
else if ( !opt.fast_list_mode ) {
else if ( !opt.fast_list_mode )
{
size_t n;
char *p = get_user_id( sig->keyid, &n );
print_string( stdout, p, n, ':' );
xfree(p);
}
printf(":%02x%c:", sig->sig_class,sig->flags.exportable?'x':'l');
printf (":%02x%c:", sig->sig_class,sig->flags.exportable?'x':'l');
if(opt.no_sig_cache && opt.check_sigs && fprokay)
if (opt.no_sig_cache && opt.check_sigs && fprokay)
{
printf(":");
putchar (':');
for (i=0; i < fplen ; i++ )
printf ("%02X", fparray[i] );
printf(":");
putchar (':');
}
printf("\n");
printf ("\n");
if(opt.show_subpackets)
print_subpackets_colon(sig);
if (opt.show_subpackets)
print_subpackets_colon (sig);
/* fixme: check or list other sigs here */
}
}
if( !any ) {/* oops, no user id */
putchar(':');
putchar(':');
print_capabilities (pk, sk, keyblock);
putchar('\n');
}
}
/*

View File

@ -179,7 +179,6 @@ struct
int no_literal;
ulong set_filesize;
int fast_list_mode;
int fixed_list_mode;
int ignore_time_conflict;
int ignore_valid_from;
int ignore_crc_error;