Ejemplo n.º 1
0
        internal void Encode(AsnWriter writer, Asn1Tag tag)
        {
            writer.PushBerSequence();

            writer.WriteInteger(Version);

            writer.PushSetOf();
            for (int i = 0; i < DigestAlgorithms.Length; i++)
            {
                DigestAlgorithms[i].Encode(writer);
            }
            writer.PopSetOf();

            EncapContentInfo.Encode(writer);

            if (CertificateSet != null)
            {
                writer.PushTaggedObject(160);
                // writer.PushSetOf(new Asn1Tag(TagClass.ContextSpecific, 0));
                for (int i = 0; i < CertificateSet.Length; i++)
                {
                    CertificateSet[i].Encode(writer);
                }

                // writer.PopSetOf(new Asn1Tag(TagClass.ContextSpecific, 0));
                writer.PopTaggedObject();
            }


            if (Crls != null)
            {
                writer.PushSetOf(new Asn1Tag(TagClass.ContextSpecific, 1));
                for (int i = 0; i < Crls.Length; i++)
                {
                    writer.WriteEncodedValue(Crls[i].Span);
                }
                writer.PopSetOf(new Asn1Tag(TagClass.ContextSpecific, 1));
            }


            writer.PushSetOf();
            for (int i = 0; i < SignerInfos.Length; i++)
            {
                SignerInfos[i].Encode(writer);
            }

            writer.PopSetOf();
            writer.PopBerSequence();
        }