1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-04-17 15:44:34 +02:00

Print the decoded iteration count with --list-packets.

Fixes bug#1355.
This commit is contained in:
Werner Koch 2011-07-22 13:56:14 +02:00
parent 5a4071a273
commit 3d99d3f5db
2 changed files with 27 additions and 20 deletions

View File

@ -1,3 +1,8 @@
2011-07-22 Werner Koch <wk@g10code.com>
* parse-packet.c (parse_key): Print the decoded iteration count.
Fixes bug#1355.
2011-07-01 Werner Koch <wk@g10code.com> 2011-07-01 Werner Koch <wk@g10code.com>
* keyid.c (pubkey_letter): Add letters e and E. * keyid.c (pubkey_letter): Add letters e and E.

View File

@ -116,14 +116,14 @@ mpi_read (iobuf_t inp, unsigned int *ret_nread, int secure)
gcry_mpi_t a = NULL; gcry_mpi_t a = NULL;
byte *buf = NULL; byte *buf = NULL;
byte *p; byte *p;
if ( (c = c1 = iobuf_get (inp)) == -1 ) if ( (c = c1 = iobuf_get (inp)) == -1 )
goto leave; goto leave;
nbits = c << 8; nbits = c << 8;
if ( (c = c2 = iobuf_get (inp)) == -1 ) if ( (c = c2 = iobuf_get (inp)) == -1 )
goto leave; goto leave;
nbits |= c; nbits |= c;
if ( nbits > MAX_EXTERN_MPI_BITS ) if ( nbits > MAX_EXTERN_MPI_BITS )
{ {
log_error("mpi too large (%u bits)\n", nbits); log_error("mpi too large (%u bits)\n", nbits);
goto leave; goto leave;
@ -134,7 +134,7 @@ mpi_read (iobuf_t inp, unsigned int *ret_nread, int secure)
p = buf; p = buf;
p[0] = c1; p[0] = c1;
p[1] = c2; p[1] = c2;
for ( i=0 ; i < nbytes; i++ ) for ( i=0 ; i < nbytes; i++ )
{ {
p[i+2] = iobuf_get(inp) & 0xff; p[i+2] = iobuf_get(inp) & 0xff;
nread++; nread++;
@ -179,7 +179,7 @@ set_packet_list_mode( int mode )
be easy to add an option for the listing stream. Note that we be easy to add an option for the listing stream. Note that we
initialize it only once; mainly because some code may switch initialize it only once; mainly because some code may switch
the option value later back to 1 and we want to have all output the option value later back to 1 and we want to have all output
to the same stream. to the same stream.
Using stderr is not actually very clean because it bypasses the Using stderr is not actually very clean because it bypasses the
logging code but it is a special thing anyay. I am not sure logging code but it is a special thing anyay. I am not sure
@ -518,7 +518,7 @@ parse( IOBUF inp, PACKET *pkt, int onlykeypkts, off_t *retpos,
if (with_uid && pkttype == PKT_USER_ID) if (with_uid && pkttype == PKT_USER_ID)
; ;
else if( do_skip else if( do_skip
|| !pkttype || !pkttype
|| (onlykeypkts && pkttype != PKT_PUBLIC_SUBKEY || (onlykeypkts && pkttype != PKT_PUBLIC_SUBKEY
&& pkttype != PKT_PUBLIC_KEY && pkttype != PKT_PUBLIC_KEY
@ -920,10 +920,10 @@ dump_sig_subpkt( int hashed, int type, int critical,
"the owner of this ARR key. Detailed info follows:\n", "the owner of this ARR key. Detailed info follows:\n",
type, (unsigned)length ); type, (unsigned)length );
} }
buffer++; buffer++;
length--; length--;
fprintf (listfp, "\t%s%ssubpkt %d len %u (", /*)*/ fprintf (listfp, "\t%s%ssubpkt %d len %u (", /*)*/
critical ? "critical ":"", critical ? "critical ":"",
hashed ? "hashed ":"", type, (unsigned)length ); hashed ? "hashed ":"", type, (unsigned)length );
@ -1671,7 +1671,7 @@ read_protected_v3_mpi (IOBUF inp, unsigned long *length)
} }
/* convert buffer into an opaque MPI */ /* convert buffer into an opaque MPI */
val = gcry_mpi_set_opaque (NULL, buf, (p-buf)*8); val = gcry_mpi_set_opaque (NULL, buf, (p-buf)*8);
return val; return val;
} }
@ -1758,7 +1758,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
sk->version = version; sk->version = version;
sk->is_primary = pkttype == PKT_SECRET_KEY; sk->is_primary = pkttype == PKT_SECRET_KEY;
sk->pubkey_algo = algorithm; sk->pubkey_algo = algorithm;
sk->req_usage = 0; sk->req_usage = 0;
sk->pubkey_usage = 0; /* not yet used */ sk->pubkey_usage = 0; /* not yet used */
} }
else { else {
@ -1771,7 +1771,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
pk->version = version; pk->version = version;
pk->is_primary = pkttype == PKT_PUBLIC_KEY; pk->is_primary = pkttype == PKT_PUBLIC_KEY;
pk->pubkey_algo = algorithm; pk->pubkey_algo = algorithm;
pk->req_usage = 0; pk->req_usage = 0;
pk->pubkey_usage = 0; /* not yet used */ pk->pubkey_usage = 0; /* not yet used */
pk->is_revoked = 0; pk->is_revoked = 0;
pk->is_disabled = 0; pk->is_disabled = 0;
@ -1899,8 +1899,10 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
sk->protect.s2k.count = iobuf_get(inp); sk->protect.s2k.count = iobuf_get(inp);
pktlen--; pktlen--;
if( list_mode ) if( list_mode )
fprintf (listfp, "\tprotect count: %lu\n", fprintf (listfp, "\tprotect count: %lu (%lu)\n",
(ulong)sk->protect.s2k.count); (ulong)S2K_DECODE_COUNT
((ulong)sk->protect.s2k.count),
(ulong)sk->protect.s2k.count);
} }
else if( sk->protect.s2k.mode == 1002 ) { else if( sk->protect.s2k.mode == 1002 ) {
/* Read the serial number. */ /* Read the serial number. */
@ -1964,7 +1966,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
* If the user is so careless, not to protect his secret key, * If the user is so careless, not to protect his secret key,
* we can assume, that he operates an open system :=(. * we can assume, that he operates an open system :=(.
* So we put the key into secure memory when we unprotect it. */ * So we put the key into secure memory when we unprotect it. */
if( sk->protect.s2k.mode == 1001 if( sk->protect.s2k.mode == 1001
|| sk->protect.s2k.mode == 1002 ) { || sk->protect.s2k.mode == 1002 ) {
/* better set some dummy stuff here */ /* better set some dummy stuff here */
sk->skey[npkey] = gcry_mpi_set_opaque(NULL, sk->skey[npkey] = gcry_mpi_set_opaque(NULL,
@ -1987,7 +1989,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
for(i=npkey; i < nskey; i++ ) { for(i=npkey; i < nskey; i++ ) {
if ( sk->is_protected ) { if ( sk->is_protected ) {
sk->skey[i] = read_protected_v3_mpi (inp, &pktlen); sk->skey[i] = read_protected_v3_mpi (inp, &pktlen);
if( list_mode ) if( list_mode )
fprintf (listfp, "\tskey[%d]: [encrypted]\n", i); fprintf (listfp, "\tskey[%d]: [encrypted]\n", i);
} }
else { else {
@ -2044,7 +2046,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
} }
if (list_mode) if (list_mode)
fprintf (listfp, "\tkeyid: %08lX%08lX\n", fprintf (listfp, "\tkeyid: %08lX%08lX\n",
(ulong)keyid[0], (ulong)keyid[1]); (ulong)keyid[0], (ulong)keyid[1]);
leave: leave:
@ -2135,7 +2137,7 @@ parse_user_id( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *packet )
iobuf_skip_rest(inp, pktlen, 0); iobuf_skip_rest(inp, pktlen, 0);
return G10ERR_INVALID_PACKET; return G10ERR_INVALID_PACKET;
} }
packet->pkt.user_id = xmalloc_clear(sizeof *packet->pkt.user_id + pktlen); packet->pkt.user_id = xmalloc_clear(sizeof *packet->pkt.user_id + pktlen);
packet->pkt.user_id->len = pktlen; packet->pkt.user_id->len = pktlen;
packet->pkt.user_id->ref=1; packet->pkt.user_id->ref=1;
@ -2365,7 +2367,7 @@ parse_compressed( IOBUF inp, int pkttype, unsigned long pktlen,
PACKET *pkt, int new_ctb ) PACKET *pkt, int new_ctb )
{ {
PKT_compressed *zd; PKT_compressed *zd;
/* PKTLEN is here 0, but data follows (this should be the last /* PKTLEN is here 0, but data follows (this should be the last
object in a file or the compress algorithm should know the object in a file or the compress algorithm should know the
length). */ length). */
@ -2374,7 +2376,7 @@ parse_compressed( IOBUF inp, int pkttype, unsigned long pktlen,
zd = pkt->pkt.compressed = xmalloc (sizeof *pkt->pkt.compressed); zd = pkt->pkt.compressed = xmalloc (sizeof *pkt->pkt.compressed);
zd->algorithm = iobuf_get_noeof(inp); zd->algorithm = iobuf_get_noeof(inp);
zd->len = 0; /* not used */ zd->len = 0; /* not used */
zd->new_ctb = new_ctb; zd->new_ctb = new_ctb;
zd->buf = inp; zd->buf = inp;
if (list_mode) if (list_mode)
@ -2407,7 +2409,7 @@ parse_encrypted( IOBUF inp, int pkttype, unsigned long pktlen,
/* fixme: add some pktlen sanity checks */ /* fixme: add some pktlen sanity checks */
int version; int version;
version = iobuf_get_noeof(inp); version = iobuf_get_noeof(inp);
if (orig_pktlen) if (orig_pktlen)
pktlen--; pktlen--;
if( version != 1 ) { if( version != 1 ) {
@ -2467,7 +2469,7 @@ parse_mdc (IOBUF inp, int pkttype, unsigned long pktlen,
p = mdc->hash; p = mdc->hash;
for (; pktlen; pktlen--, p++) for (; pktlen; pktlen--, p++)
*p = iobuf_get_noeof(inp); *p = iobuf_get_noeof(inp);
leave: leave:
return rc; return rc;
} }