Author: tilman
Date: Mon Jul 13 10:17:03 2026
New Revision: 1936104
Log:
PDFBOX-6218: use ByteArrrayInputStream as workaround because of changed
behavior in bc 1.85
Modified:
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
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
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/CreateEmbeddedTimeStamp.java
==============================================================================
---
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
Mon Jul 13 10:16:57 2026 (r1936103)
+++
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
Mon Jul 13 10:17:03 2026 (r1936104)
@@ -17,6 +17,7 @@
package org.apache.pdfbox.examples.signature;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -147,8 +148,8 @@ public class CreateEmbeddedTimeStamp
return;
}
- byte[] sigBlock = signature.getContents(documentBytes);
- CMSSignedData signedData = new CMSSignedData(sigBlock);
+ byte[] contents = signature.getContents(documentBytes);
+ CMSSignedData signedData = new CMSSignedData(new
ByteArrayInputStream(contents));
System.out.println("INFO: Byte Range: " +
Arrays.toString(signature.getByteRange()));
Modified:
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
==============================================================================
---
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
Mon Jul 13 10:16:57 2026 (r1936103)
+++
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
Mon Jul 13 10:17:03 2026 (r1936104)
@@ -381,7 +381,9 @@ public final class ShowSignature
throws CMSException, NoSuchAlgorithmException, IOException,
TSPException,
OperatorCreationException, CertificateVerificationException,
CertificateException
{
- TimeStampToken timeStampToken = new TimeStampToken(new
CMSSignedData(contents));
+ ByteArrayInputStream certStream = new ByteArrayInputStream(contents);
+ TimeStampToken timeStampToken = new TimeStampToken(new
CMSSignedData(certStream));
+ certStream.reset();
TimeStampTokenInfo timeStampInfo = timeStampToken.getTimeStampInfo();
System.out.println("Time stamp gen time: " +
timeStampInfo.getGenTime());
if (timeStampInfo.getTsa() != null)
@@ -390,7 +392,6 @@ public final class ShowSignature
}
CertificateFactory factory = CertificateFactory.getInstance("X.509");
- ByteArrayInputStream certStream = new ByteArrayInputStream(contents);
Collection<? extends Certificate> certs =
factory.generateCertificates(certStream);
System.out.println("certs=" + certs);
@@ -442,7 +443,7 @@ public final class ShowSignature
// http://stackoverflow.com/a/26702631/535646
// http://stackoverflow.com/a/9261365/535646
CMSProcessable signedContent = new
CMSProcessableInputStream(signedContentAsStream);
- CMSSignedData signedData = new CMSSignedData(signedContent, contents);
+ CMSSignedData signedData = new CMSSignedData(signedContent, new
ByteArrayInputStream(contents));
Store<X509CertificateHolder> certificatesStore =
signedData.getCertificates();
if (certificatesStore.getMatches(null).isEmpty())
{
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/AddValidationInformation.java
Mon Jul 13 10:16:57 2026 (r1936103)
+++
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
Mon Jul 13 10:17:03 2026 (r1936104)
@@ -17,6 +17,7 @@
package org.apache.pdfbox.examples.signature.validation;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -157,7 +158,7 @@ public class AddValidationInformation
if ("ETSI.RFC3161".equals(signature.getSubFilter()))
{
byte[] contents = signature.getContents();
- TimeStampToken timeStampToken = new TimeStampToken(new
CMSSignedData(contents));
+ TimeStampToken timeStampToken = new TimeStampToken(new
CMSSignedData(new ByteArrayInputStream(contents)));
TimeStampTokenInfo timeStampInfo =
timeStampToken.getTimeStampInfo();
signDate = Calendar.getInstance();
signDate.setTime(timeStampInfo.getGenTime());
Modified:
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
==============================================================================
---
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
Mon Jul 13 10:16:57 2026 (r1936103)
+++
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
Mon Jul 13 10:17:03 2026 (r1936104)
@@ -17,6 +17,7 @@
package org.apache.pdfbox.examples.signature.validation;
+import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -113,7 +114,7 @@ public class CertInformationCollector
try
{
- CMSSignedData signedData = new CMSSignedData(signatureContent);
+ CMSSignedData signedData = new CMSSignedData(new
ByteArrayInputStream(signatureContent));
SignerInformation signerInformation =
processSignerStore(signedData, rootCertInfo);
addTimestampCerts(signerInformation);
}
Modified:
pdfbox/branches/3.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
==============================================================================
---
pdfbox/branches/3.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
Mon Jul 13 10:16:57 2026 (r1936103)
+++
pdfbox/branches/3.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
Mon Jul 13 10:17:03 2026 (r1936104)
@@ -355,8 +355,9 @@ class TestCreateSignature
byte[] totalFileContent = Files.readAllBytes(new File(OUT_DIR,
fileName).toPath());
byte[] signedFileContent =
signature.getSignedContent(totalFileContent);
byte[] contents = signature.getContents();
- TimeStampToken timeStampToken = new TimeStampToken(new
CMSSignedData(contents));
ByteArrayInputStream certStream = new
ByteArrayInputStream(contents);
+ TimeStampToken timeStampToken = new TimeStampToken(new
CMSSignedData(certStream));
+ certStream.reset();
Collection<? extends Certificate> certs =
certificateFactory.generateCertificates(certStream);
String hashAlgorithm =
timeStampToken.getTimeStampInfo().getMessageImprintAlgOID().getId();
@@ -601,7 +602,7 @@ class TestCreateSignature
// inspiration:
// http://stackoverflow.com/a/26702631/535646
// http://stackoverflow.com/a/9261365/535646
- CMSSignedData signedData = new CMSSignedData(new
CMSProcessableByteArray(signedFileContent1), contents);
+ CMSSignedData signedData = new CMSSignedData(new
CMSProcessableByteArray(signedFileContent1), new
ByteArrayInputStream(contents));
Store<X509CertificateHolder> certificatesStore =
signedData.getCertificates();
Collection<SignerInformation> signers =
signedData.getSignerInfos().getSigners();
SignerInformation signerInformation =
signers.iterator().next();
@@ -853,7 +854,7 @@ class TestCreateSignature
hexSignature = bfr.readLine();
}
- CMSSignedData signedData = new
CMSSignedData(Hex.decodeHex(hexSignature));
+ CMSSignedData signedData = new CMSSignedData(new
ByteArrayInputStream(Hex.decodeHex(hexSignature)));
Collection<SignerInformation> signers =
signedData.getSignerInfos().getSigners();
SignerInformation signerInformation = signers.iterator().next();
Store<X509CertificateHolder> certificatesStore =
signedData.getCertificates();
@@ -971,7 +972,7 @@ class TestCreateSignature
byte[] signatureHash =
MessageDigest.getInstance("SHA-1").digest(contents);
String hexSignatureHash = Hex.getString(signatureHash);
System.out.println("hexSignatureHash: " + hexSignatureHash);
- CMSSignedData signedData = new CMSSignedData(contents);
+ CMSSignedData signedData = new CMSSignedData(new
ByteArrayInputStream(contents));
Store<X509CertificateHolder> certificatesStore =
signedData.getCertificates();
HashSet<X509CertificateHolder> certificateHolderSet =
new HashSet<>(certificatesStore.getMatches(null));