2 typedef struct asn1_string_st ASN1_BIT_STRING
;
3 typedef struct bignum_st BIGNUM
;
4 typedef struct ec_group_st EC_GROUP
;
5 typedef struct ec_key_st EC_KEY
;
11 unsigned int enc_flag
;
14 typedef struct ec_privatekey_st
16 ASN1_BIT_STRING
*publicKey
;
20 extern EC_PRIVATEKEY
* EC_PRIVATEKEY_new (void);
21 extern void EC_PRIVATEKEY_free (EC_PRIVATEKEY
*);
22 extern unsigned char* CRYPTO_realloc (char*,int,const char*,int);
25 i2d_ECPrivateKey (EC_KEY
* a
, unsigned char **out
)
28 unsigned char *buffer
= 0;
29 unsigned buf_len
= 0, tmp_len
;
30 EC_PRIVATEKEY
*priv_key
= 0;
31 if (a
== 0 || a
->group
== 0 || a
->priv_key
== 0)
33 ERR_put_error (16, (192), ((3 | 64)),
38 if ((priv_key
= EC_PRIVATEKEY_new ()) == 0)
40 ERR_put_error (16, (192), ((1 | 64)),
45 if (!(a
->enc_flag
& 0x002))
47 if (priv_key
->publicKey
== 0)
51 if (tmp_len
> buf_len
)
53 unsigned char *tmp_buffer
=
54 CRYPTO_realloc ((char *) buffer
, (int) tmp_len
, "", 1293);
58 if ((ret
= i2d_EC_PRIVATEKEY (priv_key
, out
)) == 0)
66 EC_PRIVATEKEY_free (priv_key
);
67 return (ok
? ret
: 0);