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

V1TbsCertificateGenerator

using System; namespace Org.BouncyCastle.Asn1.X509 { public class V1TbsCertificateGenerator { internal DerTaggedObject version = new DerTaggedObject(0, DerInteger.Zero); internal DerInteger serialNumber; internal AlgorithmIdentifier signature; internal X509Name issuer; internal Validity validity; internal Time startDate; internal Time endDate; internal X509Name subject; internal SubjectPublicKeyInfo subjectPublicKeyInfo; public void SetSerialNumber(DerInteger serialNumber) { this.serialNumber = serialNumber; } public void SetSignature(AlgorithmIdentifier signature) { this.signature = signature; } public void SetIssuer(X509Name issuer) { this.issuer = issuer; } public void SetValidity(Validity validity) { this.validity = validity; startDate = null; endDate = null; } public void SetStartDate(Time startDate) { validity = null; this.startDate = startDate; } public void SetStartDate(Asn1UtcTime startDate) { SetStartDate(new Time(startDate)); } public void SetEndDate(Time endDate) { validity = null; this.endDate = endDate; } public void SetEndDate(Asn1UtcTime endDate) { SetEndDate(new Time(endDate)); } public void SetSubject(X509Name subject) { this.subject = subject; } public void SetSubjectPublicKeyInfo(SubjectPublicKeyInfo pubKeyInfo) { subjectPublicKeyInfo = pubKeyInfo; } public TbsCertificateStructure GenerateTbsCertificate() { if (serialNumber == null || signature == null || issuer == null || (validity == null && (startDate == null || endDate == null)) || subject == null || subjectPublicKeyInfo == null) throw new InvalidOperationException("not all mandatory fields set in V1 TBScertificate generator"); return new TbsCertificateStructure(DerInteger.Zero, serialNumber, signature, issuer, validity ?? new Validity(startDate, endDate), subject, subjectPublicKeyInfo, null, null, null); } } }