org.bouncycastle.asn1.x509.CertificateList Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-jdk16 Show documentation
Show all versions of bcprov-jdk16 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. The package is organised
so that it contains a light-weight API suitable for use in any environment (including the newly released J2ME)
with the additional infrastructure to conform the algorithms to the JCE framework.
package org.bouncycastle.asn1.x509;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DERBitString;
import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DERSequence;
/**
* PKIX RFC-2459
*
* The X.509 v2 CRL syntax is as follows. For signature calculation,
* the data that is to be signed is ASN.1 DER encoded.
*
*
* CertificateList ::= SEQUENCE {
* tbsCertList TBSCertList,
* signatureAlgorithm AlgorithmIdentifier,
* signatureValue BIT STRING }
*
*/
public class CertificateList
extends ASN1Encodable
{
TBSCertList tbsCertList;
AlgorithmIdentifier sigAlgId;
DERBitString sig;
public static CertificateList getInstance(
ASN1TaggedObject obj,
boolean explicit)
{
return getInstance(ASN1Sequence.getInstance(obj, explicit));
}
public static CertificateList getInstance(
Object obj)
{
if (obj instanceof CertificateList)
{
return (CertificateList)obj;
}
else if (obj instanceof ASN1Sequence)
{
return new CertificateList((ASN1Sequence)obj);
}
throw new IllegalArgumentException("unknown object in factory");
}
public CertificateList(
ASN1Sequence seq)
{
if (seq.size() == 3)
{
tbsCertList = TBSCertList.getInstance(seq.getObjectAt(0));
sigAlgId = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
sig = DERBitString.getInstance(seq.getObjectAt(2));
}
else
{
throw new IllegalArgumentException("sequence wrong size for CertificateList");
}
}
public TBSCertList getTBSCertList()
{
return tbsCertList;
}
public TBSCertList.CRLEntry[] getRevokedCertificates()
{
return tbsCertList.getRevokedCertificates();
}
public AlgorithmIdentifier getSignatureAlgorithm()
{
return sigAlgId;
}
public DERBitString getSignature()
{
return sig;
}
public int getVersion()
{
return tbsCertList.getVersion();
}
public X509Name getIssuer()
{
return tbsCertList.getIssuer();
}
public Time getThisUpdate()
{
return tbsCertList.getThisUpdate();
}
public Time getNextUpdate()
{
return tbsCertList.getNextUpdate();
}
public DERObject toASN1Object()
{
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(tbsCertList);
v.add(sigAlgId);
v.add(sig);
return new DERSequence(v);
}
}