mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 03:34:39 +02:00
Merge pull request #1912 from dgarske/fix_BN_bn2hex
Fixes for compatibility function `BN_bn2hex`
This commit is contained in:
22
src/ssl.c
22
src/ssl.c
@@ -23157,7 +23157,6 @@ WOLFSSL_BN_ULONG wolfSSL_BN_mod_word(const WOLFSSL_BIGNUM *bn,
|
||||
|
||||
char *wolfSSL_BN_bn2hex(const WOLFSSL_BIGNUM *bn)
|
||||
{
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || defined(DEBUG_WOLFSSL)
|
||||
int len = 0;
|
||||
char *buf;
|
||||
|
||||
@@ -23172,24 +23171,20 @@ char *wolfSSL_BN_bn2hex(const WOLFSSL_BIGNUM *bn)
|
||||
WOLFSSL_MSG("mp_radix_size failure");
|
||||
return NULL;
|
||||
}
|
||||
len += 1; /* add one for null terminator */
|
||||
|
||||
buf = (char*) XMALLOC(len, NULL, DYNAMIC_TYPE_ECC);
|
||||
buf = (char*)XMALLOC(len, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
if (buf == NULL) {
|
||||
WOLFSSL_MSG("BN_bn2hex malloc buffer failure");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (mp_tohex((mp_int*)bn->internal, buf) != MP_OKAY) {
|
||||
XFREE(buf, NULL, DYNAMIC_TYPE_ECC);
|
||||
XFREE(buf, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return buf;
|
||||
#else
|
||||
(void)bn;
|
||||
WOLFSSL_MSG("wolfSSL_BN_bn2hex not compiled in");
|
||||
return (char*)"";
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef NO_FILESYSTEM
|
||||
@@ -23198,7 +23193,6 @@ char *wolfSSL_BN_bn2hex(const WOLFSSL_BIGNUM *bn)
|
||||
*/
|
||||
int wolfSSL_BN_print_fp(XFILE fp, const WOLFSSL_BIGNUM *bn)
|
||||
{
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || defined(DEBUG_WOLFSSL)
|
||||
char *buf;
|
||||
|
||||
WOLFSSL_ENTER("wolfSSL_BN_print_fp");
|
||||
@@ -23215,17 +23209,9 @@ int wolfSSL_BN_print_fp(XFILE fp, const WOLFSSL_BIGNUM *bn)
|
||||
}
|
||||
|
||||
fprintf(fp, "%s", buf);
|
||||
XFREE(buf, NULL, DYNAMIC_TYPE_ECC);
|
||||
XFREE(buf, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
|
||||
return WOLFSSL_SUCCESS;
|
||||
#else
|
||||
(void)fp;
|
||||
(void)bn;
|
||||
|
||||
WOLFSSL_MSG("wolfSSL_BN_print_fp not compiled in");
|
||||
|
||||
return WOLFSSL_SUCCESS;
|
||||
#endif
|
||||
}
|
||||
#endif /* !NO_FILESYSTEM */
|
||||
|
||||
|
24
tests/api.c
24
tests/api.c
@@ -1420,9 +1420,8 @@ static void test_wolfSSL_EC(void)
|
||||
EC_POINT *Gxy, *new_point;
|
||||
BIGNUM *k = NULL, *Gx = NULL, *Gy = NULL, *Gz = NULL;
|
||||
BIGNUM *X, *Y;
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || defined(DEBUG_WOLFSSL)
|
||||
char* hexStr;
|
||||
#endif
|
||||
|
||||
const char* kTest = "F4F8338AFCC562C5C3F3E1E46A7EFECD17AF381913FF7A96314EA47055EA0FD0";
|
||||
/* NISTP256R1 Gx/Gy */
|
||||
const char* kGx = "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296";
|
||||
@@ -1459,19 +1458,29 @@ static void test_wolfSSL_EC(void)
|
||||
AssertIntEQ(BN_is_zero(X), WOLFSSL_FAILURE);
|
||||
|
||||
/* check bx2hex */
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || defined(DEBUG_WOLFSSL)
|
||||
hexStr = BN_bn2hex(k);
|
||||
AssertStrEQ(hexStr, kTest);
|
||||
#ifndef NO_FILESYSTEM
|
||||
BN_print_fp(stdout, k);
|
||||
printf("\n");
|
||||
#endif
|
||||
XFREE(hexStr, NULL, DYNAMIC_TYPE_ECC);
|
||||
|
||||
hexStr = BN_bn2hex(Gx);
|
||||
AssertStrEQ(hexStr, kGx);
|
||||
#ifndef NO_FILESYSTEM
|
||||
BN_print_fp(stdout, Gx);
|
||||
printf("\n");
|
||||
#endif
|
||||
XFREE(hexStr, NULL, DYNAMIC_TYPE_ECC);
|
||||
|
||||
hexStr = BN_bn2hex(Gy);
|
||||
AssertStrEQ(hexStr, kGy);
|
||||
XFREE(hexStr, NULL, DYNAMIC_TYPE_ECC);
|
||||
#ifndef NO_FILESYSTEM
|
||||
BN_print_fp(stdout, Gy);
|
||||
printf("\n");
|
||||
#endif
|
||||
XFREE(hexStr, NULL, DYNAMIC_TYPE_ECC);
|
||||
|
||||
/* cleanup */
|
||||
BN_free(X);
|
||||
@@ -20132,7 +20141,7 @@ static void test_wolfSSL_X509_get_serialNumber(void)
|
||||
ASN1_INTEGER* a;
|
||||
BIGNUM* bn;
|
||||
X509* x509;
|
||||
|
||||
char *serialHex;
|
||||
|
||||
printf(testingFmt, "wolfSSL_X509_get_serialNumber()");
|
||||
|
||||
@@ -20143,6 +20152,11 @@ static void test_wolfSSL_X509_get_serialNumber(void)
|
||||
|
||||
/* check on value of ASN1 Integer */
|
||||
AssertNotNull(bn = ASN1_INTEGER_to_BN(a, NULL));
|
||||
|
||||
AssertNotNull(serialHex = BN_bn2hex(bn));
|
||||
AssertStrEQ(serialHex, "1");
|
||||
OPENSSL_free(serialHex);
|
||||
|
||||
AssertIntEQ(BN_get_word(bn), 1);
|
||||
|
||||
BN_free(bn);
|
||||
|
@@ -4835,7 +4835,7 @@ LBL_U:mp_clear (&v);
|
||||
|
||||
#if !defined(NO_DSA) || defined(HAVE_ECC) || defined(WOLFSSL_KEY_GEN) || \
|
||||
defined(HAVE_COMP_KEY) || defined(WOLFSSL_DEBUG_MATH) || \
|
||||
defined(DEBUG_WOLFSSL)
|
||||
defined(DEBUG_WOLFSSL) || defined(OPENSSL_EXTRA)
|
||||
|
||||
/* chars used in radix conversions */
|
||||
const char *mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\
|
||||
|
@@ -3903,7 +3903,7 @@ int mp_add_d(fp_int *a, fp_digit b, fp_int *c)
|
||||
|
||||
#if !defined(NO_DSA) || defined(HAVE_ECC) || defined(WOLFSSL_KEY_GEN) || \
|
||||
defined(HAVE_COMP_KEY) || defined(WOLFSSL_DEBUG_MATH) || \
|
||||
defined(DEBUG_WOLFSSL)
|
||||
defined(DEBUG_WOLFSSL) || defined(OPENSSL_EXTRA)
|
||||
|
||||
/* chars used in radix conversions */
|
||||
static const char* const fp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
|
@@ -753,7 +753,7 @@
|
||||
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || \
|
||||
defined(WOLFSSL_DEBUG_MATH) || defined(DEBUG_WOLFSSL) || \
|
||||
defined(WOLFSSL_PUBLIC_MP) || \
|
||||
defined(WOLFSSL_PUBLIC_MP) || defined(OPENSSL_EXTRA) || \
|
||||
(defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT))
|
||||
#undef WC_MP_TO_RADIX
|
||||
#define WC_MP_TO_RADIX
|
||||
|
Reference in New Issue
Block a user