public byte[] ToAsn1()
{
using (var baos = new MemoryStream(400))
{
using (var encoder = new Asn1OutputStream(baos))
{
// ASN1_SEQUENCE(EC_PRIVATEKEY) = {
// ASN1_SIMPLE(EC_PRIVATEKEY, version, LONG),
// ASN1_SIMPLE(EC_PRIVATEKEY, privateKey, ASN1_OCTET_STRING),
// ASN1_EXP_OPT(EC_PRIVATEKEY, parameters, ECPKPARAMETERS, 0),
// ASN1_EXP_OPT(EC_PRIVATEKEY, publicKey, ASN1_BIT_STRING, 1)
// } ASN1_SEQUENCE_END(EC_PRIVATEKEY)
var seq = new DerSequenceGenerator(encoder);
seq.AddObject(new DerInteger(1)); // version
seq.AddObject(new DerOctetString(_priv.ToByteArray()));
seq.AddObject(new DerTaggedObject(0, SecNamedCurves.GetByName("secp256k1").ToAsn1Object()));
seq.AddObject(new DerTaggedObject(1, new DerBitString(PubKey)));
seq.Close();
}
return baos.ToArray();
}
}