diff options
Diffstat (limited to 'crypto/src/asn1/Asn1InputStream.cs')
-rw-r--r-- | crypto/src/asn1/Asn1InputStream.cs | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/crypto/src/asn1/Asn1InputStream.cs b/crypto/src/asn1/Asn1InputStream.cs index 3f7a65cc9..d03c7a6b5 100644 --- a/crypto/src/asn1/Asn1InputStream.cs +++ b/crypto/src/asn1/Asn1InputStream.cs @@ -401,11 +401,12 @@ namespace Org.BouncyCastle.Asn1 switch (tagNo) { case Asn1Tags.BmpString: - return new DerBmpString(GetBmpCharBuffer(defIn)); + return DerBmpString.CreatePrimitive(GetBmpCharBuffer(defIn)); case Asn1Tags.Boolean: - return DerBoolean.FromOctetString(GetBuffer(defIn, tmpBuffers)); + return DerBoolean.CreatePrimitive(GetBuffer(defIn, tmpBuffers)); case Asn1Tags.Enumerated: - return DerEnumerated.FromOctetString(GetBuffer(defIn, tmpBuffers)); + // TODO Ideally only clone if we used a buffer + return DerEnumerated.CreatePrimitive(GetBuffer(defIn, tmpBuffers), true); case Asn1Tags.ObjectIdentifier: // TODO Ideally only clone if we used a buffer return DerObjectIdentifier.CreatePrimitive(GetBuffer(defIn, tmpBuffers), true); @@ -418,44 +419,39 @@ namespace Org.BouncyCastle.Asn1 case Asn1Tags.BitString: return DerBitString.CreatePrimitive(bytes); case Asn1Tags.GeneralizedTime: - return new DerGeneralizedTime(bytes); + return DerGeneralizedTime.CreatePrimitive(bytes); case Asn1Tags.GeneralString: - return new DerGeneralString(bytes); + return DerGeneralString.CreatePrimitive(bytes); case Asn1Tags.GraphicString: return DerGraphicString.CreatePrimitive(bytes); case Asn1Tags.IA5String: - return new DerIA5String(bytes); + return DerIA5String.CreatePrimitive(bytes); case Asn1Tags.Integer: - return new DerInteger(bytes, false); + return DerInteger.CreatePrimitive(bytes); case Asn1Tags.Null: - { - if (0 != bytes.Length) - throw new InvalidOperationException("malformed NULL encoding encountered"); - - return DerNull.Instance; - } + return Asn1Null.CreatePrimitive(bytes); case Asn1Tags.NumericString: - return new DerNumericString(bytes); + return DerNumericString.CreatePrimitive(bytes); case Asn1Tags.ObjectDescriptor: return Asn1ObjectDescriptor.CreatePrimitive(bytes); case Asn1Tags.OctetString: - return new DerOctetString(bytes); + return Asn1OctetString.CreatePrimitive(bytes); case Asn1Tags.PrintableString: - return new DerPrintableString(bytes); + return DerPrintableString.CreatePrimitive(bytes); case Asn1Tags.RelativeOid: return Asn1RelativeOid.CreatePrimitive(bytes, false); case Asn1Tags.T61String: - return new DerT61String(bytes); + return DerT61String.CreatePrimitive(bytes); case Asn1Tags.UniversalString: - return new DerUniversalString(bytes); + return DerUniversalString.CreatePrimitive(bytes); case Asn1Tags.UtcTime: - return new DerUtcTime(bytes); + return DerUtcTime.CreatePrimitive(bytes); case Asn1Tags.Utf8String: - return new DerUtf8String(bytes); + return DerUtf8String.CreatePrimitive(bytes); case Asn1Tags.VideotexString: - return new DerVideotexString(bytes); + return DerVideotexString.CreatePrimitive(bytes); case Asn1Tags.VisibleString: - return new DerVisibleString(bytes); + return DerVisibleString.CreatePrimitive(bytes); default: throw new IOException("unknown tag " + tagNo + " encountered"); } |