package org.bouncycastle.cert.jcajce;

import java.security.GeneralSecurityException;
import java.security.Provider;
import java.security.cert.CRLException;
import java.security.cert.CertStore;
import java.security.cert.CertificateException;
import java.security.cert.CollectionCertStoreParameters;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.bouncycastle.cert.X509CRLHolder;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.util.Store;

Builder to create a CertStore from certificate and CRL stores.
/** * Builder to create a CertStore from certificate and CRL stores. */
public class JcaCertStoreBuilder { private List certs = new ArrayList(); private List crls = new ArrayList(); private Object provider; private JcaX509CertificateConverter certificateConverter = new JcaX509CertificateConverter(); private JcaX509CRLConverter crlConverter = new JcaX509CRLConverter(); private String type = "Collection";
Add a store full of X509CertificateHolder objects.
Params:
  • certStore – a store of X509CertificateHolder objects.
/** * Add a store full of X509CertificateHolder objects. * * @param certStore a store of X509CertificateHolder objects. */
public JcaCertStoreBuilder addCertificates(Store certStore) { certs.addAll(certStore.getMatches(null)); return this; }
Add a single certificate.
Params:
  • cert – the X509 certificate holder containing the certificate.
/** * Add a single certificate. * * @param cert the X509 certificate holder containing the certificate. */
public JcaCertStoreBuilder addCertificate(X509CertificateHolder cert) { certs.add(cert); return this; }
Add a store full of X509CRLHolder objects.
Params:
  • crlStore – a store of X509CRLHolder objects.
/** * Add a store full of X509CRLHolder objects. * @param crlStore a store of X509CRLHolder objects. */
public JcaCertStoreBuilder addCRLs(Store crlStore) { crls.addAll(crlStore.getMatches(null)); return this; }
Add a single CRL.
Params:
  • crl – the X509 CRL holder containing the CRL.
/** * Add a single CRL. * * @param crl the X509 CRL holder containing the CRL. */
public JcaCertStoreBuilder addCRL(X509CRLHolder crl) { crls.add(crl); return this; } public JcaCertStoreBuilder setProvider(String providerName) { certificateConverter.setProvider(providerName); crlConverter.setProvider(providerName); this.provider = providerName; return this; } public JcaCertStoreBuilder setProvider(Provider provider) { certificateConverter.setProvider(provider); crlConverter.setProvider(provider); this.provider = provider; return this; }
Set the type of the CertStore generated. By default it is "Collection".
Params:
  • type – type of CertStore passed to CertStore.getInstance().
Returns:the current builder.
/** * Set the type of the CertStore generated. By default it is "Collection". * * @param type type of CertStore passed to CertStore.getInstance(). * @return the current builder. */
public JcaCertStoreBuilder setType(String type) { this.type = type; return this; }
Build the CertStore from the current inputs.
Throws:
Returns: a CertStore.
/** * Build the CertStore from the current inputs. * * @return a CertStore. * @throws GeneralSecurityException */
public CertStore build() throws GeneralSecurityException { CollectionCertStoreParameters params = convertHolders(certificateConverter, crlConverter); if (provider instanceof String) { return CertStore.getInstance(type, params, (String)provider); } if (provider instanceof Provider) { return CertStore.getInstance(type, params, (Provider)provider); } return CertStore.getInstance(type, params); } private CollectionCertStoreParameters convertHolders(JcaX509CertificateConverter certificateConverter, JcaX509CRLConverter crlConverter) throws CertificateException, CRLException { List jcaObjs = new ArrayList(certs.size() + crls.size()); for (Iterator it = certs.iterator(); it.hasNext();) { jcaObjs.add(certificateConverter.getCertificate((X509CertificateHolder)it.next())); } for (Iterator it = crls.iterator(); it.hasNext();) { jcaObjs.add(crlConverter.getCRL((X509CRLHolder)it.next())); } return new CollectionCertStoreParameters(jcaObjs); } }