* trustdb.c (validate_keys): Mask the ownertrust when building the list of
authorDavid Shaw <dshaw@jabberwocky.com>
Tue, 4 Mar 2003 15:24:12 +0000 (15:24 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Tue, 4 Mar 2003 15:24:12 +0000 (15:24 +0000)
fully valid keys so that disabled keys are still counted in the web of
trust. (get_ownertrust_with_min): Do the same for the minimum ownertrust
calculation.

* parse-packet.c (dump_sig_subpkt): Show the notation names for
not-human-readable notations.  Fix cosmetic off-by-one length counter.

* options.skel: Add explantion and commented-out
"no-mangle-dos-filenames".

* mainproc.c (proc_encrypted): Make string translatable.

* keyserver.c (keyserver_spawn): Quote ':', '%', and any 8-bit characters
in the uid strings sent to the keyserver helper.

* keyring.c (keyring_rebuild_cache): Lock the keyring while rebuilding the
signature caches to prevent another gpg from tampering with the temporary
copy.

* keygen.c (keygen_set_std_prefs): Include AES192 and AES256 in default
prefs.

* keyedit.c (show_prefs): Make strings translatable.

* keydb.c: Double the maximum number of keyrings to 40.

* gpgv.c (main): Fix bug #113 - gpgv should accept the
--ignore-time-conflict option.

* g10.c (main): --openpgp disables --pgpX.  Double the amount of secure
memory to 32k (keys are getting bigger these days).

* Makefile.am: Makefile.am: Use @CAPLIBS@ to link in -lcap if we are using
capabilities.

13 files changed:
g10/ChangeLog
g10/Makefile.am
g10/g10.c
g10/gpgv.c
g10/keydb.c
g10/keyedit.c
g10/keygen.c
g10/keyring.c
g10/keyserver.c
g10/mainproc.c
g10/options.skel
g10/parse-packet.c
g10/trustdb.c

index 3f91ee5..4b6ea0c 100644 (file)
@@ -1,3 +1,43 @@
+2003-03-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * trustdb.c (validate_keys): Mask the ownertrust when building the
+       list of fully valid keys so that disabled keys are still counted
+       in the web of trust.
+       (get_ownertrust_with_min): Do the same for the minimum ownertrust
+       calculation.
+
+       * parse-packet.c (dump_sig_subpkt): Show the notation names for
+       not-human-readable notations.  Fix cosmetic off-by-one length
+       counter.
+
+       * options.skel: Add explantion and commented-out
+       "no-mangle-dos-filenames".
+
+       * mainproc.c (proc_encrypted): Make string translatable.
+
+       * keyserver.c (keyserver_spawn): Quote ':', '%', and any 8-bit
+       characters in the uid strings sent to the keyserver helper.
+
+       * keyring.c (keyring_rebuild_cache): Lock the keyring while
+       rebuilding the signature caches to prevent another gpg from
+       tampering with the temporary copy.
+
+       * keygen.c (keygen_set_std_prefs): Include AES192 and AES256 in
+       default prefs.
+
+       * keyedit.c (show_prefs): Make strings translatable.
+
+       * keydb.c: Double the maximum number of keyrings to 40.
+
+       * gpgv.c (main): Fix bug #113 - gpgv should accept the
+       --ignore-time-conflict option.
+
+       * g10.c (main): --openpgp disables --pgpX.  Double the amount of
+       secure memory to 32k (keys are getting bigger these days).
+
+       * Makefile.am: Makefile.am: Use @CAPLIBS@ to link in -lcap if we
+       are using capabilities.
+
 2003-02-26  David Shaw  <dshaw@jabberwocky.com>
 
        * keyserver.c (keyserver_spawn): Include various pieces of
 2003-02-26  David Shaw  <dshaw@jabberwocky.com>
 
        * keyserver.c (keyserver_spawn): Include various pieces of
index 83349d4..a70a837 100644 (file)
@@ -25,7 +25,7 @@ EXTRA_DIST = options.skel
 LDFLAGS = @LDFLAGS@
 libexecdir = @libexecdir@/@PACKAGE@
 CFLAGS = @CFLAGS@ -DGNUPG_LIBEXECDIR="\"$(libexecdir)\""
 LDFLAGS = @LDFLAGS@
 libexecdir = @libexecdir@/@PACKAGE@
 CFLAGS = @CFLAGS@ -DGNUPG_LIBEXECDIR="\"$(libexecdir)\""
-needed_libs = ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a
+needed_libs = ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a @CAPLIBS@
 
 #noinst_PROGRAMS = gpgd
 bin_PROGRAMS = gpg gpgv
 
 #noinst_PROGRAMS = gpgd
 bin_PROGRAMS = gpg gpgv
index e98e7b7..8266321 100644 (file)
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -1240,7 +1240,7 @@ main( int argc, char **argv )
     }
 #endif
     /* initialize the secure memory. */
     }
 #endif
     /* initialize the secure memory. */
-    secmem_init( 16384 );
+    secmem_init( 32768 );
     maybe_setuid = 0;
     /* Okay, we are now working under our real uid */
 
     maybe_setuid = 0;
     /* Okay, we are now working under our real uid */
 
@@ -1538,6 +1538,10 @@ main( int argc, char **argv )
             opt.s2k_mode = 3; /* iterated+salted */
            opt.s2k_digest_algo = DIGEST_ALGO_SHA1;
            opt.s2k_cipher_algo = CIPHER_ALGO_3DES;
             opt.s2k_mode = 3; /* iterated+salted */
            opt.s2k_digest_algo = DIGEST_ALGO_SHA1;
            opt.s2k_cipher_algo = CIPHER_ALGO_3DES;
+           opt.pgp2 = 0;
+           opt.pgp6 = 0;
+           opt.pgp7 = 0;
+           opt.pgp8 = 0;
            break;
          case oPGP2: opt.pgp2 = 1; break;
          case oNoPGP2: opt.pgp2 = 0; break;
            break;
          case oPGP2: opt.pgp2 = 1; break;
          case oNoPGP2: opt.pgp2 = 0; break;
index 8e22d50..eba6f8d 100644 (file)
@@ -179,6 +179,7 @@ main( int argc, char **argv )
          case oStatusFD: set_status_fd( pargs.r.ret_int ); break;
          case oLoggerFD: log_set_logfile( NULL, pargs.r.ret_int ); break;
          case oHomedir: opt.homedir = pargs.r.ret_str; break;
          case oStatusFD: set_status_fd( pargs.r.ret_int ); break;
          case oLoggerFD: log_set_logfile( NULL, pargs.r.ret_int ); break;
          case oHomedir: opt.homedir = pargs.r.ret_str; break;
+         case oIgnoreTimeConflict: opt.ignore_time_conflict = 1; break;
          default : pargs.err = 2; break;
        }
     }
          default : pargs.err = 2; break;
        }
     }
index 19b5c1a..5207705 100644 (file)
@@ -42,7 +42,7 @@ typedef enum {
     KEYDB_RESOURCE_TYPE_NONE = 0,
     KEYDB_RESOURCE_TYPE_KEYRING
 } KeydbResourceType;
     KEYDB_RESOURCE_TYPE_NONE = 0,
     KEYDB_RESOURCE_TYPE_KEYRING
 } KeydbResourceType;
-#define MAX_KEYDB_RESOURCES 20
+#define MAX_KEYDB_RESOURCES 40
 
 struct resource_item {
   KeydbResourceType type;
 
 struct resource_item {
   KeydbResourceType type;
index e34ee3a..6710314 100644 (file)
@@ -1624,7 +1624,8 @@ show_prefs (PKT_user_id *uid, int verbose)
 
     if (verbose) {
         int any, des_seen=0, sha1_seen=0, uncomp_seen=0;
 
     if (verbose) {
         int any, des_seen=0, sha1_seen=0, uncomp_seen=0;
-        tty_printf ("     Cipher: ");
+        tty_printf ("     ");
+       tty_printf (_("Cipher: "));
         for(i=any=0; prefs[i].type; i++ ) {
             if( prefs[i].type == PREFTYPE_SYM ) {
                 const char *s = cipher_algo_to_string (prefs[i].value);
         for(i=any=0; prefs[i].type; i++ ) {
             if( prefs[i].type == PREFTYPE_SYM ) {
                 const char *s = cipher_algo_to_string (prefs[i].value);
@@ -1646,7 +1647,8 @@ show_prefs (PKT_user_id *uid, int verbose)
                 tty_printf (", ");
             tty_printf ("%s",cipher_algo_to_string(CIPHER_ALGO_3DES));
         }
                 tty_printf (", ");
             tty_printf ("%s",cipher_algo_to_string(CIPHER_ALGO_3DES));
         }
-        tty_printf ("\n     Hash: ");
+        tty_printf ("\n     ");
+       tty_printf (_("Digest: "));
         for(i=any=0; prefs[i].type; i++ ) {
             if( prefs[i].type == PREFTYPE_HASH ) {
                 const char *s = digest_algo_to_string (prefs[i].value);
         for(i=any=0; prefs[i].type; i++ ) {
             if( prefs[i].type == PREFTYPE_HASH ) {
                 const char *s = digest_algo_to_string (prefs[i].value);
@@ -1668,7 +1670,8 @@ show_prefs (PKT_user_id *uid, int verbose)
                 tty_printf (", ");
             tty_printf ("%s",digest_algo_to_string(DIGEST_ALGO_SHA1));
         }
                 tty_printf (", ");
             tty_printf ("%s",digest_algo_to_string(DIGEST_ALGO_SHA1));
         }
-        tty_printf ("\n     Compression: ");
+        tty_printf ("\n     ");
+       tty_printf (_("Compression: "));
         for(i=any=0; prefs[i].type; i++ ) {
             if( prefs[i].type == PREFTYPE_ZIP ) {
                 const char *s=compress_algo_to_string(prefs[i].value);
         for(i=any=0; prefs[i].type; i++ ) {
             if( prefs[i].type == PREFTYPE_ZIP ) {
                 const char *s=compress_algo_to_string(prefs[i].value);
@@ -1696,7 +1699,8 @@ show_prefs (PKT_user_id *uid, int verbose)
         }
        if(uid->mdc_feature || !uid->ks_modify)
          {
         }
        if(uid->mdc_feature || !uid->ks_modify)
          {
-           tty_printf ("\n     Features: ");
+           tty_printf ("\n     ");
+           tty_printf (_("Features: "));
            any=0;
            if(uid->mdc_feature)
              {
            any=0;
            if(uid->mdc_feature)
              {
@@ -1707,7 +1711,7 @@ show_prefs (PKT_user_id *uid, int verbose)
              {
                if(any)
                  tty_printf (", ");
              {
                if(any)
                  tty_printf (", ");
-               tty_printf ("Keyserver no-modify");
+               tty_printf (_("Keyserver no-modify"));
              }
          }
        tty_printf("\n");
              }
          }
        tty_printf("\n");
index 039f770..3e5bc4f 100644 (file)
@@ -213,7 +213,7 @@ set_one_pref (int val, int type, const char *item, byte *buf, int *nbuf)
 }
 
 #ifdef USE_AES
 }
 
 #ifdef USE_AES
-#define AES "S7 "
+#define AES "S9 S8 S7 "
 #else
 #define AES ""
 #endif
 #else
 #define AES ""
 #endif
index 898136b..f8b6e15 100644 (file)
@@ -1326,6 +1326,10 @@ keyring_rebuild_cache (void *token)
   memset (&desc, 0, sizeof desc);
   desc.mode = KEYDB_SEARCH_MODE_FIRST;
 
   memset (&desc, 0, sizeof desc);
   desc.mode = KEYDB_SEARCH_MODE_FIRST;
 
+  rc=keyring_lock (hd, 1);
+  if(rc)
+    goto leave;
+
   while ( !(rc = keyring_search (hd, &desc, 1, NULL)) )
     {
       desc.mode = KEYDB_SEARCH_MODE_NEXT;
   while ( !(rc = keyring_search (hd, &desc, 1, NULL)) )
     {
       desc.mode = KEYDB_SEARCH_MODE_NEXT;
@@ -1420,6 +1424,7 @@ keyring_rebuild_cache (void *token)
   m_free (tmpfilename);  
   m_free (bakfilename);  
   release_kbnode (keyblock);
   m_free (tmpfilename);  
   m_free (bakfilename);  
   release_kbnode (keyblock);
+  keyring_lock (hd, 0);
   keyring_release (hd);
   return rc;
 }
   keyring_release (hd);
   return rc;
 }
index b153bc4..4947293 100644 (file)
@@ -862,12 +862,26 @@ keyserver_spawn(int action,STRLIST list,
                      case PKT_USER_ID:
                        {
                          PKT_user_id *uid=node->pkt->pkt.user_id;
                      case PKT_USER_ID:
                        {
                          PKT_user_id *uid=node->pkt->pkt.user_id;
+                         int r;
 
                          if(uid->attrib_data)
                            continue;
 
 
                          if(uid->attrib_data)
                            continue;
 
-                         fprintf(spawn->tochild,"uid:%s:%u:%u:",
-                                 uid->name,uid->created,uid->expiredate);
+                         fprintf(spawn->tochild,"uid:");
+
+                         /* Quote ':', '%', and any 8-bit
+                            characters */
+                         for(r=0;r<uid->len;r++)
+                           {
+                             if(uid->name[r]==':' || uid->name[r]=='%'
+                                || uid->name[r]&0x80)
+                               fprintf(spawn->tochild,"%%%02X",uid->name[r]);
+                             else
+                               fprintf(spawn->tochild,"%c",uid->name[r]);
+                           }
+
+                         fprintf(spawn->tochild,":%u:%u:",
+                                 uid->created,uid->expiredate);
 
                          if(uid->is_revoked)
                            fprintf(spawn->tochild,"r");
 
                          if(uid->is_revoked)
                            fprintf(spawn->tochild,"r");
index c7da91b..978ee9d 100644 (file)
@@ -505,7 +505,7 @@ proc_encrypted( CTX c, PACKET *pkt )
        if( pkt->pkt.encrypted->mdc_method && !result )
            write_status( STATUS_GOODMDC );
        else if(!opt.no_mdc_warn)
        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");
+           log_info (_("WARNING: message was not integrity protected\n"));
     }
     else if( result == G10ERR_BAD_SIGN ) {
        log_error(_("WARNING: encrypted message has been manipulated!\n"));
     }
     else if( result == G10ERR_BAD_SIGN ) {
        log_error(_("WARNING: encrypted message has been manipulated!\n"));
index f2811d8..e50f66f 100644 (file)
@@ -56,7 +56,7 @@
 # If you do not use the Latin-1 (ISO-8859-1) charset, you should tell
 # GnuPG which is the native character set.  Please check the man page
 # for supported character sets.  This character set is only used for
 # If you do not use the Latin-1 (ISO-8859-1) charset, you should tell
 # GnuPG which is the native character set.  Please check the man page
 # for supported character sets.  This character set is only used for
-# Meta data and not for the actual message which does not undergo any
+# metadata and not for the actual message which does not undergo any
 # translation.  Note that future version of GnuPG will change to UTF-8
 # as default character set.
 
 # translation.  Note that future version of GnuPG will change to UTF-8
 # as default character set.
 
 
 #group mynames = paige 0x12345678 joe patti
 
 
 #group mynames = paige 0x12345678 joe patti
 
+# Some old Windows platforms require 8.3 filenames.  If your system
+# can handle long filenames, uncomment this.
+
+#no-mangle-dos-filenames
+
 # Lock the file only once for the lifetime of a process.  If you do
 # not define this, the lock will be obtained and released every time
 # it is needed - normally this is not needed.
 # Lock the file only once for the lifetime of a process.  If you do
 # not define this, the lock will be obtained and released every time
 # it is needed - normally this is not needed.
 # generating and then cleaning up a secure temp file.
 #
 # The default program is "xloadimage -fork -quiet -title 'KeyID 0x%k' stdin"
 # generating and then cleaning up a secure temp file.
 #
 # The default program is "xloadimage -fork -quiet -title 'KeyID 0x%k' stdin"
-# On Mac OS X and Windows, the default is to use your regular image viewer.
+# On Mac OS X and Windows, the default is to use your regular JPEG image
+# viewer.
 #
 # Some other viewers:
 # photo-viewer "qiv %i"
 #
 # Some other viewers:
 # photo-viewer "qiv %i"
 # Use your MIME handler to view photos:
 # photo-viewer "metamail -q -d -b -c %T -s 'KeyID 0x%k' -f GnuPG"
 
 # Use your MIME handler to view photos:
 # photo-viewer "metamail -q -d -b -c %T -s 'KeyID 0x%k' -f GnuPG"
 
-
 # Passphrase agent
 #
 # Passphrase agent
 #
-# We support the old experimental passphrase agent protocol as well
-# as the new Assuan based one (currently available in the "newpg" package
-# at ftp.gnupg.org/gcrypt/alpha/aegypten/).  To make use of the agent, you have
-# to run an agent as daemon and use the option
+# We support the old experimental passphrase agent protocol as well as
+# the new Assuan based one (currently available in the "newpg" package
+# at ftp.gnupg.org/gcrypt/alpha/aegypten/).  To make use of the agent,
+# you have to run an agent as daemon and use the option
 #
 # use-agent
 # 
 #
 # use-agent
 # 
index d270ece..7e390ae 100644 (file)
@@ -752,12 +752,12 @@ dump_sig_subpkt( int hashed, int type, int critical,
                type, (unsigned)length );
     }
     
                type, (unsigned)length );
     }
     
+    buffer++;
+    length--;
    
     printf("\t%s%ssubpkt %d len %u (", /*)*/
              critical ? "critical ":"",
              hashed ? "hashed ":"", type, (unsigned)length );
    
     printf("\t%s%ssubpkt %d len %u (", /*)*/
              critical ? "critical ":"",
              hashed ? "hashed ":"", type, (unsigned)length );
-    buffer++;
-    length--;
     if( length > buflen ) {
        printf("too short: buffer is only %u)\n", (unsigned)buflen );
        return;
     if( length > buflen ) {
        printf("too short: buffer is only %u)\n", (unsigned)buflen );
        return;
@@ -823,8 +823,6 @@ dump_sig_subpkt( int hashed, int type, int critical,
            fputs("notation: ", stdout );
            if( length < 8 )
                p = "[too short]";
            fputs("notation: ", stdout );
            if( length < 8 )
                p = "[too short]";
-           else if( !(*buffer & 0x80) )
-               p = "[not human readable]";
            else {
                const byte *s = buffer;
                size_t n1, n2;
            else {
                const byte *s = buffer;
                size_t n1, n2;
@@ -837,7 +835,11 @@ dump_sig_subpkt( int hashed, int type, int critical,
                else {
                    print_string( stdout, s, n1, ')' );
                    putc( '=', stdout );
                else {
                    print_string( stdout, s, n1, ')' );
                    putc( '=', stdout );
-                   print_string( stdout, s+n1, n2, ')' );
+
+                   if( *buffer & 0x80 )
+                     print_string( stdout, s+n1, n2, ')' );
+                   else
+                     p = "[not human readable]";
                }
            }
        }
                }
            }
        }
index 7f38bbc..3dc2ded 100644 (file)
@@ -638,7 +638,7 @@ get_ownertrust_with_min (PKT_public_key *pk)
 {
   unsigned int otrust,otrust_min;
 
 {
   unsigned int otrust,otrust_min;
 
-  otrust = get_ownertrust (pk);
+  otrust = (get_ownertrust (pk) & TRUST_MASK);
   otrust_min = get_min_ownertrust (pk);
   if(otrust<otrust_min)
     {
   otrust_min = get_min_ownertrust (pk);
   if(otrust<otrust_min)
     {
@@ -2004,7 +2004,8 @@ validate_keys (int interactive)
                      k->kid[0]=kid[0];
                      k->kid[1]=kid[1];
                      k->ownertrust =
                      k->kid[0]=kid[0];
                      k->kid[1]=kid[1];
                      k->ownertrust =
-                       get_ownertrust (kar->keyblock->pkt->pkt.public_key);
+                       (get_ownertrust (kar->keyblock->pkt->pkt.public_key)
+                        & TRUST_MASK);
                      k->min_ownertrust =
                        get_min_ownertrust(kar->keyblock->pkt->pkt.public_key);
                      k->trust_depth=
                      k->min_ownertrust =
                        get_min_ownertrust(kar->keyblock->pkt->pkt.public_key);
                      k->trust_depth=
@@ -2056,5 +2057,6 @@ validate_keys (int interactive)
       do_sync ();
       pending_check_trustdb = 0;
     }
       do_sync ();
       pending_check_trustdb = 0;
     }
+
   return rc;
 }
   return rc;
 }