Author: tilman
Date: Mon Jul 13 10:16:57 2026
New Revision: 1936103

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

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

Modified: 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
==============================================================================
--- 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
        Mon Jul 13 10:16:51 2026        (r1936102)
+++ 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
        Mon Jul 13 10:16:57 2026        (r1936103)
@@ -17,6 +17,7 @@
 
 package org.apache.pdfbox.examples.signature;
 
+import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -144,8 +145,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/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
==============================================================================
--- 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
  Mon Jul 13 10:16:51 2026        (r1936102)
+++ 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
  Mon Jul 13 10:16:57 2026        (r1936103)
@@ -364,7 +364,9 @@ public final class ShowSignature
             throws CertificateException, CMSException, IOException, 
OperatorCreationException,
             TSPException, NoSuchAlgorithmException, 
CertificateVerificationException
     {
-        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)
@@ -373,7 +375,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);
         
@@ -417,7 +418,7 @@ public final class ShowSignature
         // http://stackoverflow.com/a/26702631/535646
         // http://stackoverflow.com/a/9261365/535646
         CMSProcessable signedContent = new CMSProcessableByteArray(byteArray);
-        CMSSignedData signedData = new CMSSignedData(signedContent, contents);
+        CMSSignedData signedData = new CMSSignedData(signedContent, new 
ByteArrayInputStream(contents));
         @SuppressWarnings("unchecked")
         Store<X509CertificateHolder> certificatesStore = 
signedData.getCertificates();
         if (certificatesStore.getMatches(null).isEmpty())

Modified: 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
==============================================================================
--- 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
    Mon Jul 13 10:16:51 2026        (r1936102)
+++ 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
    Mon Jul 13 10:16:57 2026        (r1936103)
@@ -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/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
==============================================================================
--- 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
    Mon Jul 13 10:16:51 2026        (r1936102)
+++ 
pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/CertInformationCollector.java
    Mon Jul 13 10:16:57 2026        (r1936103)
@@ -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;
@@ -115,7 +116,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/2.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
==============================================================================
--- 
pdfbox/branches/2.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
      Mon Jul 13 10:16:51 2026        (r1936102)
+++ 
pdfbox/branches/2.0/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
      Mon Jul 13 10:16:57 2026        (r1936103)
@@ -282,8 +282,9 @@ public class TestCreateSignature
         byte[] signedFileContent =
                 signature.getSignedContent(new FileInputStream(new 
File(outDir, fileName)));
         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();
@@ -491,7 +492,7 @@ public class TestCreateSignature
             // inspiration:
             // http://stackoverflow.com/a/26702631/535646
             // http://stackoverflow.com/a/9261365/535646
-            CMSSignedData signedData = new CMSSignedData(new 
CMSProcessableByteArray(buf), contents);
+            CMSSignedData signedData = new CMSSignedData(new 
CMSProcessableByteArray(buf), new ByteArrayInputStream(contents));
             Store certificatesStore = signedData.getCertificates();
             Collection<SignerInformation> signers = 
signedData.getSignerInfos().getSigners();
             SignerInformation signerInformation = signers.iterator().next();
@@ -759,7 +760,7 @@ public class TestCreateSignature
         hexSignature = bfr.readLine();
         bfr.close();
 
-        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();
@@ -919,7 +920,7 @@ public 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<X509CertificateHolder>(certificatesStore.getMatches(null));

Reply via email to