2 package org.bouncycastle.asn1.x509;
4 import org.bouncycastle.asn1.*;
5 import org.bouncycastle.asn1.pkcs.*;
11 * TBSCertList ::= SEQUENCE {
12 * version Version OPTIONAL,
13 * -- if present, shall be v2
14 * signature AlgorithmIdentifier,
17 * nextUpdate Time OPTIONAL,
18 * revokedCertificates SEQUENCE OF SEQUENCE {
19 * userCertificate CertificateSerialNumber,
20 * revocationDate Time,
21 * crlEntryExtensions Extensions OPTIONAL
22 * -- if present, shall be v2
24 * crlExtensions [0] EXPLICIT Extensions OPTIONAL
25 * -- if present, shall be v2
30 public class TBSCertList
31 implements DEREncodable
34 implements DEREncodable
36 DERConstructedSequence seq;
38 DERInteger userCertificate;
39 DERUTCTime revocationDate;
40 X509Extensions crlEntryExtensions;
43 DERConstructedSequence seq)
47 userCertificate = (DERInteger)seq.getObjectAt(0);
48 revocationDate = (DERUTCTime)seq.getObjectAt(1);
49 if ( seq.getSize() == 3 )
51 crlEntryExtensions = new X509Extensions((DERConstructedSequence)seq.getObjectAt(2));
55 public DERInteger getUserCertificate()
57 return userCertificate;
60 public DERUTCTime getRevocationDate()
62 return revocationDate;
65 public X509Extensions getExtensions()
67 return crlEntryExtensions;
70 public DERObject getDERObject()
76 DERConstructedSequence seq;
79 AlgorithmIdentifier signature;
81 DERUTCTime thisUpdate;
82 DERUTCTime nextUpdate;
83 CRLEntry[] revokedCertificates;
84 X509Extensions crlExtensions;
87 DERConstructedSequence seq)
93 if ( seq.getObjectAt(seqPos) instanceof DERInteger )
95 version = (DERInteger)seq.getObjectAt(seqPos++);
99 version = new DERInteger(0);
102 if ( seq.getObjectAt(seqPos) instanceof AlgorithmIdentifier )
104 signature = (AlgorithmIdentifier)seq.getObjectAt(seqPos++);
108 signature = new AlgorithmIdentifier((DERConstructedSequence)seq.getObjectAt(seqPos++));
111 if ( seq.getObjectAt(seqPos) instanceof X509Name )
113 issuer = (X509Name)seq.getObjectAt(seqPos++);
117 issuer = new X509Name((DERConstructedSequence)seq.getObjectAt(seqPos++));
120 thisUpdate = (DERUTCTime)seq.getObjectAt(seqPos++);
122 if ( seqPos < seq.getSize()
123 && seq.getObjectAt(seqPos) instanceof DERUTCTime )
125 nextUpdate = (DERUTCTime)seq.getObjectAt(seqPos++);
128 if ( seqPos < seq.getSize()
129 && !(seq.getObjectAt(seqPos) instanceof DERTaggedObject) )
131 DERConstructedSequence certs = (DERConstructedSequence)seq.getObjectAt(seqPos++);
132 revokedCertificates = new CRLEntry[certs.getSize()];
134 for ( int i = 0; i < revokedCertificates.length; i++ )
136 revokedCertificates[i] = new CRLEntry((DERConstructedSequence)certs.getObjectAt(i));
140 if ( seqPos < seq.getSize()
141 && seq.getObjectAt(seqPos) instanceof DERTaggedObject )
143 crlExtensions = new X509Extensions((DERConstructedSequence)((DERTaggedObject)seq.getObjectAt(seqPos++)).getObject());
147 public int getVersion()
149 return version.getValue().intValue() + 1;
152 public DERInteger getVersionNumber()
157 public AlgorithmIdentifier getSignature()
162 public X509Name getIssuer()
167 public DERUTCTime getThisUpdate()
172 public DERUTCTime getNextUpdate()
177 public CRLEntry[] getRevokedCertificates()
179 return revokedCertificates;
182 public X509Extensions getExtensions()
184 return crlExtensions;
187 public DERObject getDERObject()