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/10/21 18:00:50 UTC

svn commit: r1882740 - /pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java

Author: tilman
Date: Wed Oct 21 18:00:49 2020
New Revision: 1882740

URL: http://svn.apache.org/viewvc?rev=1882740&view=rev
Log:
PDFBOX-3017: avoid NPE; refactor

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

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java?rev=1882740&r1=1882739&r2=1882740&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java Wed Oct 21 18:00:49 2020
@@ -77,6 +77,7 @@ import org.bouncycastle.cms.jcajce.JcaSi
 import org.bouncycastle.operator.OperatorCreationException;
 import org.bouncycastle.tsp.TSPException;
 import org.bouncycastle.tsp.TimeStampToken;
+import org.bouncycastle.tsp.TimeStampTokenInfo;
 import org.bouncycastle.util.CollectionStore;
 import org.bouncycastle.util.Selector;
 import org.bouncycastle.util.Store;
@@ -373,18 +374,22 @@ public final class ShowSignature
             OperatorCreationException, CertificateVerificationException, CertificateException
     {
         TimeStampToken timeStampToken = new TimeStampToken(new CMSSignedData(contents));
-        System.out.println("Time stamp gen time: " + timeStampToken.getTimeStampInfo().getGenTime());
-        System.out.println("Time stamp tsa name: " + timeStampToken.getTimeStampInfo().getTsa().getName());
+        TimeStampTokenInfo timeStampInfo = timeStampToken.getTimeStampInfo();
+        System.out.println("Time stamp gen time: " + timeStampInfo.getGenTime());
+        if (timeStampInfo.getTsa() != null)
+        {
+            System.out.println("Time stamp tsa name: " + timeStampInfo.getTsa().getName());
+        }
         
         CertificateFactory factory = CertificateFactory.getInstance("X.509");
         ByteArrayInputStream certStream = new ByteArrayInputStream(contents);
         Collection<? extends Certificate> certs = factory.generateCertificates(certStream);
         System.out.println("certs=" + certs);
         
-        String hashAlgorithm = timeStampToken.getTimeStampInfo().getMessageImprintAlgOID().getId();
+        String hashAlgorithm = timeStampInfo.getMessageImprintAlgOID().getId();
         // compare the hash of the signed content with the hash in the timestamp
         if (Arrays.equals(MessageDigest.getInstance(hashAlgorithm).digest(buf),
-                timeStampToken.getTimeStampInfo().getMessageImprintDigest()))
+                timeStampInfo.getMessageImprintDigest()))
         {
             System.out.println("ETSI.RFC3161 timestamp signature verified");
         }
@@ -398,7 +403,7 @@ public final class ShowSignature
         SigUtils.validateTimestampToken(timeStampToken);
         SigUtils.verifyCertificateChain(timeStampToken.getCertificates(),
                 certFromTimeStamp,
-                timeStampToken.getTimeStampInfo().getGenTime());
+                timeStampInfo.getGenTime());
     }
 
     /**