diff --git a/library/bignum_mod.h b/library/bignum_mod.h
index 378c58d..62ecf2b 100644
--- a/library/bignum_mod.h
+++ b/library/bignum_mod.h
@@ -49,6 +49,16 @@
     } rep;
 } mbedtls_mpi_mod_modulus;
 
+typedef enum
+{
+    MBEDTLS_MPI_MOD_REP_INVALID    = 0,
+    MBEDTLS_MPI_MOD_REP_MONTGOMERY,
+    MBEDTLS_MPI_MOD_REP_OPT_RED
+} mbedtls_mpi_mod_rep_selector;
+
+#define MBEDTLS_MI_MOD_EXT_REP_LE   0x1
+#define MBEDTLS_MI_MOD_EXT_REP_BE   0x2
+
 void mbedtls_mpi_mod_residue_release( mbedtls_mpi_mod_residue *r );
 
 int mbedtls_mpi_mod_residue_setup( mbedtls_mpi_mod_residue *r,
diff --git a/library/bignum_mod_raw.h b/library/bignum_mod_raw.h
new file mode 100644
index 0000000..8a202ba
--- /dev/null
+++ b/library/bignum_mod_raw.h
@@ -0,0 +1,39 @@
+/**
+ *  Internal bignum functions
+ *
+ *  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.
+ */
+
+#ifndef MBEDTLS_BIGNUM_CORE_H
+#define MBEDTLS_BIGNUM_CORE_H
+
+#include "common.h"
+
+#if defined(MBEDTLS_BIGNUM_C)
+#include "mbedtls/bignum.h"
+#endif
+
+int mbedtls_mpi_mod_raw_read( mbedtls_mpi_uint *X,
+                              mbedtls_mpi_mod_modulus *m,
+                              unsigned char *buf,
+                              size_t buflen );
+
+int mbedtls_mpi_mod_raw_write( mbedtls_mpi_uint *X,
+                               mbedtls_mpi_mod_modulus *m,
+                               unsigned char *buf,
+                               size_t buflen );
+
+#endif /* MBEDTLS_BIGNUM_CORE_H */
diff --git a/library/bignum_new.c b/library/bignum_new.c
index 977b5d7..976301d 100644
--- a/library/bignum_new.c
+++ b/library/bignum_new.c
@@ -28,6 +28,7 @@
 #include "mbedtls/bignum.h"
 #include "bignum_core.h"
 #include "bignum_mod.h"
+#include "bignum_mod_raw.h"
 
 #define MPI_VALIDATE_RET( cond )                                       \
     MBEDTLS_INTERNAL_VALIDATE_RET( cond, MBEDTLS_ERR_MPI_BAD_INPUT_DATA )
@@ -407,4 +408,38 @@
     return( 0 );
 }
 
+int mbedtls_mpi_mod_raw_read( mbedtls_mpi_uint *X,
+                              mbedtls_mpi_mod_modulus *m,
+                              unsigned char *buf,
+                              size_t buflen )
+{
+    if( m->ext_rep & MBEDTLS_MI_MOD_EXT_REP_LE )
+        return mbedtls_mpi_core_read_le( X, m->n, buf, buflen );
+
+    else if( m->ext_rep & MBEDTLS_MI_MOD_EXT_REP_BE )
+        return mbedtls_mpi_core_read_be( X, m->n, buf, buflen );
+
+    else
+        return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA );
+
+    return( 0 );
+}
+
+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_MI_MOD_EXT_REP_LE )
+        return mbedtls_mpi_core_write_le( X, m->n, buf, buflen );
+
+    else if( m->ext_rep & MBEDTLS_MI_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 */
