blob: b2726496c3a54695d7891c5d7c159854ec5063d0 [file] [log] [blame]
package org.bouncycastle.x509;
import org.bouncycastle.util.Selector;
import java.io.IOException;
import java.security.cert.Certificate;
import java.security.cert.X509CertSelector;
import java.security.cert.X509Certificate;
/**
* This class is a Selector implementation for X.509 certificates.
*
* @see org.bouncycastle.util.Selector
* @see org.bouncycastle.x509.X509Store
* @see org.bouncycastle.jce.provider.X509StoreCertCollection
*/
public class X509CertStoreSelector
extends X509CertSelector
implements Selector
{
public boolean match(Object obj)
{
if (!(obj instanceof X509Certificate))
{
return false;
}
X509Certificate other = (X509Certificate)obj;
return super.match(other);
}
public boolean match(Certificate cert)
{
return match((Object)cert);
}
public Object clone()
{
X509CertStoreSelector selector = (X509CertStoreSelector)super.clone();
return selector;
}
/**
* Returns an instance of this from a <code>X509CertSelector</code>.
*
* @param selector A <code>X509CertSelector</code> instance.
* @return An instance of an <code>X509CertStoreSelector</code>.
* @exception IllegalArgumentException if selector is null or creation fails.
*/
public static X509CertStoreSelector getInstance(X509CertSelector selector)
{
if (selector == null)
{
throw new IllegalArgumentException("cannot create from null selector");
}
X509CertStoreSelector cs = new X509CertStoreSelector();
cs.setAuthorityKeyIdentifier(selector.getAuthorityKeyIdentifier());
cs.setBasicConstraints(selector.getBasicConstraints());
cs.setCertificate(selector.getCertificate());
cs.setCertificateValid(selector.getCertificateValid());
cs.setMatchAllSubjectAltNames(selector.getMatchAllSubjectAltNames());
try
{
cs.setPathToNames(selector.getPathToNames());
cs.setExtendedKeyUsage(selector.getExtendedKeyUsage());
cs.setNameConstraints(selector.getNameConstraints());
cs.setPolicy(selector.getPolicy());
cs.setSubjectPublicKeyAlgID(selector.getSubjectPublicKeyAlgID());
cs.setSubjectAlternativeNames(selector.getSubjectAlternativeNames());
}
catch (IOException e)
{
throw new IllegalArgumentException("error in passed in selector: " + e);
}
cs.setIssuer(selector.getIssuer());
cs.setKeyUsage(selector.getKeyUsage());
cs.setPrivateKeyValid(selector.getPrivateKeyValid());
cs.setSerialNumber(selector.getSerialNumber());
cs.setSubject(selector.getSubject());
cs.setSubjectKeyIdentifier(selector.getSubjectKeyIdentifier());
cs.setSubjectPublicKey(selector.getSubjectPublicKey());
return cs;
}
}