From 7b2e2b640b0f392183f7927f692936950d3fabfc Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Tue, 12 Nov 2013 12:26:10 +0100 Subject: SecurityLayer commands included --- .../lib/impl/signing/pdfbox/PADESPDFBOXSigner.java | 5 +- .../impl/signing/pdfbox/PdfboxSignerWrapper.java | 55 +++++++++++++--------- 2 files changed, 35 insertions(+), 25 deletions(-) (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox') diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java index 3f566f06..2e5dc62b 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java @@ -22,7 +22,6 @@ import at.gv.egiz.pdfas.common.messages.MessageResolver; import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; import at.gv.egiz.pdfas.common.utils.StreamUtils; import at.gv.egiz.pdfas.common.utils.TempFileHelper; -import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner; import at.gv.egiz.pdfas.lib.impl.signing.IPdfSigner; import at.gv.egiz.pdfas.lib.impl.signing.sig_interface.PDFASSignatureInterface; import at.gv.egiz.pdfas.lib.impl.stamping.TableFactory; @@ -109,7 +108,7 @@ public class PADESPDFBOXSigner implements IPdfSigner { } } - +/* public void signPDF(String src, String dst, SignatureInterface signer) throws Exception { //ByteArrayOutputStream os = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream(new File(src)); @@ -144,5 +143,5 @@ public class PADESPDFBOXSigner implements IPdfSigner { fos.close(); // FileUtils.writeByteArrayToFile(new File(dst), os.toByteArray()); } - +*/ } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java index 91734312..6ded2d8a 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java @@ -10,6 +10,9 @@ import org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +import at.gv.egiz.pdfas.common.exceptions.PdfAsWrappedIOException; +import at.gv.egiz.pdfas.common.utils.PDFUtils; import at.gv.egiz.pdfas.common.utils.StreamUtils; import at.gv.egiz.pdfas.common.utils.StringUtils; import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner; @@ -17,27 +20,35 @@ import at.gv.egiz.pdfas.lib.impl.signing.sig_interface.PDFASSignatureInterface; public class PdfboxSignerWrapper implements PDFASSignatureInterface { - private static final Logger logger = LoggerFactory.getLogger(PdfboxSignerWrapper.class); - - private IPlainSigner signer; - private PDSignature signature; - private int[] byteRange; - private Calendar date; - - public PdfboxSignerWrapper(IPlainSigner signer) { - this.signer = signer; - this.date = Calendar.getInstance(); - } - - public byte[] sign(InputStream inputStream) throws SignatureException, IOException { - byteRange = this.signature.getByteRange(); - byte[] signature = signer.sign(StreamUtils.inputStreamToByteArray(inputStream)); - logger.debug("Signature Data: " + StringUtils.bytesToHexString(signature)); - FileOutputStream fos = new FileOutputStream("/tmp/fos.bin"); - fos.write(signature); - fos.close(); - return signature; - } + private static final Logger logger = LoggerFactory + .getLogger(PdfboxSignerWrapper.class); + + private IPlainSigner signer; + private PDSignature signature; + private int[] byteRange; + private Calendar date; + + public PdfboxSignerWrapper(IPlainSigner signer) { + this.signer = signer; + this.date = Calendar.getInstance(); + } + + public byte[] sign(InputStream inputStream) throws SignatureException, + IOException { + byte[] data = StreamUtils.inputStreamToByteArray(inputStream); + byteRange = PDFUtils.extractSignatureByteRange(data); + try { + byte[] signature = signer.sign(data, byteRange); + logger.debug("Signature Data: " + + StringUtils.bytesToHexString(signature)); + FileOutputStream fos = new FileOutputStream("/tmp/fos.bin"); + fos.write(signature); + fos.close(); + return signature; + } catch (PdfAsException e) { + throw new PdfAsWrappedIOException(e); + } + } public int[] getByteRange() { return byteRange; @@ -52,7 +63,7 @@ public class PdfboxSignerWrapper implements PDFASSignatureInterface { } public void setPDSignature(PDSignature signature) { - this.signature = signature; + this.signature = signature; } public Calendar getSigningDate() { -- cgit v1.2.3