package org.simpleframework.demo.ssl;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class CertificateReader {
private List<File> certificates;
public CertificateReader() {
this(Collections.EMPTY_LIST);
}
public CertificateReader(List<File> certificates) {
this.certificates = certificates;
}
public X509Certificate[] getCertificates() throws Exception {
List<X509Certificate> result = new LinkedList<X509Certificate>();
X509Certificate[] array = new X509Certificate[] {};
for (File certificateFile : certificates) {
if (certificateFile.exists()) {
Collection<? extends Certificate> list = getCertificates(certificateFile);
for (Certificate entry : list) {
if (entry instanceof X509Certificate) {
result.add((X509Certificate) entry);
}
}
}
}
return result.toArray(array);
}
private Collection<? extends Certificate> getCertificates(File certificateFile) throws Exception {
InputStream certificateStream = new FileInputStream(certificateFile);
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
try {
return certificateFactory.generateCertificates(certificateStream);
} finally {
certificateStream.close();
}
}
}