Rename mbedtls_mpi_msb to mbedtls_mpi_bitlen
diff --git a/include/mbedtls/bignum.h b/include/mbedtls/bignum.h
index d03b983..3c9eeea 100644
--- a/include/mbedtls/bignum.h
+++ b/include/mbedtls/bignum.h
@@ -299,7 +299,7 @@
  *
  * \param X        MPI to use
  */
-size_t mbedtls_mpi_msb( const mbedtls_mpi *X );
+size_t mbedtls_mpi_bitlen( const mbedtls_mpi *X );
 
 /**
  * \brief          Return the total size in bytes
diff --git a/include/mbedtls/compat-1.3.h b/include/mbedtls/compat-1.3.h
index 8b0342a..3c0f151 100644
--- a/include/mbedtls/compat-1.3.h
+++ b/include/mbedtls/compat-1.3.h
@@ -2149,7 +2149,7 @@
 #define mpi_lset mbedtls_mpi_lset
 #define mpi_mod_int mbedtls_mpi_mod_int
 #define mpi_mod_mpi mbedtls_mpi_mod_mpi
-#define mpi_msb mbedtls_mpi_msb
+#define mpi_msb mbedtls_mpi_bitlen
 #define mpi_mul_int mbedtls_mpi_mul_int
 #define mpi_mul_mpi mbedtls_mpi_mul_mpi
 #define mpi_read_binary mbedtls_mpi_read_binary
diff --git a/library/bignum.c b/library/bignum.c
index 563e67a..ad0aa2c 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -331,7 +331,7 @@
 }
 
 /*
- * Return the number of least significant bits
+ * Return the number of less significant zero-bits
  */
 size_t mbedtls_mpi_lsb( const mbedtls_mpi *X )
 {
@@ -346,9 +346,9 @@
 }
 
 /*
- * Return the number of most significant bits
+ * Return the number of bits
  */
-size_t mbedtls_mpi_msb( const mbedtls_mpi *X )
+size_t mbedtls_mpi_bitlen( const mbedtls_mpi *X )
 {
     size_t i, j;
 
@@ -371,7 +371,7 @@
  */
 size_t mbedtls_mpi_size( const mbedtls_mpi *X )
 {
-    return( ( mbedtls_mpi_msb( X ) + 7 ) >> 3 );
+    return( ( mbedtls_mpi_bitlen( X ) + 7 ) >> 3 );
 }
 
 /*
@@ -501,7 +501,7 @@
     if( radix < 2 || radix > 16 )
         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA );
 
-    n = mbedtls_mpi_msb( X );
+    n = mbedtls_mpi_bitlen( X );
     if( radix >=  4 ) n >>= 1;
     if( radix >= 16 ) n >>= 1;
     n += 3;
@@ -686,7 +686,7 @@
     v0 = count / (biL    );
     t1 = count & (biL - 1);
 
-    i = mbedtls_mpi_msb( X ) + count;
+    i = mbedtls_mpi_bitlen( X ) + count;
 
     if( X->n * biL < i )
         MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, BITS_TO_LIMBS( i ) ) );
@@ -1212,7 +1212,7 @@
     MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &T1, 2 ) );
     MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &T2, 3 ) );
 
-    k = mbedtls_mpi_msb( &Y ) % biL;
+    k = mbedtls_mpi_bitlen( &Y ) % biL;
     if( k < biL - 1 )
     {
         k = biL - 1 - k;
@@ -1537,7 +1537,7 @@
     mbedtls_mpi_init( &Apos );
     memset( W, 0, sizeof( W ) );
 
-    i = mbedtls_mpi_msb( E );
+    i = mbedtls_mpi_bitlen( E );
 
     wsize = ( i > 671 ) ? 6 : ( i > 239 ) ? 5 :
             ( i >  79 ) ? 4 : ( i >  23 ) ? 3 : 1;
@@ -1972,7 +1972,7 @@
     MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &R, &W ) );
     MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &R, s ) );
 
-    i = mbedtls_mpi_msb( X );
+    i = mbedtls_mpi_bitlen( X );
     /*
      * HAC, table 4.4
      */
@@ -1989,7 +1989,7 @@
 
         if( mbedtls_mpi_cmp_mpi( &A, &W ) >= 0 )
         {
-            j = mbedtls_mpi_msb( &A ) - mbedtls_mpi_msb( &W );
+            j = mbedtls_mpi_bitlen( &A ) - mbedtls_mpi_bitlen( &W );
             MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &A, j + 1 ) );
         }
         A.p[0] |= 3;
@@ -1998,8 +1998,8 @@
         do {
             MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &A, X->n * ciL, f_rng, p_rng ) );
 
-            j = mbedtls_mpi_msb( &A );
-            k = mbedtls_mpi_msb( &W );
+            j = mbedtls_mpi_bitlen( &A );
+            k = mbedtls_mpi_bitlen( &W );
             if (j > k) {
                 MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &A, j - k ) );
             }
@@ -2106,7 +2106,7 @@
 
     MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( X, n * ciL, f_rng, p_rng ) );
 
-    k = mbedtls_mpi_msb( X );
+    k = mbedtls_mpi_bitlen( X );
     if( k > nbits ) MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( X, k - nbits + 1 ) );
 
     mbedtls_mpi_set_bit( X, nbits-1, 1 );
diff --git a/library/ecp.c b/library/ecp.c
index b733bcc..a802747 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -660,7 +660,7 @@
 
     /* N->s < 0 is a much faster test, which fails only if N is 0 */
     if( ( N->s < 0 && mbedtls_mpi_cmp_int( N, 0 ) != 0 ) ||
-        mbedtls_mpi_msb( N ) > 2 * grp->pbits )
+        mbedtls_mpi_bitlen( N ) > 2 * grp->pbits )
     {
         return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
     }
@@ -1568,7 +1568,7 @@
         MBEDTLS_MPI_CHK( ecp_randomize_mxz( grp, &RP, f_rng, p_rng ) );
 
     /* Loop invariant: R = result so far, RP = R + P */
-    i = mbedtls_mpi_msb( m ); /* one past the (zero-based) most significant bit */
+    i = mbedtls_mpi_bitlen( m ); /* one past the (zero-based) most significant bit */
     while( i-- > 0 )
     {
         b = mbedtls_mpi_get_bit( m, i );
@@ -1747,7 +1747,7 @@
         if( mbedtls_mpi_get_bit( d, 0 ) != 0 ||
             mbedtls_mpi_get_bit( d, 1 ) != 0 ||
             mbedtls_mpi_get_bit( d, 2 ) != 0 ||
-            mbedtls_mpi_msb( d ) - 1 != grp->nbits ) /* mbedtls_mpi_msb is one-based! */
+            mbedtls_mpi_bitlen( d ) - 1 != grp->nbits ) /* mbedtls_mpi_bitlen is one-based! */
             return( MBEDTLS_ERR_ECP_INVALID_KEY );
         else
             return( 0 );
@@ -1787,7 +1787,7 @@
         MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( d, n_size, f_rng, p_rng ) );
 
         /* Make sure the most significant bit is nbits */
-        b = mbedtls_mpi_msb( d ) - 1; /* mbedtls_mpi_msb is one-based */
+        b = mbedtls_mpi_bitlen( d ) - 1; /* mbedtls_mpi_bitlen is one-based */
         if( b > grp->nbits )
             MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( d, b - grp->nbits ) );
         else
diff --git a/library/ecp_curves.c b/library/ecp_curves.c
index 41d7f79..e97c401 100644
--- a/library/ecp_curves.c
+++ b/library/ecp_curves.c
@@ -594,8 +594,8 @@
     ecp_mpi_load( &grp->G.Y, gy, gylen );
     ecp_mpi_set1( &grp->G.Z );
 
-    grp->pbits = mbedtls_mpi_msb( &grp->P );
-    grp->nbits = mbedtls_mpi_msb( &grp->N );
+    grp->pbits = mbedtls_mpi_bitlen( &grp->P );
+    grp->nbits = mbedtls_mpi_bitlen( &grp->N );
 
     grp->h = 1;
 
@@ -670,7 +670,7 @@
     MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &grp->P, 1 ) );
     MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( &grp->P, 255 ) );
     MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &grp->P, &grp->P, 19 ) );
-    grp->pbits = mbedtls_mpi_msb( &grp->P );
+    grp->pbits = mbedtls_mpi_bitlen( &grp->P );
 
     /* Y intentionaly not set, since we use x/z coordinates.
      * This is used as a marker to identify Montgomery curves! */
diff --git a/library/pkparse.c b/library/pkparse.c
index c8a68eb..f24dbad 100644
--- a/library/pkparse.c
+++ b/library/pkparse.c
@@ -274,7 +274,7 @@
     if( ( ret = mbedtls_asn1_get_mpi( &p, end_field, &grp->P ) ) != 0 )
         return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret );
 
-    grp->pbits = mbedtls_mpi_msb( &grp->P );
+    grp->pbits = mbedtls_mpi_bitlen( &grp->P );
 
     if( p != end_field )
         return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT +
@@ -355,7 +355,7 @@
     if( ( ret = mbedtls_asn1_get_mpi( &p, end, &grp->N ) ) != 0 )
         return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret );
 
-    grp->nbits = mbedtls_mpi_msb( &grp->N );
+    grp->nbits = mbedtls_mpi_bitlen( &grp->N );
 
     /*
      * Allow optional elements by purposefully not enforcing p == end here.
diff --git a/library/rsa.c b/library/rsa.c
index 6aee109..9f0d461 100644
--- a/library/rsa.c
+++ b/library/rsa.c
@@ -118,7 +118,7 @@
             continue;
 
         MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &ctx->N, &ctx->P, &ctx->Q ) );
-        if( mbedtls_mpi_msb( &ctx->N ) != nbits )
+        if( mbedtls_mpi_bitlen( &ctx->N ) != nbits )
             continue;
 
         MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &P1, &ctx->P, 1 ) );
@@ -139,7 +139,7 @@
     MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &ctx->DQ, &ctx->D, &Q1 ) );
     MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &ctx->QP, &ctx->Q, &ctx->P ) );
 
-    ctx->len = ( mbedtls_mpi_msb( &ctx->N ) + 7 ) >> 3;
+    ctx->len = ( mbedtls_mpi_bitlen( &ctx->N ) + 7 ) >> 3;
 
 cleanup:
 
@@ -168,11 +168,11 @@
         ( ctx->E.p[0] & 1 ) == 0 )
         return( MBEDTLS_ERR_RSA_KEY_CHECK_FAILED );
 
-    if( mbedtls_mpi_msb( &ctx->N ) < 128 ||
-        mbedtls_mpi_msb( &ctx->N ) > MBEDTLS_MPI_MAX_BITS )
+    if( mbedtls_mpi_bitlen( &ctx->N ) < 128 ||
+        mbedtls_mpi_bitlen( &ctx->N ) > MBEDTLS_MPI_MAX_BITS )
         return( MBEDTLS_ERR_RSA_KEY_CHECK_FAILED );
 
-    if( mbedtls_mpi_msb( &ctx->E ) < 2 ||
+    if( mbedtls_mpi_bitlen( &ctx->E ) < 2 ||
         mbedtls_mpi_cmp_mpi( &ctx->E, &ctx->N ) >= 0 )
         return( MBEDTLS_ERR_RSA_KEY_CHECK_FAILED );
 
@@ -980,7 +980,7 @@
 
     // Note: EMSA-PSS encoding is over the length of N - 1 bits
     //
-    msb = mbedtls_mpi_msb( &ctx->N ) - 1;
+    msb = mbedtls_mpi_bitlen( &ctx->N ) - 1;
     p += olen - hlen * 2 - 2;
     *p++ = 0x01;
     memcpy( p, salt, slen );
@@ -1008,7 +1008,7 @@
 
     mbedtls_md_free( &md_ctx );
 
-    msb = mbedtls_mpi_msb( &ctx->N ) - 1;
+    msb = mbedtls_mpi_bitlen( &ctx->N ) - 1;
     sig[0] &= 0xFF >> ( olen * 8 - msb );
 
     p += hlen;
@@ -1206,7 +1206,7 @@
 
     // Note: EMSA-PSS verification is over the length of N - 1 bits
     //
-    msb = mbedtls_mpi_msb( &ctx->N ) - 1;
+    msb = mbedtls_mpi_bitlen( &ctx->N ) - 1;
 
     // Compensate for boundary condition when applying mask
     //
diff --git a/programs/pkey/dh_client.c b/programs/pkey/dh_client.c
index 546b02e..0b340d5 100644
--- a/programs/pkey/dh_client.c
+++ b/programs/pkey/dh_client.c
@@ -127,7 +127,7 @@
         goto exit;
     }
 
-    rsa.len = ( mbedtls_mpi_msb( &rsa.N ) + 7 ) >> 3;
+    rsa.len = ( mbedtls_mpi_bitlen( &rsa.N ) + 7 ) >> 3;
 
     fclose( f );
 
diff --git a/programs/pkey/dh_server.c b/programs/pkey/dh_server.c
index 81c0c9f..8fda29f 100644
--- a/programs/pkey/dh_server.c
+++ b/programs/pkey/dh_server.c
@@ -134,7 +134,7 @@
         goto exit;
     }
 
-    rsa.len = ( mbedtls_mpi_msb( &rsa.N ) + 7 ) >> 3;
+    rsa.len = ( mbedtls_mpi_bitlen( &rsa.N ) + 7 ) >> 3;
 
     fclose( f );
 
diff --git a/programs/pkey/rsa_decrypt.c b/programs/pkey/rsa_decrypt.c
index de16de5..2a6c15f 100644
--- a/programs/pkey/rsa_decrypt.c
+++ b/programs/pkey/rsa_decrypt.c
@@ -120,7 +120,7 @@
         goto exit;
     }
 
-    rsa.len = ( mbedtls_mpi_msb( &rsa.N ) + 7 ) >> 3;
+    rsa.len = ( mbedtls_mpi_bitlen( &rsa.N ) + 7 ) >> 3;
 
     fclose( f );
 
diff --git a/programs/pkey/rsa_encrypt.c b/programs/pkey/rsa_encrypt.c
index a3f9a66..8604323 100644
--- a/programs/pkey/rsa_encrypt.c
+++ b/programs/pkey/rsa_encrypt.c
@@ -114,7 +114,7 @@
         goto exit;
     }
 
-    rsa.len = ( mbedtls_mpi_msb( &rsa.N ) + 7 ) >> 3;
+    rsa.len = ( mbedtls_mpi_bitlen( &rsa.N ) + 7 ) >> 3;
 
     fclose( f );
 
diff --git a/programs/pkey/rsa_sign.c b/programs/pkey/rsa_sign.c
index e2d39fc..895880f 100644
--- a/programs/pkey/rsa_sign.c
+++ b/programs/pkey/rsa_sign.c
@@ -100,7 +100,7 @@
         goto exit;
     }
 
-    rsa.len = ( mbedtls_mpi_msb( &rsa.N ) + 7 ) >> 3;
+    rsa.len = ( mbedtls_mpi_bitlen( &rsa.N ) + 7 ) >> 3;
 
     fclose( f );
 
diff --git a/programs/pkey/rsa_verify.c b/programs/pkey/rsa_verify.c
index 35467ee..3de84d6 100644
--- a/programs/pkey/rsa_verify.c
+++ b/programs/pkey/rsa_verify.c
@@ -91,7 +91,7 @@
         goto exit;
     }
 
-    rsa.len = ( mbedtls_mpi_msb( &rsa.N ) + 7 ) >> 3;
+    rsa.len = ( mbedtls_mpi_bitlen( &rsa.N ) + 7 ) >> 3;
 
     fclose( f );
 
diff --git a/scripts/data_files/rename-1.3-2.0.txt b/scripts/data_files/rename-1.3-2.0.txt
index 3f773e3..d0820b0 100644
--- a/scripts/data_files/rename-1.3-2.0.txt
+++ b/scripts/data_files/rename-1.3-2.0.txt
@@ -1684,7 +1684,7 @@
 mpi_lset mbedtls_mpi_lset
 mpi_mod_int mbedtls_mpi_mod_int
 mpi_mod_mpi mbedtls_mpi_mod_mpi
-mpi_msb mbedtls_mpi_msb
+mpi_msb mbedtls_mpi_bitlen
 mpi_mul_int mbedtls_mpi_mul_int
 mpi_mul_mpi mbedtls_mpi_mul_mpi
 mpi_read_binary mbedtls_mpi_read_binary
diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function
index 56b8f61..eee6486 100644
--- a/tests/suites/test_suite_ecp.function
+++ b/tests/suites/test_suite_ecp.function
@@ -175,7 +175,7 @@
     TEST_ASSERT( mbedtls_mpi_mod_mpi( &R, &N, &grp.P ) == 0 );
 
     TEST_ASSERT( grp.modp( &N ) == 0 );
-    TEST_ASSERT( mbedtls_mpi_msb( &N ) <= grp.pbits + 3 );
+    TEST_ASSERT( mbedtls_mpi_bitlen( &N ) <= grp.pbits + 3 );
 
     /*
      * Use mod rather than addition/subtraction in case previous test fails
@@ -371,7 +371,7 @@
     TEST_ASSERT( ret == result );
     if( ret == 0)
     {
-        TEST_ASSERT( mbedtls_mpi_msb( &grp.P ) == (size_t) bits );
+        TEST_ASSERT( mbedtls_mpi_bitlen( &grp.P ) == (size_t) bits );
         TEST_ASSERT( *vbuf == 0x00 );
     }
 
diff --git a/tests/suites/test_suite_mpi.data b/tests/suites/test_suite_mpi.data
index 8fce55a..f838f3b 100644
--- a/tests/suites/test_suite_mpi.data
+++ b/tests/suites/test_suite_mpi.data
@@ -85,26 +85,26 @@
 Base test mbedtls_mpi_lsb #4
 mbedtls_mpi_lsb:16:"2000":13
 
-Base test mbedtls_mpi_msb #1
-mbedtls_mpi_msb:10:"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924":764
+Base test mbedtls_mpi_bitlen #1
+mbedtls_mpi_bitlen:10:"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924":764
 
-Base test mbedtls_mpi_msb #2
-mbedtls_mpi_msb:10:"24":5
+Base test mbedtls_mpi_bitlen #2
+mbedtls_mpi_bitlen:10:"24":5
 
-Base test mbedtls_mpi_msb #3
-mbedtls_mpi_msb:10:"1":1
+Base test mbedtls_mpi_bitlen #3
+mbedtls_mpi_bitlen:10:"1":1
 
-Base test mbedtls_mpi_msb #4
-mbedtls_mpi_msb:10:"15":4
+Base test mbedtls_mpi_bitlen #4
+mbedtls_mpi_bitlen:10:"15":4
 
-Base test mbedtls_mpi_msb #5
-mbedtls_mpi_msb:10:"16":5
+Base test mbedtls_mpi_bitlen #5
+mbedtls_mpi_bitlen:10:"16":5
 
-Base test mbedtls_mpi_msb #6
-mbedtls_mpi_msb:10:"10":4
+Base test mbedtls_mpi_bitlen #6
+mbedtls_mpi_bitlen:10:"10":4
 
-Base test mbedtls_mpi_msb #7
-mbedtls_mpi_msb:10:"0":0
+Base test mbedtls_mpi_bitlen #7
+mbedtls_mpi_bitlen:10:"0":0
 
 Base test mbedtls_mpi_cmp_int #1
 mbedtls_mpi_cmp_int:693:693:0
diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function
index 2d68f8d..1308e56 100644
--- a/tests/suites/test_suite_mpi.function
+++ b/tests/suites/test_suite_mpi.function
@@ -18,7 +18,7 @@
 
     TEST_ASSERT( mbedtls_mpi_get_bit( &X, 42 ) == 0 );
     TEST_ASSERT( mbedtls_mpi_lsb( &X ) == 0 );
-    TEST_ASSERT( mbedtls_mpi_msb( &X ) == 0 );
+    TEST_ASSERT( mbedtls_mpi_bitlen( &X ) == 0 );
     TEST_ASSERT( mbedtls_mpi_size( &X ) == 0 );
 
 exit:
@@ -217,13 +217,13 @@
 /* END_CASE */
 
 /* BEGIN_CASE */
-void mbedtls_mpi_msb( int radix_X, char *input_X, int nr_bits )
+void mbedtls_mpi_bitlen( int radix_X, char *input_X, int nr_bits )
 {
     mbedtls_mpi X;
     mbedtls_mpi_init( &X );
 
     TEST_ASSERT( mbedtls_mpi_read_string( &X, radix_X, input_X ) == 0 );
-    TEST_ASSERT( mbedtls_mpi_msb( &X ) == (size_t) nr_bits );
+    TEST_ASSERT( mbedtls_mpi_bitlen( &X ) == (size_t) nr_bits );
 
 exit:
     mbedtls_mpi_free( &X );
@@ -789,7 +789,7 @@
 
     if( ref_ret == 0 )
     {
-        size_t actual_bits = mbedtls_mpi_msb( &X );
+        size_t actual_bits = mbedtls_mpi_bitlen( &X );
 
         TEST_ASSERT( actual_bits >= (size_t) bits );
         TEST_ASSERT( actual_bits <= (size_t) bits + 1 );