In fact, the correct chain might not be found in the right order, so, there 
could be a try/catch block within the for loop:

try (InputStream in = certUrl.openStream())
{
    Collection<? extends java.security.cert.Certificate> altIssuerCerts =
certFactory.generateCertificates(in);
    for (java.security.cert.Certificate c : altIssuerCerts) {
        X509Certificate altIssuerCert = (X509Certificate) c;
        addCertToCertificatesMap(altIssuerCert);

        certInfo.alternativeCertChain = new CertSignatureInformation();
        try {
            traverseChain(altIssuerCert, certInfo.alternativeCertChain,
maxDepth - 1);
        } catch (IOException e) {
            LOG.error("Error getting additional Certificate from " + 
certInfo.issuerUrl, e);
        }
    }
}

On 2019/01/31 16:43:20, Tilman Hausherr <[email protected]> wrote: 
> Yes this sounds good, thanks. I'll add it soon.
> 
> Tilman
> 
> Am 31.01.2019 um 14:27 schrieb Tobias Brignol Petry:
> > Hello,
> >
> > The current version of
> > org.apache.pdfbox.examples.signature.validation.CertInformationCollector
> > supports a single certificate as the alternative issuer.
> > It could support chains also:
> >
> > ---------------------------
> > Current code (lines 300-308):
> > try (InputStream in = certUrl.openStream())
> > {
> >      X509Certificate altIssuerCert = (X509Certificate) certFactory
> >              .generateCertificate(in);
> >      addCertToCertificatesMap(altIssuerCert);
> >
> >      certInfo.alternativeCertChain = new CertSignatureInformation();
> >      traverseChain(altIssuerCert, certInfo.alternativeCertChain, maxDepth -
> > 1);
> > }
> > ------------------------------
> > Proposed update:
> > try (InputStream in = certUrl.openStream())
> > {
> >      Collection<? extends java.security.cert.Certificate> altIssuerCerts =
> > certFactory.generateCertificates(in);
> >      for (java.security.cert.Certificate c : altIssuerCerts) {
> >          X509Certificate altIssuerCert = (X509Certificate) c;
> >          addCertToCertificatesMap(altIssuerCert);
> >
> >          certInfo.alternativeCertChain = new CertSignatureInformation();
> >          traverseChain(altIssuerCert, certInfo.alternativeCertChain,
> > maxDepth - 1);
> >      }
> > }
> > --------------------------
> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to