mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-10-24 13:32:59 +03:00
Use precise sizes for temporaries in test
Signed-off-by: Manuel Pégourié-Gonnard <manuel.pegourie-gonnard@arm.com>
This commit is contained in:
@@ -1539,14 +1539,16 @@ void mpi_core_gcd_modinv_odd_preconditions()
|
|||||||
* crash (but just outputs garbage) when preconditions are not met.
|
* crash (but just outputs garbage) when preconditions are not met.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
mbedtls_mpi_uint two_limbs[2];
|
|
||||||
mbedtls_mpi_uint one_limb[1];
|
mbedtls_mpi_uint one_limb[1];
|
||||||
mbedtls_mpi_uint *G = NULL, *I = NULL, *T = NULL;
|
mbedtls_mpi_uint two_limbs[2];
|
||||||
|
mbedtls_mpi_uint three_limbs[3];
|
||||||
|
mbedtls_mpi_uint *G = NULL, *I = NULL, *TG = NULL, *TI = NULL;
|
||||||
|
|
||||||
/* Large enough for all calls below */
|
/* We'll always use a two-limbs N */
|
||||||
TEST_CALLOC(G, 2);
|
TEST_CALLOC(G, 2);
|
||||||
TEST_CALLOC(I, 2);
|
TEST_CALLOC(I, 2);
|
||||||
TEST_CALLOC(T, 5 * 2);
|
TEST_CALLOC(TG, 4 * 2); // For I == NULL
|
||||||
|
TEST_CALLOC(TI, 5 * 2); // For I != NULL
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Input values
|
* Input values
|
||||||
@@ -1556,35 +1558,39 @@ void mpi_core_gcd_modinv_odd_preconditions()
|
|||||||
two_limbs[0] = 2; // N = 2^n + 2
|
two_limbs[0] = 2; // N = 2^n + 2
|
||||||
two_limbs[1] = 1;
|
two_limbs[1] = 1;
|
||||||
one_limb[0] = 42; // A = 42
|
one_limb[0] = 42; // A = 42
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, one_limb, 1, two_limbs, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, one_limb, 1, two_limbs, 2, TG);
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, one_limb, 1, two_limbs, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, one_limb, 1, two_limbs, 2, TI);
|
||||||
|
|
||||||
/* A > N */
|
/* A > N */
|
||||||
two_limbs[0] = 3; // N = 3
|
two_limbs[0] = 3; // N = 3
|
||||||
two_limbs[1] = 0;
|
two_limbs[1] = 0;
|
||||||
one_limb[0] = 42; // A = 42
|
one_limb[0] = 42; // A = 42
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, one_limb, 1, two_limbs, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, one_limb, 1, two_limbs, 2, TG);
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, one_limb, 1, two_limbs, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, one_limb, 1, two_limbs, 2, TI);
|
||||||
|
|
||||||
/* A_limbs > N_limbs (but A <= N) */
|
/* A_limbs > N_limbs (but A <= N) */
|
||||||
one_limb[0] = 5; // N = 5
|
two_limbs[0] = 3; // N = 3
|
||||||
two_limbs[0] = 3; // A = 3
|
|
||||||
two_limbs[1] = 0;
|
two_limbs[1] = 0;
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, two_limbs, 2, one_limb, 1, T);
|
three_limbs[0] = 1; // A = 1
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, one_limb, 1, T);
|
three_limbs[1] = 0;
|
||||||
|
three_limbs[2] = 0;
|
||||||
|
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, three_limbs, 3, two_limbs, 2, TG);
|
||||||
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, three_limbs, 3, two_limbs, 2, TI);
|
||||||
|
|
||||||
/* A_limbs > N_limbs (and A > N) */
|
/* A_limbs > N_limbs (and A > N) */
|
||||||
one_limb[0] = 5; // N = 5
|
two_limbs[0] = 3; // N = 3
|
||||||
two_limbs[0] = 7; // A = 7
|
|
||||||
two_limbs[1] = 0;
|
two_limbs[1] = 0;
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, two_limbs, 2, one_limb, 1, T);
|
three_limbs[0] = 0; // A = 2^2n
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, one_limb, 1, T);
|
three_limbs[1] = 0;
|
||||||
|
three_limbs[2] = 1;
|
||||||
|
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, three_limbs, 3, two_limbs, 2, TG);
|
||||||
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, three_limbs, 3, two_limbs, 2, TI);
|
||||||
|
|
||||||
/* I != NULL but N is 1 */
|
/* I != NULL but N is 1 */
|
||||||
two_limbs[0] = 1; // N = 1
|
two_limbs[0] = 1; // N = 1
|
||||||
two_limbs[1] = 0;
|
two_limbs[1] = 0;
|
||||||
one_limb[0] = 1; // A = 1
|
one_limb[0] = 1; // A = 1
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, one_limb, 1, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, one_limb, 1, TI);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Aliasing
|
* Aliasing
|
||||||
@@ -1596,30 +1602,31 @@ void mpi_core_gcd_modinv_odd_preconditions()
|
|||||||
one_limb[0] = 42; // A = 42
|
one_limb[0] = 42; // A = 42
|
||||||
|
|
||||||
/* A aliased to N */
|
/* A aliased to N */
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, two_limbs, 2, two_limbs, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, two_limbs, 2, two_limbs, 2, TG);
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, two_limbs, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, two_limbs, 2, TI);
|
||||||
|
|
||||||
/* G aliased to A and N */
|
/* G aliased to A and N */
|
||||||
memcpy(G, two_limbs, 2 * sizeof(mbedtls_mpi_uint));
|
memcpy(G, two_limbs, 2 * sizeof(mbedtls_mpi_uint));
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, G, 2, G, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, NULL, G, 2, G, 2, TG);
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, G, 2, G, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, G, 2, G, 2, TI);
|
||||||
|
|
||||||
/* I != NULL, G aliased to N */
|
/* I != NULL, G aliased to N */
|
||||||
memcpy(G, two_limbs, 2 * sizeof(mbedtls_mpi_uint));
|
memcpy(G, two_limbs, 2 * sizeof(mbedtls_mpi_uint));
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, G, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, G, 2, TI);
|
||||||
|
|
||||||
/* I != NULL, I aliased to N */
|
/* I != NULL, I aliased to N */
|
||||||
memcpy(I, two_limbs, 2 * sizeof(mbedtls_mpi_uint));
|
memcpy(I, two_limbs, 2 * sizeof(mbedtls_mpi_uint));
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, I, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, two_limbs, 2, I, 2, TI);
|
||||||
|
|
||||||
/* I aliased to A and N */
|
/* I aliased to A and N */
|
||||||
memcpy(I, two_limbs, 2 * sizeof(mbedtls_mpi_uint));
|
memcpy(I, two_limbs, 2 * sizeof(mbedtls_mpi_uint));
|
||||||
mbedtls_mpi_core_gcd_modinv_odd(G, I, I, 2, I, 2, T);
|
mbedtls_mpi_core_gcd_modinv_odd(G, I, I, 2, I, 2, TI);
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
mbedtls_free(G);
|
mbedtls_free(G);
|
||||||
mbedtls_free(I);
|
mbedtls_free(I);
|
||||||
mbedtls_free(T);
|
mbedtls_free(TG);
|
||||||
|
mbedtls_free(TI);
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user