Example #1
0
        internal override void Encode(
            DerOutputStream derOut)
        {
            if (!IsEmpty())
            {
                byte[] bytes = obj.GetDerEncoded();

                if (explicitly)
                {
                    derOut.WriteEncoded(Asn1Tags.Constructed | Asn1Tags.Tagged, tagNo, bytes);
                }
                else
                {
                    //
                    // need to mark constructed types... (preserve Constructed tag)
                    //
                    int flags = (bytes[0] & Asn1Tags.Constructed) | Asn1Tags.Tagged;
                    derOut.WriteTag(flags, tagNo);
                    derOut.Write(bytes, 1, bytes.Length - 1);
                }
            }
            else
            {
                derOut.WriteEncoded(Asn1Tags.Constructed | Asn1Tags.Tagged, tagNo, new byte[0]);
            }
        }
		internal override void Encode(
			DerOutputStream derOut)
		{
			if (!IsEmpty())
			{
				byte[] bytes = obj.GetDerEncoded();

				if (explicitly)
				{
					derOut.WriteEncoded(Asn1Tags.Constructed | Asn1Tags.Tagged, tagNo, bytes);
				}
				else
				{
					//
					// need to mark constructed types... (preserve Constructed tag)
					//
					int flags = (bytes[0] & Asn1Tags.Constructed) | Asn1Tags.Tagged;
					derOut.WriteTag(flags, tagNo);
					derOut.Write(bytes, 1, bytes.Length - 1);
				}
			}
			else
			{
				derOut.WriteEncoded(Asn1Tags.Constructed | Asn1Tags.Tagged, tagNo, new byte[0]);
			}
		}
Example #3
0
 internal override void Encode(DerOutputStream derOut)
 {
     if (derOut is Asn1OutputStream || derOut is BerOutputStream)
     {
         derOut.WriteTag(160, tagNo);
         derOut.WriteByte(128);
         if (!IsEmpty())
         {
             if (!explicitly)
             {
                 IEnumerable enumerable;
                 if (base.obj is Asn1OctetString)
                 {
                     if (base.obj is BerOctetString)
                     {
                         enumerable = (BerOctetString)base.obj;
                     }
                     else
                     {
                         Asn1OctetString asn1OctetString = (Asn1OctetString)base.obj;
                         enumerable = new BerOctetString(asn1OctetString.GetOctets());
                     }
                 }
                 else if (base.obj is Asn1Sequence)
                 {
                     enumerable = (Asn1Sequence)base.obj;
                 }
                 else
                 {
                     if (!(base.obj is Asn1Set))
                     {
                         throw Platform.CreateNotImplementedException(Platform.GetTypeName(base.obj));
                     }
                     enumerable = (Asn1Set)base.obj;
                 }
                 foreach (Asn1Encodable item in enumerable)
                 {
                     derOut.WriteObject(item);
                 }
             }
             else
             {
                 derOut.WriteObject(obj);
             }
         }
         derOut.WriteByte(0);
         derOut.WriteByte(0);
     }
     else
     {
         base.Encode(derOut);
     }
 }
Example #4
0
 internal override void Encode(DerOutputStream derOut)
 {
     if (!IsEmpty())
     {
         byte[] derEncoded = obj.GetDerEncoded();
         if (explicitly)
         {
             derOut.WriteEncoded(160, tagNo, derEncoded);
             return;
         }
         int flags = (derEncoded[0] & 0x20) | 0x80;
         derOut.WriteTag(flags, tagNo);
         derOut.Write(derEncoded, 1, derEncoded.Length - 1);
     }
     else
     {
         derOut.WriteEncoded(160, tagNo, new byte[0]);
     }
 }