aboutsummaryrefslogtreecommitdiffstats
path: root/g10
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2000-10-11 17:26:49 +0000
committerWerner Koch <[email protected]>2000-10-11 17:26:49 +0000
commitc287a8d05bfa08a3ea7d2c8fc8ae8c3a740aef1c (patch)
tree541bb4fcd34dd379b6ac17f0e58af743dc9ed2bd /g10
parentThis was missing in HEAD. (diff)
downloadgnupg-c287a8d05bfa08a3ea7d2c8fc8ae8c3a740aef1c.tar.gz
gnupg-c287a8d05bfa08a3ea7d2c8fc8ae8c3a740aef1c.zip
Add features packet and fixes MIPS3.
Diffstat (limited to 'g10')
-rw-r--r--g10/ChangeLog8
-rw-r--r--g10/build-packet.c1
-rw-r--r--g10/keygen.c3
-rw-r--r--g10/packet.h1
-rw-r--r--g10/parse-packet.c9
5 files changed, 21 insertions, 1 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 6f73abf96..4fb562ff6 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,11 @@
+2000-10-11 Werner Koch <[email protected]>
+
+ * packet.h: Add features sig subpacket definition.
+ * parse-packet.c (dump_sig_subpkt,parse_one_sig_subpkt,
+ can_handle_critical): Implemented it here.
+ * build-packet.c (build_sig_subpkt): and here.
+ * keygen.c (keygen_add_std_prefs): Generate a features packet.
+
2000-10-09 Werner Koch <[email protected]>
* keygen.c (do_generate_keypair): Removed the keyblock locking.
diff --git a/g10/build-packet.c b/g10/build-packet.c
index 7291f74b2..93381879c 100644
--- a/g10/build-packet.c
+++ b/g10/build-packet.c
@@ -702,6 +702,7 @@ build_sig_subpkt( PKT_signature *sig, sigsubpkttype_t type,
case SIGSUBPKT_POLICY:
case SIGSUBPKT_REVOC_REASON:
case SIGSUBPKT_KEY_FLAGS:
+ case SIGSUBPKT_FEATURES:
hashed = 1; break;
default: hashed = 0; break;
}
diff --git a/g10/keygen.c b/g10/keygen.c
index 415c54a2a..790dd58ba 100644
--- a/g10/keygen.c
+++ b/g10/keygen.c
@@ -148,6 +148,9 @@ keygen_add_std_prefs( PKT_signature *sig, void *opaque )
buf[1] = 1;
build_sig_subpkt( sig, SIGSUBPKT_PREF_COMPR, buf, 2 );
+ buf[0] = 1; /* supports MDC packets (15 + 16) */
+ build_sig_subpkt( sig, SIGSUBPKT_FEATURES, buf, 1 );
+
buf[0] = 0x80; /* no modify - It is reasonable that a key holder
* has the possibility to reject signatures from users
* who are known to sign everything without any
diff --git a/g10/packet.h b/g10/packet.h
index 33bcf792a..2f7f16f8c 100644
--- a/g10/packet.h
+++ b/g10/packet.h
@@ -275,6 +275,7 @@ typedef enum {
SIGSUBPKT_KEY_FLAGS =27, /* key flags */
SIGSUBPKT_SIGNERS_UID =28, /* signer's user id */
SIGSUBPKT_REVOC_REASON =29, /* reason for revocation */
+ SIGSUBPKT_FEATURES =30, /* feature flags */
SIGSUBPKT_PRIV_ADD_SIG =101,/* signatur is also valid for this uid */
SIGSUBPKT_FLAG_CRITICAL=128
diff --git a/g10/parse-packet.c b/g10/parse-packet.c
index b22a59989..691be6662 100644
--- a/g10/parse-packet.c
+++ b/g10/parse-packet.c
@@ -843,7 +843,12 @@ dump_sig_subpkt( int hashed, int type, int critical,
printf("%02X", buffer[i] );
}
break;
- case SIGSUBPKT_PRIV_ADD_SIG:
+ case SIGSUBPKT_FEATURES:
+ fputs ( "features:", stdout );
+ for( i=0; i < length; i++ )
+ printf(" %02X", buffer[i] );
+ break;
+ case SIGSUBPKT_PRIV_ADD_SIG: /* gnupg private - to be removed */
p = "signs additional user ID";
break;
default: p = "?"; break;
@@ -889,6 +894,7 @@ parse_one_sig_subpkt( const byte *buffer, size_t n, int type )
case SIGSUBPKT_PREF_SYM:
case SIGSUBPKT_PREF_HASH:
case SIGSUBPKT_PREF_COMPR:
+ case SIGSUBPKT_FEATURES:
case SIGSUBPKT_POLICY:
return 0;
case SIGSUBPKT_PRIMARY_UID:
@@ -925,6 +931,7 @@ can_handle_critical( const byte *buffer, size_t n, int type )
case SIGSUBPKT_PREF_SYM:
case SIGSUBPKT_PREF_HASH:
case SIGSUBPKT_PREF_COMPR:
+ case SIGSUBPKT_FEATURES:
case SIGSUBPKT_KEY_FLAGS:
return 1;