diff options
Diffstat (limited to 'crypto/src/asn1/cmp/CertRepMessage.cs')
-rw-r--r-- | crypto/src/asn1/cmp/CertRepMessage.cs | 13 |
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) |