Home | History | Annotate | Download | only in jcajce
      1 package org.bouncycastle.cert.jcajce;
      2 
      3 import java.io.IOException;
      4 import java.security.cert.CertificateEncodingException;
      5 import java.security.cert.X509Certificate;
      6 import java.util.ArrayList;
      7 import java.util.Collection;
      8 import java.util.Iterator;
      9 import java.util.List;
     10 
     11 import org.bouncycastle.cert.X509CertificateHolder;
     12 import org.bouncycastle.util.CollectionStore;
     13 
     14 /**
     15  * Class for storing Certificates for later lookup.
     16  * <p>
     17  * The class will convert X509Certificate objects into X509CertificateHolder objects.
     18  * </p>
     19  */
     20 public class JcaCertStore
     21     extends CollectionStore
     22 {
     23     /**
     24      * Basic constructor.
     25      *
     26      * @param collection - initial contents for the store, this is copied.
     27      */
     28     public JcaCertStore(Collection collection)
     29         throws CertificateEncodingException
     30     {
     31         super(convertCerts(collection));
     32     }
     33 
     34     private static Collection convertCerts(Collection collection)
     35         throws CertificateEncodingException
     36     {
     37         List list = new ArrayList(collection.size());
     38 
     39         for (Iterator it = collection.iterator(); it.hasNext();)
     40         {
     41             Object o = it.next();
     42 
     43             if (o instanceof X509Certificate)
     44             {
     45                 X509Certificate cert = (X509Certificate)o;
     46 
     47                 try
     48                 {
     49                     list.add(new X509CertificateHolder(cert.getEncoded()));
     50                 }
     51                 catch (IOException e)
     52                 {
     53                     throw new CertificateEncodingException("unable to read encoding: " + e.getMessage());
     54                 }
     55             }
     56             else
     57             {
     58                 list.add((X509CertificateHolder)o);
     59             }
     60         }
     61 
     62         return list;
     63     }
     64 }
     65