Fixed bug#596 adn minor cleanups
authorWerner Koch <wk@gnupg.org>
Thu, 22 Feb 2007 18:25:27 +0000 (18:25 +0000)
committerWerner Koch <wk@gnupg.org>
Thu, 22 Feb 2007 18:25:27 +0000 (18:25 +0000)
ChangeLog
Makefile.am
THANKS
TODO
cipher/ChangeLog
cipher/md.c
cipher/pubkey.c
tests/ChangeLog
tests/basic.c
tests/pkbench.c

index 442618d..2ba55c3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,14 @@
 2007-02-22  Werner Koch  <wk@g10code.com>
 
+       * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Use
+       --enable-random-daemon.
+
        * configure.ac: New option --enable-random-daemon.
        Create versioninfo.rc and provide the build information.
 
 2007-02-21  Werner Koch  <wk@g10code.com>
 
-       * Makefile.am, configure.ac: Ignore w32-dll/
+       * Makefile.am, configure.ac: Ignore w32-dll/.
 
 2007-02-20  Werner Koch  <wk@g10code.com>
 
index f706593..085c595 100644 (file)
@@ -19,6 +19,7 @@
 
 ACLOCAL_AMFLAGS = -I m4
 AUTOMAKE_OPTIONS = dist-bzip2
+DISTCHECK_CONFIGURE_FLAGS = --enable-random-daemon
 
 DIST_SUBDIRS = m4 mpi cipher src doc tests
 SUBDIRS = mpi cipher src doc tests
diff --git a/THANKS b/THANKS
index 6ae582a..fa37666 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -79,6 +79,7 @@ Michael Roth             mroth@nessie.de
 Michael Sobolev           mss@despair.transas.com
 Michele Baldessari        michele@pupazzo.org
 Modestas Vainius          geromanas@mailas.com
+Neil Dunbar                neil.dunbar at pobox.com
 Neil Spring               nspring@cs.washington.edu
 Newton Hammet              newton@hammet.net
 Nicolas Graner            Nicolas.Graner@cri.u-psud.fr
diff --git a/TODO b/TODO
index 95ea299..c867e6f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -2,8 +2,6 @@ What's left to do                                 -*- outline -*-
 
 * Updated the FSF's directory.
 
-* Add more tests.
-
 * udiv-qrnbd.o should get build as *.lo [HPUX]
 
 * Allow operation using RSA keys consisting of the OpenSSL list of
@@ -14,15 +12,14 @@ What's left to do                                 -*- outline -*-
   been compiled with thread support when used by a threaded
   application.
 
-* write an autoconf test to check whether the linker supports a
-  version script.
+* linker script test
+  Write an autoconf test to check whether the linker supports a
+  version script. 
 
 * Make use of the forthcoming visibility attribute.
 
 * Add attributes to the MPI functions.
 
-* Write tests for the progress function
-
 * In case the ac interface will be more popular than the pk interface,
   the asymmetric ciphers could be changed for convenient interaction
   with the ac interface (i.e. by using ac's `data sets') and the pk
@@ -39,8 +36,8 @@ What's left to do                                 -*- outline -*-
 * Use builtin bit functions of gcc 3.4
 
 * Consider using a daemon to maintain he random pool
-
-  The down side of this is that we can't assume that the random das
+  [Partly done]
+  The down side of this is that we can't assume that the random has
   has always been stored in "secure memory".  And we rely on that
   sniffing of Unix domain sockets is not possible.  We can implement
   this simply by detecting a special prefixed random seed name and
@@ -56,9 +53,6 @@ What's left to do                                 -*- outline -*-
   There is no shortage of standard memory, so logging is most likely
   possible.
 
-* signed vs. unsigned.
-  Sync the code with 1.2 where we have fixed all these issues.
-
 * mpi_print does not use secure memory
   for internal variables.
 
@@ -71,13 +65,18 @@ What's left to do                                 -*- outline -*-
   Remove use of anonymous union.
 
 * ac.c
-  There are still some things fishy.  The fixes I did todat
+  There are still some things fishy.  The fixes I did today
   (2006-10-23) seem to cure just a symptom.  Needs a complete review.
 
 * gcryptrnd.c
-  Requires test for pth and other stuff.
+  Requires a test for pth [done] as well as some other tests.
 
 * secmem.c
   Check whether the memory block is valid before releasing it and
   print a diagnosic, like glibc does.
 
+* Tests
+  We need a lot more tests.  Lets keep an ever growing list here.
+** Write tests for the progress function
+
+
index 645d9eb..b8ff7c5 100644 (file)
@@ -1,5 +1,8 @@
 2007-02-22  Werner Koch  <wk@g10code.com>
 
+       * pubkey.c (sexp_data_to_mpi): Handle dynamically allocated
+       algorithms.  Suggested by Neil Dunbar.  Fixes bug#596.
+
        * rndw32.c (_gcry_rndw32_gather_random_fast): Make it return void.
 
        * cipher.c (gcry_cipher_algo_name): Simplified.
index 706d274..2886013 100644 (file)
@@ -303,7 +303,7 @@ gcry_md_map_name (const char *string)
   ret = search_oid (string, &algorithm, NULL);
   if (! ret)
     {
-      /* Not found, search for an acording diget name.  */
+      /* Not found, search a matching digest name.  */
       digest = gcry_md_lookup_name (string);
       if (digest)
        {
index 228b0d0..a833c3d 100644 (file)
@@ -1325,12 +1325,32 @@ sexp_data_to_mpi (gcry_sexp_t input, unsigned int nbits, gcry_mpi_t *ret_mpi,
                    && !memcmp (hashnames[i].name, s, n))
                 break;
             }
+          if (hashnames[i].name)
+            algo = hashnames[i].algo;
+          else
+            {
+              /* In case of not listed or dynamically allocated hash
+                 algorithm we fall back to this somewhat slower
+                 method.  Further, it also allows to use OIDs as
+                 algorithm names. */
+              char *tmpname;
+
+              tmpname = gcry_malloc (n+1);
+              if (!tmpname)
+                algo = 0;  /* Out of core - silently give up.  */
+              else
+                {
+                  memcpy (tmpname, s, n);
+                  tmpname[n] = 0;
+                  algo = gcry_md_map_name (tmpname);
+                  gcry_free (tmpname);
+                }
+            }
 
-          algo = hashnames[i].algo;
           asnlen = DIM(asn);
           dlen = gcry_md_get_algo_dlen (algo);
 
-          if (!hashnames[i].name)
+          if (!algo)
             rc = GPG_ERR_DIGEST_ALGO;
           else if ( !(value=gcry_sexp_nth_data (lhash, 2, &valuelen))
                     || !valuelen )
index 4dd2da2..07d5af0 100644 (file)
@@ -1,5 +1,7 @@
 2007-02-22  Werner Koch  <wk@g10code.com>
 
+       * basic.c (check_pubkey_sign): Also try signing using an OID.
+
        * Makefile.am (TESTS) [W32]: Removed pkbench for now.
        * pkbench.c (benchmark): Fixed for W32.
 
index f20f7b5..de4adea 100644 (file)
@@ -1654,6 +1654,12 @@ check_pubkey_sign (int n, gcry_sexp_t skey, gcry_sexp_t pkey)
       { "(data\n (flags pkcs1)\n"
        " (hash sha1 #11223344556677889900AABBCCDDEEFF10203040#))\n",
        0 },
+      /* This test is to see whether hash algorithms not hard wired in
+         pubkey.c are detected:  */
+      { "(data\n (flags pkcs1)\n"
+       " (hash oid.1.3.14.3.2.29 "
+        "       #11223344556677889900AABBCCDDEEFF10203040#))\n",
+       0 },
       {        "(data\n (flags )\n"
        " (hash sha1 #11223344556677889900AABBCCDDEEFF10203040#))\n",
        GPG_ERR_CONFLICT },
index 5ce9b0e..c6286c8 100644 (file)
@@ -29,7 +29,7 @@
 #include <sys/stat.h>
 #ifndef HAVE_W32_SYSTEM
 #include <sys/times.h>
-#endif HAVE_W32_SYSTEM
+#endif /*HAVE_W32_SYSTEM*/
 #include <unistd.h>
 #include <fcntl.h>
 #include <time.h>