diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2024-06-05 18:33:27 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2024-06-05 18:33:27 +0700 |
commit | 215f7bad529b793fc0369fec0dad541d1f93ca7e (patch) | |
tree | b56e5bf37b9124b1a1ff2e6bd8c21e246d508638 /crypto/src/asn1/cmp/CertResponse.cs | |
parent | ASN.1: GetOptional method for all universal types (diff) | |
download | BouncyCastle.NET-ed25519-215f7bad529b793fc0369fec0dad541d1f93ca7e.tar.xz |
Refactoring in Asn1.Cmp
Diffstat (limited to 'crypto/src/asn1/cmp/CertResponse.cs')
-rw-r--r-- | crypto/src/asn1/cmp/CertResponse.cs | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/crypto/src/asn1/cmp/CertResponse.cs b/crypto/src/asn1/cmp/CertResponse.cs index ce3355270..0bebb3a01 100644 --- a/crypto/src/asn1/cmp/CertResponse.cs +++ b/crypto/src/asn1/cmp/CertResponse.cs @@ -26,32 +26,20 @@ namespace Org.BouncyCastle.Asn1.Cmp private CertResponse(Asn1Sequence seq) { - m_certReqId = DerInteger.GetInstance(seq[0]); - m_status = PkiStatusInfo.GetInstance(seq[1]); + int count = seq.Count, pos = 0; + if (count < 2 || count > 4) + throw new ArgumentException("Bad sequence size: " + count, nameof(seq)); - if (seq.Count >= 3) - { - if (seq.Count == 3) - { - Asn1Encodable o = seq[2]; - if (o is Asn1OctetString octetString) - { - m_rspInfo = octetString; - } - else - { - m_certifiedKeyPair = CertifiedKeyPair.GetInstance(o); - } - } - else - { - m_certifiedKeyPair = CertifiedKeyPair.GetInstance(seq[2]); - m_rspInfo = Asn1OctetString.GetInstance(seq[3]); - } - } - } + m_certReqId = DerInteger.GetInstance(seq[pos++]); + m_status = PkiStatusInfo.GetInstance(seq[pos++]); + m_certifiedKeyPair = Asn1Utilities.ReadOptional(seq, ref pos, CertifiedKeyPair.GetOptional); + m_rspInfo = Asn1Utilities.ReadOptional(seq, ref pos, Asn1OctetString.GetOptional); + + if (pos != count) + throw new ArgumentException("Unexpected elements in sequence", nameof(seq)); + } - public CertResponse(DerInteger certReqId, PkiStatusInfo status) + public CertResponse(DerInteger certReqId, PkiStatusInfo status) : this(certReqId, status, null, null) { } |