In ECPKParameters_print, output the private key length correctly

(length of the order of the group, not length of the actual key, which
will be shorter in some cases).

Submitted by: Nils Larsch
This commit is contained in:
Bodo Möller 2002-12-04 17:43:01 +00:00
parent 2b32b28191
commit 7e8c30b589

@ -479,7 +479,7 @@ int EC_KEY_print(BIO *bp, const EC_KEY *x, int off)
unsigned char *buffer=NULL; unsigned char *buffer=NULL;
size_t buf_len=0, i; size_t buf_len=0, i;
int ret=0, reason=ERR_R_BIO_LIB; int ret=0, reason=ERR_R_BIO_LIB;
BIGNUM *pub_key=NULL; BIGNUM *pub_key=NULL, *order=NULL;
BN_CTX *ctx=NULL; BN_CTX *ctx=NULL;
if (!x || !x->group) if (!x || !x->group)
@ -513,8 +513,12 @@ int EC_KEY_print(BIO *bp, const EC_KEY *x, int off)
{ {
if (!BIO_indent(bp, off, 128)) if (!BIO_indent(bp, off, 128))
goto err; goto err;
if ((order = BN_new()) == NULL)
goto err;
if (!EC_GROUP_get_order(x->group, order, NULL))
goto err;
if (BIO_printf(bp, "Private-Key: (%d bit)\n", if (BIO_printf(bp, "Private-Key: (%d bit)\n",
BN_num_bits(x->priv_key)) <= 0) goto err; BN_num_bits(order)) <= 0) goto err;
} }
if ((x->priv_key != NULL) && !print(bp, "priv:", x->priv_key, if ((x->priv_key != NULL) && !print(bp, "priv:", x->priv_key,
@ -531,6 +535,8 @@ err:
ECerr(EC_F_EC_KEY_PRINT, reason); ECerr(EC_F_EC_KEY_PRINT, reason);
if (pub_key) if (pub_key)
BN_free(pub_key); BN_free(pub_key);
if (order)
BN_free(order);
if (ctx) if (ctx)
BN_CTX_free(ctx); BN_CTX_free(ctx);
if (buffer != NULL) if (buffer != NULL)