You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2020/06/25 17:10:50 UTC
svn commit: r1879196 -
/pdfbox/branches/issue45/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
Author: tilman
Date: Thu Jun 25 17:10:50 2020
New Revision: 1879196
URL: http://svn.apache.org/viewvc?rev=1879196&view=rev
Log:
PDFBOX-3017: better focusing that timestamp is there when expected, and not when not expected; test late embedded timestamp
Modified:
pdfbox/branches/issue45/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
Modified: pdfbox/branches/issue45/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/issue45/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java?rev=1879196&r1=1879195&r2=1879196&view=diff
==============================================================================
--- pdfbox/branches/issue45/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java (original)
+++ pdfbox/branches/issue45/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java Thu Jun 25 17:10:50 2020
@@ -46,6 +46,7 @@ import org.apache.pdfbox.cos.COSDictiona
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSString;
import org.apache.pdfbox.examples.interactive.form.CreateSimpleForm;
+import org.apache.pdfbox.examples.signature.CreateEmbeddedTimeStamp;
import org.apache.pdfbox.examples.signature.CreateEmptySignatureForm;
import org.apache.pdfbox.examples.signature.CreateSignature;
import org.apache.pdfbox.examples.signature.CreateVisibleSignature;
@@ -146,9 +147,21 @@ public class TestCreateSignature
signing.setExternalSigning(externallySign);
final String fileName = getOutputFileName("signed{0}.pdf");
+ final String fileName2 = getOutputFileName("signed{0}-late-tsa.pdf");
signing.signDetached(new File(inDir + "sign_me.pdf"), new File(outDir + fileName));
- checkSignature(new File(inDir, "sign_me.pdf"), new File(outDir, fileName));
+ checkSignature(new File(inDir, "sign_me.pdf"), new File(outDir, fileName), false);
+
+ // Also test CreateEmbeddedTimeStamp if tsa URL is available
+ if (tsa == null || tsa.isEmpty())
+ {
+ System.err.println("No TSA URL defined, test skipped");
+ return;
+ }
+
+ CreateEmbeddedTimeStamp tsaSigning = new CreateEmbeddedTimeStamp(tsa);
+ tsaSigning.embedTimeStamp(new File(outDir, fileName), new File(outDir, fileName2));
+ checkSignature(new File(outDir, fileName), new File(outDir, fileName2), true);
}
/**
@@ -218,7 +231,7 @@ public class TestCreateSignature
CreateSignature signing2 = new CreateSignature(keystore, password.toCharArray());
signing2.setExternalSigning(externallySign);
signing2.signDetached(new File(inPath), new File(outPath), tsa);
- checkSignature(new File(inPath), new File(outPath));
+ checkSignature(new File(inPath), new File(outPath), true);
System.out.println("TSA test successful");
}
@@ -252,7 +265,7 @@ public class TestCreateSignature
signing.signPDF(new File(inPath), destFile, null);
fis.close();
- checkSignature(new File(inPath), destFile);
+ checkSignature(new File(inPath), destFile, false);
}
/**
@@ -296,7 +309,7 @@ public class TestCreateSignature
signing1.setExternalSigning(false);
signing1.signDetached(new File(filename), new File(filenameSigned1));
- checkSignature(new File(filename), new File(filenameSigned1));
+ checkSignature(new File(filename), new File(filenameSigned1), false);
PDDocument doc1 = PDDocument.load(new File(filenameSigned1));
List<PDSignature> signatureDictionaries = doc1.getSignatureDictionaries();
@@ -312,7 +325,7 @@ public class TestCreateSignature
signing2.signPDF(new File(filenameSigned1), new File(filenameSigned2), null, "Signature1");
fis.close();
- checkSignature(new File(filenameSigned1), new File(filenameSigned2));
+ checkSignature(new File(filenameSigned1), new File(filenameSigned2), false);
PDDocument doc2 = PDDocument.load(new File(filenameSigned2));
signatureDictionaries = doc2.getSignatureDictionaries();
@@ -326,7 +339,7 @@ public class TestCreateSignature
}
// This check fails with a file created with the code before PDFBOX-3011 was solved.
- private void checkSignature(File origFile, File signedFile)
+ private void checkSignature(File origFile, File signedFile, boolean checkTimeStamp)
throws IOException, CMSException, OperatorCreationException, GeneralSecurityException,
TSPException
{
@@ -383,10 +396,15 @@ public class TestCreateSignature
}
TimeStampToken timeStampToken = extractTimeStampTokenFromSignerInformation(signerInformation);
- if (timeStampToken != null)
+ if (checkTimeStamp)
{
+ Assert.assertNotNull(timeStampToken);
validateTimestampToken(timeStampToken);
}
+ else
+ {
+ Assert.assertNull(timeStampToken);
+ }
}
document.close();
}
@@ -508,7 +526,7 @@ public class TestCreateSignature
final String fileNameResaved2 = getOutputFileName("SimpleForm_signed{0}_incrementallyresaved2.pdf");
signing.signDetached(new File("target/SimpleForm.pdf"), new File(outDir + fileNameSigned));
- checkSignature(new File("target/SimpleForm.pdf"), new File(outDir, fileNameSigned));
+ checkSignature(new File("target/SimpleForm.pdf"), new File(outDir, fileNameSigned), false);
PDDocument doc = PDDocument.load(new File(outDir, fileNameSigned));
@@ -543,7 +561,7 @@ public class TestCreateSignature
((COSDictionary) field.getWidgets().get(0).getAppearance().getNormalAppearance().getCOSObject()).setNeedToBeUpdated(true);
doc.saveIncremental(fileOutputStream);
doc.close();
- checkSignature(new File("target/SimpleForm.pdf"), new File(outDir, fileNameResaved1));
+ checkSignature(new File("target/SimpleForm.pdf"), new File(outDir, fileNameResaved1), false);
doc = PDDocument.load(new File(outDir, fileNameResaved1));
@@ -583,7 +601,7 @@ public class TestCreateSignature
doc.saveIncremental(fileOutputStream, objectsToWrite);
doc.close();
- checkSignature(new File("target/SimpleForm.pdf"), new File(outDir, fileNameResaved2));
+ checkSignature(new File("target/SimpleForm.pdf"), new File(outDir, fileNameResaved2), false);
doc = PDDocument.load(new File(outDir, fileNameResaved2));
field = doc.getDocumentCatalog().getAcroForm().getField("SampleField");
@@ -598,7 +616,6 @@ public class TestCreateSignature
Assert.assertArrayEquals(expectedData.getData(), actualData.getData());
doc.close();
}
-}
@Test
public void testPDFBox4784() throws Exception
@@ -659,4 +676,3 @@ public class TestCreateSignature
}
}
}
-