package org.openstack.atlas.util.ca.primitives.bcextenders; import java.io.IOException; import java.io.InputStream; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import org.bouncycastle.jce.provider.X509CertificateObject; import org.openstack.atlas.util.ca.PemUtils; import org.openstack.atlas.util.ca.primitives.PemBlock; import org.openstack.atlas.util.ca.primitives.RsaConst; import org.openstack.atlas.util.ca.util.StaticHelpers; import org.openstack.atlas.util.ca.util.fileio.RsaFileUtils; public class StaticPems { public static final Set<X509CertificateObject> roots; public static final Set<X509CertificateObject> imds; static { RsaConst.init(); Set<X509CertificateObject> x509Objs; try { x509Objs = getX509CertificateObjectSet("/pems/roots.crt"); } catch (IOException ex) { x509Objs = new HashSet<X509CertificateObject>(); } roots = x509Objs; try { x509Objs = getX509CertificateObjectSet("/pems/imds.crt"); } catch (IOException ex) { x509Objs = new HashSet<X509CertificateObject>(); } imds = x509Objs; } public static Set<X509CertificateObject> getRootsSet() { return new HashSet<X509CertificateObject>(roots); } public static Set<X509CertificateObject> getImdSet() { return new HashSet<X509CertificateObject>(imds); } public static Set<X509CertificateObject> getX509CertificateObjectSet(String fileName) throws IOException { Set<X509CertificateObject> objSet = new HashSet<X509CertificateObject>(); List objList = readPemObjectsFromClass(fileName); for (Object obj : objList) { objSet.add((X509CertificateObject) obj); } return objSet; } private static List readPemObjectsFromClass(String fileName) throws IOException { byte[] pemBytes = RsaFileUtils.readFileFromClassPath(fileName); List<PemBlock> blocks = PemUtils.parseMultiPem(pemBytes); List objList = StaticHelpers.filterObjectList(PemUtils.getBlockObjects(blocks), null); return objList; } }