2002/03/21 01:19:32
[org.ibex.core.git] / src / org / bouncycastle / asn1 / x509 / V1TBSCertificateGenerator.java
1 package org.bouncycastle.asn1.x509;
2
3 import org.bouncycastle.asn1.*;
4 import org.bouncycastle.asn1.pkcs.*;
5
6 /**
7  * Generator for Version 1 TBSCertificateStructures.
8  * <pre>
9  * TBSCertificate ::= SEQUENCE {
10  *      version          [ 0 ]  Version DEFAULT v1(0),
11  *      serialNumber            CertificateSerialNumber,
12  *      signature               AlgorithmIdentifier,
13  *      issuer                  Name,
14  *      validity                Validity,
15  *      subject                 Name,
16  *      subjectPublicKeyInfo    SubjectPublicKeyInfo,
17  *      }
18  * </pre>
19  *
20  */
21 public class V1TBSCertificateGenerator
22 {
23     DERTaggedObject         version = new DERTaggedObject(0, new DERInteger(0));
24
25     DERInteger              serialNumber;
26     AlgorithmIdentifier     signature;
27     X509Name                issuer;
28     DERUTCTime              startDate, endDate;
29     X509Name                subject;
30     SubjectPublicKeyInfo    subjectPublicKeyInfo;
31
32     public V1TBSCertificateGenerator()
33     {
34     }
35
36     public void setSerialNumber(
37         DERInteger  serialNumber)
38     {
39         this.serialNumber = serialNumber;
40     }
41
42     public void setSignature(
43         AlgorithmIdentifier    signature)
44     {
45         this.signature = signature;
46     }
47
48     public void setIssuer(
49         X509Name    issuer)
50     {
51         this.issuer = issuer;
52     }
53
54     public void setStartDate(
55         DERUTCTime startDate)
56     {
57         this.startDate = startDate;
58     }
59
60     public void setEndDate(
61         DERUTCTime endDate)
62     {
63         this.endDate = endDate;
64     }
65
66     public void setSubject(
67         X509Name    subject)
68     {
69         this.subject = subject;
70     }
71
72     public void setSubjectPublicKeyInfo(
73         SubjectPublicKeyInfo    pubKeyInfo)
74     {
75         this.subjectPublicKeyInfo = pubKeyInfo;
76     }
77
78     public TBSCertificateStructure generateTBSCertificate()
79     {
80         if ((serialNumber == null) || (signature == null)
81             || (issuer == null) || (startDate == null) || (endDate == null)
82             || (subject == null) || (subjectPublicKeyInfo == null))
83         {
84             throw new IllegalStateException("not all mandatory fields set in V1 TBScertificate generator");
85         }
86
87         DERConstructedSequence  seq = new DERConstructedSequence();
88
89         seq.addObject(version);
90         seq.addObject(serialNumber);
91         seq.addObject(signature);
92         seq.addObject(issuer);
93
94         //
95         // before and after dates
96         //
97         DERConstructedSequence  validity = new DERConstructedSequence();
98
99         validity.addObject(startDate);
100         validity.addObject(endDate);
101
102         seq.addObject(validity);
103
104         seq.addObject(subject);
105
106         seq.addObject(subjectPublicKeyInfo);
107
108         return new TBSCertificateStructure(seq);
109     }
110 }