bignum_mod: `mbedtls_mpi_mod_modulus_setup()` refactoring.

This patch addresses more review comments, and fixes
a circular depedency in the `mbedtls_mpi_mod_modulus_setup()`.

Signed-off-by: Minos Galanakis <minos.galanakis@arm.com>
diff --git a/library/bignum_mod.c b/library/bignum_mod.c
index 705b2db..60c073a 100644
--- a/library/bignum_mod.c
+++ b/library/bignum_mod.c
@@ -77,10 +77,13 @@
     switch( m->int_rep )
     {
         case MBEDTLS_MPI_MOD_REP_MONTGOMERY:
-            mbedtls_platform_zeroize( (mbedtls_mpi_uint *) m->rep.mont.rr,
-                                      m->limbs );
-            mbedtls_free( (mbedtls_mpi_uint *)m->rep.mont.rr );
-            m->rep.mont.rr = NULL;
+            if (m->rep.mont.rr != NULL)
+            {
+                mbedtls_platform_zeroize( (mbedtls_mpi_uint *) m->rep.mont.rr,
+                                           m->limbs );
+                mbedtls_free( (mbedtls_mpi_uint *)m->rep.mont.rr );
+                m->rep.mont.rr = NULL;
+            }
             m->rep.mont.mm = 0;
             break;
         case MBEDTLS_MPI_MOD_REP_OPT_RED:
@@ -104,6 +107,7 @@
     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
     mbedtls_mpi N;
     mbedtls_mpi RR;
+    *X = NULL;
 
     mbedtls_mpi_init( &N );
     mbedtls_mpi_init( &RR );
@@ -111,16 +115,18 @@
     if ( A == NULL || limbs == 0 || limbs >= ( MBEDTLS_MPI_MAX_LIMBS / 2 ) - 2 )
         goto cleanup;
 
-    if ( mbedtls_mpi_grow( &N,  limbs ))
+    if ( mbedtls_mpi_grow( &N, limbs ) )
         goto cleanup;
 
-    memcpy( N.p, A, sizeof(mbedtls_mpi_uint) *  limbs );
+    memcpy( N.p, A, sizeof(mbedtls_mpi_uint) * limbs );
 
-    mbedtls_mpi_core_get_mont_r2_unsafe(&RR, &N);
+    ret = mbedtls_mpi_core_get_mont_r2_unsafe(&RR, &N);
 
-    *X = RR.p;
-    RR.p = NULL;
-    ret = 0;
+    if ( ret == 0 )
+    {
+        *X = RR.p;
+        RR.p = NULL;
+    }
 
 cleanup:
     mbedtls_mpi_free(&N);
@@ -157,7 +163,7 @@
         case MBEDTLS_MPI_MOD_REP_MONTGOMERY:
             m->int_rep = int_rep;
             m->rep.mont.mm = mbedtls_mpi_core_montmul_init( m->p );
-            set_mont_const_square( &m->rep.mont.rr, m->p, m->limbs );
+            ret = set_mont_const_square( &m->rep.mont.rr, m->p, m->limbs );
             break;
         case MBEDTLS_MPI_MOD_REP_OPT_RED:
             m->int_rep = int_rep;