1 package org.bouncycastle.asn1.x509;
3 import org.bouncycastle.asn1.*;
6 * Generator for Version 1 TBSCertificateStructures.
8 * TBSCertificate ::= SEQUENCE {
9 * version [ 0 ] Version DEFAULT v1(0),
10 * serialNumber CertificateSerialNumber,
11 * signature AlgorithmIdentifier,
15 * subjectPublicKeyInfo SubjectPublicKeyInfo,
20 public class V1TBSCertificateGenerator
22 DERTaggedObject version = new DERTaggedObject(0, new DERInteger(0));
24 DERInteger serialNumber;
25 AlgorithmIdentifier signature;
27 Time startDate, endDate;
29 SubjectPublicKeyInfo subjectPublicKeyInfo;
31 public V1TBSCertificateGenerator()
35 public void setSerialNumber(
36 DERInteger serialNumber)
38 this.serialNumber = serialNumber;
41 public void setSignature(
42 AlgorithmIdentifier signature)
44 this.signature = signature;
47 public void setIssuer(
53 public void setStartDate(
56 this.startDate = startDate;
59 public void setStartDate(
62 this.startDate = new Time(startDate);
65 public void setEndDate(
68 this.endDate = endDate;
71 public void setEndDate(
74 this.endDate = new Time(endDate);
77 public void setSubject(
80 this.subject = subject;
83 public void setSubjectPublicKeyInfo(
84 SubjectPublicKeyInfo pubKeyInfo)
86 this.subjectPublicKeyInfo = pubKeyInfo;
89 public TBSCertificateStructure generateTBSCertificate()
91 if ((serialNumber == null) || (signature == null)
92 || (issuer == null) || (startDate == null) || (endDate == null)
93 || (subject == null) || (subjectPublicKeyInfo == null))
95 throw new IllegalStateException("not all mandatory fields set in V1 TBScertificate generator");
98 DERConstructedSequence seq = new DERConstructedSequence();
100 seq.addObject(version);
101 seq.addObject(serialNumber);
102 seq.addObject(signature);
103 seq.addObject(issuer);
106 // before and after dates
108 DERConstructedSequence validity = new DERConstructedSequence();
110 validity.addObject(startDate);
111 validity.addObject(endDate);
113 seq.addObject(validity);
115 seq.addObject(subject);
117 seq.addObject(subjectPublicKeyInfo);
119 return new TBSCertificateStructure(seq);