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:21 UTC

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

Author: tilman
Date: Thu Nov  2 07:09:20 2017
New Revision: 1814036

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

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=1814036&r1=1814035&r2=1814036&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 Thu Nov  2 07:09:20 2017
@@ -128,7 +128,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
@@ -161,9 +161,7 @@ public final class ShowSignature
                         else if (subFilter.equals("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);
@@ -177,8 +175,12 @@ public final class ShowSignature
                         else if (subFilter.equals("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);