resolve darcs stupidity
[org.ibex.core.git] / src / org / bouncycastle / asn1 / x509 / TBSCertList.java
index 11cb2ab..7e11b12 100644 (file)
@@ -2,7 +2,6 @@
 package org.bouncycastle.asn1.x509;
 
 import org.bouncycastle.asn1.*;
-import org.bouncycastle.asn1.pkcs.*;
 
 /**
  * PKIX RFC-2459
@@ -28,69 +27,91 @@ import org.bouncycastle.asn1.pkcs.*;
  */
 
 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++);
         }
@@ -99,49 +120,35 @@ public class TBSCertList
             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()
@@ -164,12 +171,12 @@ public class TBSCertList
         return issuer;
     }
 
-    public DERUTCTime getThisUpdate()
+    public Time getThisUpdate()
     {
         return thisUpdate;
     }
 
-    public DERUTCTime getNextUpdate()
+    public Time getNextUpdate()
     {
         return nextUpdate;
     }
@@ -189,4 +196,3 @@ public class TBSCertList
         return seq;
     }
 }
-