summary refs log tree commit diff
path: root/crypto/src/asn1/cmp/CertRepMessage.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/asn1/cmp/CertRepMessage.cs')
-rw-r--r--crypto/src/asn1/cmp/CertRepMessage.cs13
1 files changed, 7 insertions, 6 deletions
diff --git a/crypto/src/asn1/cmp/CertRepMessage.cs b/crypto/src/asn1/cmp/CertRepMessage.cs
index 9c260eadb..9e7fae2e2 100644
--- a/crypto/src/asn1/cmp/CertRepMessage.cs
+++ b/crypto/src/asn1/cmp/CertRepMessage.cs
@@ -24,14 +24,15 @@ namespace Org.BouncyCastle.Asn1.Cmp
 		
 		private CertRepMessage(Asn1Sequence seq)
 		{
-			int index = 0;
+            int count = seq.Count, pos = 0;
+            if (count < 1 || count > 2)
+                throw new ArgumentException("Bad sequence size: " + count, nameof(seq));
 
-			if (seq.Count > 1)
-			{
-				m_caPubs = Asn1Sequence.GetInstance((Asn1TaggedObject)seq[index++], true);
-			}
+			m_caPubs = Asn1Utilities.ReadOptionalContextTagged(seq, ref pos, 1, true, Asn1Sequence.GetInstance);
+			m_response = Asn1Sequence.GetInstance(seq[pos++]);
 
-			m_response = Asn1Sequence.GetInstance(seq[index]);
+			if (pos != count)
+                throw new ArgumentException("Unexpected elements in sequence", nameof(seq));
 		}
 
 		public CertRepMessage(CmpCertificate[] caPubs, CertResponse[] response)