1 package org.bouncycastle.asn1.x509;
3 import org.bouncycastle.asn1.*;
4 import org.bouncycastle.asn1.pkcs.*;
7 * Generator for Version 1 TBSCertificateStructures.
9 * TBSCertificate ::= SEQUENCE {
10 * version [ 0 ] Version DEFAULT v1(0),
11 * serialNumber CertificateSerialNumber,
12 * signature AlgorithmIdentifier,
16 * subjectPublicKeyInfo SubjectPublicKeyInfo,
21 public class V1TBSCertificateGenerator
23 DERTaggedObject version = new DERTaggedObject(0, new DERInteger(0));
25 DERInteger serialNumber;
26 AlgorithmIdentifier signature;
28 Time startDate, endDate;
30 SubjectPublicKeyInfo subjectPublicKeyInfo;
32 public V1TBSCertificateGenerator()
36 public void setSerialNumber(
37 DERInteger serialNumber)
39 this.serialNumber = serialNumber;
42 public void setSignature(
43 AlgorithmIdentifier signature)
45 this.signature = signature;
48 public void setIssuer(
54 public void setStartDate(
57 this.startDate = startDate;
60 public void setStartDate(
63 this.startDate = new Time(startDate);
66 public void setEndDate(
69 this.endDate = endDate;
72 public void setEndDate(
75 this.endDate = new Time(endDate);
78 public void setSubject(
81 this.subject = subject;
84 public void setSubjectPublicKeyInfo(
85 SubjectPublicKeyInfo pubKeyInfo)
87 this.subjectPublicKeyInfo = pubKeyInfo;
90 public TBSCertificateStructure generateTBSCertificate()
92 if ((serialNumber == null) || (signature == null)
93 || (issuer == null) || (startDate == null) || (endDate == null)
94 || (subject == null) || (subjectPublicKeyInfo == null))
96 throw new IllegalStateException("not all mandatory fields set in V1 TBScertificate generator");
99 DERConstructedSequence seq = new DERConstructedSequence();
101 seq.addObject(version);
102 seq.addObject(serialNumber);
103 seq.addObject(signature);
104 seq.addObject(issuer);
107 // before and after dates
109 DERConstructedSequence validity = new DERConstructedSequence();
111 validity.addObject(startDate);
112 validity.addObject(endDate);
114 seq.addObject(validity);
116 seq.addObject(subject);
118 seq.addObject(subjectPublicKeyInfo);
120 return new TBSCertificateStructure(seq);