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. * 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) 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: fpr:::::::::AB059359A3B81F410FCFF97F5CE086B5B5A18FF4:
The double --with-fingerprint prints the fingerprint for the subkeys 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 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 1. Field: Type of record

View File

@ -1846,6 +1846,10 @@ source distribution.
@opindex fixed-list-mode @opindex fixed-list-mode
Do not merge primary user ID and primary key in @option{--with-colon} 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. 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 @item --with-fingerprint
@opindex 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> 2008-05-31 Werner Koch <wk@g10code.com>
* keygen.c (ask_user_id): Change the string printed as header of * 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"); "--keyserver-options ","http-proxy");
break; break;
case oFastListMode: opt.fast_list_mode = 1; 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 oListOnly: opt.list_only=1; break;
case oIgnoreTimeConflict: opt.ignore_time_conflict = 1; break; case oIgnoreTimeConflict: opt.ignore_time_conflict = 1; break;
case oIgnoreValidFrom: opt.ignore_valid_from = 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 * const char *
colon_strtime (u32 t) colon_strtime (u32 t)
{ {
if (!t) static char buf[20];
return "";
if (opt.fixed_list_mode) { if (!t)
static char buf[15]; return "";
sprintf (buf, "%lu", (ulong)t); snprintf (buf, sizeof buf, "%lu", (ulong)t);
return buf; return buf;
}
return strtimestamp(t);
} }
const char * const char *
colon_datestr_from_pk (PKT_public_key *pk) colon_datestr_from_pk (PKT_public_key *pk)
{ {
if (opt.fixed_list_mode) { static char buf[20];
static char buf[15];
sprintf (buf, "%lu", (ulong)pk->timestamp); snprintf (buf, sizeof buf, "%lu", (ulong)pk->timestamp);
return buf; return buf;
}
return datestr_from_pk (pk);
} }
const char * const char *
colon_datestr_from_sk (PKT_secret_key *sk) colon_datestr_from_sk (PKT_secret_key *sk)
{ {
if (opt.fixed_list_mode) { static char buf[20];
static char buf[15];
sprintf (buf, "%lu", (ulong)sk->timestamp); snprintf (buf, sizeof buf, "%lu", (ulong)sk->timestamp);
return buf; return buf;
}
return datestr_from_sk (sk);
} }
const char * const char *
colon_datestr_from_sig (PKT_signature *sig) colon_datestr_from_sig (PKT_signature *sig)
{ {
if (opt.fixed_list_mode) { static char buf[20];
static char buf[15];
sprintf (buf, "%lu", (ulong)sig->timestamp); snprintf (buf, sizeof buf, "%lu", (ulong)sig->timestamp);
return buf; return buf;
}
return datestr_from_sig (sig);
} }
const char * const char *
colon_expirestr_from_sig (PKT_signature *sig) colon_expirestr_from_sig (PKT_signature *sig)
{ {
if(!sig->expiredate) static char buf[20];
return "";
if (opt.fixed_list_mode) { if (!sig->expiredate)
static char buf[15]; return "";
sprintf (buf, "%lu", (ulong)sig->expiredate);
return buf; 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 /* keylist.c - print keys
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, * 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. * This file is part of GnuPG.
* *
@ -1062,366 +1062,323 @@ print_revokers(PKT_public_key *pk)
static void static void
list_keyblock_colon( KBNODE keyblock, int secret, int fpr ) list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
{ {
int rc = 0; int rc = 0;
KBNODE kbctx; KBNODE kbctx;
KBNODE node; KBNODE node;
PKT_public_key *pk; PKT_public_key *pk;
PKT_secret_key *sk; PKT_secret_key *sk;
u32 keyid[2]; u32 keyid[2];
int any=0; int trustletter = 0;
int trustletter = 0; int ulti_hack = 0;
int ulti_hack = 0; int i;
int i;
/* get the keyid from the keyblock */ /* get the keyid from the keyblock */
node = find_kbnode( keyblock, secret? PKT_SECRET_KEY : PKT_PUBLIC_KEY ); node = find_kbnode( keyblock, secret? PKT_SECRET_KEY : PKT_PUBLIC_KEY );
if( !node ) { if ( !node )
log_error("Oops; key lost!\n"); {
dump_kbnode( keyblock ); log_error("Oops; key lost!\n");
return; dump_kbnode( keyblock );
return;
} }
if( secret ) { if ( secret )
pk = NULL; {
sk = node->pkt->pkt.secret_key; pk = NULL;
keyid_from_sk( sk, keyid ); sk = node->pkt->pkt.secret_key;
printf("sec::%u:%d:%08lX%08lX:%s:%s:::", keyid_from_sk ( sk, keyid );
nbits_from_sk( sk ), printf ("sec::%u:%d:%08lX%08lX:%s:%s:::",
sk->pubkey_algo, nbits_from_sk( sk ),
(ulong)keyid[0],(ulong)keyid[1], sk->pubkey_algo,
colon_datestr_from_sk( sk ), (ulong)keyid[0],(ulong)keyid[1],
colon_strtime (sk->expiredate) colon_datestr_from_sk( sk ),
/* fixme: add LID here */ ); colon_strtime (sk->expiredate)
/* fixme: add LID here */ );
} }
else { else
pk = node->pkt->pkt.public_key; {
sk = NULL; pk = node->pkt->pkt.public_key;
keyid_from_pk( pk, keyid ); sk = NULL;
fputs( "pub:", stdout ); keyid_from_pk( pk, keyid );
if ( !pk->is_valid ) fputs( "pub:", stdout );
putchar ('i'); if ( !pk->is_valid )
else if ( pk->is_revoked ) putchar ('i');
putchar ('r'); else if ( pk->is_revoked )
else if ( pk->has_expired ) putchar ('r');
putchar ('e'); else if ( pk->has_expired )
else if ( opt.fast_list_mode || opt.no_expensive_trust_checks ) putchar ('e');
; else if ( opt.fast_list_mode || opt.no_expensive_trust_checks )
else { ;
trustletter = get_validity_info ( pk, NULL ); else
if( trustletter == 'u' ) {
ulti_hack = 1; trustletter = get_validity_info ( pk, NULL );
putchar(trustletter); 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 ), nbits_from_pk( pk ),
pk->pubkey_algo, pk->pubkey_algo,
(ulong)keyid[0],(ulong)keyid[1], (ulong)keyid[0],(ulong)keyid[1],
colon_datestr_from_pk( pk ), colon_datestr_from_pk( pk ),
colon_strtime (pk->expiredate) ); 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( get_ownertrust_info(pk) );
putchar(':'); putchar(':');
} }
if (opt.fixed_list_mode) { putchar (':');
/* do not merge the first uid with the primary key */ putchar (':');
putchar(':'); print_capabilities (pk, sk, keyblock);
putchar(':'); if (secret)
print_capabilities (pk, sk, keyblock); {
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)
{
/* 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('\n');
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 )
{
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);
/*
* Fixme: We need a is_valid flag here too
*/
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);
else if ( uid->is_expired )
printf ("%s:e::::",str);
else if ( opt.no_expensive_trust_checks )
printf ("%s:::::",str);
else
{
int uid_validity;
if ( pk && !ulti_hack )
uid_validity=get_validity_info (pk, uid);
else
uid_validity = 'u';
printf ("%s:%c::::",str,uid_validity);
}
printf ("%s:", colon_strtime (uid->created));
printf ("%s:", colon_strtime (uid->expiredate));
namehash_from_uid (uid);
for (i=0; i < 20; i++ )
printf ("%02X",uid->namehash[i]);
printf ("::");
if (uid->attrib_data)
printf ("%u %lu",uid->numattribs,uid->attrib_len);
else
print_string (stdout,uid->name,uid->len, ':' );
putchar (':');
putchar ('\n');
}
else if ( node->pkt->pkttype == PKT_PUBLIC_SUBKEY )
{
u32 keyid2[2];
PKT_public_key *pk2 = node->pkt->pkt.public_key;
keyid_from_pk ( pk2, keyid2 );
fputs ("sub:", stdout );
if ( !pk2->is_valid )
putchar ('i');
else if ( pk2->is_revoked )
putchar ('r');
else if ( pk2->has_expired )
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 );
}
printf(":%u:%d:%08lX%08lX:%s:%s:::::",
nbits_from_pk( pk2 ),
pk2->pubkey_algo,
(ulong)keyid2[0],(ulong)keyid2[1],
colon_datestr_from_pk( pk2 ),
colon_strtime (pk2->expiredate)
/* 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 )
print_key_data( pk2 );
}
else if( node->pkt->pkttype == PKT_SECRET_SUBKEY )
{
u32 keyid2[2];
PKT_secret_key *sk2 = node->pkt->pkt.secret_key;
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],
colon_datestr_from_sk( sk2 ),
colon_strtime (sk2->expiredate)
/* fixme: add LID */ );
print_capabilities (NULL, sk2, NULL);
putchar(':'); /* End of field 13. */ putchar(':'); /* End of field 13. */
putchar(':'); /* End of field 14. */ putchar(':'); /* End of field 14. */
if (sk->protect.s2k.mode == 1001) if (sk2->protect.s2k.mode == 1001)
putchar('#'); /* Key is just a stub. */ putchar ('#'); /* Key is just a stub. */
else if (sk->protect.s2k.mode == 1002) { 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 /* Key is stored on an external token (card) or handled by
here. */ the gpg-agent. Print the serial number of that token
for (i=0; i < sk->protect.ivlen; i++) here. */
printf ("%02X", sk->protect.iv[i]); for (i=0; i < sk2->protect.ivlen; i++)
} printf ("%02X", sk2->protect.iv[i]);
}
putchar(':'); /* End of field 15. */ putchar(':'); /* End of field 15. */
putchar ('\n');
if ( fpr > 1 )
print_fingerprint ( NULL, sk2, 0 );
} }
putchar('\n'); else if ( opt.list_sigs && node->pkt->pkttype == PKT_SIGNATURE )
if(pk) {
print_revokers(pk); PKT_signature *sig = node->pkt->pkt.signature;
if( fpr ) int sigrc,fprokay=0;
print_fingerprint( pk, sk, 0 ); char *sigstr;
if( opt.with_key_data ) size_t fplen;
print_key_data( pk ); byte fparray[MAX_FINGERPRINT_LEN];
any = 1;
} if ( sig->sig_class == 0x20 || sig->sig_class == 0x28
|| sig->sig_class == 0x30 )
sigstr = "rev";
else if ( (sig->sig_class&~3) == 0x10 )
sigstr = "sig";
else if ( sig->sig_class == 0x18 )
sigstr = "sig";
else if ( sig->sig_class == 0x1F )
sigstr = "sig";
else
{
printf ("sig::::::::::%02x%c:\n",
sig->sig_class, sig->flags.exportable?'x':'l');
continue;
}
for( kbctx=NULL; (node=walk_kbnode( keyblock, &kbctx, 0)) ; ) { if ( opt.check_sigs )
if( node->pkt->pkttype == PKT_USER_ID && !opt.fast_list_mode ) { {
PKT_user_id *uid=node->pkt->pkt.user_id; PKT_public_key *signer_pk=NULL;
if(attrib_fp && node->pkt->pkt.user_id->attrib_data!=NULL)
dump_attribs(node->pkt->pkt.user_id,pk,sk); fflush (stdout);
/* if (opt.no_sig_cache)
* Fixme: We need a is_valid flag here too signer_pk = xmalloc_clear (sizeof(PKT_public_key));
*/
if( any ) { rc = check_key_signature2 ( keyblock, node, NULL, signer_pk,
char *str=uid->attrib_data?"uat":"uid"; NULL, NULL, NULL );
/* If we're listing a secret key, leave out the switch ( gpg_err_code (rc) )
validity values for now. This is handled better in {
1.9. */ case 0: sigrc = '!'; break;
if ( sk ) case GPG_ERR_BAD_SIGNATURE: sigrc = '-'; break;
printf("%s:::::",str); case GPG_ERR_NO_PUBKEY:
else if ( uid->is_revoked ) case GPG_ERR_UNUSABLE_PUBKEY: sigrc = '?'; break;
printf("%s:r::::",str); default: sigrc = '%'; break;
else if ( uid->is_expired )
printf("%s:e::::",str);
else if ( opt.no_expensive_trust_checks )
printf("%s:::::",str);
else {
int uid_validity;
if( pk && !ulti_hack )
uid_validity=get_validity_info (pk, uid);
else
uid_validity = 'u';
printf("%s:%c::::",str,uid_validity);
} }
printf("%s:",colon_strtime(uid->created)); if (opt.no_sig_cache)
printf("%s:",colon_strtime(uid->expiredate)); {
if (!rc)
namehash_from_uid(uid); {
fingerprint_from_pk (signer_pk, fparray, &fplen);
for(i=0; i < 20; i++ ) fprokay = 1;
printf("%02X",uid->namehash[i]); }
free_public_key(signer_pk);
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;
}
}
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 );
fputs ("sub:", stdout );
if ( !pk2->is_valid )
putchar ('i');
else if ( pk2->is_revoked )
putchar ('r');
else if ( pk2->has_expired )
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 );
} }
printf(":%u:%d:%08lX%08lX:%s:%s:::::", else
nbits_from_pk( pk2 ), {
pk2->pubkey_algo, rc = 0;
(ulong)keyid2[0],(ulong)keyid2[1], sigrc = ' ';
colon_datestr_from_pk( pk2 ),
colon_strtime (pk2->expiredate)
/* 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 )
print_key_data( pk2 );
}
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:::::",
nbits_from_sk( sk2 ),
sk2->pubkey_algo,
(ulong)keyid2[0],(ulong)keyid2[1],
colon_datestr_from_sk( sk2 ),
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) {
/* 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 < sk2->protect.ivlen; i++)
printf ("%02X", sk2->protect.iv[i]);
}
putchar(':'); /* End of field 15. */
} }
putchar ('\n'); fputs ( sigstr, stdout );
if( fpr > 1 ) putchar (':');
print_fingerprint( NULL, sk2, 0 ); if ( sigrc != ' ' )
} putchar (sigrc);
else if( opt.list_sigs && node->pkt->pkttype == PKT_SIGNATURE ) { printf ("::%d:%08lX%08lX:%s:%s:", sig->pubkey_algo,
PKT_signature *sig = node->pkt->pkt.signature; (ulong)sig->keyid[0], (ulong)sig->keyid[1],
int sigrc,fprokay=0; colon_datestr_from_sig(sig),
char *sigstr; colon_expirestr_from_sig(sig));
size_t fplen;
byte fparray[MAX_FINGERPRINT_LEN];
if( !any ) { /* no user id, (maybe a revocation follows)*/ if (sig->trust_depth || sig->trust_value)
if( sig->sig_class == 0x20 ) printf("%d %d",sig->trust_depth,sig->trust_value);
fputs("[revoked]:", stdout); printf (":");
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->trust_regexp)
|| sig->sig_class == 0x30 ) print_string (stdout,sig->trust_regexp,
sigstr = "rev"; strlen(sig->trust_regexp),':');
else if( (sig->sig_class&~3) == 0x10 ) printf(":");
sigstr = "sig";
else if( sig->sig_class == 0x18 ) if ( sigrc == '%' )
sigstr = "sig"; printf("[%s] ", g10_errstr(rc) );
else if( sig->sig_class == 0x1F ) else if ( sigrc == '?' )
sigstr = "sig"; ;
else { else if ( !opt.fast_list_mode )
printf ("sig::::::::::%02x%c:\n", {
sig->sig_class, sig->flags.exportable?'x':'l'); size_t n;
continue; char *p = get_user_id( sig->keyid, &n );
} print_string( stdout, p, n, ':' );
if( opt.check_sigs ) { xfree(p);
PKT_public_key *signer_pk=NULL; }
printf (":%02x%c:", sig->sig_class,sig->flags.exportable?'x':'l');
if (opt.no_sig_cache && opt.check_sigs && fprokay)
{
putchar (':');
for (i=0; i < fplen ; i++ )
printf ("%02X", fparray[i] );
putchar (':');
}
fflush(stdout); printf ("\n");
if(opt.no_sig_cache)
signer_pk=xmalloc_clear(sizeof(PKT_public_key)); if (opt.show_subpackets)
print_subpackets_colon (sig);
rc = check_key_signature2( keyblock, node, NULL, signer_pk,
NULL, NULL, NULL ); /* fixme: check or list other sigs here */
switch ( gpg_err_code (rc) ) { }
case 0: sigrc = '!'; break;
case GPG_ERR_BAD_SIGNATURE: sigrc = '-'; break;
case GPG_ERR_NO_PUBKEY:
case GPG_ERR_UNUSABLE_PUBKEY: sigrc = '?'; break;
default: sigrc = '%'; break;
}
if(opt.no_sig_cache)
{
if(rc==0)
{
fingerprint_from_pk (signer_pk, fparray, &fplen);
fprokay=1;
}
free_public_key(signer_pk);
}
}
else {
rc = 0;
sigrc = ' ';
}
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)
printf("%d %d",sig->trust_depth,sig->trust_value);
printf(":");
if(sig->trust_regexp)
print_string(stdout,sig->trust_regexp,
strlen(sig->trust_regexp),':');
printf(":");
if( sigrc == '%' )
printf("[%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, ':' );
xfree(p);
}
printf(":%02x%c:", sig->sig_class,sig->flags.exportable?'x':'l');
if(opt.no_sig_cache && opt.check_sigs && fprokay)
{
printf(":");
for (i=0; i < fplen ; i++ )
printf ("%02X", fparray[i] );
printf(":");
}
printf("\n");
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; int no_literal;
ulong set_filesize; ulong set_filesize;
int fast_list_mode; int fast_list_mode;
int fixed_list_mode;
int ignore_time_conflict; int ignore_time_conflict;
int ignore_valid_from; int ignore_valid_from;
int ignore_crc_error; int ignore_crc_error;