See ChangeLog: Fri Jul 28 18:19:11 CEST 2000 Werner Koch
authorWerner Koch <wk@gnupg.org>
Fri, 28 Jul 2000 16:19:07 +0000 (16:19 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 28 Jul 2000 16:19:07 +0000 (16:19 +0000)
12 files changed:
NEWS
checks/defs.inc
cipher/pubkey.c
g10/ChangeLog
g10/gpg.c
g10/keygen.c
g10/plaintext.c
g10/sig-check.c
mpi/ChangeLog
mpi/mpicoder.c
util/ChangeLog
util/iobuf.c

diff --git a/NEWS b/NEWS
index 141c496..df5e12d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,87 @@
+Noteworthy changes in the current CVS HEAD
+------------------------------------------
 
     * Removed option --emulate-checksum-bug
 
+    * Fixed expiration handling of encryption keys.
+
+    * Add an experimental feature to do unattended key generation.
+
+    * The user is now asked for the reason of revocation as required
+      by the new OpenPGP draft.
+
+    * There is a ~/.gnupg/random_seed file now which saves the
+      state of the internal RNG and increases system performance
+      somewhat.  This way the full entropy source is only used in
+      cases were it is really required.
+      Use the option --no-random-seed-file to disable this feature.
+
+    * New options --ignore-time-conflict and --lock-never.
+
+    * Some fixes for the W32 version.
+
+    * The entropy.dll is not anymore used by the W32 version but replaced
+      by code derived from Cryptlib.
+
+    * Encryption is now much faster: About 2 times for 1k bit keys
+      and 8 times for 4k keys.
+
+    * New encryption keys are generated in a way which allows a much
+      faster decryption.
+
+    * New command --export-secret-subkeys which outputs the
+      the _primary_ key with it's secret parts deleted.  This is
+      useful for automated decryption/signature creation as it
+      allows to keep the real secret primary key offline and
+      thereby protecting the key certificates and allowing to
+      create revocations for the subkeys.  See the FAQ for a
+      procedure to install such secret keys.
+
+    * Keygeneration now writes to the first writeable keyring or
+      as default to the one in the homedirectory.  Prior versions
+      ignored all --keyring options.
+
+    * New option --command-fd to take user input from a file descriptor;
+      to be used with --status-fd by software which uses GnuPG as a backend.
+
+    * There is a new status PROGRESS which is used to show progress during
+      key generation.
+
+    * Support for the new MDC encryption packets.  To create them either
+      --force-mdc must be use or cipher algorithm with a blocksize other
+      than 64 bits is to be used.  --openpgp currently disables MDC packets
+      entirely.  This option should not yet be used.
+
+    * New option --no-auto-key-retrieve to disable retrieving of
+      a missing public key from a keyerver, when a keyerver has been set.
+
+    * New command --verify-files.  New option --fast-list-mode.
+
+    * $http_proxy is now used when --honor-http-proxy is set.
+
+    * Fixed some minor bugs and the problem with conventional encrypted
+      packets which did use the gpg v3 partial length headers.
+
+    * Some more translations.
+
+    * Fixed a bug with symmetric-only encryption using the non-default 3DES.
+      The option --emulate-3des-s2k-bug may be used to decrypt documents
+      which have been encrypted this way; this should be done immediately
+      as this workaround will be remove in 1.1
+
+    * Can now handle (but not display) PGP's photo IDs. I don't know the
+      format of that packet but after stripping a few bytes from the start
+      it looks like a JPEG (at least my test data).  Handling of this
+      package is required because otherwise it would mix up the
+      self signatures and you can't import those keys.
+
+    * Passing non-ascii user IDs on the commandline should now work in all
+      cases.
+
+    * New keys are now generated with an additional preference to Blowfish.
+
+    * Removed the GNU Privacy Handbook from the distribution because it
+      is now in the package GPH.
 
 
 Noteworthy changes in version 1.1.0 (1999-10-26)
index d5fdc8a..c975025 100755 (executable)
@@ -29,6 +29,7 @@ exp_files=""
 LANG=
 LANGUAGE=
 LC_ALL=
+LC_MESSAGES=
 
 #--------------------------------
 #------ utility functions -------
@@ -105,5 +106,6 @@ no-greeting
 no-secmem-warning
 load-extension ../cipher/tiger
 batch
+emulate-md-encode-bug
 EOF
 
index 7ef6f18..15487ad 100644 (file)
@@ -701,16 +701,9 @@ sexp_to_key( GCRY_SEXP sexp, int want_private, MPI **retarray, int *retalgo)
                                                    :"public-key", 0 );
     if( !list )
        return GCRYERR_INV_OBJ; /* Does not contain a public- or private-key object */
-    l2 = gcry_sexp_cdr( list );
-    gcry_sexp_release ( list );
-    list = l2;
-    if( !list )
-       return GCRYERR_NO_OBJ; /* no cdr for the key object */
-    l2 = gcry_sexp_car( list );
+    l2 = gcry_sexp_cadr( list );
     gcry_sexp_release ( list );
     list = l2;
-    if( !list )
-       return GCRYERR_NO_OBJ; /* no car for the key object */
     name = gcry_sexp_car_data( list, &n );
     if( !name ) {
        gcry_sexp_release ( list );
@@ -873,7 +866,7 @@ sexp_to_enc( GCRY_SEXP sexp, MPI **retarray, int *retalgo)
     list = gcry_sexp_find_token( sexp, "enc-val" , 0 );
     if( !list )
        return GCRYERR_INV_OBJ; /* Does not contain a encrypted value object */
-    l2 = gcry_sexp_cdr( list );
+    l2 = gcry_sexp_cadr( list );
     gcry_sexp_release ( list );
     list = l2;
     if( !list ) {
@@ -1332,7 +1325,7 @@ gcry_pk_genkey( GCRY_SEXP *r_key, GCRY_SEXP s_parms )
     list = gcry_sexp_find_token( s_parms, "genkey", 0 );
     if( !list )
        return GCRYERR_INV_OBJ; /* Does not contain genkey data */
-    l2 = gcry_sexp_cdr( list );
+    l2 = gcry_sexp_cadr( list );
     gcry_sexp_release ( list );
     list = l2;
     if( !list )
@@ -1402,7 +1395,7 @@ gcry_pk_genkey( GCRY_SEXP *r_key, GCRY_SEXP s_parms )
        /* build the string */
        nelem = 0;
        string = p = g10_xmalloc ( needed );
-       p = stpcpy ( p, "(key-data(" );
+       p = stpcpy ( p, "(key-data" );
 
        p = stpcpy ( p, "(public-key(" );
        p = stpcpy ( p, algo_name );
@@ -1412,7 +1405,7 @@ gcry_pk_genkey( GCRY_SEXP *r_key, GCRY_SEXP s_parms )
            p = stpcpy ( p, "%m)" );
            mpis[nelem++] = skey[i];
        }
-       strcpy ( p, "))" );
+       p = stpcpy ( p, "))" );
 
        p = stpcpy ( p, "(private-key(" );
        p = stpcpy ( p, algo_name );
@@ -1422,14 +1415,14 @@ gcry_pk_genkey( GCRY_SEXP *r_key, GCRY_SEXP s_parms )
            p = stpcpy ( p, "%m)" );
            mpis[nelem++] = skey[i];
        }
-       strcpy ( p, "))" );
+       p = stpcpy ( p, "))" );
 
        p = stpcpy ( p, "(misc-key-info(pm1-factors" );
        for(i=0; factors[i]; i++ ) {
            p = stpcpy ( p, "%m" );
            mpis[nelem++] = factors[i];
        }
-       strcpy ( p, "))" );
+       strcpy ( p, ")))" );
 
        while ( nelem < DIM(mpis) )
            mpis[nelem++] = NULL;
@@ -1439,6 +1432,7 @@ gcry_pk_genkey( GCRY_SEXP *r_key, GCRY_SEXP s_parms )
         * we have. which normally should be no problem as only those
         * with a corresponding %m are used
         */
+        log_debug ("retstr=`%s'\n", string);
        if ( gcry_sexp_build ( r_key, NULL, string,
                   mpis[0], mpis[1], mpis[2], mpis[3], mpis[4], mpis[5],
                   mpis[6], mpis[7], mpis[8], mpis[9], mpis[10], mpis[11],
@@ -1447,7 +1441,7 @@ gcry_pk_genkey( GCRY_SEXP *r_key, GCRY_SEXP s_parms )
                   mpis[24], mpis[25], mpis[26], mpis[27], mpis[28], mpis[29]
                  ) )
            BUG ();
-       assert ( DIM(mpis) == 29 );
+       assert ( DIM(mpis) == 30 );
        g10_free ( string );
     }
     release_mpi_array ( skey );
index 893fed1..16abe94 100644 (file)
@@ -1,3 +1,11 @@
+Fri Jul 28 18:19:11 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * sig-check.c (pk_verify): Fixed the S-Exp withe the pkey.
+
+  * gpg.c (main): Use setmode(O_BINARY) for MSDOS while generating random bytes
+  (print_mds): Likewise for stdin.
+  * plaintext.c (handle_plaintext): Likewise for stdout.
+
 Tue Jul 25 17:44:15 CEST 2000  Werner Koch  <wk@openit.de>
 
   * keyedit.c (menu_expire): expire date for primary key can be set again.
index fb1be04..11ceb81 100644 (file)
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -25,6 +25,9 @@
 #include <string.h>
 #include <ctype.h>
 #include <unistd.h>
+#ifdef HAVE_DOSISH_SYSTEM
+  #include <fcntl.h> /* for setmode() */
+#endif
 
 
 #include <gcrypt.h>
@@ -1449,6 +1452,9 @@ main( int argc, char **argv )
                size_t n = !endless && count < 100? count : 100;
 
                p = gcry_random_bytes( n, level );
+             #ifdef HAVE_DOSISH_SYSTEM
+               setmode ( fileno(stdout), O_BINARY );
+             #endif
                fwrite( p, n, 1, stdout );
                gcry_free(p);
                if( !endless )
@@ -1676,6 +1682,9 @@ print_mds( const char *fname, int algo, const char *key )
 
     if( !fname ) {
        fp = stdin;
+      #ifdef HAVE_DOSISH_SYSTEM
+       setmode ( fileno(fp) , O_BINARY );
+      #endif
        pname = gcry_xstrdup("[stdin]: ");
     }
     else {
index 3b3d95e..3e22d05 100644 (file)
@@ -254,7 +254,7 @@ key_from_sexp( GCRY_MPI *array,
     list = gcry_sexp_find_token( sexp, topname, 0 );
     if( !list )
        return GCRYERR_INV_OBJ;
-    l2 = gcry_sexp_cdr( list );
+    l2 = gcry_sexp_cadr( list );
     gcry_sexp_release ( list );
     list = l2;
     if( !list )
@@ -311,6 +311,7 @@ factors_from_sexp( MPI **retarray, GCRY_SEXP sexp )
     if( !list )
        return GCRYERR_NO_OBJ;
 
+  #if 0
     /* count factors */
     ctx = NULL;
     for( n=0; (l2 = gcry_sexp_enum( list, &ctx, 0 )); n++ )
@@ -337,6 +338,10 @@ factors_from_sexp( MPI **retarray, GCRY_SEXP sexp )
            }
        }
     }
+  #else
+    array = gcry_xcalloc( 1, sizeof *array );
+    #warning dummy code here
+  #endif
 
      gcry_sexp_release ( list );
     *retarray = array;
index e3c7a86..555dd16 100644 (file)
 #include <string.h>
 #include <errno.h>
 #include <assert.h>
+#ifdef HAVE_DOSISH_SYSTEM
+  #include <fcntl.h> /* for setmode() */
+#endif
+
 #include "util.h"
 #include <gcrypt.h>
 #include "options.h"
@@ -81,6 +85,9 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
     else if( !*fname || (*fname=='-' && !fname[1])) {
        /* no filename or "-" given; write to stdout */
        fp = stdout;
+      #ifdef HAVE_DOSISH_SYSTEM
+       setmode ( fileno(fp) , O_BINARY );
+      #endif
     }
     else if( !overwrite_filep( fname ) ) {
        rc = GPGERR_CREATE_FILE;
index ba39241..85c8bfb 100644 (file)
@@ -67,7 +67,7 @@ pk_verify( int algo, MPI hash, MPI *data, MPI *pkey,
     }
     else if( algo == GCRY_PK_ELG || algo == GCRY_PK_ELG_E ) {
        rc = gcry_sexp_build ( &s_pkey, NULL,
-                             "(public-key(dsa(p%m)(g%m)(y%m)))",
+                             "(public-key(elg(p%m)(g%m)(y%m)))",
                                  pkey[0], pkey[1], pkey[2] );
     }
     else if( algo == GCRY_PK_RSA ) {
index 6bdeaf2..97ae3cd 100644 (file)
@@ -1,3 +1,7 @@
+Fri Jul 28 18:19:11 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * mpicoder.c (gcry_mpi_scan): Normalize the returned MPI.
+
 Tue Jul 25 17:44:15 CEST 2000  Werner Koch  <wk@openit.de>
 
   * config.links: Support for powerpc--netbsd by Gabriel Rosenkoetter.
index bd79aca..9c68d7c 100644 (file)
@@ -355,8 +355,10 @@ gcry_mpi_scan( struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,
            else
                mpi_set_buffer( a, s, len, 0 );
        }
-       if( ret_mpi )
+       if( ret_mpi ) {
+           mpi_normalize ( a );
            *ret_mpi = a;
+       }
        else
            mpi_free(a);
        return 0;
@@ -365,8 +367,10 @@ gcry_mpi_scan( struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,
        a = mpi_alloc( (len+BYTES_PER_MPI_LIMB-1) / BYTES_PER_MPI_LIMB );
        if( len )  /* not zero */
            mpi_set_buffer( a, buffer, len, 0 );
-       if( ret_mpi )
+       if( ret_mpi ) {
+           mpi_normalize ( a );
            *ret_mpi = a;
+       }
        else
            mpi_free(a);
        return 0;
@@ -375,8 +379,10 @@ gcry_mpi_scan( struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,
        a = mpi_read_from_buffer( (char*)buffer, &len, 0 );
        if( nbytes )
            *nbytes = len;
-       if( ret_mpi )
+       if( ret_mpi ) {
+           mpi_normalize ( a );
            *ret_mpi = a;
+       }
        else
            mpi_free(a);
        return a? 0 : GCRYERR_INV_OBJ;
@@ -405,8 +411,10 @@ gcry_mpi_scan( struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,
        }
        if( nbytes )
            *nbytes = n+4;
-       if( ret_mpi )
+       if( ret_mpi ) {
+           mpi_normalize ( a );
            *ret_mpi = a;
+       }
        else
            mpi_free(a);
        return 0;
@@ -417,8 +425,10 @@ gcry_mpi_scan( struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,
        a = mpi_alloc(0);
        if( mpi_fromstr( a, buffer ) )
            return GCRYERR_INV_OBJ;
-       if( ret_mpi )
+       if( ret_mpi ) {
+           mpi_normalize ( a );
            *ret_mpi = a;
+       }
        else
            mpi_free(a);
        return 0;
index d1eba02..68964a6 100644 (file)
@@ -1,3 +1,10 @@
+Fri Jul 28 18:19:11 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * iobuf.c: Use setmode() at several places to set stdin and stdout
+  to binary mode for MSDOS based systems
+
+  * iobuf.c (underflow): Initialize dummy_len to keep memory checker happy.
+
 Fri Jul 14 19:38:23 CEST 2000  Werner Koch  <wk@>
 
   * iobuf.c (iobuf_cancel): Broadcast the new Cancel message to all
index ce63b55..f7035ae 100644 (file)
@@ -28,6 +28,9 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <gcrypt.h>
+#ifdef HAVE_DOSISH_SYSTEM
+  #include <fcntl.h> /* for setmode() */
+#endif
 
 #include "memory.h"
 #include "util.h"
@@ -580,7 +583,10 @@ iobuf_open( const char *fname )
     int print_only = 0;
 
     if( !fname || (*fname=='-' && !fname[1])  ) {
-       fp = stdin; /* fixme: set binary mode for msdoze */
+       fp = stdin;
+      #ifdef HAVE_DOSISH_SYSTEM
+       setmode ( fileno(fp) , O_BINARY );
+      #endif
        fname = "[stdin]";
        print_only = 1;
     }
@@ -647,6 +653,9 @@ iobuf_create( const char *fname )
 
     if( !fname || (*fname=='-' && !fname[1]) ) {
        fp = stdout;
+      #ifdef HAVE_DOSISH_SYSTEM
+       setmode ( fileno(fp) , O_BINARY );
+      #endif
        fname = "[stdout]";
        print_only = 1;
     }
@@ -742,7 +751,10 @@ iobuf_fopen( const char *fname, const char *mode )
     int print_only = 0;
 
     if( !fname || (*fname=='-' && !fname[1])  ) {
-       fp = stdin; /* fixme: set binary mode for msdoze */
+       fp = stdin;
+      #ifdef HAVE_DOSISH_SYSTEM
+       setmode ( fileno(fp) , O_BINARY );
+      #endif
        fname = "[stdin]";
        print_only = 1;
     }