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/PKIMessage.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/PKIMessage.cs')
-rw-r--r-- | crypto/src/asn1/cmp/PKIMessage.cs | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/crypto/src/asn1/cmp/PKIMessage.cs b/crypto/src/asn1/cmp/PKIMessage.cs index e835b6f16..4b5acad77 100644 --- a/crypto/src/asn1/cmp/PKIMessage.cs +++ b/crypto/src/asn1/cmp/PKIMessage.cs @@ -26,22 +26,17 @@ namespace Org.BouncyCastle.Asn1.Cmp private PkiMessage(Asn1Sequence seq) { - m_header = PkiHeader.GetInstance(seq[0]); - m_body = PkiBody.GetInstance(seq[1]); + int count = seq.Count, pos = 0; + if (count < 2 || count > 4) + throw new ArgumentException("Bad sequence size: " + count, nameof(seq)); - for (int pos = 2; pos < seq.Count; ++pos) - { - Asn1TaggedObject tObj = Asn1TaggedObject.GetInstance(seq[pos]); + m_header = PkiHeader.GetInstance(seq[pos++]); + m_body = PkiBody.GetInstance(seq[pos++]); + m_protection = Asn1Utilities.ReadOptionalContextTagged(seq, ref pos, 0, true, DerBitString.GetInstance); + m_extraCerts = Asn1Utilities.ReadOptionalContextTagged(seq, ref pos, 1, true, Asn1Sequence.GetInstance); - if (tObj.HasContextTag(0)) - { - m_protection = DerBitString.GetInstance(tObj, true); - } - else if (tObj.HasContextTag(1)) - { - m_extraCerts = Asn1Sequence.GetInstance(tObj, true); - } - } + if (pos != count) + throw new ArgumentException("Unexpected elements in sequence", nameof(seq)); } /** @@ -54,13 +49,10 @@ namespace Org.BouncyCastle.Asn1.Cmp */ public PkiMessage(PkiHeader header, PkiBody body, DerBitString protection, CmpCertificate[] extraCerts) { - m_header = header; - m_body = body; + m_header = header ?? throw new ArgumentNullException(nameof(header)); + m_body = body ?? throw new ArgumentNullException(nameof(body)); m_protection = protection; - if (extraCerts != null) - { - m_extraCerts = new DerSequence(extraCerts); - } + m_extraCerts = extraCerts == null ? null : DerSequence.FromElements(extraCerts); } public PkiMessage(PkiHeader header, PkiBody body, DerBitString protection) |