internal BufferedBerOctetStream(
     BerOctetStringGenerator	gen,
     byte[]					buf)
 {
     _gen = gen;
     _buf = buf;
     _off = 0;
     _derOut = new DerOutputStream(_gen.Out);
 }
 internal override void Encode(
     DerOutputStream  derOut)
 {
     if (derOut is Asn1OutputStream || derOut is BerOutputStream)
     {
         derOut.WriteByte(Asn1Tags.Null);
     }
     else
     {
         base.Encode(derOut);
     }
 }
        public byte[] GetEncoded(
            string encoding)
        {
            if (encoding.Equals(Der))
            {
                MemoryStream bOut = new MemoryStream();
                DerOutputStream dOut = new DerOutputStream(bOut);

                dOut.WriteObject(this);

                return bOut.ToArray();
            }

            return GetEncoded();
        }
 internal override void Encode(
     DerOutputStream derOut)
 {
     lock (this)
     {
         if (encoded == null)
         {
             base.Encode(derOut);
         }
         else
         {
             derOut.WriteEncoded(Asn1Tags.Sequence | Asn1Tags.Constructed, encoded);
         }
     }
 }
        /*
         * A note on the implementation:
         * <p>
         * As Der requires the constructed, definite-length model to
         * be used for structured types, this varies slightly from the
         * ASN.1 descriptions given. Rather than just outputing Sequence,
         * we also have to specify Constructed, and the objects length.
         */
        internal override void Encode(
            DerOutputStream derOut)
        {
            // TODO Intermediate buffer could be avoided if we could calculate expected length
            MemoryStream bOut = new MemoryStream();
            DerOutputStream dOut = new DerOutputStream(bOut);

            foreach (Asn1Encodable obj in this)
            {
                dOut.WriteObject(obj);
            }

            dOut.Dispose();

            byte[] bytes = bOut.ToArray();

            derOut.WriteEncoded(Asn1Tags.Sequence | Asn1Tags.Constructed, bytes);
        }
        internal override void Encode(
            DerOutputStream derOut)
        {
            if (derOut is Asn1OutputStream || derOut is BerOutputStream)
            {
                derOut.WriteByte(Asn1Tags.Constructed | Asn1Tags.OctetString);

                derOut.WriteByte(0x80);

                //
                // write out the octet array
                //
                foreach (DerOctetString oct in this)
                {
                    derOut.WriteObject(oct);
                }

                derOut.WriteByte(0x00);
                derOut.WriteByte(0x00);
            }
            else
            {
                base.Encode(derOut);
            }
        }
 internal override void Encode(
     DerOutputStream  derOut)
 {
     derOut.WriteEncoded(Asn1Tags.Null, zeroBytes);
 }
 internal override void Encode(
     DerOutputStream derOut)
 {
     derOut.WriteEncoded(Asn1Tags.Utf8String, Encoding.UTF8.GetBytes(str));
 }
 internal override void Encode(
     DerOutputStream derOut)
 {
     derOut.WriteEncoded(Asn1Tags.Integer, bytes);
 }
        internal override void Encode(
            DerOutputStream derOut)
        {
            int classBits = Asn1Tags.Application;
            if (isConstructed)
            {
                classBits |= Asn1Tags.Constructed;
            }

            derOut.WriteEncoded(classBits, tag, octets);
        }
        internal override void Encode(DerOutputStream derOut)
        {
            MemoryStream ms = new MemoryStream();
            WriteEncodable(ms, directReference);
            WriteEncodable(ms, indirectReference);
            WriteEncodable(ms, dataValueDescriptor);
            WriteEncodable(ms, new DerTaggedObject(Asn1Tags.External, externalContent));

            derOut.WriteEncoded(Asn1Tags.Constructed, Asn1Tags.External, ms.ToArray());
        }
        internal override void Encode(
            DerOutputStream derOut)
        {
            byte[] bytes = new byte[GetBytes().Length + 1];

            bytes[0] = (byte) PadBits;
            Array.Copy(GetBytes(), 0, bytes, 1, bytes.Length - 1);

            derOut.WriteEncoded(Asn1Tags.BitString, bytes);
        }
 internal abstract void Encode(DerOutputStream derOut);
 internal override void Encode(
     DerOutputStream derOut)
 {
     derOut.WriteEncoded(Asn1Tags.ObjectIdentifier, GetBody());
 }
 internal override void Encode(
     DerOutputStream derOut)
 {
     derOut.WriteEncoded(Asn1Tags.UniversalString, this.str);
 }
 internal override void Encode(
     DerOutputStream derOut)
 {
     derOut.WriteEncoded(Asn1Tags.Enumerated, bytes);
 }
 internal override void Encode(
     DerOutputStream derOut)
 {
     derOut.WriteEncoded(Asn1Tags.GeneralizedTime, GetOctets());
 }
 internal override void Encode(
     DerOutputStream derOut)
 {
     derOut.WriteEncoded(Asn1Tags.T61String, GetOctets());
 }
 internal override void Encode(
     DerOutputStream derOut)
 {
     // TODO Should we make sure the byte value is one of '0' or '0xff' here?
     derOut.WriteEncoded(Asn1Tags.Boolean, new byte[]{ value });
 }