Author: tilman
Date: Sun Jan 19 16:32:25 2025
New Revision: 1923236
URL: http://svn.apache.org/viewvc?rev=1923236&view=rev
Log:
PDFBOX-5936: traverse all chains if there are several issuers + reactivate
test code from 5203
Modified:
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
pdfbox/branches/3.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
Modified:
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java?rev=1923236&r1=1923235&r2=1923236&view=diff
==============================================================================
---
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
(original)
+++
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
Sun Jan 19 16:32:25 2025
@@ -243,17 +243,18 @@ public class CertInformationCollector
return;
}
+ int count = 0;
for (X509Certificate issuer : certificateSet)
{
try
{
certificate.verify(issuer.getPublicKey(),
SecurityProvider.getProvider());
- LOG.info("Found the right Issuer Cert! for Cert: " +
certificate.getSubjectX500Principal()
+ LOG.info("Found issuer for Cert: " +
certificate.getSubjectX500Principal()
+ "\n" + issuer.getSubjectX500Principal());
certInfo.issuerCertificate = issuer;
certInfo.certChain = new CertSignatureInformation();
traverseChain(issuer, certInfo.certChain, maxDepth - 1);
- break;
+ ++count;
}
catch (GeneralSecurityException ex)
{
@@ -267,6 +268,11 @@ public class CertInformationCollector
certificate.getSubjectX500Principal() + "', i.e.
Cert '" +
certificate.getIssuerX500Principal() + "' is
missing in the chain");
}
+ if (count > 1)
+ {
+ // not a bug, see comment by mkl in PDFBOX-5203
+ LOG.info("Several issuers for Cert: '" +
certificate.getSubjectX500Principal() + "'");
+ }
}
/**
Modified:
pdfbox/branches/3.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java?rev=1923236&r1=1923235&r2=1923236&view=diff
==============================================================================
---
pdfbox/branches/3.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
(original)
+++
pdfbox/branches/3.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
Sun Jan 19 16:32:25 2025
@@ -963,11 +963,11 @@ class TestCreateSignature
{
continue; // not relevant here
}
- // disabled until PDFBOX-5203 is fixed
-// assertTrue(sigCertHolderSetFromVRIArray.contains(holder),
-// "File '" + outFile + "' Root/DSS/VRI/" +
hexSignatureHash +
-// "/Cert array doesn't contain a certificate
with subject '" +
-// holder.getSubject() + "' and serial " +
holder.getSerialNumber());
+ assertTrue(sigCertHolderSetFromVRIArray.contains(holder),
+ "File '" + outFile + "' Root/DSS/VRI/" +
hexSignatureHash +
+ "/Cert array doesn't contain a certificate
with subject '" +
+ holder.getSubject() +
+ "' and serial " +
holder.getSerialNumber().toString(16).toUpperCase());
}
// Get all certificates. Each one should either be issued (=
signed) by a certificate of the set
Set<X509Certificate> certSet = new HashSet<>();
@@ -995,9 +995,8 @@ class TestCreateSignature
// not the issuer
}
}
- // disabled until PDFBOX-5203 is fixed
-// assertTrue(verified,
-// "Certificate " + cert.getSubjectX500Principal() + " not
issued by any certificate in the Certs array");
+ assertTrue(verified,
+ "Certificate " + cert.getSubjectX500Principal() + " not
issued by any certificate in the Certs array");
}
// Each CRL should be signed by one of the certificates in Certs
Set<X509CRL> crlSet = new HashSet<>();