diff --git a/testsuite/dsa-keygen-test.c b/testsuite/dsa-keygen-test.c
index 83786293e5d3f87a9e0a9089e2492b8f9a07f0ed..12dc3096824df6b52128684d143ca02fc930e964 100644
--- a/testsuite/dsa-keygen-test.c
+++ b/testsuite/dsa-keygen-test.c
@@ -28,7 +28,7 @@ test_main(void)
     FAIL();
 
   test_dsa_key(&pub, &key, 160);
-  test_dsa160(&pub, &key);
+  test_dsa160(&pub, &key, NULL);
 
   if (!dsa_generate_keypair(&pub, &key,
 			    &lfib, (nettle_random_func *) knuth_lfib_random,
@@ -37,7 +37,7 @@ test_main(void)
     FAIL();
 
   test_dsa_key(&pub, &key, 256);
-  test_dsa256(&pub, &key);
+  test_dsa256(&pub, &key, NULL);
   
   dsa_public_key_clear(&pub);
   dsa_private_key_clear(&key);
diff --git a/testsuite/testutils.c b/testsuite/testutils.c
index 8279735261019e50fed0cb097f7e3c150331ee56..f07b7c448c0736c493e361ce9da64224c78c3046 100644
--- a/testsuite/testutils.c
+++ b/testsuite/testutils.c
@@ -826,7 +826,8 @@ test_rsa_key(struct rsa_public_key *pub,
 
 void
 test_dsa160(const struct dsa_public_key *pub,
-	    const struct dsa_private_key *key)
+	    const struct dsa_private_key *key,
+	    const struct dsa_signature *expected)
 {
   struct sha1_ctx sha1;
   struct dsa_signature signature;
@@ -840,7 +841,7 @@ test_dsa160(const struct dsa_public_key *pub,
   ASSERT (dsa_sha1_sign(pub, key,
 			&lfib, (nettle_random_func *) knuth_lfib_random,
 			&sha1, &signature));
-  
+
   if (verbose)
     {
       fprintf(stderr, "dsa160 signature: ");
@@ -849,6 +850,11 @@ test_dsa160(const struct dsa_public_key *pub,
       mpz_out_str(stderr, 16, signature.s);
       fprintf(stderr, "\n");
     }
+
+  if (expected)
+    if (mpz_cmp (signature.r, expected->r)
+	|| mpz_cmp (signature.s, expected->s))
+      FAIL();
   
   /* Try bad data */
   if (DSA_VERIFY(pub, sha1,
@@ -872,7 +878,8 @@ test_dsa160(const struct dsa_public_key *pub,
 
 void
 test_dsa256(const struct dsa_public_key *pub,
-	    const struct dsa_private_key *key)
+	    const struct dsa_private_key *key,
+	    const struct dsa_signature *expected)
 {
   struct sha256_ctx sha256;
   struct dsa_signature signature;
@@ -896,10 +903,10 @@ test_dsa256(const struct dsa_public_key *pub,
       fprintf(stderr, "\n");
     }
 
-#if 0
-  if (mpz_cmp(signature, expected))
-    FAIL();
-#endif
+  if (expected)
+    if (mpz_cmp (signature.r, expected->r)
+	|| mpz_cmp (signature.s, expected->s))
+      FAIL();
   
   /* Try bad data */
   if (DSA_VERIFY(pub, sha256,
diff --git a/testsuite/testutils.h b/testsuite/testutils.h
index 966eca383ca7a0748ec4072301c177fdce94ea9a..91ec49621cf97d9aeb339928181fbfde4060e3c6 100644
--- a/testsuite/testutils.h
+++ b/testsuite/testutils.h
@@ -168,11 +168,13 @@ test_rsa_key(struct rsa_public_key *pub,
 
 void
 test_dsa160(const struct dsa_public_key *pub,
-	    const struct dsa_private_key *key);
+	    const struct dsa_private_key *key,
+	    const struct dsa_signature *expected);
 
 void
 test_dsa256(const struct dsa_public_key *pub,
-	    const struct dsa_private_key *key);
+	    const struct dsa_private_key *key,
+	    const struct dsa_signature *expected);
 
 void
 test_dsa_key(struct dsa_public_key *pub,