In ECPKParameters_print, output the private key length correctly
authorBodo Möller <bodo@openssl.org>
Wed, 4 Dec 2002 17:43:01 +0000 (17:43 +0000)
committerBodo Möller <bodo@openssl.org>
Wed, 4 Dec 2002 17:43:01 +0000 (17:43 +0000)
(length of the order of the group, not length of the actual key, which
will be shorter in some cases).

Submitted by: Nils Larsch

crypto/asn1/t_pkey.c

index b418bf035a8c1150db555c128da438e34da8adcd..06e85f3b4c25f37e505725411cacdbfe85af4f04 100644 (file)
@@ -479,7 +479,7 @@ int EC_KEY_print(BIO *bp, const EC_KEY *x, int off)
        unsigned char *buffer=NULL;
        size_t  buf_len=0, i;
        int     ret=0, reason=ERR_R_BIO_LIB;
        unsigned char *buffer=NULL;
        size_t  buf_len=0, i;
        int     ret=0, reason=ERR_R_BIO_LIB;
-       BIGNUM  *pub_key=NULL;
+       BIGNUM  *pub_key=NULL, *order=NULL;
        BN_CTX  *ctx=NULL;
  
        if (!x || !x->group)
        BN_CTX  *ctx=NULL;
  
        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))
                        goto err;
                {
                if (!BIO_indent(bp, off, 128))
                        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);
        if (pub_key) 
                BN_free(pub_key);
                ECerr(EC_F_EC_KEY_PRINT, reason);
        if (pub_key) 
                BN_free(pub_key);
+       if (order)
+               BN_free(order);
        if (ctx)
                BN_CTX_free(ctx);
        if (buffer != NULL)
        if (ctx)
                BN_CTX_free(ctx);
        if (buffer != NULL)