From 1a18e3bba8c74d36985089c4d2460473873cc512 Mon Sep 17 00:00:00 2001 From: Tesfa Mael Date: Tue, 15 Oct 2019 11:54:58 -0700 Subject: [PATCH] Add leading zero padding for odd hex ASCII digits --- tests/api.c | 4 ++++ wolfcrypt/src/integer.c | 8 +++++++- wolfcrypt/src/tfm.c | 6 +++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/api.c b/tests/api.c index 7795ff068..c963004b6 100644 --- a/tests/api.c +++ b/tests/api.c @@ -24095,7 +24095,11 @@ static void test_wolfSSL_X509_get_serialNumber(void) X509_free(x509); /* free's a */ AssertNotNull(serialHex = BN_bn2hex(bn)); +#ifdef OPENSSL_EXTRA AssertStrEQ(serialHex, "01"); +#else + AssertStrEQ(serialHex, "1"); +#endif OPENSSL_free(serialHex); AssertIntEQ(BN_get_word(bn), 1); diff --git a/wolfcrypt/src/integer.c b/wolfcrypt/src/integer.c index b623b9dfe..893902b09 100644 --- a/wolfcrypt/src/integer.c +++ b/wolfcrypt/src/integer.c @@ -5233,7 +5233,13 @@ int mp_toradix (mp_int *a, char *str, int radix) *str++ = mp_s_rmap[d]; ++digs; } - +#ifdef OPENSSL_EXTRA + /* For hexadecimal output, add zero padding when number of digits is odd */ + if ((digs & 1) && (radix == 16)) { + *str++ = mp_s_rmap[0]; + ++digs; + } +#endif /* reverse the digits of the string. In this case _s points * to the first digit [excluding the sign] of the number] */ diff --git a/wolfcrypt/src/tfm.c b/wolfcrypt/src/tfm.c index 899503426..14309c0ef 100644 --- a/wolfcrypt/src/tfm.c +++ b/wolfcrypt/src/tfm.c @@ -4779,13 +4779,13 @@ int mp_toradix (mp_int *a, char *str, int radix) *str++ = fp_s_rmap[d]; ++digs; } - - /* For hexadecimal output, add zero when number of digits is odd */ +#ifdef OPENSSL_EXTRA + /* For hexadecimal output, add zero padding when number of digits is odd */ if ((digs & 1) && (radix == 16)) { *str++ = fp_s_rmap[0]; ++digs; } - +#endif /* reverse the digits of the string. In this case _s points * to the first digit [excluding the sign] of the number] */