From d9b7f8f0ed2befcd0bbfa80c84c6a89e190ff481 Mon Sep 17 00:00:00 2001 From: Tobias Kellner Date: Wed, 7 Oct 2015 06:17:42 +0200 Subject: Add keystore signing --- .../at/asit/pdfover/signer/pdfas/PdfAs4Signer.java | 13 +++++- .../pdfover/signer/pdfas/PdfAs4SigningState.java | 48 ++++++++++++++++++++-- 2 files changed, 55 insertions(+), 6 deletions(-) (limited to 'pdf-over-signer/pdf-over-sigpdfas4/src/main') diff --git a/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4Signer.java b/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4Signer.java index efce1c6e..344c2e7e 100644 --- a/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4Signer.java +++ b/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4Signer.java @@ -23,6 +23,7 @@ import at.gv.egiz.pdfas.lib.api.Configuration; import at.gv.egiz.pdfas.lib.api.IConfigurationConstants; import at.gv.egiz.pdfas.lib.api.PdfAs; import at.gv.egiz.pdfas.lib.api.PdfAsFactory; +import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner; import at.gv.egiz.pdfas.lib.api.sign.SignParameter; import at.gv.egiz.pdfas.sigs.pades.PAdESSigner; import at.gv.egiz.sl.util.ISLConnector; @@ -115,8 +116,16 @@ public class PdfAs4Signer implements Signer { IConfigurationConstants.SL_REQUEST_TYPE_BASE64 : IConfigurationConstants.SL_REQUEST_TYPE_UPLOAD); - ISLConnector connector = new PdfAs4BKUSLConnector(sstate.getBKUConnector()); - param.setPlainSigner(new PAdESSigner(connector)); + IPlainSigner signer; + if (sstate.hasBKUConnector()) { + ISLConnector connector = new PdfAs4BKUSLConnector(sstate.getBKUConnector()); + signer = new PAdESSigner(connector); + } else if (sstate.hasKSSigner()) { + signer = sstate.getKSSigner(); + } else { + throw new SignatureException("SigningState doesn't have a signer"); + } + param.setPlainSigner(signer); pdfas.sign(param); diff --git a/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4SigningState.java b/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4SigningState.java index ec2efdae..71be5577 100644 --- a/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4SigningState.java +++ b/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4SigningState.java @@ -21,8 +21,12 @@ import java.io.ByteArrayOutputStream; import at.asit.pdfover.signator.BkuSlConnector; import at.asit.pdfover.signator.SLRequest; import at.asit.pdfover.signator.SLResponse; +import at.asit.pdfover.signator.SignatureException; import at.asit.pdfover.signator.SigningState; +import at.gv.egiz.pdfas.common.exceptions.PDFASError; +import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner; import at.gv.egiz.pdfas.lib.api.sign.SignParameter; +import at.gv.egiz.pdfas.sigs.pades.PAdESSignerKeystore; /** * Signing State for PDFAS Wrapper @@ -46,7 +50,9 @@ public class PdfAs4SigningState implements SigningState { private ByteArrayOutputStream output; - private BkuSlConnector connector; + private BkuSlConnector bkuconnector = null; + + private IPlainSigner kssigner = null; private boolean useBase64Request; @@ -139,13 +145,47 @@ public class PdfAs4SigningState implements SigningState { */ @Override public void setBKUConnector(BkuSlConnector connector) { - this.connector = connector; + this.bkuconnector = connector; + } + + /* (non-Javadoc) + * @see at.asit.pdfover.signator.SigningState#setKSSigner(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) + */ + @Override + public void setKSSigner(String file, String alias, String kspassword, + String keypassword, String type) throws SignatureException { + try { + this.kssigner = new PAdESSignerKeystore(file, alias, kspassword, keypassword, type); + } catch (PDFASError e) { + throw new SignatureException(e); + } + } + + /** + * @return whether a BKU connector was set + */ + public boolean hasBKUConnector() { + return this.bkuconnector != null; } /** - * @return the connector + * @return the BKU connector */ public BkuSlConnector getBKUConnector() { - return this.connector; + return this.bkuconnector; + } + + /** + * @return whether a KS signer was set + */ + public boolean hasKSSigner() { + return this.kssigner != null; + } + + /** + * @return the KS signer + */ + public IPlainSigner getKSSigner() { + return this.kssigner; } } -- cgit v1.2.3