internal static Asn1Object CreatePrimitiveDerObject(int tagNo, DefiniteLengthInputStream defIn, byte[][] tmpBuffers)
{
if (tagNo == 1)
{
return(DerBoolean.FromOctetString(Asn1InputStream.GetBuffer(defIn, tmpBuffers)));
}
if (tagNo == 6)
{
return(DerObjectIdentifier.FromOctetString(Asn1InputStream.GetBuffer(defIn, tmpBuffers)));
}
if (tagNo != 10)
{
byte[] array = defIn.ToArray();
switch (tagNo)
{
case 2:
return(new DerInteger(array));
case 3:
return(DerBitString.FromAsn1Octets(array));
case 4:
return(new DerOctetString(array));
case 5:
return(DerNull.Instance);
case 12:
return(new DerUtf8String(array));
case 18:
return(new DerNumericString(array));
case 19:
return(new DerPrintableString(array));
case 20:
return(new DerT61String(array));
case 22:
return(new DerIA5String(array));
case 23:
return(new DerUtcTime(array));
case 24:
return(new DerGeneralizedTime(array));
case 26:
return(new DerVisibleString(array));
case 27:
return(new DerGeneralString(array));
case 28:
return(new DerUniversalString(array));
case 30:
return(new DerBmpString(array));
}
throw new IOException("unknown tag " + tagNo + " encountered");
}
return(DerEnumerated.FromOctetString(Asn1InputStream.GetBuffer(defIn, tmpBuffers)));
}