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

V1TbsCertificateGenerator

using System; namespace Org.BouncyCastle.Asn1.X509 { public class V1TbsCertificateGenerator { internal DerTaggedObject version = new DerTaggedObject(0, new DerInteger(0)); internal DerInteger serialNumber; internal AlgorithmIdentifier signature; internal X509Name issuer; 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 SetStartDate(Time startDate) { this.startDate = startDate; } public void SetStartDate(Asn1UtcTime startDate) { this.startDate = new Time(startDate); } public void SetEndDate(Time endDate) { this.endDate = endDate; } public void SetEndDate(Asn1UtcTime endDate) { this.endDate = 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 || startDate == null || endDate == null || subject == null || subjectPublicKeyInfo == null) throw new InvalidOperationException("not all mandatory fields set in V1 TBScertificate generator"); return TbsCertificateStructure.GetInstance(new DerSequence(serialNumber, signature, issuer, new DerSequence(startDate, endDate), subject, subjectPublicKeyInfo)); } } }