220 /*
221 * Returns the (user) certificate pertaining to this SignerInfo.
222 */
223 public X509Certificate getCertificate(PKCS7 block)
224 throws IOException
225 {
226 return block.getCertificate(certificateSerialNumber, issuerName);
227 }
228
229 /*
230 * Returns the certificate chain pertaining to this SignerInfo.
231 */
232 public ArrayList<X509Certificate> getCertificateChain(PKCS7 block)
233 throws IOException
234 {
235 X509Certificate userCert;
236 userCert = block.getCertificate(certificateSerialNumber, issuerName);
237 if (userCert == null)
238 return null;
239
240 ArrayList<X509Certificate> certList = new ArrayList<X509Certificate>();
241 certList.add(userCert);
242
243 X509Certificate[] pkcsCerts = block.getCertificates();
244 if (pkcsCerts == null
245 || userCert.getSubjectDN().equals(userCert.getIssuerDN())) {
246 return certList;
247 }
248
249 Principal issuer = userCert.getIssuerDN();
250 int start = 0;
251 while (true) {
252 boolean match = false;
253 int i = start;
254 while (i < pkcsCerts.length) {
255 if (issuer.equals(pkcsCerts[i].getSubjectDN())) {
256 // next cert in chain found
257 certList.add(pkcsCerts[i]);
258 // if selected cert is self-signed, we're done
259 // constructing the chain
260 if (pkcsCerts[i].getSubjectDN().equals(
|
220 /*
221 * Returns the (user) certificate pertaining to this SignerInfo.
222 */
223 public X509Certificate getCertificate(PKCS7 block)
224 throws IOException
225 {
226 return block.getCertificate(certificateSerialNumber, issuerName);
227 }
228
229 /*
230 * Returns the certificate chain pertaining to this SignerInfo.
231 */
232 public ArrayList<X509Certificate> getCertificateChain(PKCS7 block)
233 throws IOException
234 {
235 X509Certificate userCert;
236 userCert = block.getCertificate(certificateSerialNumber, issuerName);
237 if (userCert == null)
238 return null;
239
240 ArrayList<X509Certificate> certList = new ArrayList<>();
241 certList.add(userCert);
242
243 X509Certificate[] pkcsCerts = block.getCertificates();
244 if (pkcsCerts == null
245 || userCert.getSubjectDN().equals(userCert.getIssuerDN())) {
246 return certList;
247 }
248
249 Principal issuer = userCert.getIssuerDN();
250 int start = 0;
251 while (true) {
252 boolean match = false;
253 int i = start;
254 while (i < pkcsCerts.length) {
255 if (issuer.equals(pkcsCerts[i].getSubjectDN())) {
256 // next cert in chain found
257 certList.add(pkcsCerts[i]);
258 // if selected cert is self-signed, we're done
259 // constructing the chain
260 if (pkcsCerts[i].getSubjectDN().equals(
|