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 2021/04/13 02:52:07 UTC

svn commit: r1888691 - /pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java

Author: tilman
Date: Tue Apr 13 02:52:07 2021
New Revision: 1888691

URL: http://svn.apache.org/viewvc?rev=1888691&view=rev
Log:
PDFBOX-5157: use signing date from timestamp

Modified:
    pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java

Modified: pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java?rev=1888691&r1=1888690&r2=1888691&view=diff
==============================================================================
--- pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java (original)
+++ pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/validation/AddValidationInformation.java Tue Apr 13 02:52:07 2021
@@ -58,6 +58,11 @@ import org.bouncycastle.asn1.ocsp.OCSPOb
 import org.bouncycastle.cert.ocsp.BasicOCSPResp;
 import org.bouncycastle.cert.ocsp.OCSPException;
 import org.bouncycastle.cert.ocsp.OCSPResp;
+import org.bouncycastle.cms.CMSException;
+import org.bouncycastle.cms.CMSSignedData;
+import org.bouncycastle.tsp.TSPException;
+import org.bouncycastle.tsp.TimeStampToken;
+import org.bouncycastle.tsp.TimeStampTokenInfo;
 
 /**
  * An example for adding Validation Information to a signed PDF, inspired by ETSI TS 102 778-4
@@ -145,12 +150,28 @@ public class AddValidationInformation
             {
                 certInfo = certInformationHelper.getLastCertInfo(signature, filename);
                 signDate = signature.getSignDate();
+                if ("ETSI.RFC3161".equals(signature.getSubFilter()))
+                {
+                    byte[] contents = signature.getContents();
+                    TimeStampToken timeStampToken = new TimeStampToken(new CMSSignedData(contents));
+                    TimeStampTokenInfo timeStampInfo = timeStampToken.getTimeStampInfo();
+                    signDate = Calendar.getInstance();
+                    signDate.setTime(timeStampInfo.getGenTime());
+                }
             }
         }
         catch (CertificateProccessingException e)
         {
             throw new IOException("An Error occurred processing the Signature", e);
         }
+        catch (CMSException e)
+        {
+            throw new IOException("An Error occurred processing the Signature", e);
+        }
+        catch (TSPException e)
+        {
+            throw new IOException("An Error occurred processing the Signature", e);
+        }
         if (certInfo == null)
         {
             throw new IOException(