diff --git a/NEWS b/NEWS index 81bb3dae8..4d09f4090 100644 --- a/NEWS +++ b/NEWS @@ -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) ------------------------------------------------ diff --git a/doc/DETAILS b/doc/DETAILS index 07fb45dee..1d8a7b19c 100644 --- a/doc/DETAILS +++ b/doc/DETAILS @@ -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 diff --git a/doc/gpg.texi b/doc/gpg.texi index 0cc258ee1..56f441e63 100644 --- a/doc/gpg.texi +++ b/doc/gpg.texi @@ -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 diff --git a/g10/ChangeLog b/g10/ChangeLog index af0ec7c00..4d7c92fa5 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,13 @@ +2008-06-11 Werner Koch + + * 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 * keygen.c (ask_user_id): Change the string printed as header of diff --git a/g10/gpg.c b/g10/gpg.c index 50ce0762b..adb4c3682 100644 --- a/g10/gpg.c +++ b/g10/gpg.c @@ -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; diff --git a/g10/keyid.c b/g10/keyid.c index 89b2ddfe2..9675bbe07 100644 --- a/g10/keyid.c +++ b/g10/keyid.c @@ -607,60 +607,51 @@ usagestr_from_pk( PKT_public_key *pk ) const char * colon_strtime (u32 t) { - if (!t) - return ""; - if (opt.fixed_list_mode) { - static char buf[15]; - sprintf (buf, "%lu", (ulong)t); - return buf; - } - return strtimestamp(t); + static char buf[20]; + + if (!t) + return ""; + snprintf (buf, sizeof buf, "%lu", (ulong)t); + return buf; } 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); - return buf; - } - return datestr_from_pk (pk); + static char buf[20]; + + snprintf (buf, sizeof buf, "%lu", (ulong)pk->timestamp); + return buf; } 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); - return buf; - } - return datestr_from_sk (sk); + static char buf[20]; + + snprintf (buf, sizeof buf, "%lu", (ulong)sk->timestamp); + return buf; } const char * colon_datestr_from_sig (PKT_signature *sig) { - if (opt.fixed_list_mode) { - static char buf[15]; - sprintf (buf, "%lu", (ulong)sig->timestamp); - return buf; - } - return datestr_from_sig (sig); + static char buf[20]; + + snprintf (buf, sizeof buf, "%lu", (ulong)sig->timestamp); + return buf; } const char * colon_expirestr_from_sig (PKT_signature *sig) { - if(!sig->expiredate) - return ""; - if (opt.fixed_list_mode) { - static char buf[15]; - sprintf (buf, "%lu", (ulong)sig->expiredate); - return buf; - } - return expirestr_from_sig (sig); + static char buf[20]; + + if (!sig->expiredate) + return ""; + + snprintf (buf, sizeof buf,"%lu", (ulong)sig->expiredate); + return buf; } diff --git a/g10/keylist.c b/g10/keylist.c index 0c6e26729..2de516b00 100644 --- a/g10/keylist.c +++ b/g10/keylist.c @@ -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. * @@ -1062,366 +1062,323 @@ print_revokers(PKT_public_key *pk) static void list_keyblock_colon( KBNODE keyblock, int secret, int fpr ) { - int rc = 0; - KBNODE kbctx; - KBNODE node; - PKT_public_key *pk; - PKT_secret_key *sk; - u32 keyid[2]; - int any=0; - int trustletter = 0; - int ulti_hack = 0; - int i; + int rc = 0; + KBNODE kbctx; + KBNODE node; + PKT_public_key *pk; + PKT_secret_key *sk; + u32 keyid[2]; + 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 ) { - log_error("Oops; key lost!\n"); - dump_kbnode( keyblock ); - return; + /* get the keyid from the keyblock */ + node = find_kbnode( keyblock, secret? PKT_SECRET_KEY : PKT_PUBLIC_KEY ); + if ( !node ) + { + log_error("Oops; key lost!\n"); + dump_kbnode( keyblock ); + return; } - if( secret ) { - pk = NULL; - sk = node->pkt->pkt.secret_key; - 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], - colon_datestr_from_sk( sk ), - colon_strtime (sk->expiredate) - /* fixme: add LID here */ ); + if ( secret ) + { + pk = NULL; + sk = node->pkt->pkt.secret_key; + 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], + colon_datestr_from_sk( sk ), + colon_strtime (sk->expiredate) + /* fixme: add LID here */ ); } - else { - pk = node->pkt->pkt.public_key; - sk = NULL; - keyid_from_pk( pk, keyid ); - fputs( "pub:", stdout ); - if ( !pk->is_valid ) - putchar ('i'); - else if ( pk->is_revoked ) - putchar ('r'); - else if ( pk->has_expired ) - putchar ('e'); - else if ( opt.fast_list_mode || opt.no_expensive_trust_checks ) - ; - else { - trustletter = get_validity_info ( pk, NULL ); - if( trustletter == 'u' ) - ulti_hack = 1; - putchar(trustletter); + else + { + pk = node->pkt->pkt.public_key; + sk = NULL; + keyid_from_pk( pk, keyid ); + fputs( "pub:", stdout ); + if ( !pk->is_valid ) + putchar ('i'); + else if ( pk->is_revoked ) + putchar ('r'); + else if ( pk->has_expired ) + putchar ('e'); + else if ( opt.fast_list_mode || opt.no_expensive_trust_checks ) + ; + else + { + trustletter = get_validity_info ( pk, NULL ); + if ( trustletter == 'u' ) + ulti_hack = 1; + putchar(trustletter); } - 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 ) - putchar( get_ownertrust_info(pk) ); - putchar(':'); + 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 ) + putchar( get_ownertrust_info(pk) ); + putchar(':'); } - if (opt.fixed_list_mode) { - /* do not merge the first uid with the primary key */ - putchar(':'); - putchar(':'); - print_capabilities (pk, sk, keyblock); - if (secret) { + putchar (':'); + putchar (':'); + 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 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]); - } + 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'); + + if ( fpr > 1 ) + print_fingerprint ( NULL, sk2, 0 ); } - 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; - } + 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 ( 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( node->pkt->pkttype == PKT_USER_ID && !opt.fast_list_mode ) { - 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 - */ - 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); - 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); + 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)); + + rc = check_key_signature2 ( keyblock, node, NULL, signer_pk, + NULL, NULL, NULL ); + 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; } - 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(':'); - 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 ); + if (opt.no_sig_cache) + { + if (!rc) + { + fingerprint_from_pk (signer_pk, fparray, &fplen); + fprokay = 1; + } + free_public_key(signer_pk); + } } - 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; - - 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. */ + else + { + rc = 0; + sigrc = ' '; } - putchar ('\n'); - if( fpr > 1 ) - print_fingerprint( NULL, sk2, 0 ); - } - 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]; + 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( !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->trust_depth || sig->trust_value) + printf("%d %d",sig->trust_depth,sig->trust_value); + printf (":"); - 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; - } - if( opt.check_sigs ) { - PKT_public_key *signer_pk=NULL; + 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) + { + putchar (':'); + + for (i=0; i < fplen ; i++ ) + printf ("%02X", fparray[i] ); + + putchar (':'); + } - fflush(stdout); - if(opt.no_sig_cache) - signer_pk=xmalloc_clear(sizeof(PKT_public_key)); - - rc = check_key_signature2( keyblock, node, NULL, signer_pk, - NULL, NULL, NULL ); - 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'); + printf ("\n"); + + if (opt.show_subpackets) + print_subpackets_colon (sig); + + /* fixme: check or list other sigs here */ + } } } diff --git a/g10/options.h b/g10/options.h index 91dddc9a2..40bd23029 100644 --- a/g10/options.h +++ b/g10/options.h @@ -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;