diff --git a/scripts/mbedtls_dev/bignum_mod_raw.py b/scripts/mbedtls_dev/bignum_mod_raw.py
index c504581..800bcb1 100644
--- a/scripts/mbedtls_dev/bignum_mod_raw.py
+++ b/scripts/mbedtls_dev/bignum_mod_raw.py
@@ -108,23 +108,18 @@
 
 # BEGIN MERGE SLOT 6
 
-class BignumModRawCanonicalToModulusRep(bignum_common.ModOperationCommon,
-                                        BignumModRawTarget):
-    """Test cases for mpi_mod_raw_canonical_to_modulus_rep."""
-    test_function = "mpi_mod_raw_canonical_to_modulus_rep"
-    test_name = "Rep canon->mod"
+class BignumModRawConvertRep(bignum_common.ModOperationCommon,
+                             BignumModRawTarget):
+    # This is an abstract class, it's ok to have unimplemented methods.
+    #pylint: disable=abstract-method
+    """Test cases for representation conversion."""
     arity = 1
 
-    def __init__(self,
-                 val_n: str, val_a: str,
+    def __init__(self, val_n: str, val_a: str,
                  rep: bignum_common.ModulusRepresentation) -> None:
         super().__init__(val_n=val_n, val_a=val_a)
         self.rep = rep
 
-    def result(self) -> List[str]:
-        result = self.convert_from_canonical(self.int_a, self.rep)
-        return [self.format_result(result)]
-
     def arguments(self) -> List[str]:
         return ([bignum_common.quote_str(self.arg_n), self.rep.symbol(),
                  bignum_common.quote_str(self.arg_a)] +
@@ -141,6 +136,28 @@
                     if test_object.is_valid:
                         yield test_object.create_test_case()
 
+class BignumModRawCanonicalToModulusRep(BignumModRawConvertRep):
+    """Test cases for mpi_mod_raw_canonical_to_modulus_rep."""
+    test_function = "mpi_mod_raw_canonical_to_modulus_rep"
+    test_name = "Rep canon->mod"
+
+    def result(self) -> List[str]:
+        result = self.convert_from_canonical(self.int_a, self.rep)
+        return [self.format_result(result)]
+
+class BignumModRawModulusToCanonicalRep(BignumModRawConvertRep):
+    """Test cases for mpi_mod_raw_modulus_to_canonical_rep."""
+    test_function = "mpi_mod_raw_modulus_to_canonical_rep"
+    test_name = "Rep mod->canon"
+
+    @property
+    def arg_a(self) -> str:
+        converted_a = self.convert_from_canonical(self.int_a, self.rep)
+        return self.format_arg(hex(converted_a)[2:])
+
+    def result(self) -> List[str]:
+        return [self.format_result(self.int_a)]
+
 # END MERGE SLOT 6
 
 # BEGIN MERGE SLOT 7
