Move mbedtls_cf_mpi_uint_lt function to the constant-time module

Signed-off-by: gabor-mezei-arm <gabor.mezei@arm.com>
diff --git a/library/bignum.c b/library/bignum.c
index 48ab24c..cd8e69e 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -1247,41 +1247,6 @@
     return( 0 );
 }
 
-/** Decide if an integer is less than the other, without branches.
- *
- * \param x         First integer.
- * \param y         Second integer.
- *
- * \return          1 if \p x is less than \p y, 0 otherwise
- */
-static unsigned mbedtls_cf_mpi_uint_lt( const mbedtls_mpi_uint x,
-        const mbedtls_mpi_uint y )
-{
-    mbedtls_mpi_uint ret;
-    mbedtls_mpi_uint cond;
-
-    /*
-     * Check if the most significant bits (MSB) of the operands are different.
-     */
-    cond = ( x ^ y );
-    /*
-     * If the MSB are the same then the difference x-y will be negative (and
-     * have its MSB set to 1 during conversion to unsigned) if and only if x<y.
-     */
-    ret = ( x - y ) & ~cond;
-    /*
-     * If the MSB are different, then the operand with the MSB of 1 is the
-     * bigger. (That is if y has MSB of 1, then x<y is true and it is false if
-     * the MSB of y is 0.)
-     */
-    ret |= y & cond;
-
-
-    ret = ret >> ( sizeof( mbedtls_mpi_uint ) * 8 - 1 );
-
-    return (unsigned) ret;
-}
-
 /*
  * Compare signed values in constant time
  */
diff --git a/library/constant_time.c b/library/constant_time.c
index 7da4046..b513c6a 100644
--- a/library/constant_time.c
+++ b/library/constant_time.c
@@ -20,6 +20,11 @@
 #include "common.h"
 #include "constant_time.h"
 
+#if defined(MBEDTLS_BIGNUM_C)
+#include "mbedtls/bignum.h"
+#endif
+
+
 /* constant-time buffer comparison */
 int mbedtls_ssl_safer_memcmp( const void *a, const void *b, size_t n )
 {
@@ -229,3 +234,42 @@
     /* Return the sign bit (1 for negative) of (max - size). */
     return( ( max - size ) >> ( sizeof( size_t ) * 8 - 1 ) );
 }
+
+#if defined(MBEDTLS_BIGNUM_C)
+
+/** Decide if an integer is less than the other, without branches.
+ *
+ * \param x         First integer.
+ * \param y         Second integer.
+ *
+ * \return          1 if \p x is less than \p y, 0 otherwise
+ */
+unsigned mbedtls_cf_mpi_uint_lt( const mbedtls_mpi_uint x,
+        const mbedtls_mpi_uint y )
+{
+    mbedtls_mpi_uint ret;
+    mbedtls_mpi_uint cond;
+
+    /*
+     * Check if the most significant bits (MSB) of the operands are different.
+     */
+    cond = ( x ^ y );
+    /*
+     * If the MSB are the same then the difference x-y will be negative (and
+     * have its MSB set to 1 during conversion to unsigned) if and only if x<y.
+     */
+    ret = ( x - y ) & ~cond;
+    /*
+     * If the MSB are different, then the operand with the MSB of 1 is the
+     * bigger. (That is if y has MSB of 1, then x<y is true and it is false if
+     * the MSB of y is 0.)
+     */
+    ret |= y & cond;
+
+
+    ret = ret >> ( sizeof( mbedtls_mpi_uint ) * 8 - 1 );
+
+    return (unsigned) ret;
+}
+
+#endif /* MBEDTLS_BIGNUM_C */
diff --git a/library/constant_time.h b/library/constant_time.h
index eff7f44..3c18b4e 100644
--- a/library/constant_time.h
+++ b/library/constant_time.h
@@ -19,6 +19,10 @@
 
 #include "common.h"
 
+#if defined(MBEDTLS_BIGNUM_C)
+#include "mbedtls/bignum.h"
+#endif
+
 #include <stddef.h>
 
 int mbedtls_ssl_safer_memcmp( const void *a, const void *b, size_t n );
@@ -41,3 +45,10 @@
 size_t mbedtls_cf_size_bool_eq( size_t x, size_t y );
 
 unsigned mbedtls_cf_size_gt( size_t size, size_t max );
+
+#if defined(MBEDTLS_BIGNUM_C)
+
+unsigned mbedtls_cf_mpi_uint_lt( const mbedtls_mpi_uint x,
+                                 const mbedtls_mpi_uint y );
+
+#endif /* MBEDTLS_BIGNUM_C */