diff --git a/testsuite/testutils.c b/testsuite/testutils.c index 87cec2ffc84e05fe67899c315e0c9dec716302d5..9cb0698938a1c28db7979302668c6374fda5b14f 100644 --- a/testsuite/testutils.c +++ b/testsuite/testutils.c @@ -507,5 +507,33 @@ test_dsa(const struct dsa_public_key *pub, dsa_signature_clear(&signature); } +void +test_dsa_key(struct dsa_public_key *pub, + struct dsa_private_key *key) +{ + mpz_t t; + + mpz_init(t); + + ASSERT(mpz_sizeinbase(pub->q, 2) == 160); + ASSERT(mpz_sizeinbase(pub->p, 2) >= DSA_MINIMUM_BITS); + + ASSERT(mpz_probab_prime_p(pub->p, 10)); + + ASSERT(mpz_probab_prime_p(pub->q, 10)); + + mpz_fdiv_r(t, pub->p, pub->q); + + ASSERT(0 == mpz_cmp_ui(t, 1)); + + ASSERT(mpz_cmp_ui(pub->g, 1) > 0); + + mpz_powm(t, pub->g, pub->q, pub->p); + ASSERT(0 == mpz_cmp_ui(t, 1)); + + mpz_powm(t, pub->g, key->x, pub->p); + ASSERT(0 == mpz_cmp(t, pub->y)); +}; + #endif /* WITH_PUBLIC_KEY */ diff --git a/testsuite/testutils.h b/testsuite/testutils.h index 8defa091087925bba67116ba1300be4fd4e5ac87..64d22eeb2f2752bea39280c39c6036451a1569bf 100644 --- a/testsuite/testutils.h +++ b/testsuite/testutils.h @@ -91,6 +91,10 @@ void test_dsa(const struct dsa_public_key *pub, const struct dsa_private_key *key); +void +test_dsa_key(struct dsa_public_key *pub, + struct dsa_private_key *key); + #endif /* WITH_PUBLIC_KEY */ #define H2(d, s) decode_hex((d), (s))