aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-legacy/src/main/java/at/gv/egiz/pdfas/wrapper/SignParameterWrapper.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-legacy/src/main/java/at/gv/egiz/pdfas/wrapper/SignParameterWrapper.java')
-rw-r--r--pdf-as-legacy/src/main/java/at/gv/egiz/pdfas/wrapper/SignParameterWrapper.java95
1 files changed, 84 insertions, 11 deletions
diff --git a/pdf-as-legacy/src/main/java/at/gv/egiz/pdfas/wrapper/SignParameterWrapper.java b/pdf-as-legacy/src/main/java/at/gv/egiz/pdfas/wrapper/SignParameterWrapper.java
index b51896bd..87278c85 100644
--- a/pdf-as-legacy/src/main/java/at/gv/egiz/pdfas/wrapper/SignParameterWrapper.java
+++ b/pdf-as-legacy/src/main/java/at/gv/egiz/pdfas/wrapper/SignParameterWrapper.java
@@ -1,31 +1,104 @@
package at.gv.egiz.pdfas.wrapper;
+import java.io.OutputStream;
+import java.util.Enumeration;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.pdfas.api.exceptions.ErrorCode;
+import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
import at.gv.egiz.pdfas.api.sign.SignParameters;
+import at.gv.egiz.pdfas.lib.api.ByteArrayDataSink;
import at.gv.egiz.pdfas.lib.api.sign.SignParameter;
+import at.gv.egiz.pdfas.sigs.pades.PAdESSigner;
+import at.gv.egiz.sl.util.BKUSLConnector;
+import at.gv.egiz.sl.util.MOAConnector;
public class SignParameterWrapper {
+ private static final Logger logger = LoggerFactory
+ .getLogger(SignParameterWrapper.class);
+
private SignParameter signParameter4;
private SignParameters signParameters;
-
- public SignParameterWrapper(SignParameters signParameters, SignParameter signParameter4) {
+ private ByteArrayDataSink output;
+
+ public SignParameterWrapper(SignParameters signParameters,
+ SignParameter signParameter4) {
this.signParameter4 = signParameter4;
this.signParameters = signParameters;
}
-
- private void syncOldToNew() {
- // TODO
+
+ public void syncOldToNew() throws PdfAsException {
+ output = new ByteArrayDataSink();
+ this.signParameter4.setOutput(output);
+
+ if (this.signParameters.getSignaturePositioning() != null) {
+ // Create positioning string
+ String posString = this.signParameters.getSignaturePositioning()
+ .getPositionString();
+ logger.info("Pos String: " + posString);
+ if (posString.equals("x:auto;y:auto;w:auto;p:auto;f:0.0")) {
+ this.signParameter4.setSignaturePosition(null);
+ } else {
+ this.signParameter4.setSignaturePosition(posString);
+ }
+ } else {
+ this.signParameter4.setSignaturePosition(null);
+ }
+
+ // Select signing device
+ if (this.signParameters.getSignatureDevice().equals("moa")) {
+ try {
+ this.signParameter4
+ .setPlainSigner(new PAdESSigner(new MOAConnector(
+ this.signParameter4.getConfiguration())));
+ } catch (Exception e) {
+ throw new PdfAsException(ErrorCode.CERTIFICATE_NOT_FOUND,
+ "You need to specify MOA certificate file to use moa (moa.sign.Certificate)");
+ }
+ } else if (this.signParameters.getSignatureDevice().equals("bku")) {
+ this.signParameter4
+ .setPlainSigner(new PAdESSigner(new BKUSLConnector(
+ this.signParameter4.getConfiguration())));
+ } else {
+ throw new PdfAsException(ErrorCode.UNSUPPORTED_SIGNATURE,
+ "Unsupported device! Use bku or moa!");
+ }
+
+ // Overwrite Configurations
+ Enumeration<Object> keys = this.signParameters
+ .getProfileOverrideProperties().keys();
+
+ while (keys.hasMoreElements()) {
+ Object obj = keys.nextElement();
+ if (obj != null) {
+ String key = obj.toString();
+ this.signParameter4.getConfiguration().setValue(
+ key,
+ this.signParameters.getProfileOverrideProperties()
+ .getProperty(key));
+ }
+ }
}
-
- private void syncNewToOld() {
- // TODO
+
+ public void syncNewToOld() throws PdfAsException {
+ try {
+ OutputStream os = this.signParameters.getOutput()
+ .createOutputStream("application/pdf");
+ os.write(output.getData());
+ os.close();
+ } catch (Exception e) {
+ throw new PdfAsException(ErrorCode.SIGNATURE_COULDNT_BE_CREATED,
+ e.getMessage());
+ }
}
-
-
+
public SignParameter getSignParameter4() {
return this.signParameter4;
}
-
+
public SignParameters getSignParameters() {
return this.signParameters;
}