aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/sig_interface/SignatureDataInjector.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/sig_interface/SignatureDataInjector.java')
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/sig_interface/SignatureDataInjector.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/sig_interface/SignatureDataInjector.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/sig_interface/SignatureDataInjector.java
new file mode 100644
index 00000000..65083a36
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/sig_interface/SignatureDataInjector.java
@@ -0,0 +1,48 @@
+package at.gv.egiz.pdfas.lib.impl.signing.sig_interface;
+
+import iaik.x509.X509Certificate;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Calendar;
+
+import org.apache.pdfbox.exceptions.SignatureException;
+
+import at.gv.egiz.pdfas.common.utils.StreamUtils;
+
+public class SignatureDataInjector extends SignatureDataExtractor {
+
+ protected byte[] signature;
+ protected byte[] oldSignatureData;
+
+ public SignatureDataInjector(X509Certificate certificate, String filter,
+ String subfilter, Calendar date, byte[] signature, byte[] signatureData) {
+ super(certificate, filter, subfilter, date);
+ this.signature = signature;
+ this.oldSignatureData = signatureData;
+ }
+
+ @Override
+ public byte[] sign(InputStream content) throws SignatureException,
+ IOException {
+ byte[] signatureData = StreamUtils.inputStreamToByteArray(content);
+
+ FileOutputStream fos2 = new FileOutputStream("/home/afitzek/devel/pdfas_neu/sign2.pdf");
+ fos2.write(signatureData);
+ fos2.close();
+
+ if(signatureData.length != this.oldSignatureData.length) {
+ throw new SignatureException("Signature Data missmatch!");
+ }
+
+ for(int i = 0; i < signatureData.length; i++) {
+ if(signatureData[i] != this.oldSignatureData[i]) {
+ throw new SignatureException("Signature Data missmatch! " + i + " " + signatureData[i] + " vs " + this.oldSignatureData[i]);
+ }
+ }
+
+ return signature;
+ }
+
+}