diff --git a/library/bignum_new.c b/library/bignum_new.c
index e60d428..6cbc867 100644
--- a/library/bignum_new.c
+++ b/library/bignum_new.c
@@ -43,7 +43,7 @@
 /*
  * Count leading zero bits in a given integer
  */
-static size_t mpi_clz( const mbedtls_mpi_uint x )
+size_t mbedtls_mpi_core_clz( const mbedtls_mpi_uint x )
 {
     size_t j;
     mbedtls_mpi_uint mask = (mbedtls_mpi_uint) 1 << (biL - 1);
@@ -61,7 +61,7 @@
 /*
  * Return the number of bits
  */
-static size_t mpi_bitlen( const mbedtls_mpi_uint *X, size_t nx )
+size_t mbedtls_mpi_core_bitlen( const mbedtls_mpi_uint *X, size_t nx )
 {
     size_t i, j;
 
@@ -72,7 +72,7 @@
         if( X[i] != 0 )
             break;
 
-    j = biL - mpi_clz( X[i] );
+    j = biL - mbedtls_mpi_core_clz( X[i] );
 
     return( ( i * biL ) + j );
 }
@@ -150,7 +150,7 @@
 
     m->p = X;
     m->n = nx;
-    m->plen = mpi_bitlen( X, nx );
+    m->plen = mbedtls_mpi_core_bitlen( X, nx );
 
     switch( ext_rep )
     {
@@ -264,8 +264,8 @@
     return( mpi_bigendian_to_host_c( x ) );
 }
 
-static void mpi_core_bigendian_to_host( mbedtls_mpi_uint * const X,
-                                        size_t limbs )
+void mbedtls_mpi_core_bigendian_to_host( mbedtls_mpi_uint * const X,
+                                         size_t limbs )
 {
     mbedtls_mpi_uint *cur_limb_left;
     mbedtls_mpi_uint *cur_limb_right;
@@ -350,7 +350,7 @@
         Xp = (unsigned char*) X;
         memcpy( Xp + overhead, buf, buflen );
 
-        mpi_core_bigendian_to_host( X, nx );
+        mbedtls_mpi_core_bigendian_to_host( X, nx );
     }
 
 cleanup:
