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 2017/11/02 07:09:26 UTC

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

Author: tilman
Date: Thu Nov  2 07:09:26 2017
New Revision: 1814037

URL: http://svn.apache.org/viewvc?rev=1814037&view=rev
Log:
PDFBOX-3017: simplify code, avoid NPE

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=1814037&r1=1814036&r2=1814037&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 Thu Nov  2 07:09:26 2017
@@ -121,7 +121,7 @@ public final class ShowSignature
                         long fileLen = infile.length();
                         long rangeMax = byteRange[2] + (long) byteRange[3];
                         // multiply content length with 2 (because it is in hex in the PDF) and add 2 for < and >
-                        int contentLen = sigDict.getString(COSName.CONTENTS).length() * 2 + 2;
+                        int contentLen = contents.getString().length() * 2 + 2;
                         if (fileLen != rangeMax || byteRange[0] != 0 || byteRange[1] + contentLen != byteRange[2])
                         {
                             // a false result doesn't necessarily mean that the PDF is a fake
@@ -155,9 +155,7 @@ public final class ShowSignature
                             case "adbe.pkcs7.sha1":
                             {
                                 // example: PDFBOX-1452.pdf
-                                COSString certString = (COSString) sigDict.getDictionaryObject(
-                                        COSName.CONTENTS);
-                                byte[] certData = certString.getBytes();
+                                byte[] certData = contents.getBytes();
                                 CertificateFactory factory = CertificateFactory.getInstance("X.509");
                                 ByteArrayInputStream certStream = new ByteArrayInputStream(certData);
                                 Collection<? extends Certificate> certs = factory.generateCertificates(certStream);
@@ -171,8 +169,12 @@ public final class ShowSignature
                             case "adbe.x509.rsa_sha1":
                             {
                                 // example: PDFBOX-2693.pdf
-                                COSString certString = (COSString) sigDict.getDictionaryObject(
-                                        COSName.getPDFName("Cert"));
+                                COSString certString = (COSString) sigDict.getDictionaryObject(COSName.CERT);
+                                if (certString == null)
+                                {
+                                    System.err.println("The /Cert certificate string is missing in the signature dictionary");
+                                    return;
+                                }
                                 byte[] certData = certString.getBytes();
                                 CertificateFactory factory = CertificateFactory.getInstance("X.509");
                                 ByteArrayInputStream certStream = new ByteArrayInputStream(certData);