Fix bug in DSA, EC methods.
[openssl.git] / crypto / ec / ec_ameth.c
index e212218..4a13661 100644 (file)
@@ -445,7 +445,6 @@ static int do_EC_KEY_print(BIO *bp, const EC_KEY *x, int off, int ktype)
                goto err;
                }
 
-
        if (ktype > 0)
                {
                public_key = EC_KEY_get0_public_key(x);
@@ -455,15 +454,15 @@ static int do_EC_KEY_print(BIO *bp, const EC_KEY *x, int off, int ktype)
                        reason = ERR_R_EC_LIB;
                        goto err;
                        }
-               buf_len = (size_t)BN_num_bytes(pub_key);
+               if (pub_key)
+                       buf_len = (size_t)BN_num_bytes(pub_key);
                }
-       else
 
        if (ktype == 2)
                {
-               if ((i = (size_t)BN_num_bytes(priv_key)) > buf_len)
-                       buf_len = i;
                priv_key = EC_KEY_get0_private_key(x);
+               if (priv_key && (i = (size_t)BN_num_bytes(priv_key)) > buf_len)
+                       buf_len = i;
                }
        else
                priv_key = NULL;
@@ -538,8 +537,10 @@ static int eckey_priv_print(BIO *bp, const EVP_PKEY *pkey, int indent,
 EVP_PKEY_ASN1_METHOD eckey_asn1_meth = 
        {
        EVP_PKEY_EC,
+       EVP_PKEY_EC,
        0,
-       0,
+       "ec",
+       "OpenSSL EC algorithm",
 
        eckey_pub_decode,
        eckey_pub_encode,