diff --git a/tests/suites/test_suite_mpi.data b/tests/suites/test_suite_mpi.data
index 7868a24..754652b 100644
--- a/tests/suites/test_suite_mpi.data
+++ b/tests/suites/test_suite_mpi.data
@@ -681,23 +681,62 @@
 mbedtls_mpi_core_lt_ct: x>y (alternating limbs)
 mpi_core_lt_ct:"FF1111111111111111":"11FFFFFFFFFFFFFFFF":0
 
-mbedtls_mpi_core_cond_assign
-mpi_core_cond_assign:"FFFFFFFF":"11111111"
+mbedtls_mpi_core_cond_assign: 1 limb
+mpi_core_cond_assign:"FFFFFFFF":"11111111":4:0
+
+mbedtls_mpi_core_cond_assign: more limbs
+mpi_core_cond_assign:"00000000FFFFFFFF55555555AAAAAAAA":"0123456789ABCDEF0123456789ABCDEF":16:0
+
+mbedtls_mpi_core_cond_assign: copy 256 bytes of limbs
+mpi_core_cond_assign:"00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF":"6E3173EEAC8D68A5AB53D259F32D9E9C298FD2C4FAD3BEE9151DC103EA2382F5480C7D11F451C060A1E3D887E05A620EF6395763CB7A40FC473DD0771456A018E18635EA971C36DCAD09D60E8BD0E2E0CCD1AECB8BE0ABA881DBE60163F6C45947EC0B05FDAAA3DF944627DD4FACBAD3FF2AB4B99D91E548C06A4AF320A9CA0D2FD0CB19B90B9D6A8BF59CB631DD925B6DEA621FE962099D3D0BED6B13C0C546DC6B563A7FC63B1B77D277897DD7B9DF28C4C9213A183B83D982964C6AD8192CE7354B11ED727EDEF85074C46E4E2E6C1728FB7980385CDB36512F927847C6A14A118624ABC12B09DBEE60D651B5431AAD982228C61655EABB80C263871AE1CF":256:0
+
+mbedtls_mpi_core_cond_assign: copy half of the limbs
+mpi_core_cond_assign:"00000000FFFFFFFF55555555AAAAAAAA":"FEDCBA9876543210FEDCBA9876543210":8:1
 
 mbedtls_mpi_core_cond_swap: same value
-mpi_core_cond_swap:"FFFFFFFF":"FFFFFFFF"
+mpi_core_cond_swap:"FFFFFFFF":"FFFFFFFF":4:0
 
-mbedtls_mpi_core_cond_swap: different value
-mpi_core_cond_swap:"FFFFFFFF":"11111111"
+mbedtls_mpi_core_cond_swap: 1 limb
+mpi_core_cond_swap:"FFFFFFFF":"11111111":4:0
 
-mbedtls_mpi_mod_raw_cond_assign
-mpi_mod_raw_cond_assign:"FFFFFFFF":"11111111"
+mbedtls_mpi_core_cond_swap: more limbs
+mpi_core_cond_swap:"00000000FFFFFFFF55555555AAAAAAAA":"0123456789ABCDEF0123456789ABCDEF":16:0
+
+mbedtls_mpi_core_cond_swap: copy 256 bytes of limbs
+mpi_core_cond_swap:"00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF":"9FBBA284460D8EAB5E0D66B634BD18FBA58C0C25417DD637526A7622C6425B46E09AEFBB8C2340AC823DFE990A62C85DB23BCDBEA734134606CEEB4BCF7444569D5EC4E32341ED09D7A5D0BB8B11D7B726BAECCF37D4FC1BEBD892CADD7BE9E093343C1A68D7A188DFE145C1EDBD8048B24E20A076F981D75ABE44318ADC40ED316C444774B6A90D3EE49557315AA6FAB162A498C0B2E2C15BD94186A665E12DDC39211583FA5F21218A3B46999FEBA4DFF454FB6ED35B8F3AE5F8EA840838BD76006DA112F85EDAA2CC07518FFC9724D5695BAF74F16C8D1A3A06029D2F5C1023D9E8A84D1267BD9AF82D1F5F77092D34BE4E8C4D1EA8C58F90B094DCFD6920":256:0
+
+mbedtls_mpi_core_cond_swap: copy half of the limbs
+mpi_core_cond_swap:"00000000FFFFFFFF55555555AAAAAAAA":"FEDCBA9876543210FEDCBA9876543210":8:1
+
+mbedtls_mpi_mod_raw_cond_assign: 1 limb
+mpi_mod_raw_cond_assign:"FFFFFFFF":"11111111":4:0
+
+mbedtls_mpi_mod_raw_cond_assign: more limbs
+mpi_mod_raw_cond_assign:"00000000FFFFFFFF55555555AAAAAAAA":"0123456789ABCDEF0123456789ABCDEF":16:0
+
+mbedtls_mpi_mod_raw_cond_assign: copy 256 bytes of limbs
+mpi_mod_raw_cond_assign:"00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF":"38AAE958A11CCE9F4B4D0EDF64D31DF6FEA451D56B3BAB3DB796739B96C5C9C619DAE2AD5394D41FC3746A4F35BA186F02D908E900A2BA5AC95D494378A6A6FC619801DA3F3B4C5BAAA49B16DD3B2EF9AFB4B82449F90628E1438405D321ACA8476EA3E7124D46D5F25CD57143F2C6A022F7D6EBF7C726AEF56D97E3944EACD627A814D2F546F5A659DD316AE57584BC46F0D976D537E78AB09D2599BB0F073366C541CEF4B6D76FE72D000A01167FCE506B805B295C12BFCAA3B768D8E6AA50D939BDB519A94000B7B18B2D36AE888EDC33DC933E9612D112BB7A95D0748F175E69F00B9D8470C64E27B4FF39551B09FF046F864E9FC22A3E1F73570DF31214":256:0
+
+mbedtls_mpi_mod_raw_cond_assign: copy half of the limbs
+mpi_mod_raw_cond_assign:"00000000FFFFFFFF55555555AAAAAAAA":"FEDCBA9876543210FEDCBA9876543210":8:1
 
 mbedtls_mpi_mod_raw_cond_swap: same value
-mpi_mod_raw_cond_swap:"FFFFFFFF":"FFFFFFFF"
+mpi_mod_raw_cond_swap:"FFFFFFFF":"FFFFFFFF":4:0
 
-mbedtls_mpi_mod_raw_cond_swap: different value
-mpi_mod_raw_cond_swap:"FFFFFFFF":"11111111"
+mbedtls_mpi_mod_raw_cond_swap: same value
+mpi_mod_raw_cond_swap:"FFFFFFFF":"FFFFFFFF":4:0
+
+mbedtls_mpi_mod_raw_cond_swap: 1 limb
+mpi_mod_raw_cond_swap:"FFFFFFFF":"11111111":4:0
+
+mbedtls_mpi_mod_raw_cond_swap: more limbs
+mpi_mod_raw_cond_swap:"00000000FFFFFFFF55555555AAAAAAAA":"0123456789ABCDEF0123456789ABCDEF":16:0
+
+mbedtls_mpi_mod_raw_cond_swap: copy 256 bytes of limbs
+mpi_mod_raw_cond_swap:"00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF00000000111111112222222233333333444444445555555566666666777777778888888899999999AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF":"A6154F6146E5AE06C705EF228DB022B4C0C908D9FF11E83CB0836A37DD11D72B5AE0D053B6D0B376B015E3B09DCC04644F12CBCBD0407300DEDA1D817E99A030BA128A57494F6C6BC650A840B70B3A1CDF8A75A387184C93DEF02DD538C60E8764AD2E4600952E09D24DC5524AB34070D25D204174D23B2BFDACBC67F8973C47FAF01CE9810130934AB6A94C5E6D223EDEAE904FD18368231AC3113C2CD73E879124CE21FC379C695C41D6861F5FB957570C3E6EF61F4FBA5D9945FB42931FC8E68370177DB313BEB7AF79B1F0F872368946FF35BD059E60677342EB3A0431714044AD508CD244B7CE200C5DC75B3BC7846A4CF0436C9288F2153124C9283171":256:0
+
+mbedtls_mpi_mod_raw_cond_swap: copy half of the limbs
+mpi_mod_raw_cond_swap:"00000000FFFFFFFF55555555AAAAAAAA":"FEDCBA9876543210FEDCBA9876543210":8:1
 
 Base test mbedtls_mpi_lt_mpi_ct #1
 mpi_lt_mpi_ct:1:"2B5":1:"2B5":0:0
diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function
index a74136b..1e579e9 100644
--- a/tests/suites/test_suite_mpi.function
+++ b/tests/suites/test_suite_mpi.function
@@ -765,16 +765,20 @@
 
 /* BEGIN_CASE */
 void mpi_core_cond_assign( data_t * input_X,
-                           data_t * input_Y )
+                           data_t * input_Y,
+                           int input_len,
+                           int is_fail )
 {
     mbedtls_mpi_uint *X = NULL;
     mbedtls_mpi_uint *Y = NULL;
     size_t limbs_X = CHARS_TO_LIMBS( input_X->len );
     size_t limbs_Y = CHARS_TO_LIMBS( input_Y->len );
     size_t limbs = limbs_X;
+    size_t copy_limbs = CHARS_TO_LIMBS( input_len );
     size_t len = limbs * sizeof( mbedtls_mpi_uint );
 
     TEST_ASSERT( limbs_X == limbs_Y );
+    TEST_ASSERT( copy_limbs <= limbs );
 
     ASSERT_ALLOC( X, len );
     ASSERT_ALLOC( Y, len );
@@ -789,7 +793,7 @@
     TEST_CF_SECRET( X, len );
     TEST_CF_SECRET( Y, len );
 
-    mbedtls_mpi_core_cond_assign( X, Y, limbs, 0 );
+    mbedtls_mpi_core_cond_assign( X, Y, copy_limbs, 0 );
 
     TEST_CF_PUBLIC( X, len );
     TEST_CF_PUBLIC( Y, len );
@@ -800,12 +804,15 @@
     TEST_CF_SECRET( X, len );
     TEST_CF_SECRET( Y, len );
 
-    mbedtls_mpi_core_cond_assign( X, Y, limbs, 1 );
+    mbedtls_mpi_core_cond_assign( X, Y, copy_limbs, 1 );
 
     TEST_CF_PUBLIC( X, len );
     TEST_CF_PUBLIC( Y, len );
 
-    ASSERT_COMPARE( X, len, Y, len );
+    if( is_fail )
+        TEST_ASSERT( memcmp( X, Y, len ) != 0 );
+    else
+        ASSERT_COMPARE( X, len, Y, len );
 
 exit:
     mbedtls_free( X );
@@ -815,7 +822,9 @@
 
 /* BEGIN_CASE */
 void mpi_core_cond_swap( data_t * input_X,
-                         data_t * input_Y )
+                         data_t * input_Y,
+                         int input_len,
+                         int is_fail )
 {
     mbedtls_mpi_uint *tmp_X = NULL;
     mbedtls_mpi_uint *tmp_Y = NULL;
@@ -824,9 +833,11 @@
     size_t limbs_X = CHARS_TO_LIMBS( input_X->len );
     size_t limbs_Y = CHARS_TO_LIMBS( input_Y->len );
     size_t limbs = limbs_X;
+    size_t copy_limbs = CHARS_TO_LIMBS( input_len );
     size_t len = limbs * sizeof( mbedtls_mpi_uint );
 
     TEST_ASSERT( limbs_X == limbs_Y );
+    TEST_ASSERT( copy_limbs <= limbs );
 
     ASSERT_ALLOC( tmp_X, len );
     ASSERT_ALLOC( tmp_Y, len );
@@ -847,7 +858,7 @@
     TEST_CF_SECRET( X, len );
     TEST_CF_SECRET( Y, len );
 
-    mbedtls_mpi_core_cond_swap( X, Y, limbs, 0 );
+    mbedtls_mpi_core_cond_swap( X, Y, copy_limbs, 0 );
 
     TEST_CF_PUBLIC( X, len );
     TEST_CF_PUBLIC( Y, len );
@@ -859,13 +870,23 @@
     TEST_CF_SECRET( X, len );
     TEST_CF_SECRET( Y, len );
 
-    mbedtls_mpi_core_cond_swap( X, Y, limbs, 1 );
+    mbedtls_mpi_core_cond_swap( X, Y, copy_limbs, 1 );
 
     TEST_CF_PUBLIC( X, len );
     TEST_CF_PUBLIC( Y, len );
 
-    ASSERT_COMPARE( X, len, tmp_Y, len );
-    ASSERT_COMPARE( Y, len, tmp_X, len );
+    if( is_fail )
+    {
+        TEST_ASSERT( memcmp( X, tmp_X, len ) != 0 );
+        TEST_ASSERT( memcmp( X, tmp_Y, len ) != 0 );
+        TEST_ASSERT( memcmp( Y, tmp_X, len ) != 0 );
+        TEST_ASSERT( memcmp( Y, tmp_Y, len ) != 0 );
+    }
+    else
+    {
+        ASSERT_COMPARE( X, len, tmp_Y, len );
+        ASSERT_COMPARE( Y, len, tmp_X, len );
+    }
 
 exit:
     mbedtls_free( tmp_X );
@@ -877,7 +898,9 @@
 
 /* BEGIN_CASE */
 void mpi_mod_raw_cond_assign( data_t * input_X,
-                              data_t * input_Y )
+                              data_t * input_Y,
+                              int input_len,
+                              int is_fail )
 {
     #define MAX_LEN 64
     mbedtls_mpi_uint *X = NULL;
@@ -887,9 +910,11 @@
     size_t limbs_X = CHARS_TO_LIMBS( input_X->len );
     size_t limbs_Y = CHARS_TO_LIMBS( input_Y->len );
     size_t limbs = limbs_X;
+    size_t copy_limbs = CHARS_TO_LIMBS( input_len );
     size_t len = limbs * sizeof( mbedtls_mpi_uint );
 
     TEST_ASSERT( limbs_X == limbs_Y );
+    TEST_ASSERT( copy_limbs <= limbs );
 
     ASSERT_ALLOC( X, len );
     ASSERT_ALLOC( Y, len );
@@ -898,7 +923,7 @@
     memset( buff_m, 0, len );
     mbedtls_mpi_mod_modulus_init( &m );
     TEST_ASSERT( mbedtls_mpi_mod_modulus_setup(
-                        &m, buff_m, limbs,
+                        &m, buff_m, copy_limbs,
                         MBEDTLS_MPI_MOD_EXT_REP_BE,
                         MBEDTLS_MPI_MOD_REP_MONTGOMERY )
                  == 0 );
@@ -920,7 +945,7 @@
     TEST_CF_PUBLIC( X, len );
     TEST_CF_PUBLIC( Y, len );
 
-    TEST_ASSERT( memcmp( X, Y, m.limbs * sizeof( mbedtls_mpi_uint ) ) != 0 );
+    TEST_ASSERT( memcmp( X, Y, len ) != 0 );
 
     /* condition is true */
     TEST_CF_SECRET( X, len );
@@ -931,7 +956,10 @@
     TEST_CF_PUBLIC( X, len );
     TEST_CF_PUBLIC( Y, len );
 
-    ASSERT_COMPARE( X, len, Y, len );
+    if( is_fail )
+        TEST_ASSERT( memcmp( X, Y, len ) != 0 );
+    else
+        ASSERT_COMPARE( X, len, Y, len );
 
 exit:
     mbedtls_free( X );
@@ -944,7 +972,9 @@
 
 /* BEGIN_CASE */
 void mpi_mod_raw_cond_swap( data_t * input_X,
-                            data_t * input_Y )
+                            data_t * input_Y,
+                            int input_len,
+                            int is_fail )
 {
     mbedtls_mpi_uint *tmp_X = NULL;
     mbedtls_mpi_uint *tmp_Y = NULL;
@@ -955,18 +985,20 @@
     size_t limbs_X = CHARS_TO_LIMBS( input_X->len );
     size_t limbs_Y = CHARS_TO_LIMBS( input_Y->len );
     size_t limbs = limbs_X;
+    size_t copy_limbs = CHARS_TO_LIMBS( input_len );
     size_t len = limbs * sizeof( mbedtls_mpi_uint );
 
     TEST_ASSERT( limbs_X == limbs_Y );
+    TEST_ASSERT( copy_limbs <= limbs );
 
     ASSERT_ALLOC( tmp_X, len );
     ASSERT_ALLOC( tmp_Y, len );
 
-    ASSERT_ALLOC( buff_m, len );
-    memset( buff_m, 0, len );
+    ASSERT_ALLOC( buff_m, input_len );
+    memset( buff_m, 0, input_len );
     mbedtls_mpi_mod_modulus_init( &m );
     TEST_ASSERT( mbedtls_mpi_mod_modulus_setup(
-                        &m, buff_m, limbs,
+                        &m, buff_m, copy_limbs,
                         MBEDTLS_MPI_MOD_EXT_REP_BE,
                         MBEDTLS_MPI_MOD_REP_MONTGOMERY )
                  == 0 );
@@ -1002,8 +1034,18 @@
     TEST_CF_PUBLIC( X, len );
     TEST_CF_PUBLIC( Y, len );
 
-    ASSERT_COMPARE( X, len, tmp_Y, len );
-    ASSERT_COMPARE( Y, len, tmp_X, len );
+    if( is_fail )
+    {
+        TEST_ASSERT( memcmp( X, tmp_X, len ) != 0 );
+        TEST_ASSERT( memcmp( X, tmp_Y, len ) != 0 );
+        TEST_ASSERT( memcmp( Y, tmp_X, len ) != 0 );
+        TEST_ASSERT( memcmp( Y, tmp_Y, len ) != 0 );
+    }
+    else
+    {
+        ASSERT_COMPARE( X, len, tmp_Y, len );
+        ASSERT_COMPARE( Y, len, tmp_X, len );
+    }
 
 exit:
     mbedtls_free( tmp_X );
