diff --git a/include/mbedtls/mbedtls_config.h b/include/mbedtls/mbedtls_config.h
index bb6708e..ed85e3f 100644
--- a/include/mbedtls/mbedtls_config.h
+++ b/include/mbedtls/mbedtls_config.h
@@ -2012,6 +2012,7 @@
  * Module:  library/bignum.c
  *          library/bignum_new.c
  *          library/bignum_core.c
+ *          library/bignum_mod_raw.c
  * Caller:  library/dhm.c
  *          library/ecp.c
  *          library/ecdsa.c
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index bef0dbf..2920c55 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -20,6 +20,7 @@
     bignum.c
     bignum_new.c
     bignum_core.c
+    bignum_mod_raw.c
     camellia.c
     ccm.c
     chacha20.c
diff --git a/library/Makefile b/library/Makefile
index a1c4bb9..6210878 100644
--- a/library/Makefile
+++ b/library/Makefile
@@ -85,6 +85,7 @@
 	     bignum.o \
 	     bignum_new.o \
 	     bignum_core.o \
+	     bignum_mod_raw.o \
 	     camellia.o \
 	     ccm.o \
 	     chacha20.o \
diff --git a/library/bignum_mod_raw.c b/library/bignum_mod_raw.c
new file mode 100644
index 0000000..305cec1
--- /dev/null
+++ b/library/bignum_mod_raw.c
@@ -0,0 +1,90 @@
+/*
+ *  Multi-precision integer library
+ *
+ *  Copyright The Mbed TLS Contributors
+ *  SPDX-License-Identifier: Apache-2.0
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *  not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+#include "common.h"
+
+#if defined(MBEDTLS_BIGNUM_C)
+
+#include <string.h>
+
+#include "mbedtls/error.h"
+#include "mbedtls/platform_util.h"
+
+#if defined(MBEDTLS_PLATFORM_C)
+#include "mbedtls/platform.h"
+#else
+#include <stdio.h>
+#include <stdlib.h>
+#define mbedtls_printf      printf
+#define mbedtls_calloc      calloc
+#define mbedtls_free        free
+#endif
+
+#include "bignum_core.h"
+#include "bignum_mod_raw.h"
+#include "bignum_mod.h"
+#include "constant_time_internal.h"
+
+int mbedtls_mpi_mod_raw_read( mbedtls_mpi_uint *X,
+                              mbedtls_mpi_mod_modulus *m,
+                              unsigned char *buf,
+                              size_t buflen )
+{
+    int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
+
+    if( m->ext_rep == MBEDTLS_MPI_MOD_EXT_REP_LE )
+        ret = mbedtls_mpi_core_read_le( X, m->n, buf, buflen );
+
+    else if( m->ext_rep == MBEDTLS_MPI_MOD_EXT_REP_BE )
+        ret = mbedtls_mpi_core_read_be( X, m->n, buf, buflen );
+    else
+        return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA );
+
+    if( ret != 0 )
+        goto cleanup;
+
+    if( !mbedtls_mpi_core_lt_ct( X, m->p, m->n ) )
+    {
+        ret = MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
+        goto cleanup;
+    }
+
+cleanup:
+
+    return( ret );
+}
+
+int mbedtls_mpi_mod_raw_write( mbedtls_mpi_uint *X,
+                               mbedtls_mpi_mod_modulus *m,
+                               unsigned char *buf,
+                               size_t buflen )
+{
+    if( m->ext_rep == MBEDTLS_MPI_MOD_EXT_REP_LE )
+        return mbedtls_mpi_core_write_le( X, m->n, buf, buflen );
+
+    else if( m->ext_rep == MBEDTLS_MPI_MOD_EXT_REP_BE )
+        return mbedtls_mpi_core_write_be( X, m->n, buf, buflen );
+
+    else
+        return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA );
+
+    return( 0 );
+}
+
+#endif /* MBEDTLS_BIGNUM_C */
diff --git a/library/bignum_mod_raw.h b/library/bignum_mod_raw.h
index 85ca533..a6c535b 100644
--- a/library/bignum_mod_raw.h
+++ b/library/bignum_mod_raw.h
@@ -26,6 +26,8 @@
 #include "mbedtls/bignum.h"
 #endif
 
+#include "bignum_mod.h"
+
 /** Import X from unsigned binary data.
  *
  * The MPI needs to have enough limbs to store the full value (in particular,
diff --git a/library/bignum_new.c b/library/bignum_new.c
index 8b23f13..5ff55aa 100644
--- a/library/bignum_new.c
+++ b/library/bignum_new.c
@@ -149,50 +149,4 @@
     return( ret );
 }
 
-int mbedtls_mpi_mod_raw_read( mbedtls_mpi_uint *X,
-                              mbedtls_mpi_mod_modulus *m,
-                              unsigned char *buf,
-                              size_t buflen )
-{
-    int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
-
-    if( m->ext_rep == MBEDTLS_MPI_MOD_EXT_REP_LE )
-        ret = mbedtls_mpi_core_read_le( X, m->n, buf, buflen );
-
-    else if( m->ext_rep == MBEDTLS_MPI_MOD_EXT_REP_BE )
-        ret = mbedtls_mpi_core_read_be( X, m->n, buf, buflen );
-    else
-        return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA );
-
-    if( ret != 0 )
-        goto cleanup;
-
-    if( !mbedtls_mpi_core_lt_ct( X, m->p, m->n ) )
-    {
-        ret = MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
-        goto cleanup;
-    }
-
-cleanup:
-
-    return( ret );
-}
-
-int mbedtls_mpi_mod_raw_write( mbedtls_mpi_uint *X,
-                               mbedtls_mpi_mod_modulus *m,
-                               unsigned char *buf,
-                               size_t buflen )
-{
-    if( m->ext_rep == MBEDTLS_MPI_MOD_EXT_REP_LE )
-        return mbedtls_mpi_core_write_le( X, m->n, buf, buflen );
-
-    else if( m->ext_rep == MBEDTLS_MPI_MOD_EXT_REP_BE )
-        return mbedtls_mpi_core_write_be( X, m->n, buf, buflen );
-
-    else
-        return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA );
-
-    return( 0 );
-}
-
 #endif /* MBEDTLS_BIGNUM_C */
