package org.bouncycastle.asn1.x509;
import org.bouncycastle.asn1.*;
-import org.bouncycastle.asn1.pkcs.*;
/**
* PKIX RFC-2459
*/
public class TBSCertList
- implements DEREncodable
+ implements DEREncodable
{
- public class CRLEntry
- implements DEREncodable
- {
- DERConstructedSequence seq;
-
- DERInteger userCertificate;
- DERUTCTime revocationDate;
- X509Extensions crlEntryExtensions;
-
- public CRLEntry(
- DERConstructedSequence seq)
- {
- this.seq = seq;
-
- userCertificate = (DERInteger)seq.getObjectAt(0);
- revocationDate = (DERUTCTime)seq.getObjectAt(1);
- if ( seq.getSize() == 3 )
- {
- crlEntryExtensions = new X509Extensions((DERConstructedSequence)seq.getObjectAt(2));
- }
- }
-
- public DERInteger getUserCertificate()
- {
- return userCertificate;
- }
-
- public DERUTCTime getRevocationDate()
- {
- return revocationDate;
- }
-
- public X509Extensions getExtensions()
- {
- return crlEntryExtensions;
- }
-
- public DERObject getDERObject()
- {
- return seq;
- }
- }
-
- DERConstructedSequence seq;
+ public class CRLEntry
+ implements DEREncodable
+ {
+ DERConstructedSequence seq;
+
+ DERInteger userCertificate;
+ Time revocationDate;
+ X509Extensions crlEntryExtensions;
+
+ public CRLEntry(
+ DERConstructedSequence seq)
+ {
+ this.seq = seq;
+
+ userCertificate = (DERInteger)seq.getObjectAt(0);
+ revocationDate = Time.getInstance(seq.getObjectAt(1));
+ if (seq.getSize() == 3)
+ {
+ crlEntryExtensions = X509Extensions.getInstance(seq.getObjectAt(2));
+ }
+ }
+
+ public DERInteger getUserCertificate()
+ {
+ return userCertificate;
+ }
+
+ public Time getRevocationDate()
+ {
+ return revocationDate;
+ }
+
+ public X509Extensions getExtensions()
+ {
+ return crlEntryExtensions;
+ }
+
+ public DERObject getDERObject()
+ {
+ return seq;
+ }
+ }
+
+ ASN1Sequence seq;
DERInteger version;
AlgorithmIdentifier signature;
X509Name issuer;
- DERUTCTime thisUpdate;
- DERUTCTime nextUpdate;
- CRLEntry[] revokedCertificates;
+ Time thisUpdate;
+ Time nextUpdate;
+ CRLEntry[] revokedCertificates;
X509Extensions crlExtensions;
+ public static TBSCertList getInstance(
+ ASN1TaggedObject obj,
+ boolean explicit)
+ {
+ return getInstance(ASN1Sequence.getInstance(obj, explicit));
+ }
+
+ public static TBSCertList getInstance(
+ Object obj)
+ {
+ if (obj instanceof TBSCertList)
+ {
+ return (TBSCertList)obj;
+ }
+ else if (obj instanceof ASN1Sequence)
+ {
+ return new TBSCertList((ASN1Sequence)obj);
+ }
+
+ throw new IllegalArgumentException("unknown object in factory");
+ }
+
public TBSCertList(
- DERConstructedSequence seq)
+ ASN1Sequence seq)
{
int seqPos = 0;
this.seq = seq;
- if ( seq.getObjectAt(seqPos) instanceof DERInteger )
+ if (seq.getObjectAt(seqPos) instanceof DERInteger)
{
version = (DERInteger)seq.getObjectAt(seqPos++);
}
version = new DERInteger(0);
}
- if ( seq.getObjectAt(seqPos) instanceof AlgorithmIdentifier )
- {
- signature = (AlgorithmIdentifier)seq.getObjectAt(seqPos++);
- }
- else
- {
- signature = new AlgorithmIdentifier((DERConstructedSequence)seq.getObjectAt(seqPos++));
- }
+ signature = AlgorithmIdentifier.getInstance(seq.getObjectAt(seqPos++));
+ issuer = X509Name.getInstance(seq.getObjectAt(seqPos++));
+ thisUpdate = Time.getInstance(seq.getObjectAt(seqPos++));
- if ( seq.getObjectAt(seqPos) instanceof X509Name )
+ if (seqPos < seq.size()
+ && (seq.getObjectAt(seqPos) instanceof DERUTCTime
+ || seq.getObjectAt(seqPos) instanceof DERGeneralizedTime
+ || seq.getObjectAt(seqPos) instanceof Time))
{
- issuer = (X509Name)seq.getObjectAt(seqPos++);
+ nextUpdate = Time.getInstance(seq.getObjectAt(seqPos++));
}
- else
+
+ if (seqPos < seq.size()
+ && !(seq.getObjectAt(seqPos) instanceof DERTaggedObject))
{
- issuer = new X509Name((DERConstructedSequence)seq.getObjectAt(seqPos++));
- }
+ DERConstructedSequence certs = (DERConstructedSequence)seq.getObjectAt(seqPos++);
+ revokedCertificates = new CRLEntry[certs.getSize()];
- thisUpdate = (DERUTCTime)seq.getObjectAt(seqPos++);
+ for ( int i = 0; i < revokedCertificates.length; i++)
+ {
+ revokedCertificates[i] = new CRLEntry((DERConstructedSequence)certs.getObjectAt(i));
+ }
+ }
- if ( seqPos < seq.getSize()
- && seq.getObjectAt(seqPos) instanceof DERUTCTime )
+ if (seqPos < seq.size()
+ && seq.getObjectAt(seqPos) instanceof DERTaggedObject)
{
- nextUpdate = (DERUTCTime)seq.getObjectAt(seqPos++);
+ crlExtensions = X509Extensions.getInstance(seq.getObjectAt(seqPos++));
}
-
- if ( seqPos < seq.getSize()
- && !(seq.getObjectAt(seqPos) instanceof DERTaggedObject) )
- {
- DERConstructedSequence certs = (DERConstructedSequence)seq.getObjectAt(seqPos++);
- revokedCertificates = new CRLEntry[certs.getSize()];
-
- for ( int i = 0; i < revokedCertificates.length; i++ )
- {
- revokedCertificates[i] = new CRLEntry((DERConstructedSequence)certs.getObjectAt(i));
- }
- }
-
- if ( seqPos < seq.getSize()
- && seq.getObjectAt(seqPos) instanceof DERTaggedObject )
- {
- crlExtensions = new X509Extensions((DERConstructedSequence)((DERTaggedObject)seq.getObjectAt(seqPos++)).getObject());
- }
}
public int getVersion()
return issuer;
}
- public DERUTCTime getThisUpdate()
+ public Time getThisUpdate()
{
return thisUpdate;
}
- public DERUTCTime getNextUpdate()
+ public Time getNextUpdate()
{
return nextUpdate;
}
return seq;
}
}
-