summary refs log tree commit diff
path: root/crypto/src/asn1/cmp/CertOrEncCert.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/asn1/cmp/CertOrEncCert.cs')
-rw-r--r--crypto/src/asn1/cmp/CertOrEncCert.cs35
1 files changed, 15 insertions, 20 deletions
diff --git a/crypto/src/asn1/cmp/CertOrEncCert.cs b/crypto/src/asn1/cmp/CertOrEncCert.cs
index e517b66ce..1423503d2 100644
--- a/crypto/src/asn1/cmp/CertOrEncCert.cs
+++ b/crypto/src/asn1/cmp/CertOrEncCert.cs
@@ -1,7 +1,6 @@
 using System;
 
 using Org.BouncyCastle.Asn1.Crmf;
-using Org.BouncyCastle.Utilities;
 
 namespace Org.BouncyCastle.Asn1.Cmp
 {
@@ -10,13 +9,16 @@ namespace Org.BouncyCastle.Asn1.Cmp
 	{
         public static CertOrEncCert GetInstance(object obj)
         {
+			if (obj == null)
+				return null;
             if (obj is CertOrEncCert certOrEncCert)
                 return certOrEncCert;
+            return new CertOrEncCert(Asn1TaggedObject.GetInstance(obj));
+        }
 
-            if (obj is Asn1TaggedObject taggedObject)
-                return new CertOrEncCert(taggedObject);
-
-            throw new ArgumentException("Invalid object: " + Platform.GetTypeName(obj), nameof(obj));
+        public static CertOrEncCert GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
+        {
+            return Asn1Utilities.GetInstanceFromChoice(taggedObject, declaredExplicit, GetInstance);
         }
 
         private readonly CmpCertificate m_certificate;
@@ -40,26 +42,18 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
 		public CertOrEncCert(CmpCertificate certificate)
 		{
-			if (certificate == null)
-				throw new ArgumentNullException(nameof(certificate));
-
-			m_certificate = certificate;
-		}
+			m_certificate = certificate ?? throw new ArgumentNullException(nameof(certificate));
+        }
 
 		public CertOrEncCert(EncryptedValue encryptedValue)
 		{
-			if (encryptedValue == null)
-				throw new ArgumentNullException(nameof(encryptedValue));
-
-			m_encryptedCert = new EncryptedKey(encryptedValue);
+			m_encryptedCert = new EncryptedKey(
+				encryptedValue ?? throw new ArgumentNullException(nameof(encryptedValue)));
 		}
 
         public CertOrEncCert(EncryptedKey encryptedKey)
         {
-            if (encryptedKey == null)
-                throw new ArgumentNullException(nameof(encryptedKey));
-
-            m_encryptedCert = encryptedKey;
+            m_encryptedCert = encryptedKey ?? throw new ArgumentNullException(nameof(encryptedKey));
         }
 
 		public virtual CmpCertificate Certificate => m_certificate;
@@ -79,8 +73,9 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		{
 			if (m_certificate != null)
 				return new DerTaggedObject(true, 0, m_certificate);
-
-			return new DerTaggedObject(true, 1, m_encryptedCert);
+			if (m_encryptedCert != null)
+				return new DerTaggedObject(true, 1, m_encryptedCert);
+			throw new InvalidOperationException();
 		}
 	}
 }