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");
     }
     
     /**