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);
}
}
}