Author: tilman
Date: Mon Jul 13 10:16:51 2026
New Revision: 1936102

Log:
PDFBOX-6218: use ByteArrrayInputStream as workaround because of changed 
behavior in bc 1.85

Modified:
   
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
   
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
   
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
   
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
   
pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java

Modified: 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
==============================================================================
--- 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
       Mon Jul 13 09:14:17 2026        (r1936101)
+++ 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
       Mon Jul 13 10:16:51 2026        (r1936102)
@@ -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/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
==============================================================================
--- 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
 Mon Jul 13 09:14:17 2026        (r1936101)
+++ 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
 Mon Jul 13 10:16:51 2026        (r1936102)
@@ -380,7 +380,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)
@@ -389,7 +391,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);
         
@@ -441,7 +442,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/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
==============================================================================
--- 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
   Mon Jul 13 09:14:17 2026        (r1936101)
+++ 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
   Mon Jul 13 10:16:51 2026        (r1936102)
@@ -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/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
==============================================================================
--- 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
   Mon Jul 13 09:14:17 2026        (r1936101)
+++ 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
   Mon Jul 13 10:16:51 2026        (r1936102)
@@ -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/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
==============================================================================
--- 
pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
     Mon Jul 13 09:14:17 2026        (r1936101)
+++ 
pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
     Mon Jul 13 10:16:51 2026        (r1936102)
@@ -356,8 +356,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();
@@ -603,7 +604,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();
@@ -857,7 +858,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();
@@ -975,7 +976,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));

Reply via email to