<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

CertTemplateBuilder

public class CertTemplateBuilder
using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Crmf { public class CertTemplateBuilder { private DerInteger version; private DerInteger serialNumber; private AlgorithmIdentifier signingAlg; private X509Name issuer; private OptionalValidity validity; private X509Name subject; private SubjectPublicKeyInfo publicKey; private DerBitString issuerUID; private DerBitString subjectUID; private X509Extensions extensions; public virtual CertTemplateBuilder SetVersion(int ver) { version = new DerInteger(ver); return this; } public virtual CertTemplateBuilder SetSerialNumber(DerInteger ser) { serialNumber = ser; return this; } public virtual CertTemplateBuilder SetSigningAlg(AlgorithmIdentifier aid) { signingAlg = aid; return this; } public virtual CertTemplateBuilder SetIssuer(X509Name name) { issuer = name; return this; } public virtual CertTemplateBuilder SetValidity(OptionalValidity v) { validity = v; return this; } public virtual CertTemplateBuilder SetValidity(DateTime? notBefore, DateTime? notAfter) { return SetValidity(new OptionalValidity(CreateTime(notBefore), CreateTime(notAfter))); } public virtual CertTemplateBuilder SetSubject(X509Name name) { subject = name; return this; } [Obsolete("Use 'SetSubjectPublicKeyInfo' instead")] public virtual CertTemplateBuilder SetPublicKey(SubjectPublicKeyInfo spki) { return SetSubjectPublicKeyInfo(spki); } public virtual CertTemplateBuilder SetSubjectPublicKeyInfo(SubjectPublicKeyInfo spki) { publicKey = spki; return this; } public virtual CertTemplateBuilder SetIssuerUID(DerBitString uid) { issuerUID = uid; return this; } public virtual CertTemplateBuilder SetSubjectUID(DerBitString uid) { subjectUID = uid; return this; } public virtual CertTemplateBuilder SetExtensions(X509Extensions extens) { extensions = extens; return this; } public virtual CertTemplate Build() { return new CertTemplate(version, serialNumber, signingAlg, issuer, validity, subject, publicKey, issuerUID, subjectUID, extensions); } private static Time CreateTime(DateTime? dateTime) { if (dateTime.HasValue) return new Time(dateTime.Value); return null; } } }