1
0
mirror of https://github.com/ARMmbed/mbedtls.git synced 2025-10-19 19:53:48 +08:00

Add gcd_invmod_odd() tests where G/I are initialized to large numbers

Signed-off-by: Felix Conway <felix.conway@arm.com>
This commit is contained in:
Felix Conway
2025-08-05 14:38:20 +01:00
parent eefdfe99a4
commit 49a2bc4750

View File

@@ -1219,6 +1219,20 @@ void mpi_gcd_modinv_odd_both(char *input_A, char *input_N,
res = mbedtls_mpi_gcd_modinv_odd(&G, &I, &A, /* N */ &A);
TEST_EQUAL(res, MBEDTLS_ERR_MPI_BAD_INPUT_DATA);
/* Test G & I initialized to large number with non-zero limbs. */
TEST_EQUAL(mbedtls_test_read_mpi(&G, "c7420eb50e52ce18795a1020896787ce18dcd6b0"), 0);
TEST_EQUAL(mbedtls_test_read_mpi(&I, "5702c227ee207cca33eb7a6151531b50541a47ef"), 0);
res = mbedtls_mpi_gcd_modinv_odd(&G, &I, &A, &N);
TEST_EQUAL(res, return_code);
if (res == 0) {
TEST_ASSERT(sign_is_valid(&G));
TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
if (has_inverse) {
TEST_ASSERT(sign_is_valid(&I));
TEST_EQUAL(mbedtls_mpi_cmp_mpi(&I, &exp_I), 0);
}
}
exit:
mbedtls_mpi_free(&G); mbedtls_mpi_free(&I); mbedtls_mpi_free(&A); mbedtls_mpi_free(&N);
mbedtls_mpi_free(&exp_G); mbedtls_mpi_free(&exp_I);
@@ -1266,6 +1280,15 @@ void mpi_gcd_modinv_odd_only_gcd(char *input_A, char *input_N,
res = mbedtls_mpi_gcd_modinv_odd(&G, NULL, &A, /* N */ &A);
TEST_EQUAL(res, MBEDTLS_ERR_MPI_BAD_INPUT_DATA);
/* Test G initialized to large number with non-zero limbs. */
TEST_EQUAL(mbedtls_test_read_mpi(&G, "8d81032aaa52fb4d29831c7ed183fffee9baf169"), 0);
res = mbedtls_mpi_gcd_modinv_odd(&G, NULL, &A, &N);
TEST_EQUAL(res, return_code);
if (res == 0) {
TEST_ASSERT(sign_is_valid(&G));
TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
}
exit:
mbedtls_mpi_free(&G); mbedtls_mpi_free(&A); mbedtls_mpi_free(&N);
mbedtls_mpi_free(&exp_G);
@@ -1314,6 +1337,15 @@ void mpi_gcd_modinv_odd_only_modinv(char *input_A, char *input_N,
res = mbedtls_mpi_gcd_modinv_odd(NULL, &I, &A, /* N */ &A);
TEST_EQUAL(res, MBEDTLS_ERR_MPI_BAD_INPUT_DATA);
/* Test I initialized to large number with non-zero limbs. */
TEST_EQUAL(mbedtls_test_read_mpi(&I, "bc0ccc030cb2d8b31e40e08fac727d2f4a8c9c1d"), 0);
res = mbedtls_mpi_gcd_modinv_odd(NULL, &I, &A, &N);
TEST_EQUAL(res, return_code);
if (res == 0 && has_inverse) {
TEST_ASSERT(sign_is_valid(&I));
TEST_EQUAL(mbedtls_mpi_cmp_mpi(&I, &exp_I), 0);
}
exit:
mbedtls_mpi_free(&I); mbedtls_mpi_free(&A); mbedtls_mpi_free(&N);
mbedtls_mpi_free(&exp_I);