* options.h, g10.c (main), mainproc.c (proc_encrypted): --ignore-mdc-error
authorDavid Shaw <dshaw@jabberwocky.com>
Tue, 6 Aug 2002 17:57:53 +0000 (17:57 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Tue, 6 Aug 2002 17:57:53 +0000 (17:57 +0000)
option to turn a MDC check error into a warning.

g10/ChangeLog
g10/encode.c
g10/g10.c
g10/mainproc.c
g10/options.h

index 11e407b..704064d 100644 (file)
@@ -1,5 +1,9 @@
 2002-08-06  David Shaw  <dshaw@jabberwocky.com>
 
+       * options.h, g10.c (main), mainproc.c (proc_encrypted):
+       --ignore-mdc-error option to turn a MDC check error into a
+       warning.
+
        * encode.c (encode_crypt), g10.c (main), sign.c (sign_file,
        clearsign_file): Use the same --pgpX warning string everywhere to
        ease translations.
index abc25c9..87289cf 100644 (file)
@@ -630,7 +630,7 @@ write_pubkey_enc_from_list( PK_LIST pk_list, DEK *dek, IOBUF out )
        if(opt.throw_keyid && (opt.pgp2 || opt.pgp6 || opt.pgp7))
          {
            log_info(_("you may not use %s while in %s mode\n"),
-                    "throw-keyid",
+                    "--throw-keyid",
                     opt.pgp2?"--pgp2":opt.pgp6?"--pgp6":"--pgp7");
 
            log_info(_("this message may not be usable by %s\n"),
index ab9f648..c92d834 100644 (file)
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -266,6 +266,7 @@ enum cmd_and_opt_values { aNull = 0,
     oIgnoreTimeConflict,
     oIgnoreValidFrom,
     oIgnoreCrcError,
+    oIgnoreMDCError,
     oShowSessionKey,
     oOverrideSessionKey,
     oNoRandomSeedFile,
@@ -555,6 +556,7 @@ static ARGPARSE_OPTS opts[] = {
     { oIgnoreTimeConflict, "ignore-time-conflict", 0, "@" },
     { oIgnoreValidFrom,    "ignore-valid-from",    0, "@" },
     { oIgnoreCrcError, "ignore-crc-error", 0,"@" },
+    { oIgnoreMDCError, "ignore-mdc-error", 0,"@" },
     { oShowSessionKey, "show-session-key", 0, "@" },
     { oOverrideSessionKey, "override-session-key", 2, "@" },
     { oNoRandomSeedFile,  "no-random-seed-file", 0, "@" },
@@ -1420,6 +1422,7 @@ main( int argc, char **argv )
          case oIgnoreTimeConflict: opt.ignore_time_conflict = 1; break;
          case oIgnoreValidFrom: opt.ignore_valid_from = 1; break;
          case oIgnoreCrcError: opt.ignore_crc_error = 1; break;
+         case oIgnoreMDCError: opt.ignore_mdc_error = 1; break;
          case oNoRandomSeedFile: use_random_seed = 0; break;
          case oAutoKeyRetrieve:
          case oNoAutoKeyRetrieve:
index 2004da1..38aaac0 100644 (file)
@@ -492,11 +492,11 @@ proc_encrypted( CTX c, PACKET *pkt )
     m_free(c->dek); c->dek = NULL;
     if( result == -1 )
        ;
-    else if( !result ) {
+    else if( !result || (result==G10ERR_BAD_SIGN && opt.ignore_mdc_error)) {
        write_status( STATUS_DECRYPTION_OKAY );
        if( opt.verbose > 1 )
            log_info(_("decryption okay\n"));
-       if( pkt->pkt.encrypted->mdc_method )
+       if( pkt->pkt.encrypted->mdc_method && !result )
            write_status( STATUS_GOODMDC );
        else if(!opt.no_mdc_warn)
            log_info ("WARNING: message was not integrity protected\n");
index 8148803..3e79825 100644 (file)
@@ -161,6 +161,7 @@ struct {
     int ignore_time_conflict;
     int ignore_valid_from;
     int ignore_crc_error;
+    int ignore_mdc_error;
     int command_fd;
     const char *override_session_key;
     int show_session_key;