x509: remove direct dependency from BIGNUM_C

Signed-off-by: Valerio Setti <vsetti@baylibre.com>
diff --git a/programs/x509/cert_write.c b/programs/x509/cert_write.c
index a8910d7..be3464e 100644
--- a/programs/x509/cert_write.c
+++ b/programs/x509/cert_write.c
@@ -559,6 +559,7 @@
     mbedtls_printf( "  . Reading serial number..." );
     fflush( stdout );
 
+#if defined(MBEDTLS_BIGNUM_C)
     if( ( ret = mbedtls_mpi_read_string( &serial, 10, opt.serial ) ) != 0 )
     {
         mbedtls_strerror( ret, buf, sizeof(buf) );
@@ -566,6 +567,7 @@
                         "returned -0x%04x - %s\n\n", (unsigned int) -ret, buf );
         goto exit;
     }
+#endif
 
     mbedtls_printf( " ok\n" );
 
@@ -721,6 +723,7 @@
     mbedtls_x509write_crt_set_version( &crt, opt.version );
     mbedtls_x509write_crt_set_md_alg( &crt, opt.md );
 
+#if defined(MBEDTLS_BIGNUM_C)
     ret = mbedtls_x509write_crt_set_serial( &crt, &serial );
     if( ret != 0 )
     {
@@ -729,6 +732,17 @@
                         "returned -0x%04x - %s\n\n", (unsigned int) -ret, buf );
         goto exit;
     }
+#else
+    ret = mbedtls_x509write_crt_set_serial_new( &crt, opt.serial,
+                                                strlen( opt.serial ) );
+    if( ret != 0 )
+    {
+        mbedtls_strerror( ret, buf, sizeof(buf) );
+        mbedtls_printf( " failed\n  !  mbedtls_x509write_crt_set_serial_new "
+                        "returned -0x%04x - %s\n\n", (unsigned int) -ret, buf );
+        goto exit;
+    }
+#endif
 
     ret = mbedtls_x509write_crt_set_validity( &crt, opt.not_before, opt.not_after );
     if( ret != 0 )