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 */
