public class TBSCertificateStructure
implements DEREncodable, X509ObjectIdentifiers, PKCSObjectIdentifiers
{
- DERConstructedSequence seq;
+ ASN1Sequence seq;
DERInteger version;
DERInteger serialNumber;
AlgorithmIdentifier signature;
X509Name issuer;
- DERUTCTime startDate, endDate;
+ Time startDate, endDate;
X509Name subject;
SubjectPublicKeyInfo subjectPublicKeyInfo;
DERBitString issuerUniqueId;
DERBitString subjectUniqueId;
X509Extensions extensions;
+ public static TBSCertificateStructure getInstance(
+ ASN1TaggedObject obj,
+ boolean explicit)
+ {
+ return getInstance(ASN1Sequence.getInstance(obj, explicit));
+ }
+
+ public static TBSCertificateStructure getInstance(
+ Object obj)
+ {
+ if (obj instanceof TBSCertificateStructure)
+ {
+ return (TBSCertificateStructure)obj;
+ }
+ else if (obj instanceof ASN1Sequence)
+ {
+ return new TBSCertificateStructure((ASN1Sequence)obj);
+ }
+
+ throw new IllegalArgumentException("unknown object in factory");
+ }
+
public TBSCertificateStructure(
- DERConstructedSequence seq)
+ ASN1Sequence seq)
{
int seqStart = 0;
//
if (seq.getObjectAt(0) instanceof DERTaggedObject)
{
- version = (DERInteger)((DERTaggedObject)seq.getObjectAt(0)).getObject();
+ version = DERInteger.getInstance(seq.getObjectAt(0));
}
else
{
version = new DERInteger(0);
}
- serialNumber = (DERInteger)seq.getObjectAt(seqStart + 1);
+ serialNumber = DERInteger.getInstance(seq.getObjectAt(seqStart + 1));
- if (seq.getObjectAt(seqStart + 2) instanceof AlgorithmIdentifier)
- {
- signature = (AlgorithmIdentifier)seq.getObjectAt(seqStart + 2);
- }
- else
- {
- signature = new AlgorithmIdentifier((DERConstructedSequence)seq.getObjectAt(seqStart + 2));
- }
-
- if (seq.getObjectAt(seqStart + 3) instanceof X509Name)
- {
- issuer = (X509Name)seq.getObjectAt(seqStart + 3);
- }
- else
- {
- issuer = new X509Name((DERConstructedSequence)seq.getObjectAt(seqStart + 3));
- }
+ signature = AlgorithmIdentifier.getInstance(seq.getObjectAt(seqStart + 2));
+ issuer = X509Name.getInstance(seq.getObjectAt(seqStart + 3));
//
// before and after dates
//
- DERConstructedSequence dates = (DERConstructedSequence)seq.getObjectAt(seqStart + 4);
- startDate = (DERUTCTime)dates.getObjectAt(0);
- endDate = (DERUTCTime)dates.getObjectAt(1);
+ ASN1Sequence dates = (ASN1Sequence)seq.getObjectAt(seqStart + 4);
- if (seq.getObjectAt(seqStart + 5) instanceof X509Name)
- {
- subject = (X509Name)seq.getObjectAt(seqStart + 5);
- }
- else
- {
- subject = new X509Name((DERConstructedSequence)seq.getObjectAt(seqStart + 5));
- }
+ startDate = Time.getInstance(dates.getObjectAt(0));
+ endDate = Time.getInstance(dates.getObjectAt(1));
+
+ subject = X509Name.getInstance(seq.getObjectAt(seqStart + 5));
//
// public key info.
//
- if (seq.getObjectAt(seqStart + 6) instanceof SubjectPublicKeyInfo)
- {
- subjectPublicKeyInfo = (SubjectPublicKeyInfo)seq.getObjectAt(seqStart + 6);
- }
- else
- {
- subjectPublicKeyInfo = new SubjectPublicKeyInfo((DERConstructedSequence)seq.getObjectAt(seqStart + 6));
- }
+ subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(seq.getObjectAt(seqStart + 6));
- for (int extras = seq.getSize() - (seqStart + 6) - 1; extras > 0; extras--)
+ for (int extras = seq.size() - (seqStart + 6) - 1; extras > 0; extras--)
{
DERTaggedObject extra = (DERTaggedObject)seq.getObjectAt(seqStart + 6 + extras);
switch (extra.getTagNo())
{
case 1:
- issuerUniqueId = (DERBitString)extra.getObject();
+ issuerUniqueId = DERBitString.getInstance(extra);
break;
case 2:
- subjectUniqueId = (DERBitString)extra.getObject();
+ subjectUniqueId = DERBitString.getInstance(extra);
break;
case 3:
- extensions = new X509Extensions((DERConstructedSequence)extra.getObject());
+ extensions = X509Extensions.getInstance(extra);
}
}
}
return issuer;
}
- public DERUTCTime getStartDate()
+ public Time getStartDate()
{
return startDate;
}
- public DERUTCTime getEndDate()
+ public Time getEndDate()
{
return endDate;
}