#include "cryptlib.h"
#include <openssl/x509.h>
#include <openssl/ec.h>
+#include "asn1_locl.h"
static int eckey_param2type(int *pptype, void **ppval, EC_KEY *ec_key)
{
penclen = i2o_ECPublicKey(ec_key, &p);
if (penclen <= 0)
goto err;
- if (X509_PUBKEY_set0_param(pk, OBJ_nid2obj(EVP_PKEY_DSA),
+ if (X509_PUBKEY_set0_param(pk, OBJ_nid2obj(EVP_PKEY_EC),
ptype, pval, penc, penclen))
return 1;
err:
goto err;
}
-
if (ktype > 0)
{
public_key = EC_KEY_get0_public_key(x);
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;
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,