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,