1 files changed, 12 insertions, 11 deletions
diff --git a/crypto/src/asn1/cms/AuthEnvelopedDataParser.cs b/crypto/src/asn1/cms/AuthEnvelopedDataParser.cs
index 1e1e72c02..e61754e65 100644
--- a/crypto/src/asn1/cms/AuthEnvelopedDataParser.cs
+++ b/crypto/src/asn1/cms/AuthEnvelopedDataParser.cs
@@ -49,11 +49,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;
@@ -102,15 +105,13 @@ namespace Org.BouncyCastle.Asn1.Cms
nextObject = seq.ReadObject();
}
- if (nextObject is Asn1TaggedObjectParser)
+ if (nextObject is Asn1TaggedObjectParser o)
{
- IAsn1Convertible o = nextObject;
nextObject = null;
- return (Asn1SetParser)((Asn1TaggedObjectParser)o).GetObjectParser(Asn1Tags.Set, false);
+ return (Asn1SetParser)Asn1Utilities.ParseContextBaseUniversal(o, 1, false, Asn1Tags.SetOf);
}
- // "The authAttrs MUST be present if the content type carried in
- // EncryptedContentInfo is not id-data."
+ // "The authAttrs MUST be present if the content type carried in EncryptedContentInfo is not id-data."
if (!isData)
throw new Asn1ParsingException("authAttrs must be present with non-data content");
@@ -139,9 +140,9 @@ 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, 2, false, Asn1Tags.SetOf);
}
return null;
|