[svn] GnuPG - r4141 - trunk/g10
svn author dshaw
cvs at cvs.gnupg.org
Tue May 23 05:58:55 CEST 2006
Author: dshaw
Date: 2006-05-23 05:58:53 +0200 (Tue, 23 May 2006)
New Revision: 4141
Modified:
trunk/g10/ChangeLog
trunk/g10/build-packet.c
trunk/g10/getkey.c
trunk/g10/keygen.c
trunk/g10/parse-packet.c
trunk/g10/sign.c
Log:
* parse-packet.c (dump_sig_subpkt, parse_signature), build-packet.c
(build_sig_subpkt_from_sig), getkey.c (fixup_uidnode,
merge_selfsigs_main, merge_selfsigs_subkey), keygen.c
(keygen_add_key_expire): Fix meaning of key expiration and sig
expiration subpackets - zero means "never expire" according to 2440,
not "expire instantly".
Modified: trunk/g10/ChangeLog
===================================================================
--- trunk/g10/ChangeLog 2006-05-22 21:38:13 UTC (rev 4140)
+++ trunk/g10/ChangeLog 2006-05-23 03:58:53 UTC (rev 4141)
@@ -1,7 +1,11 @@
2006-05-22 David Shaw <dshaw at jabberwocky.com>
- * import.c (import_one): Fix bug when importing a new key from a
- file.
+ * parse-packet.c (dump_sig_subpkt, parse_signature),
+ build-packet.c (build_sig_subpkt_from_sig), getkey.c
+ (fixup_uidnode, merge_selfsigs_main, merge_selfsigs_subkey),
+ keygen.c (keygen_add_key_expire): Fix meaning of key expiration
+ and sig expiration subpackets - zero means "never expire"
+ according to 2440, not "expire instantly".
* getkey.c (get_pubkey_byname), import.c (import_one): Fix key
selection problem when auto-key-locate returns a list of keys, not
Modified: trunk/g10/build-packet.c
===================================================================
--- trunk/g10/build-packet.c 2006-05-22 21:38:13 UTC (rev 4140)
+++ trunk/g10/build-packet.c 2006-05-23 03:58:53 UTC (rev 4141)
@@ -824,7 +824,8 @@
if(sig->expiredate>sig->timestamp)
u=sig->expiredate-sig->timestamp;
else
- u=0;
+ u=1; /* A 1-second expiration time is the shortest one
+ OpenPGP has */
buf[0] = (u >> 24) & 0xff;
buf[1] = (u >> 16) & 0xff;
Modified: trunk/g10/getkey.c
===================================================================
--- trunk/g10/getkey.c 2006-05-22 21:38:13 UTC (rev 4140)
+++ trunk/g10/getkey.c 2006-05-23 03:58:53 UTC (rev 4141)
@@ -1506,12 +1506,12 @@
/* store the key flags in the helper variable for later processing */
uid->help_key_usage=parse_key_usage(sig);
- /* ditto or the key expiration */
- uid->help_key_expire = 0;
+ /* ditto for the key expiration */
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_KEY_EXPIRE, NULL);
- if ( p ) {
- uid->help_key_expire = keycreated + buffer_to_u32(p);
- }
+ if( p && buffer_to_u32(p) )
+ uid->help_key_expire = keycreated + buffer_to_u32(p);
+ else
+ uid->help_key_expire = 0;
/* Set the primary user ID flag - we will later wipe out some
* of them to only have one in our keyblock */
@@ -1723,7 +1723,7 @@
key_usage=parse_key_usage(sig);
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_KEY_EXPIRE, NULL);
- if ( p )
+ if( p && buffer_to_u32(p) )
{
key_expire = keytimestamp + buffer_to_u32(p);
key_expire_seen = 1;
@@ -2127,7 +2127,7 @@
subpk->pubkey_usage = key_usage;
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_KEY_EXPIRE, NULL);
- if ( p )
+ if ( p && buffer_to_u32(p) )
key_expire = keytimestamp + buffer_to_u32(p);
else
key_expire = 0;
Modified: trunk/g10/keygen.c
===================================================================
--- trunk/g10/keygen.c 2006-05-22 21:38:13 UTC (rev 4140)
+++ trunk/g10/keygen.c 2006-05-23 03:58:53 UTC (rev 4141)
@@ -221,7 +221,7 @@
if(pk->expiredate > pk->timestamp)
u= pk->expiredate - pk->timestamp;
else
- u= 0;
+ u= 1;
buf[0] = (u >> 24) & 0xff;
buf[1] = (u >> 16) & 0xff;
Modified: trunk/g10/parse-packet.c
===================================================================
--- trunk/g10/parse-packet.c 2006-05-22 21:38:13 UTC (rev 4140)
+++ trunk/g10/parse-packet.c 2006-05-23 03:58:53 UTC (rev 4141)
@@ -1,6 +1,6 @@
/* parse-packet.c - read packets
- * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- * 2005 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ * 2006 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -822,8 +822,13 @@
break;
case SIGSUBPKT_SIG_EXPIRE:
if( length >= 4 )
- fprintf (listfp, "sig expires after %s",
- strtimevalue( buffer_to_u32(buffer) ) );
+ {
+ if(buffer_to_u32(buffer))
+ fprintf (listfp, "sig expires after %s",
+ strtimevalue( buffer_to_u32(buffer) ) );
+ else
+ fprintf (listfp, "sig does not expire");
+ }
break;
case SIGSUBPKT_EXPORTABLE:
if( length )
@@ -847,8 +852,13 @@
break;
case SIGSUBPKT_KEY_EXPIRE:
if( length >= 4 )
- fprintf (listfp, "key expires after %s",
- strtimevalue( buffer_to_u32(buffer) ) );
+ {
+ if(buffer_to_u32(buffer))
+ fprintf (listfp, "key expires after %s",
+ strtimevalue( buffer_to_u32(buffer) ) );
+ else
+ fprintf (listfp, "key does not expire");
+ }
break;
case SIGSUBPKT_PREF_SYM:
fputs("pref-sym-algos:", listfp );
@@ -1353,7 +1363,7 @@
log_info ("signature packet without keyid\n");
p=parse_sig_subpkt(sig->hashed,SIGSUBPKT_SIG_EXPIRE,NULL);
- if(p)
+ if(p && buffer_to_u32(p))
sig->expiredate=sig->timestamp+buffer_to_u32(p);
if(sig->expiredate && sig->expiredate<=make_timestamp())
sig->flags.expired=1;
Modified: trunk/g10/sign.c
===================================================================
--- trunk/g10/sign.c 2006-05-22 21:38:13 UTC (rev 4140)
+++ trunk/g10/sign.c 2006-05-23 03:58:53 UTC (rev 4141)
@@ -1544,7 +1544,7 @@
}
/* Note that already expired sigs will remain expired (with a
- duration of 0) since build-packet.c:build_sig_subpkt_from_sig
+ duration of 1) since build-packet.c:build_sig_subpkt_from_sig
detects this case. */
if( sig->version >= 4 )
More information about the Gnupg-commits
mailing list