Have mbedtls_mpi_montg_init() take the modulus, rather than just its least significant limb

Signed-off-by: Tom Cosgrove <tom.cosgrove@arm.com>
diff --git a/library/bignum.c b/library/bignum.c
index cfaaf5f..d5e799e 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -1550,7 +1550,7 @@
  */
 static void mpi_montg_init( mbedtls_mpi_uint *mm, const mbedtls_mpi *N )
 {
-    *mm = mbedtls_mpi_montg_init( N->p[0] );
+    *mm = mbedtls_mpi_montg_init( N->p );
 }
 
 /** Montgomery multiplication: A = A * B * R^-1 mod N  (HAC 14.36)
diff --git a/library/bignum_core.c b/library/bignum_core.c
index bc1bca1..ac92853 100644
--- a/library/bignum_core.c
+++ b/library/bignum_core.c
@@ -348,14 +348,14 @@
 /*
  * Fast Montgomery initialization (thanks to Tom St Denis).
  */
-mbedtls_mpi_uint mbedtls_mpi_montg_init( mbedtls_mpi_uint m0 )
+mbedtls_mpi_uint mbedtls_mpi_montg_init( const mbedtls_mpi_uint *N )
 {
-    mbedtls_mpi_uint x = m0;
+    mbedtls_mpi_uint x = N[0];
 
-    x += ( ( m0 + 2 ) & 4 ) << 1;
+    x += ( ( N[0] + 2 ) & 4 ) << 1;
 
     for( unsigned int i = biL; i >= 8; i /= 2 )
-        x *= ( 2 - ( m0 * x ) );
+        x *= ( 2 - ( N[0] * x ) );
 
     return( ~x + 1 );
 }
diff --git a/library/bignum_core.h b/library/bignum_core.h
index 02ac55d..85e25a8 100644
--- a/library/bignum_core.h
+++ b/library/bignum_core.h
@@ -186,12 +186,12 @@
  * \brief Calculate initialisation value for fast Montgomery modular
  *        multiplication
  *
- * \param m0  The least-significant mbedtls_mpi_uint from the modulus, which
- *            must be odd
+ * \param[in] N  Little-endian presentation of the modulus. This must have
+ *               at least one limb.
  *
- * \return    The initialisation value for fast Montgomery modular multiplication
+ * \return       The initialisation value for fast Montgomery modular multiplication
  */
-mbedtls_mpi_uint mbedtls_mpi_montg_init( mbedtls_mpi_uint m0 );
+mbedtls_mpi_uint mbedtls_mpi_montg_init( const mbedtls_mpi_uint *N );
 
 /**
  * \brief Perform a known-size multiply accumulate operation: d += b * s