diff --git a/g10/ChangeLog b/g10/ChangeLog index cf15e422b..17594b3fd 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,24 @@ +2003-03-24 David Shaw + + * keydb.h: Err on the side of making an unknown signature a SIG + rather than a CERT. + + * import.c (delete_inv_parts): Discard any key signatures that + aren't key types (i.e. 0x00, 0x01, etc.) + + * g10.c (main): Add deprecated option warning for + --list-ownertrust. Add --compression-algo alias for + --compress-algo. Change --version output strings to match + "showpref" strings, and make translatable. + + * status.c (do_get_from_fd): Accept 'y' as well as 'Y' for + --command-fd boolean input. + + * trustdb.c: Fix typo (DISABLE_REGEXP -> DISABLE_REGEX) + + * keyedit.c (show_key_with_all_names_colon): Show no-ks-modify + flag. + 2003-03-11 David Shaw * options.h, g10.c (main), keyserver.c (kopts): Add "try-dns-srv" diff --git a/g10/g10.c b/g10/g10.c index 0226243ad..550d98438 100644 --- a/g10/g10.c +++ b/g10/g10.c @@ -120,6 +120,7 @@ enum cmd_and_opt_values { aNull = 0, aListTrustDB, aListTrustPath, aExportOwnerTrust, + aListOwnerTrust, aImportOwnerTrust, aDeArmor, aEnArmor, @@ -363,7 +364,7 @@ static ARGPARSE_OPTS opts[] = { { aExportOwnerTrust, "export-ownertrust", 256, N_("export the ownertrust values")}, { aImportOwnerTrust, - "import-ownertrust", 256 , N_("import ownertrust values")}, + "import-ownertrust", 256, N_("import ownertrust values")}, { aUpdateTrustDB, "update-trustdb",0 , N_("update the trust database")}, { aCheckTrustDB, @@ -495,7 +496,8 @@ static ARGPARSE_OPTS opts[] = { " --fingerprint [names] show fingerprints\n" ) }, /* hidden options */ - { aExportOwnerTrust, "list-ownertrust",0 , "@"}, /* alias */ + { aListOwnerTrust, "list-ownertrust", 256, "@"}, /* deprecated */ + { oCompressAlgo, "compression-algo", 1, "@"}, /* alias */ { aPrintMDs, "print-mds" , 256, "@"}, /* old */ { aListTrustDB, "list-trustdb",0 , "@"}, /* Not yet used */ @@ -666,25 +668,25 @@ strusage( int level ) case 33: p = _("\nSupported algorithms:\n"); break; case 34: if( !pubkeys ) - pubkeys = build_list("Pubkey: ", 0, pubkey_algo_to_string, + pubkeys = build_list(_("Pubkey: "), 0, pubkey_algo_to_string, check_pubkey_algo ); p = pubkeys; break; case 35: if( !ciphers ) - ciphers = build_list("Cipher: ", 'S', cipher_algo_to_string, + ciphers = build_list(_("Cipher: "), 'S', cipher_algo_to_string, check_cipher_algo ); p = ciphers; break; case 36: if( !digests ) - digests = build_list("Hash: ", 'H', digest_algo_to_string, + digests = build_list(_("Hash: "), 'H', digest_algo_to_string, check_digest_algo ); p = digests; break; case 37: if( !zips ) - zips = build_list("Compress: ",'Z',compress_algo_to_string, + zips = build_list(_("Compression: "),'Z',compress_algo_to_string, check_compress_algo); p = zips; break; @@ -1362,6 +1364,9 @@ main( int argc, char **argv ) case aListTrustPath: set_cmd( &cmd, aListTrustPath); break; case aDeArmor: set_cmd( &cmd, aDeArmor); break; case aEnArmor: set_cmd( &cmd, aEnArmor); break; + case aListOwnerTrust: + deprecated_warning(configname,configlineno, + "--list-ownertrust","--export-ownertrust",""); case aExportOwnerTrust: set_cmd( &cmd, aExportOwnerTrust); break; case aImportOwnerTrust: set_cmd( &cmd, aImportOwnerTrust); break; case aPipeMode: set_cmd( &cmd, aPipeMode); break; diff --git a/g10/import.c b/g10/import.c index 83ae0b804..b49b20217 100644 --- a/g10/import.c +++ b/g10/import.c @@ -1378,6 +1378,14 @@ delete_inv_parts( const char *fname, KBNODE keyblock, (ulong)keyid[1]); delete_kbnode( node ); } + else if( node->pkt->pkttype == PKT_SIGNATURE + && !IS_CERT(node->pkt->pkt.signature)) + { + log_error(_("key %08lX: unexpected signature class (0x%02X) -" + " skipped\n"),(ulong)keyid[1], + node->pkt->pkt.signature->sig_class); + delete_kbnode(node); + } else if( (node->flag & 4) ) /* marked for deletion */ delete_kbnode( node ); } diff --git a/g10/keydb.h b/g10/keydb.h index b01a4f0dd..b506af65d 100644 --- a/g10/keydb.h +++ b/g10/keydb.h @@ -27,10 +27,9 @@ #include "cipher.h" /* What qualifies as a certification (rather than a signature?) */ -#define IS_SIG(s) (((s)->sig_class==0x00) || ((s)->sig_class==0x01) || \ - ((s)->sig_class==0x02) || ((s)->sig_class==0x40)) -#define IS_CERT(s) (!IS_SIG(s)) - +#define IS_CERT(s) (IS_KEY_SIG(s) || IS_UID_SIG(s) || IS_SUBKEY_SIG(s) \ + || IS_KEY_REV(s) || IS_UID_REV(s) || IS_SUBKEY_REV(s)) +#define IS_SIG(s) (!IS_CERT(s)) #define IS_KEY_SIG(s) ((s)->sig_class == 0x1f) #define IS_UID_SIG(s) (((s)->sig_class & ~3) == 0x10) #define IS_SUBKEY_SIG(s) ((s)->sig_class == 0x18) @@ -38,7 +37,6 @@ #define IS_UID_REV(s) ((s)->sig_class == 0x30) #define IS_SUBKEY_REV(s) ((s)->sig_class == 0x28) - struct getkey_ctx_s; typedef struct getkey_ctx_s *GETKEY_CTX; diff --git a/g10/keyedit.c b/g10/keyedit.c index 671031466..9186bd931 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -1871,6 +1871,8 @@ show_key_with_all_names_colon (KBNODE keyblock) } if (uid->mdc_feature) printf (",mdc"); + if (!uid->ks_modify) + printf (",no-ks-modify"); } putchar (':'); /* flags */ diff --git a/g10/status.c b/g10/status.c index b665968f0..99f9cfdd2 100644 --- a/g10/status.c +++ b/g10/status.c @@ -529,7 +529,7 @@ do_get_from_fd( const char *keyword, int hidden, int bool ) write_status( STATUS_GOT_IT ); if( bool ) /* Fixme: is this correct??? */ - return string[0] == 'Y' ? "" : NULL; + return (string[0] == 'Y' || string[0] == 'y') ? "" : NULL; return string; } diff --git a/g10/trustdb.c b/g10/trustdb.c index 3dc2ded07..e8160f702 100644 --- a/g10/trustdb.c +++ b/g10/trustdb.c @@ -1463,8 +1463,8 @@ mark_usable_uid_certs (KBNODE keyblock, KBNODE uidnode, static int check_regexp(const char *exp,const char *string) { -#ifdef DISABLE_REGEXP - /* When DISABLE_REGEXP is defined, assume all regexps do not +#ifdef DISABLE_REGEX + /* When DISABLE_REGEX is defined, assume all regexps do not match. */ return 0; #elif defined(__riscos__)