Skip to content

Commit 7428b45

Browse files
Better coverage for copy and swap
Cover more cases: different signs, different zeronesses, repeated argument.
1 parent 72d7609 commit 7428b45

File tree

2 files changed

+148
-22
lines changed

2 files changed

+148
-22
lines changed

tests/suites/test_suite_mpi.data

Lines changed: 72 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,13 +206,82 @@ Base test mbedtls_mpi_cmp_abs (Mix values) #3
206206
mbedtls_mpi_cmp_abs:10:"-2":10:"1":1
207207

208208
Copy zero (1 limb) to positive (1 limb)
209-
mbedtls_mpi_copy:0:1500
209+
mbedtls_mpi_copy_sint:0:1500
210+
211+
Copy zero (1 limb) to negative (1 limb)
212+
mbedtls_mpi_copy_sint:0:-1500
213+
214+
Copy positive (1 limb) to zero (1 limb)
215+
mbedtls_mpi_copy_sint:1500:0
216+
217+
Copy negative (1 limb) to zero (1 limb)
218+
mbedtls_mpi_copy_sint:-1500:0
219+
220+
Copy positive (1 limb) to negative (1 limb)
221+
mbedtls_mpi_copy_sint:1500:-42
222+
223+
Copy negative (1 limb) to positive (1 limb)
224+
mbedtls_mpi_copy_sint:-42:1500
225+
226+
Copy zero (null) to zero (null)
227+
mbedtls_mpi_copy_binary:"":""
228+
229+
Copy zero (null) to positive (1 limb)
230+
mbedtls_mpi_copy_binary:"":"1234"
231+
232+
Copy positive (1 limb) to zero (null)
233+
mbedtls_mpi_copy_binary:"1234":""
234+
235+
Copy positive to larger
236+
mbedtls_mpi_copy_binary:"bead":"ca5cadedb01dfaceacc01ade"
237+
238+
Copy positive to smaller
239+
mbedtls_mpi_copy_binary:"ca5cadedb01dfaceacc01ade":"bead"
210240

211241
Copy self: positive (1 limb)
212242
mpi_copy_self:14
213243

214-
Swap 0 with positive (1 limb)
215-
mbedtls_mpi_swap:0:1500
244+
Copy self: zero (1 limb)
245+
mpi_copy_self:0
246+
247+
Swap zero (1 limb) with positive (1 limb)
248+
mbedtls_mpi_swap_sint:0:1500
249+
250+
Swap zero (1 limb) with negative (1 limb)
251+
mbedtls_mpi_swap_sint:0:-1500
252+
253+
Swap positive (1 limb) with zero (1 limb)
254+
mbedtls_mpi_swap_sint:1500:0
255+
256+
Swap negative (1 limb) with zero (1 limb)
257+
mbedtls_mpi_swap_sint:-1500:0
258+
259+
Swap positive (1 limb) with negative (1 limb)
260+
mbedtls_mpi_swap_sint:1500:-42
261+
262+
Swap negative (1 limb) with positive (1 limb)
263+
mbedtls_mpi_swap_sint:-42:1500
264+
265+
Swap zero (null) with zero (null)
266+
mbedtls_mpi_swap_binary:"":""
267+
268+
Swap zero (null) with positive (1 limb)
269+
mbedtls_mpi_swap_binary:"":"1234"
270+
271+
Swap positive (1 limb) with zero (null)
272+
mbedtls_mpi_swap_binary:"1234":""
273+
274+
Swap positive with larger
275+
mbedtls_mpi_swap_binary:"bead":"ca5cadedb01dfaceacc01ade"
276+
277+
Swap positive with smaller
278+
mbedtls_mpi_swap_binary:"ca5cadedb01dfaceacc01ade":"bead"
279+
280+
Swap self: 1 limb
281+
mpi_swap_self:"face"
282+
283+
Swap self: null
284+
mpi_swap_self:""
216285

217286
Shrink 2 in 2 to 4
218287
mbedtls_mpi_shrink:2:2:4:4

tests/suites/test_suite_mpi.function

Lines changed: 76 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -604,22 +604,40 @@ exit:
604604
/* END_CASE */
605605

606606
/* BEGIN_CASE */
607-
void mbedtls_mpi_copy( int input_X, int input_A )
607+
void mbedtls_mpi_copy_sint( int input_X, int input_Y )
608608
{
609-
mbedtls_mpi X, Y, A;
610-
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &A );
609+
mbedtls_mpi X, Y;
610+
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y );
611611

612612
TEST_ASSERT( mbedtls_mpi_lset( &X, input_X ) == 0 );
613-
TEST_ASSERT( mbedtls_mpi_lset( &Y, input_A ) == 0 );
614-
TEST_ASSERT( mbedtls_mpi_lset( &A, input_A ) == 0 );
615-
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &X, &Y ) != 0 );
616-
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &Y, &A ) == 0 );
613+
TEST_ASSERT( mbedtls_mpi_lset( &Y, input_Y ) == 0 );
614+
617615
TEST_ASSERT( mbedtls_mpi_copy( &Y, &X ) == 0 );
618-
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &X, &Y ) == 0 );
619-
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &Y, &A ) != 0 );
616+
TEST_ASSERT( mbedtls_mpi_cmp_int( &X, input_X ) == 0 );
617+
TEST_ASSERT( mbedtls_mpi_cmp_int( &Y, input_X ) == 0 );
620618

621619
exit:
622-
mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y ); mbedtls_mpi_free( &A );
620+
mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y );
621+
}
622+
/* END_CASE */
623+
624+
/* BEGIN_CASE */
625+
void mbedtls_mpi_copy_binary( data_t *input_X, data_t *input_Y )
626+
{
627+
mbedtls_mpi X, Y, X0;
628+
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &X0 );
629+
630+
TEST_ASSERT( mbedtls_mpi_read_binary_le( &X, input_X->x, input_X->len ) == 0 );
631+
TEST_ASSERT( mbedtls_mpi_read_binary_le( &Y, input_Y->x, input_Y->len ) == 0 );
632+
TEST_ASSERT( mbedtls_mpi_read_binary_le( &X0, input_X->x, input_X->len ) == 0 );
633+
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &X, &X0 ) == 0 );
634+
635+
TEST_ASSERT( mbedtls_mpi_copy( &Y, &X ) == 0 );
636+
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &X, &X0 ) == 0 );
637+
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &Y, &X0 ) == 0 );
638+
639+
exit:
640+
mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y ); mbedtls_mpi_free( &X0 );
623641
}
624642
/* END_CASE */
625643

@@ -711,22 +729,61 @@ exit:
711729
/* END_CASE */
712730

713731
/* BEGIN_CASE */
714-
void mbedtls_mpi_swap( int input_X, int input_Y )
732+
void mbedtls_mpi_swap_sint( int input_X, int input_Y )
715733
{
716-
mbedtls_mpi X, Y, A;
717-
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &A );
734+
mbedtls_mpi X, Y;
735+
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y );
718736

719737
TEST_ASSERT( mbedtls_mpi_lset( &X, input_X ) == 0 );
720738
TEST_ASSERT( mbedtls_mpi_lset( &Y, input_Y ) == 0 );
721-
TEST_ASSERT( mbedtls_mpi_lset( &A, input_X ) == 0 );
722-
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &X, &Y ) != 0 );
723-
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &X, &A ) == 0 );
739+
TEST_ASSERT( mbedtls_mpi_cmp_int( &X, input_X ) == 0 );
740+
TEST_ASSERT( mbedtls_mpi_cmp_int( &Y, input_Y ) == 0 );
741+
724742
mbedtls_mpi_swap( &X, &Y );
725-
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &X, &Y ) != 0 );
726-
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &Y, &A ) == 0 );
743+
TEST_ASSERT( mbedtls_mpi_cmp_int( &X, input_Y ) == 0 );
744+
TEST_ASSERT( mbedtls_mpi_cmp_int( &Y, input_X ) == 0 );
727745

728746
exit:
729-
mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y ); mbedtls_mpi_free( &A );
747+
mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y );
748+
}
749+
/* END_CASE */
750+
751+
/* BEGIN_CASE */
752+
void mbedtls_mpi_swap_binary( data_t *input_X, data_t *input_Y )
753+
{
754+
mbedtls_mpi X, Y, X0, Y0;
755+
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y );
756+
mbedtls_mpi_init( &X0 ); mbedtls_mpi_init( &Y0 );
757+
758+
TEST_ASSERT( mbedtls_mpi_read_binary_le( &X, input_X->x, input_X->len ) == 0 );
759+
TEST_ASSERT( mbedtls_mpi_read_binary_le( &Y, input_Y->x, input_Y->len ) == 0 );
760+
TEST_ASSERT( mbedtls_mpi_read_binary_le( &X0, input_X->x, input_X->len ) == 0 );
761+
TEST_ASSERT( mbedtls_mpi_read_binary_le( &Y0, input_Y->x, input_Y->len ) == 0 );
762+
763+
mbedtls_mpi_swap( &X, &Y );
764+
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &X, &Y0 ) == 0 );
765+
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &Y, &X0 ) == 0 );
766+
767+
exit:
768+
mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y );
769+
mbedtls_mpi_free( &X0 ); mbedtls_mpi_free( &Y0 );
770+
}
771+
/* END_CASE */
772+
773+
/* BEGIN_CASE */
774+
void mpi_swap_self( data_t *input_X )
775+
{
776+
mbedtls_mpi X, X0;
777+
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &X0 );
778+
779+
TEST_ASSERT( mbedtls_mpi_read_binary_le( &X, input_X->x, input_X->len ) == 0 );
780+
TEST_ASSERT( mbedtls_mpi_read_binary_le( &X0, input_X->x, input_X->len ) == 0 );
781+
782+
mbedtls_mpi_swap( &X, &X );
783+
TEST_ASSERT( mbedtls_mpi_cmp_mpi( &X, &X0 ) == 0 );
784+
785+
exit:
786+
mbedtls_mpi_free( &X ); mbedtls_mpi_free( &X0 );
730787
}
731788
/* END_CASE */
732789

0 commit comments

Comments
 (0)