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/04/26 19:55:37 UTC
svn commit: r1877034 -
/pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
Author: tilman
Date: Sun Apr 26 19:55:37 2020
New Revision: 1877034
URL: http://svn.apache.org/viewvc?rev=1877034&view=rev
Log:
PDFBOX-3017: optional TSA signing test
Modified:
pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
Modified: pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java?rev=1877034&r1=1877033&r2=1877034&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java (original)
+++ pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java Sun Apr 26 19:55:37 2020
@@ -95,6 +95,7 @@ public class TestCreateSignature
private static final String PASSWORD = "123456";
private static final String TSA_RESPONSE = "tsa_response.asn1";
private static Certificate certificate;
+ private static String tsa;
@Parameterized.Parameter
public boolean externallySign;
@@ -117,6 +118,7 @@ public class TestCreateSignature
KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(new FileInputStream(KEYSTORE_PATH), PASSWORD.toCharArray());
certificate = keystore.getCertificateChain(keystore.aliases().nextElement())[0];
+ tsa = System.getProperty("org.apache.pdfbox.examples.pdmodel.tsa");
}
/**
@@ -164,7 +166,8 @@ public class TestCreateSignature
*/
@Test
public void testDetachedSHA256WithTSA()
- throws IOException, CMSException, OperatorCreationException, GeneralSecurityException
+ throws IOException, CMSException, OperatorCreationException, GeneralSecurityException,
+ TSPException
{
// mock TSA response content
byte[] content = Files.readAllBytes(Paths.get(IN_DIR, TSA_RESPONSE));
@@ -183,22 +186,36 @@ public class TestCreateSignature
KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(new FileInputStream(KEYSTORE_PATH), PASSWORD.toCharArray());
+ String inPath = IN_DIR + "sign_me_tsa.pdf";
+ String outPath = OUT_DIR + getOutputFileName("signed{0}_tsa.pdf");
+
// sign PDF (will fail due to nonce and timestamp differing)
try
{
- String inPath = IN_DIR + "sign_me_tsa.pdf";
- String outPath = OUT_DIR + getOutputFileName("signed{0}_tsa.pdf");
CreateSignature signing = new CreateSignature(keystore, PASSWORD.toCharArray());
signing.setExternalSigning(externallySign);
signing.signDetached(new File(inPath), new File(outPath), tsaUrl);
+ Assert.fail("This should have failed");
}
catch (IOException e)
{
Assert.assertTrue(e.getCause() instanceof TSPValidationException);
+ new File(outPath).delete();
}
- // TODO verify the signed PDF file
- // TODO create a file signed with TSA
+ mockServer.stopServer();
+
+ if (tsa == null || tsa.isEmpty())
+ {
+ System.err.println("No TSA URL defined, test skipped");
+ return;
+ }
+
+ CreateSignature signing = new CreateSignature(keystore, PASSWORD.toCharArray());
+ signing.setExternalSigning(externallySign);
+ signing.signDetached(new File(inPath), new File(outPath), tsa);
+ checkSignature(new File(inPath), new File(outPath));
+ System.out.println("TSA test successful");
}
/**