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 --- .../impl/signing/pdfbox/PdfboxSignerWrapper.java | 55 +++++++++++++--------- 1 file changed, 33 insertions(+), 22 deletions(-) (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java') 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