summary refs log tree commit diff
path: root/crypto/src/asn1/cms/EnvelopedDataParser.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/asn1/cms/EnvelopedDataParser.cs')
-rw-r--r--crypto/src/asn1/cms/EnvelopedDataParser.cs18
1 files changed, 10 insertions, 8 deletions
diff --git a/crypto/src/asn1/cms/EnvelopedDataParser.cs b/crypto/src/asn1/cms/EnvelopedDataParser.cs

index 599353791..a86608bb4 100644 --- a/crypto/src/asn1/cms/EnvelopedDataParser.cs +++ b/crypto/src/asn1/cms/EnvelopedDataParser.cs
@@ -42,12 +42,14 @@ namespace Org.BouncyCastle.Asn1.Cms _nextObject = _seq.ReadObject(); } - if (_nextObject is Asn1TaggedObjectParser && ((Asn1TaggedObjectParser)_nextObject).TagNo == 0) + if (_nextObject is Asn1TaggedObjectParser o) { - Asn1SequenceParser originatorInfo = (Asn1SequenceParser) - ((Asn1TaggedObjectParser)_nextObject).GetObjectParser(Asn1Tags.Sequence, false); - _nextObject = null; - return OriginatorInfo.GetInstance(originatorInfo.ToAsn1Object()); + if (o.HasContextTag(0)) + { + Asn1SequenceParser originatorInfo = (Asn1SequenceParser)o.ParseBaseUniversal(false, Asn1Tags.Sequence); + _nextObject = null; + return OriginatorInfo.GetInstance(originatorInfo.ToAsn1Object()); + } } return null; @@ -96,11 +98,11 @@ namespace Org.BouncyCastle.Asn1.Cms if (_nextObject != null) { - IAsn1Convertible o = _nextObject; + Asn1TaggedObjectParser o = (Asn1TaggedObjectParser)_nextObject; _nextObject = null; - return (Asn1SetParser)((Asn1TaggedObjectParser)o).GetObjectParser(Asn1Tags.Set, false); + return (Asn1SetParser)Asn1Utilities.ParseContextBaseUniversal(o, 1, false, Asn1Tags.SetOf); } - + return null; } }