aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing')
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java5
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PdfboxSignerWrapper.java55
2 files changed, 35 insertions, 25 deletions
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() {