summary refs log tree commit diff
path: root/crypto/src/asn1/cms/AuthEnvelopedDataParser.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/asn1/cms/AuthEnvelopedDataParser.cs')
-rw-r--r--crypto/src/asn1/cms/AuthEnvelopedDataParser.cs23
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;