Add a bad-case test for the key generation.
authorWerner Koch <wk@gnupg.org>
Fri, 12 Sep 2008 19:00:03 +0000 (19:00 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 12 Sep 2008 19:00:03 +0000 (19:00 +0000)
cipher/ChangeLog
cipher/dsa.c
cipher/rsa.c

index f60d87b..25a9cd3 100644 (file)
@@ -1,5 +1,8 @@
 2008-09-12  Werner Koch  <wk@g10code.com>
 
+       * rsa.c (test_keys): Do a bad case signature check.
+       * dsa.c (test_keys): Do a bad case check.
+
        * cipher.c (_gcry_cipher_selftest): Add arg EXTENDED and pass it
        to the called tests.
        * md.c (_gcry_md_selftest): Ditto.
@@ -34,6 +37,7 @@
        called test.
        (selftest_fips): Add dummy arg EXTENDED.
        * rsa.c (run_selftests): Add dummy arg EXTENDED.
+
        * dsa.c (run_selftests): Add dummy arg EXTENDED.
 
        * rsa.c (extract_a_from_sexp): New.
index 6b63d1d..3c9e42b 100644 (file)
@@ -209,6 +209,11 @@ test_keys (DSA_secret_key *sk, unsigned int qbits)
   if ( !verify (sig_a, sig_b, data, &pk) )
     goto leave; /* Signature does not match.  */
 
+  /* Modify the data and check that the signing fails.  */
+  gcry_mpi_add_ui (data, data, 1);
+  if ( verify (sig_a, sig_b, data, &pk) )
+    goto leave; /* Signature matches but should not.  */
+
   result = 0; /* The test succeeded.  */
 
  leave:
index 0d18598..9bedcaa 100644 (file)
@@ -136,6 +136,12 @@ test_keys (RSA_secret_key *sk, unsigned int nbits)
   if (gcry_mpi_cmp (decr_plaintext, plaintext))
     goto leave; /* Signature does not match.  */
 
+  /* Modify the signature and check that the signing fails.  */
+  gcry_mpi_add_ui (signature, signature, 1);
+  public (decr_plaintext, signature, &pk);
+  if (!gcry_mpi_cmp (decr_plaintext, plaintext))
+    goto leave; /* Signature matches but should not.  */
+
   result = 0; /* All tests succeeded.  */
 
  leave: