Org.BouncyCastle.Asn1.BerTaggedObjectParser.GetObjectParser C# (CSharp) Method

GetObjectParser() public method

public GetObjectParser ( int tag, bool isExplicit ) : IAsn1Convertible
tag int
isExplicit bool
return IAsn1Convertible
		public IAsn1Convertible GetObjectParser(
			int		tag,
			bool	isExplicit)
		{
			if (isExplicit)
			{
				return new Asn1StreamParser(_contentStream).ReadObject();
			}

			switch (tag)
			{
				case Asn1Tags.Set:
					if (_indefiniteLength)
					{
						return new BerSetParser(new Asn1StreamParser(_contentStream));
					}
					else
					{
						return new DerSetParser(new Asn1StreamParser(_contentStream));
					}
				case Asn1Tags.Sequence:
					if (_indefiniteLength)
					{
						return new BerSequenceParser(new Asn1StreamParser(_contentStream));
					}
					else
					{
						return new DerSequenceParser(new Asn1StreamParser(_contentStream));
					}
				case Asn1Tags.OctetString:
					// TODO Is the handling of definite length constructed encodings correct?
					if (_indefiniteLength || IsConstructed)
					{
						return new BerOctetStringParser(new Asn1StreamParser(_contentStream));
					}
					else
					{
						return new DerOctetStringParser((DefiniteLengthInputStream)_contentStream);
					}
			}

			throw Platform.CreateNotImplementedException("implicit tagging");
		}