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));