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 2018/10/31 20:07:31 UTC

svn commit: r1845380 - /pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java

Author: tilman
Date: Wed Oct 31 20:07:31 2018
New Revision: 1845380

URL: http://svn.apache.org/viewvc?rev=1845380&view=rev
Log:
PDFBOX-3017: refactor TimeStampToken extraction

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

Modified: pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java?rev=1845380&r1=1845379&r2=1845380&view=diff
==============================================================================
--- pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java (original)
+++ pdfbox/branches/2.0/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java Wed Oct 31 20:07:31 2018
@@ -334,18 +334,10 @@ public final class ShowSignature
 
         SigUtils.checkCertificateUsage(certFromSignedData);
 
-        if (signerInformation.getUnsignedAttributes() != null)
+        // Embedded timestamp
+        TimeStampToken timeStampToken = extractTimeStampTokenFromSignerInformation(signerInformation);
+        if (timeStampToken != null)
         {
-            // Embedded timestamp
-            AttributeTable unsignedAttributes = signerInformation.getUnsignedAttributes();
-
-            // https://stackoverflow.com/questions/1647759/how-to-validate-if-a-signed-jar-contains-a-timestamp
-            Attribute attribute = unsignedAttributes.get(
-                    PKCSObjectIdentifiers.id_aa_signatureTimeStampToken);
-            ASN1Object obj = (ASN1Object) attribute.getAttrValues().getObjectAt(0);
-            CMSSignedData signedTSTData = new CMSSignedData(obj.getEncoded());
-            TimeStampToken timeStampToken = new TimeStampToken(signedTSTData);
-
             // tested with QV_RCA1_RCA3_CPCPS_V4_11.pdf
             // https://www.quovadisglobal.com/~/media/Files/Repository/QV_RCA1_RCA3_CPCPS_V4_11.ashx
             // timeStampToken.getCertificates() only contained the local certificate and not
@@ -421,6 +413,22 @@ public final class ShowSignature
         }
     }
 
+    private TimeStampToken extractTimeStampTokenFromSignerInformation(SignerInformation signerInformation)
+            throws CMSException, IOException, TSPException
+    {
+        if (signerInformation.getUnsignedAttributes() == null)
+        {
+            return null;
+        }
+        AttributeTable unsignedAttributes = signerInformation.getUnsignedAttributes();
+        // https://stackoverflow.com/questions/1647759/how-to-validate-if-a-signed-jar-contains-a-timestamp
+        Attribute attribute = unsignedAttributes.get(
+                PKCSObjectIdentifiers.id_aa_signatureTimeStampToken);
+        ASN1Object obj = (ASN1Object) attribute.getAttrValues().getObjectAt(0);
+        CMSSignedData signedTSTData = new CMSSignedData(obj.getEncoded());
+        return new TimeStampToken(signedTSTData);
+    }
+
     private void validateTimestampToken(TimeStampToken timeStampToken)
             throws IOException, CertificateException, TSPException, OperatorCreationException
     {