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);