summary refs log tree commit diff
path: root/crypto/src/asn1/cms
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/asn1/cms')
-rw-r--r--crypto/src/asn1/cms/ContentInfo.cs4
-rw-r--r--crypto/src/asn1/cms/Evidence.cs4
-rw-r--r--crypto/src/asn1/cms/OriginatorIdentifierOrKey.cs14
-rw-r--r--crypto/src/asn1/cms/Time.cs4
4 files changed, 9 insertions, 17 deletions
diff --git a/crypto/src/asn1/cms/ContentInfo.cs b/crypto/src/asn1/cms/ContentInfo.cs
index 847df6dd8..c8f9fc65b 100644
--- a/crypto/src/asn1/cms/ContentInfo.cs
+++ b/crypto/src/asn1/cms/ContentInfo.cs
@@ -37,11 +37,11 @@ namespace Org.BouncyCastle.Asn1.Cms
 
             if (seq.Count > 1)
             {
-                Asn1TaggedObject tagged = (Asn1TaggedObject) seq[1];
+                Asn1TaggedObject tagged = Asn1TaggedObject.GetInstance(seq[1], Asn1Tags.ContextSpecific);
                 if (!tagged.IsExplicit() || tagged.TagNo != 0)
                     throw new ArgumentException("Bad tag for 'content'", "seq");
 
-                content = tagged.GetObject();
+                content = tagged.GetExplicitBaseObject();
             }
         }
 
diff --git a/crypto/src/asn1/cms/Evidence.cs b/crypto/src/asn1/cms/Evidence.cs
index 2e39054d6..54d498cb9 100644
--- a/crypto/src/asn1/cms/Evidence.cs
+++ b/crypto/src/asn1/cms/Evidence.cs
@@ -41,14 +41,14 @@ namespace Org.BouncyCastle.Asn1.Cms
 				return evidence;
 
 			if (obj is Asn1TaggedObject taggedObject)
-				return new Evidence(taggedObject);
+				return new Evidence(Asn1Utilities.CheckTagClass(taggedObject, Asn1Tags.ContextSpecific));
 
 			throw new ArgumentException("Unknown object in GetInstance: " + Platform.GetTypeName(obj), "obj");
 		}
 
         public static Evidence GetInstance(Asn1TaggedObject obj, bool isExplicit)
         {
-            return GetInstance(obj.GetObject()); // must be explicitly tagged
+            return Asn1Utilities.GetInstanceFromChoice(obj, isExplicit, GetInstance);
         }
 
 		public virtual TimeStampTokenEvidence TstEvidence
diff --git a/crypto/src/asn1/cms/OriginatorIdentifierOrKey.cs b/crypto/src/asn1/cms/OriginatorIdentifierOrKey.cs
index 01c5a31a1..6b4c0488e 100644
--- a/crypto/src/asn1/cms/OriginatorIdentifierOrKey.cs
+++ b/crypto/src/asn1/cms/OriginatorIdentifierOrKey.cs
@@ -40,17 +40,9 @@ namespace Org.BouncyCastle.Asn1.Cms
          * @exception ArgumentException if the object held by the
          *          tagged object cannot be converted.
          */
-        public static OriginatorIdentifierOrKey GetInstance(
-            Asn1TaggedObject	o,
-            bool				explicitly)
+        public static OriginatorIdentifierOrKey GetInstance(Asn1TaggedObject o, bool explicitly)
         {
-            if (!explicitly)
-            {
-                throw new ArgumentException(
-                        "Can't implicitly tag OriginatorIdentifierOrKey");
-            }
-
-			return GetInstance(o.GetObject());
+            return Asn1Utilities.GetInstanceFromChoice(o, explicitly, GetInstance);
         }
 
         /**
@@ -78,7 +70,7 @@ namespace Org.BouncyCastle.Asn1.Cms
 				return new OriginatorIdentifierOrKey(originatorPublicKey);
 
 			if (o is Asn1TaggedObject taggedObject)
-				return new OriginatorIdentifierOrKey(taggedObject);
+				return new OriginatorIdentifierOrKey(Asn1Utilities.CheckTagClass(taggedObject, Asn1Tags.ContextSpecific));
 
             throw new ArgumentException("Invalid OriginatorIdentifierOrKey: " + Platform.GetTypeName(o));
         }
diff --git a/crypto/src/asn1/cms/Time.cs b/crypto/src/asn1/cms/Time.cs
index 19bc1a633..f41433ddd 100644
--- a/crypto/src/asn1/cms/Time.cs
+++ b/crypto/src/asn1/cms/Time.cs
@@ -22,9 +22,9 @@ namespace Org.BouncyCastle.Asn1.Cms
             throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), nameof(obj));
         }
 
-        public static Time GetInstance(Asn1TaggedObject	taggedObject, bool declaredExplicit)
+        public static Time GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(taggedObject.GetObject());
+            return Asn1Utilities.GetInstanceFromChoice(taggedObject, declaredExplicit, GetInstance);
         }
 
         private readonly Asn1Object m_timeObject;