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

CertReqMsg

public class CertReqMsg : Asn1Encodable
using System; namespace Org.BouncyCastle.Asn1.Crmf { public class CertReqMsg : Asn1Encodable { private readonly CertRequest m_certReq; private readonly ProofOfPossession m_pop; private readonly Asn1Sequence m_regInfo; public virtual CertRequest CertReq => m_certReq; public virtual ProofOfPossession Pop => m_pop; [Obsolete("Use 'Pop' instead")] public virtual ProofOfPossession Popo { get { return m_pop; } } public static CertReqMsg GetInstance(object obj) { if (obj == null) return null; CertReqMsg certReqMsg = obj as CertReqMsg; if (certReqMsg != null) return certReqMsg; return new CertReqMsg(Asn1Sequence.GetInstance(obj)); } public static CertReqMsg GetInstance(Asn1TaggedObject obj, bool isExplicit) { return new CertReqMsg(Asn1Sequence.GetInstance(obj, isExplicit)); } public static CertReqMsg GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new CertReqMsg(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private CertReqMsg(Asn1Sequence seq) { int count = seq.Count; if (count < 1 || count > 3) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); int sequencePosition = 0; m_certReq = CertRequest.GetInstance(seq[sequencePosition++]); m_pop = Asn1Utilities.ReadOptional(seq, ref sequencePosition, ProofOfPossession.GetOptional); m_regInfo = Asn1Utilities.ReadOptional(seq, ref sequencePosition, Asn1Sequence.GetOptional); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public CertReqMsg(CertRequest certReq, ProofOfPossession popo, AttributeTypeAndValue[] regInfo) { if (certReq == null) throw new ArgumentNullException("certReq"); m_certReq = certReq; m_pop = popo; m_regInfo = ((regInfo == null) ? null : new DerSequence(regInfo)); } public virtual AttributeTypeAndValue[] GetRegInfo() { return m_regInfo?.MapElements(AttributeTypeAndValue.GetInstance); } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3); asn1EncodableVector.Add(m_certReq); asn1EncodableVector.AddOptional(m_pop, m_regInfo); return new DerSequence(asn1EncodableVector); } } }