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