<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.0" />

RootCaKeyUpdateContent

using System; namespace Org.BouncyCastle.Asn1.Cmp { public class RootCaKeyUpdateContent : Asn1Encodable { private readonly CmpCertificate m_newWithNew; private readonly CmpCertificate m_newWithOld; private readonly CmpCertificate m_oldWithNew; public virtual CmpCertificate NewWithNew => m_newWithNew; public virtual CmpCertificate NewWithOld => m_newWithOld; public virtual CmpCertificate OldWithNew => m_oldWithNew; public static RootCaKeyUpdateContent GetInstance(object obj) { if (obj == null) return null; RootCaKeyUpdateContent rootCaKeyUpdateContent = obj as RootCaKeyUpdateContent; if (rootCaKeyUpdateContent != null) return rootCaKeyUpdateContent; return new RootCaKeyUpdateContent(Asn1Sequence.GetInstance(obj)); } public static RootCaKeyUpdateContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new RootCaKeyUpdateContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static RootCaKeyUpdateContent GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new RootCaKeyUpdateContent(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } public RootCaKeyUpdateContent(CmpCertificate newWithNew, CmpCertificate newWithOld, CmpCertificate oldWithNew) { if (newWithNew == null) throw new ArgumentNullException("newWithNew"); m_newWithNew = newWithNew; m_newWithOld = newWithOld; m_oldWithNew = oldWithNew; } private RootCaKeyUpdateContent(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 1 || count > 3) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_newWithNew = CmpCertificate.GetInstance(seq[sequencePosition++]); m_newWithOld = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 0, true, CmpCertificate.GetTagged); m_oldWithNew = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 1, true, CmpCertificate.GetTagged); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3); asn1EncodableVector.Add(m_newWithNew); asn1EncodableVector.AddOptionalTagged(true, 0, m_newWithOld); asn1EncodableVector.AddOptionalTagged(true, 1, m_oldWithNew); return new DerSequence(asn1EncodableVector); } } }