public X509TbsCertificate(Asn1Sequence node)
        {
            var i       = 0;
            var subnode = node.Nodes[i++];

            if (subnode.Is(Asn1TagClass.ContextDefined, 0x00))
            {
                Version = new X509Version(subnode);
                subnode = node.Nodes[i++];
            }

            SerialNumber = (Asn1Integer)subnode;
            subnode      = node.Nodes[i++];

            SignatureAlgorithm = new X509AlgorithmIdentifier((Asn1Sequence)subnode);
            subnode            = node.Nodes[i++];

            Issuer  = new X509Name((Asn1Sequence)subnode);
            subnode = node.Nodes[i++];

            Validity = new X509Validity((Asn1Sequence)subnode);
            subnode  = node.Nodes[i++];

            Subject = new X509Name((Asn1Sequence)subnode);
            subnode = node.Nodes[i++];

            SubjectPublicKeyInfo = SubjectPublicKeyInfo.From((Asn1Sequence)subnode);
            subnode = node.Nodes[i++];

            if (subnode.Is(Asn1TagClass.ContextDefined, 0x01))
            {
                //issuerUniqueId
                throw new NotImplementedException();
            }

            if (subnode.Is(Asn1TagClass.ContextDefined, 0x02))
            {
                //subjectUniqueId
                throw new NotImplementedException();
            }

            if (subnode.Is(Asn1TagClass.ContextDefined, 0x03))
            {
                var extSeq = subnode.Nodes[0];
                foreach (var extNode in extSeq.Nodes)
                {
                    Extensions.Add(new X509Extension((Asn1Sequence)extNode));
                }
            }
        }
 public X509TbsCertificate()
 {
     Version    = new X509Version(3);
     Extensions = new X509ExtensionsList();
 }