diff options
author | Thomas <> | 2023-01-12 16:55:34 +0100 |
---|---|---|
committer | Thomas <> | 2023-01-12 16:55:34 +0100 |
commit | 15c1a4715be0d358d4449c77bd71aa7eb926fe54 (patch) | |
tree | f1d54a5ffbe09fd8745902f9bad3f0f98580eca6 /pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java | |
parent | 5ec5b73c5dc4191d77c764d85197bbf2ac2e2bf2 (diff) | |
download | pdf-as-4-15c1a4715be0d358d4449c77bd71aa7eb926fe54.tar.gz pdf-as-4-15c1a4715be0d358d4449c77bd71aa7eb926fe54.tar.bz2 pdf-as-4-15c1a4715be0d358d4449c77bd71aa7eb926fe54.zip |
feat(sigblock): validate signature-profile information provided by QR-code placeholder
Issue: #64
Diffstat (limited to 'pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java')
-rw-r--r-- | pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java index c6499bc9..ef1f14b2 100644 --- a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java +++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java @@ -40,9 +40,7 @@ import javax.activation.DataSource; import org.apache.commons.io.IOUtils; import org.apache.pdfbox.cos.COSArray; -import org.apache.pdfbox.cos.COSBase; import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSDocument; import org.apache.pdfbox.cos.COSInteger; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.cos.COSString; @@ -148,8 +146,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { String pdfaVersion = null; PDDocument doc = null; - final SignatureOptions options = new SignatureOptions(); - COSDocument visualSignatureDocumentGuard = null; + SignatureOptions options = new SignatureOptions(); try { doc = pdfObject.getDocument(); @@ -221,8 +218,8 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { logger.debug("Placeholder Position set to: " + tablePos.toString()); } } - final SignatureProfileSettings signatureProfileSettings = TableFactory - .createProfile(requestedSignature.getSignatureProfileID(), pdfObject.getStatus().getSettings()); + final SignatureProfileSettings signatureProfileSettings = TableFactory.createProfile( + requestedSignature.getSignatureProfileID(), pdfObject.getStatus().getSettings()); // Check if input document is PDF-A conform if (signatureProfileSettings.isPDFA()) { @@ -404,7 +401,6 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { if (signatureProfileSettings.isPDFA() || signatureProfileSettings.isPDFA3()) { final PDDocumentCatalog root = doc.getDocumentCatalog(); - final COSBase base = root.getCOSObject().getItem(COSName.OUTPUT_INTENTS); InputStream colorProfile = null; // colorProfile = this.getClass().getResourceAsStream("/icm/sRGB.icm"); @@ -434,8 +430,6 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { options.setVisualSignature(properties.getVisibleSignature()); } - visualSignatureDocumentGuard = options.getVisualSignature(); - doc.addSignature(signature, signer, options); if (sigFieldName == null) { @@ -648,17 +642,10 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { } } catch (final IOException e1) { - e1.printStackTrace(); - } + logger.error("Can not save incremental update", e1); - finally { - if (options != null) { - if (options.getVisualSignature() != null) { - options.getVisualSignature().close(); - } - } } - + System.gc(); logger.debug("Signature done!"); @@ -666,7 +653,22 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { logger.warn(MessageResolver.resolveMessage("error.pdf.sig.01"), e); throw new PdfAsException("error.pdf.sig.01", e); + } catch (PDFASError e2) { + logger.warn(e2.getInfo()); + throw new PdfAsException("error.pdf.sig.01", e2); + } finally { + if (options != null) { + if (options.getVisualSignature() != null) { + try { + options.getVisualSignature().close(); + options.close(); + } catch (IOException e) { + logger.debug("Failed to close VisualSignature!", e); + } + } + } + if (doc != null) { try { doc.close(); |