Author: tilman
Date: Mon Jan 20 12:07:24 2025
New Revision: 1923259
URL: http://svn.apache.org/viewvc?rev=1923259&view=rev
Log:
PDFBOX-5936: make issuers a Set
Modified:
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
Modified:
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java?rev=1923259&r1=1923258&r2=1923259&view=diff
==============================================================================
---
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
(original)
+++
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
Mon Jan 20 12:07:24 2025
@@ -279,7 +279,7 @@ public class AddValidationInformation
boolean isRevocationInfoFound =
foundRevocationInformation.contains(certInfo.getCertificate());
if (!isRevocationInfoFound)
{
- if (certInfo.getOcspUrl() != null &&
certInfo.getIssuerCertificate() != null)
+ if (certInfo.getOcspUrl() != null &&
!certInfo.getIssuerCertificates().isEmpty())
{
isRevocationInfoFound = fetchOcspData(certInfo);
}
@@ -370,13 +370,21 @@ public class AddValidationInformation
CertificateProccessingException, RevokedCertificateException,
URISyntaxException
{
X509Certificate certificate = certInfo.getCertificate();
- X509Certificate issuerCertificate = certInfo.getIssuerCertificate();
- String ocspURL = certInfo.getOcspUrl();
if (ocspChecked.contains(certificate))
{
// This certificate has been OCSP-checked before
return;
}
+ for (X509Certificate issuerCertificate :
certInfo.getIssuerCertificates())
+ {
+ addOcspData(certificate, issuerCertificate, certInfo.getOcspUrl());
+ }
+ }
+
+ private void addOcspData(X509Certificate certificate, X509Certificate
issuerCertificate, String ocspURL)
+ throws IOException, OCSPException, CertificateProccessingException,
+ RevokedCertificateException, URISyntaxException
+ {
OcspHelper ocspHelper = new OcspHelper(
certificate,
signDate.getTime(),
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=1923259&r1=1923258&r2=1923259&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
Mon Jan 20 12:07:24 2025
@@ -106,6 +106,9 @@ public class CertInformationCollector
{
rootCertInfo = new CertSignatureInformation();
+ //
https://www.etsi.org/deliver/etsi_ts/102700_102799/10277804/01.01.02_60/ts_10277804v010102p.pdf
+ // The key of each entry in this dictionary is the base-16-encoded
(uppercase)
+ // SHA1 digest of the signature to which it applies
rootCertInfo.signatureHash =
CertInformationHelper.getSha1Hash(signatureContent);
try
@@ -251,7 +254,7 @@ public class CertInformationCollector
certificate.verify(issuer.getPublicKey(),
SecurityProvider.getProvider());
LOG.info("Found issuer for Cert: " +
certificate.getSubjectX500Principal()
+ "\n" + issuer.getSubjectX500Principal());
- certInfo.issuerCertificate = issuer;
+ certInfo.issuerCertificates.add(issuer);
certInfo.certChain = new CertSignatureInformation();
traverseChain(issuer, certInfo.certChain, maxDepth - 1);
++count;
@@ -261,7 +264,7 @@ public class CertInformationCollector
// not the issuer
}
}
- if (certInfo.issuerCertificate == null)
+ if (certInfo.issuerCertificates.isEmpty())
{
throw new IOException(
"No Issuer Certificate found for Cert: '" +
@@ -411,7 +414,7 @@ public class CertInformationCollector
private String ocspUrl;
private String crlUrl;
private String issuerUrl;
- private X509Certificate issuerCertificate;
+ private final Set<X509Certificate> issuerCertificates = new
HashSet<>();
private CertSignatureInformation certChain;
private CertSignatureInformation tsaCerts;
private CertSignatureInformation alternativeCertChain;
@@ -446,9 +449,9 @@ public class CertInformationCollector
return isSelfSigned;
}
- public X509Certificate getIssuerCertificate()
+ public Set<X509Certificate> getIssuerCertificates()
{
- return issuerCertificate;
+ return issuerCertificates;
}
public String getSignatureHash()