1 package org.bouncycastle.asn1.x509;
3 import org.bouncycastle.asn1.*;
4 import org.bouncycastle.asn1.pkcs.*;
7 * an X509Certificate structure.
9 * Certificate ::= SEQUENCE {
10 * tbsCertificate TBSCertificate,
11 * signatureAlgorithm AlgorithmIdentifier,
12 * signature BIT STRING
16 public class X509CertificateStructure
17 implements DEREncodable, X509ObjectIdentifiers, PKCSObjectIdentifiers
20 TBSCertificateStructure tbsCert;
21 AlgorithmIdentifier sigAlgId;
24 public static X509CertificateStructure getInstance(
28 return getInstance(ASN1Sequence.getInstance(obj, explicit));
31 public static X509CertificateStructure getInstance(
34 if (obj instanceof X509CertificateStructure)
36 return (X509CertificateStructure)obj;
38 else if (obj instanceof ASN1Sequence)
40 return new X509CertificateStructure((ASN1Sequence)obj);
43 throw new IllegalArgumentException("unknown object in factory");
46 public X509CertificateStructure(
52 // correct x509 certficate
56 tbsCert = TBSCertificateStructure.getInstance(seq.getObjectAt(0));
57 sigAlgId = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
59 sig = (DERBitString)seq.getObjectAt(2);
63 public TBSCertificateStructure getTBSCertificate()
68 public int getVersion()
70 return tbsCert.getVersion();
73 public DERInteger getSerialNumber()
75 return tbsCert.getSerialNumber();
78 public X509Name getIssuer()
80 return tbsCert.getIssuer();
83 public Time getStartDate()
85 return tbsCert.getStartDate();
88 public Time getEndDate()
90 return tbsCert.getEndDate();
93 public X509Name getSubject()
95 return tbsCert.getSubject();
98 public SubjectPublicKeyInfo getSubjectPublicKeyInfo()
100 return tbsCert.getSubjectPublicKeyInfo();
103 public AlgorithmIdentifier getSignatureAlgorithm()
108 public DERBitString getSignature()
113 public DERObject getDERObject()