From 9f36987f992075b2f61214f6d83433efd597e93e Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Fri, 21 Jul 2023 00:26:34 +0700 Subject: Refactoring in Asn1.Cmp --- crypto/src/asn1/cmp/CAKeyUpdAnnContent.cs | 7 +-- crypto/src/asn1/cmp/CertConfirmContent.cs | 14 ++---- crypto/src/asn1/cmp/CertOrEncCert.cs | 9 ++-- crypto/src/asn1/cmp/CertRepMessage.cs | 14 ++---- crypto/src/asn1/cmp/CertReqTemplateContent.cs | 5 +- crypto/src/asn1/cmp/CertResponse.cs | 23 ++++----- crypto/src/asn1/cmp/CertStatus.cs | 18 ++++--- crypto/src/asn1/cmp/CertifiedKeyPair.cs | 5 +- crypto/src/asn1/cmp/Challenge.cs | 11 ++--- crypto/src/asn1/cmp/CrlAnnContent.cs | 12 ++--- crypto/src/asn1/cmp/CrlSource.cs | 16 ++++--- crypto/src/asn1/cmp/CrlStatus.cs | 2 +- crypto/src/asn1/cmp/DhbmParameter.cs | 7 +-- crypto/src/asn1/cmp/ErrorMsgContent.cs | 15 ++---- crypto/src/asn1/cmp/GenMsgContent.cs | 13 ++--- crypto/src/asn1/cmp/GenRepContent.cs | 13 ++--- crypto/src/asn1/cmp/InfoTypeAndValue.cs | 2 +- crypto/src/asn1/cmp/KeyRecRepContent.cs | 17 +++---- crypto/src/asn1/cmp/NestedMessageContent.cs | 4 +- crypto/src/asn1/cmp/OobCertHash.cs | 12 +++-- crypto/src/asn1/cmp/PKIBody.cs | 5 +- crypto/src/asn1/cmp/PKIConfirmContent.cs | 7 +-- crypto/src/asn1/cmp/PKIFreeText.cs | 12 ++--- crypto/src/asn1/cmp/PKIHeader.cs | 9 ++-- crypto/src/asn1/cmp/PKIHeaderBuilder.cs | 3 +- crypto/src/asn1/cmp/PKIMessage.cs | 68 ++++++++++----------------- crypto/src/asn1/cmp/PKIMessages.cs | 12 ++--- crypto/src/asn1/cmp/PKIStatus.cs | 14 ++---- crypto/src/asn1/cmp/PKIStatusInfo.cs | 52 +++++++++++--------- crypto/src/asn1/cmp/PbmParameter.cs | 11 ++--- crypto/src/asn1/cmp/PollRepContent.cs | 2 +- crypto/src/asn1/cmp/PollReqContent.cs | 7 +-- crypto/src/asn1/cmp/PopoDecKeyChallContent.cs | 12 ++--- crypto/src/asn1/cmp/PopoDecKeyRespContent.cs | 12 ++--- crypto/src/asn1/cmp/ProtectedPart.cs | 7 +-- crypto/src/asn1/cmp/RevAnnContent.cs | 7 +-- crypto/src/asn1/cmp/RevDetails.cs | 5 +- crypto/src/asn1/cmp/RevRepContent.cs | 20 +++----- crypto/src/asn1/cmp/RevRepContentBuilder.cs | 2 +- crypto/src/asn1/cmp/RevReqContent.cs | 12 ++--- crypto/src/asn1/cmp/RootCaKeyUpdateContent.cs | 10 ++-- 41 files changed, 200 insertions(+), 308 deletions(-) diff --git a/crypto/src/asn1/cmp/CAKeyUpdAnnContent.cs b/crypto/src/asn1/cmp/CAKeyUpdAnnContent.cs index d39c57bc9..4460c8265 100644 --- a/crypto/src/asn1/cmp/CAKeyUpdAnnContent.cs +++ b/crypto/src/asn1/cmp/CAKeyUpdAnnContent.cs @@ -14,7 +14,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static CAKeyUpdAnnContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new CAKeyUpdAnnContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly CmpCertificate m_oldWithNew; @@ -44,9 +44,6 @@ namespace Org.BouncyCastle.Asn1.Cmp * * @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return new DerSequence(m_oldWithNew, m_newWithOld, m_newWithNew); - } + public override Asn1Object ToAsn1Object() => new DerSequence(m_oldWithNew, m_newWithOld, m_newWithNew); } } diff --git a/crypto/src/asn1/cmp/CertConfirmContent.cs b/crypto/src/asn1/cmp/CertConfirmContent.cs index e11826d6b..61b7451b4 100644 --- a/crypto/src/asn1/cmp/CertConfirmContent.cs +++ b/crypto/src/asn1/cmp/CertConfirmContent.cs @@ -14,7 +14,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static CertConfirmContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new CertConfirmContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly Asn1Sequence m_content; @@ -24,20 +24,14 @@ namespace Org.BouncyCastle.Asn1.Cmp m_content = seq; } - public virtual CertStatus[] ToCertStatusArray() - { - return m_content.MapElements(CertStatus.GetInstance); - } + public virtual CertStatus[] ToCertStatusArray() => m_content.MapElements(CertStatus.GetInstance); - /** + /** *
 		 * CertConfirmContent ::= SEQUENCE OF CertStatus
 		 * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_content; - } + public override Asn1Object ToAsn1Object() => m_content; } } diff --git a/crypto/src/asn1/cmp/CertOrEncCert.cs b/crypto/src/asn1/cmp/CertOrEncCert.cs index d248de1aa..94df00006 100644 --- a/crypto/src/asn1/cmp/CertOrEncCert.cs +++ b/crypto/src/asn1/cmp/CertOrEncCert.cs @@ -26,17 +26,18 @@ namespace Org.BouncyCastle.Asn1.Cmp private CertOrEncCert(Asn1TaggedObject taggedObject) { - if (taggedObject.TagNo == 0) + if (taggedObject.HasContextTag(0)) { m_certificate = CmpCertificate.GetInstance(taggedObject.GetExplicitBaseObject()); } - else if (taggedObject.TagNo == 1) + else if (taggedObject.HasContextTag(1)) { m_encryptedCert = EncryptedKey.GetInstance(taggedObject.GetExplicitBaseObject()); } else { - throw new ArgumentException("unknown tag: " + taggedObject.TagNo, nameof(taggedObject)); + throw new ArgumentException("unknown tag: " + Asn1Utilities.GetTagText(taggedObject), + nameof(taggedObject)); } } @@ -60,6 +61,8 @@ namespace Org.BouncyCastle.Asn1.Cmp public virtual EncryptedKey EncryptedCert => m_encryptedCert; + public virtual bool HasEncryptedCertificate => m_encryptedCert != null; + /** *
 		 * CertOrEncCert ::= CHOICE {
diff --git a/crypto/src/asn1/cmp/CertRepMessage.cs b/crypto/src/asn1/cmp/CertRepMessage.cs
index 882816b86..9c260eadb 100644
--- a/crypto/src/asn1/cmp/CertRepMessage.cs
+++ b/crypto/src/asn1/cmp/CertRepMessage.cs
@@ -16,7 +16,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static CertRepMessage GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new CertRepMessage(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly Asn1Sequence m_caPubs;
@@ -39,7 +39,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 			if (response == null)
 				throw new ArgumentNullException(nameof(response));
 
-			if (caPubs != null)
+			if (caPubs != null && caPubs.Length > 0)
 			{
 				m_caPubs = new DerSequence(caPubs);
 			}
@@ -47,15 +47,9 @@ namespace Org.BouncyCastle.Asn1.Cmp
 			m_response = new DerSequence(response);
 		}
 
-		public virtual CmpCertificate[] GetCAPubs()
-		{
-			return m_caPubs == null ? null : m_caPubs.MapElements(CmpCertificate.GetInstance);
-		}
+		public virtual CmpCertificate[] GetCAPubs() => m_caPubs?.MapElements(CmpCertificate.GetInstance);
 
-		public virtual CertResponse[] GetResponse()
-		{
-            return m_response.MapElements(CertResponse.GetInstance);
-		}
+		public virtual CertResponse[] GetResponse() => m_response.MapElements(CertResponse.GetInstance);
 
 		/**
 		 * 
diff --git a/crypto/src/asn1/cmp/CertReqTemplateContent.cs b/crypto/src/asn1/cmp/CertReqTemplateContent.cs
index c08a9a293..ae35bc5e8 100644
--- a/crypto/src/asn1/cmp/CertReqTemplateContent.cs
+++ b/crypto/src/asn1/cmp/CertReqTemplateContent.cs
@@ -31,7 +31,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static CertReqTemplateContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new CertReqTemplateContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly CertTemplate m_certTemplate;
@@ -62,7 +62,8 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public override Asn1Object ToAsn1Object()
         {
-            Asn1EncodableVector v = new Asn1EncodableVector(m_certTemplate);
+            Asn1EncodableVector v = new Asn1EncodableVector(2);
+            v.Add(m_certTemplate);
             v.AddOptional(m_keySpec);
             return new DerSequence(v);
         }
diff --git a/crypto/src/asn1/cmp/CertResponse.cs b/crypto/src/asn1/cmp/CertResponse.cs
index e70d6d388..ce3355270 100644
--- a/crypto/src/asn1/cmp/CertResponse.cs
+++ b/crypto/src/asn1/cmp/CertResponse.cs
@@ -16,7 +16,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static CertResponse GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new CertResponse(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly DerInteger m_certReqId;
@@ -34,9 +34,9 @@ namespace Org.BouncyCastle.Asn1.Cmp
 				if (seq.Count == 3)
 				{
 					Asn1Encodable o = seq[2];
-					if (o is Asn1OctetString)
+					if (o is Asn1OctetString octetString)
 					{
-						m_rspInfo = Asn1OctetString.GetInstance(o);
+						m_rspInfo = octetString;
 					}
 					else
 					{
@@ -59,15 +59,9 @@ namespace Org.BouncyCastle.Asn1.Cmp
         public CertResponse(DerInteger certReqId, PkiStatusInfo status, CertifiedKeyPair certifiedKeyPair,
             Asn1OctetString rspInfo)
         {
-            if (certReqId == null)
-				throw new ArgumentNullException(nameof(certReqId));
-
-			if (status == null)
-				throw new ArgumentNullException(nameof(status));
-
-			m_certReqId = certReqId;
-			m_status = status;
-			m_certifiedKeyPair = certifiedKeyPair;
+			m_certReqId = certReqId ?? throw new ArgumentNullException(nameof(certReqId));
+			m_status = status ?? throw new ArgumentNullException(nameof(status));
+            m_certifiedKeyPair = certifiedKeyPair;
 			m_rspInfo = rspInfo;
 		}
 
@@ -77,6 +71,8 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
 		public virtual CertifiedKeyPair CertifiedKeyPair => m_certifiedKeyPair;
 
+		public virtual Asn1OctetString RspInfo => m_rspInfo;
+
 		/**
 		 * 
 		 * CertResponse ::= SEQUENCE {
@@ -95,7 +91,8 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 */
 		public override Asn1Object ToAsn1Object()
 		{
-			Asn1EncodableVector v = new Asn1EncodableVector(m_certReqId, m_status);
+			Asn1EncodableVector v = new Asn1EncodableVector(4);
+			v.Add(m_certReqId, m_status);
 			v.AddOptional(m_certifiedKeyPair, m_rspInfo);
 			return new DerSequence(v);
 		}
diff --git a/crypto/src/asn1/cmp/CertStatus.cs b/crypto/src/asn1/cmp/CertStatus.cs
index 37f0c29e8..b64a0fe84 100644
--- a/crypto/src/asn1/cmp/CertStatus.cs
+++ b/crypto/src/asn1/cmp/CertStatus.cs
@@ -19,7 +19,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static CertStatus GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new CertStatus(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly Asn1OctetString m_certHash;
@@ -43,8 +43,8 @@ namespace Org.BouncyCastle.Asn1.Cmp
 					}
 					if (p is Asn1TaggedObject dto)
 					{
-						if (dto.TagNo != 0)
-							throw new ArgumentException("unknown tag " + dto.TagNo);
+						if (!dto.HasContextTag(0))
+							throw new ArgumentException("unknown tag " + Asn1Utilities.GetTagText(dto));
 
 						m_hashAlg = AlgorithmIdentifier.GetInstance(dto, true);
 					}
@@ -56,14 +56,17 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		{
 			m_certHash = new DerOctetString(certHash);
 			m_certReqID = new DerInteger(certReqID);
-		}
+            m_statusInfo = null;
+            m_hashAlg = null;
+        }
 
-		public CertStatus(byte[] certHash, BigInteger certReqID, PkiStatusInfo statusInfo)
+        public CertStatus(byte[] certHash, BigInteger certReqID, PkiStatusInfo statusInfo)
 		{
             m_certHash = new DerOctetString(certHash);
             m_certReqID = new DerInteger(certReqID);
             m_statusInfo = statusInfo;
-		}
+            m_hashAlg = null;
+        }
 
         public CertStatus(byte[] certHash, BigInteger certReqID, PkiStatusInfo statusInfo, AlgorithmIdentifier hashAlg)
         {
@@ -97,7 +100,8 @@ namespace Org.BouncyCastle.Asn1.Cmp
          */
         public override Asn1Object ToAsn1Object()
 		{
-			Asn1EncodableVector v = new Asn1EncodableVector(m_certHash, m_certReqID);
+			Asn1EncodableVector v = new Asn1EncodableVector(4);
+			v.Add(m_certHash, m_certReqID);
 			v.AddOptional(m_statusInfo);
 			v.AddOptionalTagged(true, 0, m_hashAlg);
 			return new DerSequence(v);
diff --git a/crypto/src/asn1/cmp/CertifiedKeyPair.cs b/crypto/src/asn1/cmp/CertifiedKeyPair.cs
index 73828fda4..9c7fd8175 100644
--- a/crypto/src/asn1/cmp/CertifiedKeyPair.cs
+++ b/crypto/src/asn1/cmp/CertifiedKeyPair.cs
@@ -18,7 +18,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static CertifiedKeyPair GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new CertifiedKeyPair(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly CertOrEncCert m_certOrEncCert;
@@ -94,7 +94,8 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 */
 		public override Asn1Object ToAsn1Object()
 		{
-			Asn1EncodableVector v = new Asn1EncodableVector(m_certOrEncCert);
+			Asn1EncodableVector v = new Asn1EncodableVector(3);
+			v.Add(m_certOrEncCert);
             v.AddOptionalTagged(true, 0, m_privateKey);
             v.AddOptionalTagged(true, 1, m_publicationInfo);
 			return new DerSequence(v);
diff --git a/crypto/src/asn1/cmp/Challenge.cs b/crypto/src/asn1/cmp/Challenge.cs
index b86c3d800..4e30dcb55 100644
--- a/crypto/src/asn1/cmp/Challenge.cs
+++ b/crypto/src/asn1/cmp/Challenge.cs
@@ -44,7 +44,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static Challenge GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new Challenge(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly AlgorithmIdentifier m_owf;
@@ -111,7 +111,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 */
         public override Asn1Object ToAsn1Object()
 		{
-			Asn1EncodableVector v = new Asn1EncodableVector(2);
+			Asn1EncodableVector v = new Asn1EncodableVector(3);
 			v.AddOptional(m_owf);
 			v.Add(m_witness, m_challenge);
 			return new DerSequence(v);
@@ -134,7 +134,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
             public static Rand GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
             {
-                return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+                return new Rand(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
             }
 
             private readonly DerInteger m_intVal;
@@ -159,10 +159,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
 			public virtual GeneralName Sender => m_sender;
 
-			public override Asn1Object ToAsn1Object()
-			{
-                return new DerSequence(m_intVal, m_sender);
-            }
+			public override Asn1Object ToAsn1Object() => new DerSequence(m_intVal, m_sender);
         }
 	}
 }
diff --git a/crypto/src/asn1/cmp/CrlAnnContent.cs b/crypto/src/asn1/cmp/CrlAnnContent.cs
index ac8fc0458..fb566c17f 100644
--- a/crypto/src/asn1/cmp/CrlAnnContent.cs
+++ b/crypto/src/asn1/cmp/CrlAnnContent.cs
@@ -16,7 +16,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static CrlAnnContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new CrlAnnContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly Asn1Sequence m_content;
@@ -31,10 +31,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
             m_content = new DerSequence(crl);
         }
 
-        public virtual CertificateList[] ToCertificateListArray()
-		{
-			return m_content.MapElements(CertificateList.GetInstance);
-		}
+        public virtual CertificateList[] ToCertificateListArray() => m_content.MapElements(CertificateList.GetInstance);
 
 		/**
 		 * 
@@ -42,9 +39,6 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_content; - } + public override Asn1Object ToAsn1Object() => m_content; } } diff --git a/crypto/src/asn1/cmp/CrlSource.cs b/crypto/src/asn1/cmp/CrlSource.cs index 6203b17c7..61fc96b32 100644 --- a/crypto/src/asn1/cmp/CrlSource.cs +++ b/crypto/src/asn1/cmp/CrlSource.cs @@ -36,18 +36,20 @@ namespace Org.BouncyCastle.Asn1.Cmp private CrlSource(Asn1TaggedObject taggedObject) { - switch (taggedObject.TagNo) + if (taggedObject.HasContextTag(0)) { - case 0: m_dpn = DistributionPointName.GetInstance(taggedObject, true); m_issuer = null; - break; - case 1: + } + else if (taggedObject.HasContextTag(1)) + { m_dpn = null; m_issuer = GeneralNames.GetInstance(taggedObject, true); - break; - default: - throw new ArgumentException("unknown tag: " + Asn1Utilities.GetTagText(taggedObject)); + } + else + { + throw new ArgumentException("unknown tag " + Asn1Utilities.GetTagText(taggedObject), + nameof(taggedObject)); } } diff --git a/crypto/src/asn1/cmp/CrlStatus.cs b/crypto/src/asn1/cmp/CrlStatus.cs index 6cd01c945..f5cf091f4 100644 --- a/crypto/src/asn1/cmp/CrlStatus.cs +++ b/crypto/src/asn1/cmp/CrlStatus.cs @@ -23,7 +23,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static CrlStatus GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new CrlStatus(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly CrlSource m_source; diff --git a/crypto/src/asn1/cmp/DhbmParameter.cs b/crypto/src/asn1/cmp/DhbmParameter.cs index 12b8d91d3..1b44b732e 100644 --- a/crypto/src/asn1/cmp/DhbmParameter.cs +++ b/crypto/src/asn1/cmp/DhbmParameter.cs @@ -26,7 +26,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static DhbmParameter GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new DhbmParameter(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly AlgorithmIdentifier m_owf; @@ -51,9 +51,6 @@ namespace Org.BouncyCastle.Asn1.Cmp public virtual AlgorithmIdentifier Mac => m_mac; - public override Asn1Object ToAsn1Object() - { - return new DerSequence(m_owf, m_mac); - } + public override Asn1Object ToAsn1Object() => new DerSequence(m_owf, m_mac); } } diff --git a/crypto/src/asn1/cmp/ErrorMsgContent.cs b/crypto/src/asn1/cmp/ErrorMsgContent.cs index 0937d85d4..44646313e 100644 --- a/crypto/src/asn1/cmp/ErrorMsgContent.cs +++ b/crypto/src/asn1/cmp/ErrorMsgContent.cs @@ -27,7 +27,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static ErrorMsgContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new ErrorMsgContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly PkiStatusInfo m_pkiStatusInfo; @@ -57,15 +57,9 @@ namespace Org.BouncyCastle.Asn1.Cmp { } - public ErrorMsgContent( - PkiStatusInfo pkiStatusInfo, - DerInteger errorCode, - PkiFreeText errorDetails) + public ErrorMsgContent(PkiStatusInfo pkiStatusInfo, DerInteger errorCode, PkiFreeText errorDetails) { - if (pkiStatusInfo == null) - throw new ArgumentNullException(nameof(pkiStatusInfo)); - - m_pkiStatusInfo = pkiStatusInfo; + m_pkiStatusInfo = pkiStatusInfo ?? throw new ArgumentNullException(nameof(pkiStatusInfo)); m_errorCode = errorCode; m_errorDetails = errorDetails; } @@ -90,7 +84,8 @@ namespace Org.BouncyCastle.Asn1.Cmp */ public override Asn1Object ToAsn1Object() { - Asn1EncodableVector v = new Asn1EncodableVector(m_pkiStatusInfo); + Asn1EncodableVector v = new Asn1EncodableVector(3); + v.Add(m_pkiStatusInfo); v.AddOptional(m_errorCode, m_errorDetails); return new DerSequence(v); } diff --git a/crypto/src/asn1/cmp/GenMsgContent.cs b/crypto/src/asn1/cmp/GenMsgContent.cs index 11c0c8b3b..378f8e5d6 100644 --- a/crypto/src/asn1/cmp/GenMsgContent.cs +++ b/crypto/src/asn1/cmp/GenMsgContent.cs @@ -17,7 +17,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static GenMsgContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new GenMsgContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly Asn1Sequence m_content; @@ -37,10 +37,8 @@ namespace Org.BouncyCastle.Asn1.Cmp m_content = new DerSequence(itvs); } - public virtual InfoTypeAndValue[] ToInfoTypeAndValueArray() - { - return m_content.MapElements(InfoTypeAndValue.GetInstance); - } + public virtual InfoTypeAndValue[] ToInfoTypeAndValueArray() => + m_content.MapElements(InfoTypeAndValue.GetInstance); /** *
@@ -48,9 +46,6 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_content; - } + public override Asn1Object ToAsn1Object() => m_content; } } diff --git a/crypto/src/asn1/cmp/GenRepContent.cs b/crypto/src/asn1/cmp/GenRepContent.cs index 1de37e094..f155e691e 100644 --- a/crypto/src/asn1/cmp/GenRepContent.cs +++ b/crypto/src/asn1/cmp/GenRepContent.cs @@ -14,7 +14,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static GenRepContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new GenRepContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly Asn1Sequence m_content; @@ -34,10 +34,8 @@ namespace Org.BouncyCastle.Asn1.Cmp m_content = new DerSequence(itvs); } - public virtual InfoTypeAndValue[] ToInfoTypeAndValueArray() - { - return m_content.MapElements(InfoTypeAndValue.GetInstance); - } + public virtual InfoTypeAndValue[] ToInfoTypeAndValueArray() => + m_content.MapElements(InfoTypeAndValue.GetInstance); /** *
@@ -45,9 +43,6 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_content; - } + public override Asn1Object ToAsn1Object() => m_content; } } diff --git a/crypto/src/asn1/cmp/InfoTypeAndValue.cs b/crypto/src/asn1/cmp/InfoTypeAndValue.cs index ca6dc1fe5..03e055f10 100644 --- a/crypto/src/asn1/cmp/InfoTypeAndValue.cs +++ b/crypto/src/asn1/cmp/InfoTypeAndValue.cs @@ -61,7 +61,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static InfoTypeAndValue GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new InfoTypeAndValue(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly DerObjectIdentifier m_infoType; diff --git a/crypto/src/asn1/cmp/KeyRecRepContent.cs b/crypto/src/asn1/cmp/KeyRecRepContent.cs index 8121988d2..e465346eb 100644 --- a/crypto/src/asn1/cmp/KeyRecRepContent.cs +++ b/crypto/src/asn1/cmp/KeyRecRepContent.cs @@ -16,7 +16,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static KeyRecRepContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new KeyRecRepContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly PkiStatusInfo m_status; @@ -44,7 +44,7 @@ namespace Org.BouncyCastle.Asn1.Cmp m_keyPairHist = Asn1Sequence.GetInstance(tObj.GetExplicitBaseObject()); break; default: - throw new ArgumentException("unknown tag number: " + tObj.TagNo, "seq"); + throw new ArgumentException("unknown tag number: " + tObj.TagNo); } } } @@ -53,15 +53,9 @@ namespace Org.BouncyCastle.Asn1.Cmp public virtual CmpCertificate NewSigCert => m_newSigCert; - public virtual CmpCertificate[] GetCACerts() - { - return m_caCerts?.MapElements(CmpCertificate.GetInstance); - } + public virtual CmpCertificate[] GetCACerts() => m_caCerts?.MapElements(CmpCertificate.GetInstance); - public virtual CertifiedKeyPair[] GetKeyPairHist() - { - return m_keyPairHist?.MapElements(CertifiedKeyPair.GetInstance); - } + public virtual CertifiedKeyPair[] GetKeyPairHist() => m_keyPairHist?.MapElements(CertifiedKeyPair.GetInstance); /** *
@@ -78,7 +72,8 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 */
 		public override Asn1Object ToAsn1Object()
 		{
-			Asn1EncodableVector v = new Asn1EncodableVector(m_status);
+			Asn1EncodableVector v = new Asn1EncodableVector(4);
+			v.Add(m_status);
             v.AddOptionalTagged(true, 0, m_newSigCert);
             v.AddOptionalTagged(true, 1, m_caCerts);
             v.AddOptionalTagged(true, 2, m_keyPairHist);
diff --git a/crypto/src/asn1/cmp/NestedMessageContent.cs b/crypto/src/asn1/cmp/NestedMessageContent.cs
index fc73fac1b..35daffabe 100644
--- a/crypto/src/asn1/cmp/NestedMessageContent.cs
+++ b/crypto/src/asn1/cmp/NestedMessageContent.cs
@@ -23,7 +23,9 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static new NestedMessageContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+#pragma warning disable CS0618 // Type or member is obsolete
+            return new NestedMessageContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+#pragma warning restore CS0618 // Type or member is obsolete
         }
 
         public NestedMessageContent(PkiMessage msg)
diff --git a/crypto/src/asn1/cmp/OobCertHash.cs b/crypto/src/asn1/cmp/OobCertHash.cs
index 95cbe0cf2..1e6224612 100644
--- a/crypto/src/asn1/cmp/OobCertHash.cs
+++ b/crypto/src/asn1/cmp/OobCertHash.cs
@@ -31,7 +31,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static OobCertHash GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new OobCertHash(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly AlgorithmIdentifier m_hashAlg;
@@ -48,15 +48,19 @@ namespace Org.BouncyCastle.Asn1.Cmp
 			{
 				Asn1TaggedObject tObj = (Asn1TaggedObject)seq[i];
 
-				if (tObj.TagNo == 0)
+				if (tObj.HasContextTag(0))
 				{
 					m_hashAlg = AlgorithmIdentifier.GetInstance(tObj, true);
 				}
-				else
+				else if (tObj.HasContextTag(1))
 				{
 					m_certId = CertId.GetInstance(tObj, true);
 				}
-			}
+				else
+				{
+                    throw new ArgumentException("unknown tag " + Asn1Utilities.GetTagText(tObj));
+                }
+            }
 		}
 
 		public virtual CertId CertID => m_certId;
diff --git a/crypto/src/asn1/cmp/PKIBody.cs b/crypto/src/asn1/cmp/PKIBody.cs
index 467a78c8d..19a1a03a1 100644
--- a/crypto/src/asn1/cmp/PKIBody.cs
+++ b/crypto/src/asn1/cmp/PKIBody.cs
@@ -202,9 +202,6 @@ namespace Org.BouncyCastle.Asn1.Cmp
          * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return new DerTaggedObject(true, m_tagNo, m_body); - } + public override Asn1Object ToAsn1Object() => new DerTaggedObject(true, m_tagNo, m_body); } } diff --git a/crypto/src/asn1/cmp/PKIConfirmContent.cs b/crypto/src/asn1/cmp/PKIConfirmContent.cs index 34a66f3f7..6cc5b6ae6 100644 --- a/crypto/src/asn1/cmp/PKIConfirmContent.cs +++ b/crypto/src/asn1/cmp/PKIConfirmContent.cs @@ -19,7 +19,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static PkiConfirmContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Null.GetInstance(taggedObject, declaredExplicit)); + return new PkiConfirmContent(Asn1Null.GetInstance(taggedObject, declaredExplicit)); } private readonly Asn1Null m_val; @@ -40,9 +40,6 @@ namespace Org.BouncyCastle.Asn1.Cmp *
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_val; - } + public override Asn1Object ToAsn1Object() => m_val; } } diff --git a/crypto/src/asn1/cmp/PKIFreeText.cs b/crypto/src/asn1/cmp/PKIFreeText.cs index f4d7e0967..a567852e4 100644 --- a/crypto/src/asn1/cmp/PKIFreeText.cs +++ b/crypto/src/asn1/cmp/PKIFreeText.cs @@ -16,7 +16,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static PkiFreeText GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new PkiFreeText(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly Asn1Sequence m_strings; @@ -65,19 +65,13 @@ namespace Org.BouncyCastle.Asn1.Cmp * @param index index of the string of interest * @return the string at index. */ - public DerUtf8String this[int index] - { - get { return (DerUtf8String)m_strings[index]; } - } + public DerUtf8String this[int index] => (DerUtf8String)m_strings[index]; /** *
 		 * PkiFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
 		 * 
*/ - public override Asn1Object ToAsn1Object() - { - return m_strings; - } + public override Asn1Object ToAsn1Object() => m_strings; } } diff --git a/crypto/src/asn1/cmp/PKIHeader.cs b/crypto/src/asn1/cmp/PKIHeader.cs index 6914ae613..c000c8b98 100644 --- a/crypto/src/asn1/cmp/PKIHeader.cs +++ b/crypto/src/asn1/cmp/PKIHeader.cs @@ -1,7 +1,6 @@ using System; using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Utilities; namespace Org.BouncyCastle.Asn1.Cmp { @@ -27,7 +26,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static PkiHeader GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new PkiHeader(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly DerInteger pvno; @@ -52,8 +51,8 @@ namespace Org.BouncyCastle.Asn1.Cmp for (int pos = 3; pos < seq.Count; ++pos) { Asn1TaggedObject tObj = Asn1TaggedObject.GetInstance(seq[pos]); - if (Asn1Tags.ContextSpecific != tObj.TagClass) - continue; + if (!tObj.HasContextTag()) + throw new ArgumentException("unknown tag: " + Asn1Utilities.GetTagText(tObj)); switch (tObj.TagNo) { @@ -85,7 +84,7 @@ namespace Org.BouncyCastle.Asn1.Cmp generalInfo = Asn1Sequence.GetInstance(tObj, true); break; default: - throw new ArgumentException("unknown tag number: " + tObj.TagNo, nameof(seq)); + throw new ArgumentException("unknown tag number: " + tObj.TagNo); } } } diff --git a/crypto/src/asn1/cmp/PKIHeaderBuilder.cs b/crypto/src/asn1/cmp/PKIHeaderBuilder.cs index 6c7a2db63..914c8a8fa 100644 --- a/crypto/src/asn1/cmp/PKIHeaderBuilder.cs +++ b/crypto/src/asn1/cmp/PKIHeaderBuilder.cs @@ -176,7 +176,8 @@ namespace Org.BouncyCastle.Asn1.Cmp */ public virtual PkiHeader Build() { - Asn1EncodableVector v = new Asn1EncodableVector(pvno, sender, recipient); + Asn1EncodableVector v = new Asn1EncodableVector(12); + v.Add(pvno, sender, recipient); v.AddOptionalTagged(true, 0, messageTime); v.AddOptionalTagged(true, 1, protectionAlg); v.AddOptionalTagged(true, 2, senderKID); diff --git a/crypto/src/asn1/cmp/PKIMessage.cs b/crypto/src/asn1/cmp/PKIMessage.cs index 2265dd9b2..e835b6f16 100644 --- a/crypto/src/asn1/cmp/PKIMessage.cs +++ b/crypto/src/asn1/cmp/PKIMessage.cs @@ -16,18 +16,18 @@ namespace Org.BouncyCastle.Asn1.Cmp public static PkiMessage GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new PkiMessage(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } - private readonly PkiHeader header; - private readonly PkiBody body; - private readonly DerBitString protection; - private readonly Asn1Sequence extraCerts; + private readonly PkiHeader m_header; + private readonly PkiBody m_body; + private readonly DerBitString m_protection; + private readonly Asn1Sequence m_extraCerts; private PkiMessage(Asn1Sequence seq) { - header = PkiHeader.GetInstance(seq[0]); - body = PkiBody.GetInstance(seq[1]); + m_header = PkiHeader.GetInstance(seq[0]); + m_body = PkiBody.GetInstance(seq[1]); for (int pos = 2; pos < seq.Count; ++pos) { @@ -35,11 +35,11 @@ namespace Org.BouncyCastle.Asn1.Cmp if (tObj.HasContextTag(0)) { - protection = DerBitString.GetInstance(tObj, true); + m_protection = DerBitString.GetInstance(tObj, true); } else if (tObj.HasContextTag(1)) { - extraCerts = Asn1Sequence.GetInstance(tObj, true); + m_extraCerts = Asn1Sequence.GetInstance(tObj, true); } } } @@ -52,55 +52,34 @@ namespace Org.BouncyCastle.Asn1.Cmp * @param protection message protection (may be null) * @param extraCerts extra certificates (may be null) */ - public PkiMessage( - PkiHeader header, - PkiBody body, - DerBitString protection, - CmpCertificate[] extraCerts) + public PkiMessage(PkiHeader header, PkiBody body, DerBitString protection, CmpCertificate[] extraCerts) { - this.header = header; - this.body = body; - this.protection = protection; + m_header = header; + m_body = body; + m_protection = protection; if (extraCerts != null) { - this.extraCerts = new DerSequence(extraCerts); + m_extraCerts = new DerSequence(extraCerts); } } - public PkiMessage( - PkiHeader header, - PkiBody body, - DerBitString protection) + public PkiMessage(PkiHeader header, PkiBody body, DerBitString protection) : this(header, body, protection, null) { } - public PkiMessage( - PkiHeader header, - PkiBody body) + public PkiMessage(PkiHeader header, PkiBody body) : this(header, body, null, null) { } - public virtual PkiHeader Header - { - get { return header; } - } + public virtual PkiHeader Header => m_header; - public virtual PkiBody Body - { - get { return body; } - } + public virtual PkiBody Body => m_body; - public virtual DerBitString Protection - { - get { return protection; } - } + public virtual DerBitString Protection => m_protection; - public virtual CmpCertificate[] GetExtraCerts() - { - return extraCerts?.MapElements(CmpCertificate.GetInstance); - } + public virtual CmpCertificate[] GetExtraCerts() => m_extraCerts?.MapElements(CmpCertificate.GetInstance); /** *
@@ -116,9 +95,10 @@ namespace Org.BouncyCastle.Asn1.Cmp
          */
         public override Asn1Object ToAsn1Object()
         {
-            Asn1EncodableVector v = new Asn1EncodableVector(header, body);
-            v.AddOptionalTagged(true, 0, protection);
-            v.AddOptionalTagged(true, 1, extraCerts);
+            Asn1EncodableVector v = new Asn1EncodableVector(4);
+            v.Add(m_header, m_body);
+            v.AddOptionalTagged(true, 0, m_protection);
+            v.AddOptionalTagged(true, 1, m_extraCerts);
             return new DerSequence(v);
         }
     }
diff --git a/crypto/src/asn1/cmp/PKIMessages.cs b/crypto/src/asn1/cmp/PKIMessages.cs
index ea7550b9a..1396b615c 100644
--- a/crypto/src/asn1/cmp/PKIMessages.cs
+++ b/crypto/src/asn1/cmp/PKIMessages.cs
@@ -18,7 +18,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static PkiMessages GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new PkiMessages(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private Asn1Sequence m_content;
@@ -38,10 +38,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
             m_content = new DerSequence(msgs);
         }
 
-        public virtual PkiMessage[] ToPkiMessageArray()
-        {
-            return m_content.MapElements(PkiMessage.GetInstance);
-        }
+        public virtual PkiMessage[] ToPkiMessageArray() => m_content.MapElements(PkiMessage.GetInstance);
 
         /**
          * 
@@ -49,9 +46,6 @@ namespace Org.BouncyCastle.Asn1.Cmp
          * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_content; - } + public override Asn1Object ToAsn1Object() => m_content; } } diff --git a/crypto/src/asn1/cmp/PKIStatus.cs b/crypto/src/asn1/cmp/PKIStatus.cs index 72b0c7403..0a7e9e958 100644 --- a/crypto/src/asn1/cmp/PKIStatus.cs +++ b/crypto/src/asn1/cmp/PKIStatus.cs @@ -41,7 +41,7 @@ namespace Org.BouncyCastle.Asn1.Cmp return GetInstance(DerInteger.GetInstance(taggedObject, declaredExplicit)); } - private readonly DerInteger status; + private readonly DerInteger m_status; private PkiStatusEncodable(PkiStatus status) : this(new DerInteger((int)status)) @@ -50,17 +50,11 @@ namespace Org.BouncyCastle.Asn1.Cmp private PkiStatusEncodable(DerInteger status) { - this.status = status; + m_status = status; } - public virtual BigInteger Value - { - get { return status.Value; } - } + public virtual BigInteger Value => m_status.Value; - public override Asn1Object ToAsn1Object() - { - return status; - } + public override Asn1Object ToAsn1Object() => m_status; } } diff --git a/crypto/src/asn1/cmp/PKIStatusInfo.cs b/crypto/src/asn1/cmp/PKIStatusInfo.cs index 17473efc8..fbd180c6d 100644 --- a/crypto/src/asn1/cmp/PKIStatusInfo.cs +++ b/crypto/src/asn1/cmp/PKIStatusInfo.cs @@ -20,63 +20,68 @@ namespace Org.BouncyCastle.Asn1.Cmp public static PkiStatusInfo GetInstance(Asn1TaggedObject obj, bool isExplicit) { - return GetInstance(Asn1Sequence.GetInstance(obj, isExplicit)); +#pragma warning disable CS0618 // Type or member is obsolete + return new PkiStatusInfo(Asn1Sequence.GetInstance(obj, isExplicit)); +#pragma warning restore CS0618 // Type or member is obsolete } - private readonly DerInteger status; - private readonly PkiFreeText statusString; - private readonly DerBitString failInfo; + private readonly DerInteger m_status; + private readonly PkiFreeText m_statusString; + private readonly DerBitString m_failInfo; [Obsolete("Use 'GetInstance' instead")] public PkiStatusInfo(Asn1Sequence seq) { - this.status = DerInteger.GetInstance(seq[0]); + m_status = DerInteger.GetInstance(seq[0]); - this.statusString = null; - this.failInfo = null; + m_statusString = null; + m_failInfo = null; if (seq.Count > 2) { - this.statusString = PkiFreeText.GetInstance(seq[1]); - this.failInfo = DerBitString.GetInstance(seq[2]); + m_statusString = PkiFreeText.GetInstance(seq[1]); + m_failInfo = DerBitString.GetInstance(seq[2]); } else if (seq.Count > 1) { object obj = seq[1]; if (obj is DerBitString) { - this.failInfo = DerBitString.GetInstance(obj); + m_failInfo = DerBitString.GetInstance(obj); } else { - this.statusString = PkiFreeText.GetInstance(obj); + m_statusString = PkiFreeText.GetInstance(obj); } } } public PkiStatusInfo(int status) { - this.status = new DerInteger(status); + m_status = new DerInteger(status); + m_statusString = null; + m_failInfo = null; } public PkiStatusInfo(int status, PkiFreeText statusString) { - this.status = new DerInteger(status); - this.statusString = statusString; - } + m_status = new DerInteger(status); + m_statusString = statusString; + m_failInfo = null; + } public PkiStatusInfo(int status, PkiFreeText statusString, PkiFailureInfo failInfo) { - this.status = new DerInteger(status); - this.statusString = statusString; - this.failInfo = failInfo; + m_status = new DerInteger(status); + m_statusString = statusString; + m_failInfo = failInfo; } - public BigInteger Status => status.Value; + public BigInteger Status => m_status.Value; - public PkiFreeText StatusString => statusString; + public PkiFreeText StatusString => m_statusString; - public DerBitString FailInfo => failInfo; + public DerBitString FailInfo => m_failInfo; /** *
@@ -111,8 +116,9 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 */
 		public override Asn1Object ToAsn1Object()
 		{
-			Asn1EncodableVector v = new Asn1EncodableVector(status);
-            v.AddOptional(statusString, failInfo);
+			Asn1EncodableVector v = new Asn1EncodableVector(3);
+			v.Add(m_status);
+            v.AddOptional(m_statusString, m_failInfo);
 			return new DerSequence(v);
 		}
 	}
diff --git a/crypto/src/asn1/cmp/PbmParameter.cs b/crypto/src/asn1/cmp/PbmParameter.cs
index ae3fb5f8e..aeb91d7d0 100644
--- a/crypto/src/asn1/cmp/PbmParameter.cs
+++ b/crypto/src/asn1/cmp/PbmParameter.cs
@@ -1,6 +1,4 @@
-using System;
-
-using Org.BouncyCastle.Asn1.X509;
+using Org.BouncyCastle.Asn1.X509;
 
 namespace Org.BouncyCastle.Asn1.Cmp
 {
@@ -35,7 +33,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static PbmParameter GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new PbmParameter(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly Asn1OctetString m_salt;
@@ -93,9 +91,6 @@ namespace Org.BouncyCastle.Asn1.Cmp
          * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return new DerSequence(m_salt, m_owf, m_iterationCount, m_mac); - } + public override Asn1Object ToAsn1Object() => new DerSequence(m_salt, m_owf, m_iterationCount, m_mac); } } diff --git a/crypto/src/asn1/cmp/PollRepContent.cs b/crypto/src/asn1/cmp/PollRepContent.cs index e8af7b7e9..e81ce3278 100644 --- a/crypto/src/asn1/cmp/PollRepContent.cs +++ b/crypto/src/asn1/cmp/PollRepContent.cs @@ -20,7 +20,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static PollRepContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new PollRepContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly DerInteger[] m_certReqID; diff --git a/crypto/src/asn1/cmp/PollReqContent.cs b/crypto/src/asn1/cmp/PollReqContent.cs index 31320416e..ab89d26ec 100644 --- a/crypto/src/asn1/cmp/PollReqContent.cs +++ b/crypto/src/asn1/cmp/PollReqContent.cs @@ -16,7 +16,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static PollReqContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new PollReqContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly Asn1Sequence m_content; @@ -85,10 +85,7 @@ namespace Org.BouncyCastle.Asn1.Cmp *
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_content; - } + public override Asn1Object ToAsn1Object() => m_content; private static DerSequence[] IntsToSequence(DerInteger[] ids) { diff --git a/crypto/src/asn1/cmp/PopoDecKeyChallContent.cs b/crypto/src/asn1/cmp/PopoDecKeyChallContent.cs index 20dadd232..56f88af3d 100644 --- a/crypto/src/asn1/cmp/PopoDecKeyChallContent.cs +++ b/crypto/src/asn1/cmp/PopoDecKeyChallContent.cs @@ -16,7 +16,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static PopoDecKeyChallContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new PopoDecKeyChallContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly Asn1Sequence m_content; @@ -26,10 +26,7 @@ namespace Org.BouncyCastle.Asn1.Cmp m_content = seq; } - public virtual Challenge[] ToChallengeArray() - { - return m_content.MapElements(Challenge.GetInstance); - } + public virtual Challenge[] ToChallengeArray() => m_content.MapElements(Challenge.GetInstance); /** *
@@ -37,9 +34,6 @@ namespace Org.BouncyCastle.Asn1.Cmp
 	     * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_content; - } + public override Asn1Object ToAsn1Object() => m_content; } } diff --git a/crypto/src/asn1/cmp/PopoDecKeyRespContent.cs b/crypto/src/asn1/cmp/PopoDecKeyRespContent.cs index 8344e4ae9..a77cc15cd 100644 --- a/crypto/src/asn1/cmp/PopoDecKeyRespContent.cs +++ b/crypto/src/asn1/cmp/PopoDecKeyRespContent.cs @@ -14,7 +14,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static PopoDecKeyRespContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new PopoDecKeyRespContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly Asn1Sequence m_content; @@ -24,10 +24,7 @@ namespace Org.BouncyCastle.Asn1.Cmp m_content = seq; } - public virtual DerInteger[] ToIntegerArray() - { - return m_content.MapElements(DerInteger.GetInstance); - } + public virtual DerInteger[] ToIntegerArray() => m_content.MapElements(DerInteger.GetInstance); /** *
@@ -35,9 +32,6 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_content; - } + public override Asn1Object ToAsn1Object() => m_content; } } diff --git a/crypto/src/asn1/cmp/ProtectedPart.cs b/crypto/src/asn1/cmp/ProtectedPart.cs index 863a85e17..e6b6311df 100644 --- a/crypto/src/asn1/cmp/ProtectedPart.cs +++ b/crypto/src/asn1/cmp/ProtectedPart.cs @@ -14,7 +14,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static ProtectedPart GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new ProtectedPart(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly PkiHeader m_header; @@ -45,9 +45,6 @@ namespace Org.BouncyCastle.Asn1.Cmp *
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return new DerSequence(m_header, m_body); - } + public override Asn1Object ToAsn1Object() => new DerSequence(m_header, m_body); } } diff --git a/crypto/src/asn1/cmp/RevAnnContent.cs b/crypto/src/asn1/cmp/RevAnnContent.cs index 1d3957759..5ac731fb8 100644 --- a/crypto/src/asn1/cmp/RevAnnContent.cs +++ b/crypto/src/asn1/cmp/RevAnnContent.cs @@ -3,7 +3,7 @@ using Org.BouncyCastle.Asn1.X509; namespace Org.BouncyCastle.Asn1.Cmp { - public class RevAnnContent + public class RevAnnContent : Asn1Encodable { public static RevAnnContent GetInstance(object obj) @@ -17,7 +17,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static RevAnnContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new RevAnnContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly PkiStatusEncodable m_status; @@ -80,7 +80,8 @@ namespace Org.BouncyCastle.Asn1.Cmp */ public override Asn1Object ToAsn1Object() { - Asn1EncodableVector v = new Asn1EncodableVector(m_status, m_certID, m_willBeRevokedAt, m_badSinceDate); + Asn1EncodableVector v = new Asn1EncodableVector(5); + v.Add(m_status, m_certID, m_willBeRevokedAt, m_badSinceDate); v.AddOptional(m_crlDetails); return new DerSequence(v); } diff --git a/crypto/src/asn1/cmp/RevDetails.cs b/crypto/src/asn1/cmp/RevDetails.cs index 79b30044a..718a9ef71 100644 --- a/crypto/src/asn1/cmp/RevDetails.cs +++ b/crypto/src/asn1/cmp/RevDetails.cs @@ -29,7 +29,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static RevDetails GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new RevDetails(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly CertTemplate m_certDetails; @@ -75,7 +75,8 @@ namespace Org.BouncyCastle.Asn1.Cmp */ public override Asn1Object ToAsn1Object() { - Asn1EncodableVector v = new Asn1EncodableVector(m_certDetails); + Asn1EncodableVector v = new Asn1EncodableVector(2); + v.Add(m_certDetails); v.AddOptional(m_crlEntryDetails); return new DerSequence(v); } diff --git a/crypto/src/asn1/cmp/RevRepContent.cs b/crypto/src/asn1/cmp/RevRepContent.cs index 762df12cd..ae1d0baed 100644 --- a/crypto/src/asn1/cmp/RevRepContent.cs +++ b/crypto/src/asn1/cmp/RevRepContent.cs @@ -31,7 +31,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static RevRepContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new RevRepContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly Asn1Sequence m_status; @@ -57,20 +57,11 @@ namespace Org.BouncyCastle.Asn1.Cmp } } - public virtual PkiStatusInfo[] GetStatus() - { - return m_status.MapElements(PkiStatusInfo.GetInstance); - } + public virtual PkiStatusInfo[] GetStatus() => m_status.MapElements(PkiStatusInfo.GetInstance); - public virtual CertId[] GetRevCerts() - { - return m_revCerts?.MapElements(CertId.GetInstance); - } + public virtual CertId[] GetRevCerts() => m_revCerts?.MapElements(CertId.GetInstance); - public virtual CertificateList[] GetCrls() - { - return m_crls?.MapElements(CertificateList.GetInstance); - } + public virtual CertificateList[] GetCrls() => m_crls?.MapElements(CertificateList.GetInstance); /** *
@@ -88,7 +79,8 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 */
 		public override Asn1Object ToAsn1Object()
 		{
-			Asn1EncodableVector v = new Asn1EncodableVector(m_status);
+			Asn1EncodableVector v = new Asn1EncodableVector(3);
+			v.Add(m_status);
             v.AddOptionalTagged(true, 0, m_revCerts);
             v.AddOptionalTagged(true, 1, m_crls);
 			return new DerSequence(v);
diff --git a/crypto/src/asn1/cmp/RevRepContentBuilder.cs b/crypto/src/asn1/cmp/RevRepContentBuilder.cs
index 4ff85483e..2aa127dd3 100644
--- a/crypto/src/asn1/cmp/RevRepContentBuilder.cs
+++ b/crypto/src/asn1/cmp/RevRepContentBuilder.cs
@@ -5,7 +5,7 @@ using Org.BouncyCastle.Asn1.X509;
 
 namespace Org.BouncyCastle.Asn1.Cmp
 {
-	public class RevRepContentBuilder
+    public class RevRepContentBuilder
 	{
 		private readonly Asn1EncodableVector m_status = new Asn1EncodableVector();
 		private readonly Asn1EncodableVector m_revCerts = new Asn1EncodableVector();
diff --git a/crypto/src/asn1/cmp/RevReqContent.cs b/crypto/src/asn1/cmp/RevReqContent.cs
index eea65869e..125fd8bdc 100644
--- a/crypto/src/asn1/cmp/RevReqContent.cs
+++ b/crypto/src/asn1/cmp/RevReqContent.cs
@@ -14,7 +14,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 
         public static RevReqContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
         {
-            return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
+            return new RevReqContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
         }
 
         private readonly Asn1Sequence m_content;
@@ -34,10 +34,7 @@ namespace Org.BouncyCastle.Asn1.Cmp
 			m_content = new DerSequence(revDetailsArray);
 		}
 
-		public virtual RevDetails[] ToRevDetailsArray()
-		{
-			return m_content.MapElements(RevDetails.GetInstance);
-		}
+		public virtual RevDetails[] ToRevDetailsArray() => m_content.MapElements(RevDetails.GetInstance);
 
 		/**
 		 * 
@@ -45,9 +42,6 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		 * 
* @return a basic ASN.1 object representation. */ - public override Asn1Object ToAsn1Object() - { - return m_content; - } + public override Asn1Object ToAsn1Object() => m_content; } } diff --git a/crypto/src/asn1/cmp/RootCaKeyUpdateContent.cs b/crypto/src/asn1/cmp/RootCaKeyUpdateContent.cs index 64da80d6c..f00090f23 100644 --- a/crypto/src/asn1/cmp/RootCaKeyUpdateContent.cs +++ b/crypto/src/asn1/cmp/RootCaKeyUpdateContent.cs @@ -31,7 +31,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public static RootCaKeyUpdateContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + return new RootCaKeyUpdateContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } private readonly CmpCertificate m_newWithNew; @@ -40,10 +40,7 @@ namespace Org.BouncyCastle.Asn1.Cmp public RootCaKeyUpdateContent(CmpCertificate newWithNew, CmpCertificate newWithOld, CmpCertificate oldWithNew) { - if (newWithNew == null) - throw new ArgumentNullException(nameof(newWithNew)); - - m_newWithNew = newWithNew; + m_newWithNew = newWithNew ?? throw new ArgumentNullException(nameof(newWithNew)); m_newWithOld = newWithOld; m_oldWithNew = oldWithNew; } @@ -84,7 +81,8 @@ namespace Org.BouncyCastle.Asn1.Cmp public override Asn1Object ToAsn1Object() { - Asn1EncodableVector v = new Asn1EncodableVector(m_newWithNew); + Asn1EncodableVector v = new Asn1EncodableVector(3); + v.Add(m_newWithNew); v.AddOptionalTagged(true, 0, m_newWithOld); v.AddOptionalTagged(true, 1, m_oldWithNew); return new DerSequence(v); -- cgit 1.4.1