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

PkiHeaderBuilder

public class PkiHeaderBuilder
using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Cmp { public class PkiHeaderBuilder { private readonly DerInteger pvno; private readonly GeneralName sender; private readonly GeneralName recipient; private Asn1GeneralizedTime messageTime; private AlgorithmIdentifier protectionAlg; private Asn1OctetString senderKID; private Asn1OctetString recipKID; private Asn1OctetString transactionID; private Asn1OctetString senderNonce; private Asn1OctetString recipNonce; private PkiFreeText freeText; private Asn1Sequence generalInfo; public PkiHeaderBuilder(int pvno, GeneralName sender, GeneralName recipient) : this(new DerInteger(pvno), sender, recipient) { } private PkiHeaderBuilder(DerInteger pvno, GeneralName sender, GeneralName recipient) { if (pvno == null) throw new ArgumentNullException("pvno"); this.pvno = pvno; if (sender == null) throw new ArgumentNullException("sender"); this.sender = sender; if (recipient == null) throw new ArgumentNullException("recipient"); this.recipient = recipient; } public virtual PkiHeaderBuilder SetMessageTime(Asn1GeneralizedTime time) { messageTime = time; return this; } public virtual PkiHeaderBuilder SetProtectionAlg(AlgorithmIdentifier aid) { protectionAlg = aid; return this; } public virtual PkiHeaderBuilder SetSenderKID(byte[] kid) { return SetSenderKID(DerOctetString.FromContentsOptional(kid)); } public virtual PkiHeaderBuilder SetSenderKID(Asn1OctetString kid) { senderKID = kid; return this; } public virtual PkiHeaderBuilder SetRecipKID(byte[] kid) { return SetRecipKID(DerOctetString.FromContentsOptional(kid)); } public virtual PkiHeaderBuilder SetRecipKID(Asn1OctetString kid) { recipKID = kid; return this; } public virtual PkiHeaderBuilder SetTransactionID(byte[] tid) { return SetTransactionID(DerOctetString.FromContentsOptional(tid)); } public virtual PkiHeaderBuilder SetTransactionID(Asn1OctetString tid) { transactionID = tid; return this; } public virtual PkiHeaderBuilder SetSenderNonce(byte[] nonce) { return SetSenderNonce(DerOctetString.FromContentsOptional(nonce)); } public virtual PkiHeaderBuilder SetSenderNonce(Asn1OctetString nonce) { senderNonce = nonce; return this; } public virtual PkiHeaderBuilder SetRecipNonce(byte[] nonce) { return SetRecipNonce(DerOctetString.FromContentsOptional(nonce)); } public virtual PkiHeaderBuilder SetRecipNonce(Asn1OctetString nonce) { recipNonce = nonce; return this; } public virtual PkiHeaderBuilder SetFreeText(PkiFreeText text) { freeText = text; return this; } public virtual PkiHeaderBuilder SetGeneralInfo(InfoTypeAndValue genInfo) { return SetGeneralInfo(MakeGeneralInfoSeq(genInfo)); } public virtual PkiHeaderBuilder SetGeneralInfo(InfoTypeAndValue[] genInfos) { return SetGeneralInfo(MakeGeneralInfoSeq(genInfos)); } public virtual PkiHeaderBuilder SetGeneralInfo(Asn1Sequence seqOfInfoTypeAndValue) { generalInfo = seqOfInfoTypeAndValue; return this; } private static Asn1Sequence MakeGeneralInfoSeq(InfoTypeAndValue generalInfo) { return new DerSequence(generalInfo); } private static Asn1Sequence MakeGeneralInfoSeq(InfoTypeAndValue[] generalInfos) { return DerSequence.FromElementsOptional(generalInfos); } public virtual PkiHeader Build() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(12); asn1EncodableVector.Add(pvno, sender, recipient); asn1EncodableVector.AddOptionalTagged(true, 0, messageTime); asn1EncodableVector.AddOptionalTagged(true, 1, protectionAlg); asn1EncodableVector.AddOptionalTagged(true, 2, senderKID); asn1EncodableVector.AddOptionalTagged(true, 3, recipKID); asn1EncodableVector.AddOptionalTagged(true, 4, transactionID); asn1EncodableVector.AddOptionalTagged(true, 5, senderNonce); asn1EncodableVector.AddOptionalTagged(true, 6, recipNonce); asn1EncodableVector.AddOptionalTagged(true, 7, freeText); asn1EncodableVector.AddOptionalTagged(true, 8, generalInfo); messageTime = null; protectionAlg = null; senderKID = null; recipKID = null; transactionID = null; senderNonce = null; recipNonce = null; freeText = null; generalInfo = null; return PkiHeader.GetInstance(new DerSequence(asn1EncodableVector)); } } }