diff --git a/testsuite/rsa-keygen-test.c b/testsuite/rsa-keygen-test.c index eff094f79ed7760d236a8ecb0afd6c46c0f56e1d..8a2498da4d867fe21143432ea83873251e328872 100644 --- a/testsuite/rsa-keygen-test.c +++ b/testsuite/rsa-keygen-test.c @@ -14,77 +14,6 @@ progress(void *ctx UNUSED, int c) fputc(c, stderr); } -static void -test_rsa_key(struct rsa_public_key *pub, - struct rsa_private_key *key) -{ - mpz_t tmp; - mpz_t phi; - - mpz_init(tmp); mpz_init(phi); - - if (verbose) - { - /* FIXME: Use gmp_printf */ - fprintf(stderr, "Public key: n="); - mpz_out_str(stderr, 16, pub->n); - fprintf(stderr, "\n e="); - mpz_out_str(stderr, 16, pub->e); - - fprintf(stderr, "\n\nPrivate key: d="); - mpz_out_str(stderr, 16, key->d); - fprintf(stderr, "\n p="); - mpz_out_str(stderr, 16, key->p); - fprintf(stderr, "\n q="); - mpz_out_str(stderr, 16, key->q); - fprintf(stderr, "\n a="); - mpz_out_str(stderr, 16, key->a); - fprintf(stderr, "\n b="); - mpz_out_str(stderr, 16, key->b); - fprintf(stderr, "\n c="); - mpz_out_str(stderr, 16, key->c); - fprintf(stderr, "\n\n"); - } - - /* Check n = p q */ - mpz_mul(tmp, key->p, key->q); - if (mpz_cmp(tmp, pub->n)) - FAIL(); - - /* Check c q = 1 mod p */ - mpz_mul(tmp, key->c, key->q); - mpz_fdiv_r(tmp, tmp, key->p); - if (mpz_cmp_ui(tmp, 1)) - FAIL(); - - /* Check ed = 1 (mod phi) */ - mpz_sub_ui(phi, key->p, 1); - mpz_sub_ui(tmp, key->q, 1); - - mpz_mul(phi, phi, tmp); - - mpz_mul(tmp, pub->e, key->d); - mpz_fdiv_r(tmp, tmp, phi); - if (mpz_cmp_ui(tmp, 1)) - FAIL(); - - /* Check a e = 1 (mod (p-1) ) */ - mpz_sub_ui(phi, key->p, 1); - mpz_mul(tmp, pub->e, key->a); - mpz_fdiv_r(tmp, tmp, phi); - if (mpz_cmp_ui(tmp, 1)) - FAIL(); - - /* Check b e = 1 (mod (q-1) ) */ - mpz_sub_ui(phi, key->q, 1); - mpz_mul(tmp, pub->e, key->b); - mpz_fdiv_r(tmp, tmp, phi); - if (mpz_cmp_ui(tmp, 1)) - FAIL(); - - mpz_clear(tmp); mpz_clear(phi); -} - int test_main(void) { diff --git a/testsuite/testutils.c b/testsuite/testutils.c index cfcc07341b6fc74ffba5289cbfce087748e5b3b8..203f827119eb1b77f85caa25b2bc361b6f4aaa64 100644 --- a/testsuite/testutils.c +++ b/testsuite/testutils.c @@ -375,4 +375,78 @@ test_rsa_sha1(struct rsa_public_key *pub, mpz_clear(signature); } + +#if HAVE_LIBGMP +void +test_rsa_key(struct rsa_public_key *pub, + struct rsa_private_key *key) +{ + mpz_t tmp; + mpz_t phi; + + mpz_init(tmp); mpz_init(phi); + + if (verbose) + { + /* FIXME: Use gmp_printf */ + fprintf(stderr, "Public key: n="); + mpz_out_str(stderr, 16, pub->n); + fprintf(stderr, "\n e="); + mpz_out_str(stderr, 16, pub->e); + + fprintf(stderr, "\n\nPrivate key: d="); + mpz_out_str(stderr, 16, key->d); + fprintf(stderr, "\n p="); + mpz_out_str(stderr, 16, key->p); + fprintf(stderr, "\n q="); + mpz_out_str(stderr, 16, key->q); + fprintf(stderr, "\n a="); + mpz_out_str(stderr, 16, key->a); + fprintf(stderr, "\n b="); + mpz_out_str(stderr, 16, key->b); + fprintf(stderr, "\n c="); + mpz_out_str(stderr, 16, key->c); + fprintf(stderr, "\n\n"); + } + + /* Check n = p q */ + mpz_mul(tmp, key->p, key->q); + if (mpz_cmp(tmp, pub->n)) + FAIL(); + + /* Check c q = 1 mod p */ + mpz_mul(tmp, key->c, key->q); + mpz_fdiv_r(tmp, tmp, key->p); + if (mpz_cmp_ui(tmp, 1)) + FAIL(); + + /* Check ed = 1 (mod phi) */ + mpz_sub_ui(phi, key->p, 1); + mpz_sub_ui(tmp, key->q, 1); + + mpz_mul(phi, phi, tmp); + + mpz_mul(tmp, pub->e, key->d); + mpz_fdiv_r(tmp, tmp, phi); + if (mpz_cmp_ui(tmp, 1)) + FAIL(); + + /* Check a e = 1 (mod (p-1) ) */ + mpz_sub_ui(phi, key->p, 1); + mpz_mul(tmp, pub->e, key->a); + mpz_fdiv_r(tmp, tmp, phi); + if (mpz_cmp_ui(tmp, 1)) + FAIL(); + + /* Check b e = 1 (mod (q-1) ) */ + mpz_sub_ui(phi, key->q, 1); + mpz_mul(tmp, pub->e, key->b); + mpz_fdiv_r(tmp, tmp, phi); + if (mpz_cmp_ui(tmp, 1)) + FAIL(); + + mpz_clear(tmp); mpz_clear(phi); +} +#endif /* HAVE_LIBGMP */ + #endif /* HAVE_LIBGMP */