From 1ed2786b85d6f7dac5c83a1ba0474b7f33fa237c Mon Sep 17 00:00:00 2001 From: wprinz Date: Thu, 29 Jan 2009 13:47:42 +0000 Subject: api signatureKeyIdentifier override added, brz distribution assembly for maven, mime-type argument checking in SignResult constructor fixed git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@322 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- pom.xml | 9 ++-- src/main/assembly/assemble_distribution_brz.xml | 44 ++++++++++++++++++++ src/main/distribution/pdf-as.bat | 1 + .../at/gv/egiz/pdfas/api/sign/SignParameters.java | 48 +++++++++++++++++++++- .../egiz/pdfas/framework/ConnectorParameters.java | 22 ++++++++++ .../at/gv/egiz/pdfas/impl/api/CheckHelper.java | 9 ++++ .../at/gv/egiz/pdfas/impl/api/PdfAsObject.java | 3 +- .../java/at/knowcenter/wag/egov/egiz/PdfAS.java | 5 ++- .../knowcenter/wag/egov/egiz/commandline/Main.java | 2 +- .../wag/egov/egiz/framework/SignResult.java | 2 +- .../moa/EnvelopingBase64MOAConnector.java | 13 ++++-- .../moa/MOASoapWithAttachmentConnector.java | 13 ++++-- src/site/changes.xml | 6 +++ 13 files changed, 160 insertions(+), 17 deletions(-) create mode 100644 src/main/assembly/assemble_distribution_brz.xml create mode 100644 src/main/distribution/pdf-as.bat diff --git a/pom.xml b/pom.xml index 5943617..de615c5 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ knowcenter pdf-as PDF-AS - 3.0.8-20090113 + 3.0.9-20090129 Amtssignatur fuer elektronische Aktenfuehrung @@ -32,8 +32,8 @@ wprinz Wolfgang Prinz - wprinz@iicm.edu - KnowCenter + w.prinz@netconomy.net + Netconomy developer @@ -129,8 +129,9 @@ src/main/assembly/assemble_libraries.xml src/main/assembly/assemble_distribution_ws.xml src/main/assembly/assemble_repository.xml - --> src/main/assembly/assemble_repository.xml + --> + src/main/assembly/assemble_distribution_brz.xml diff --git a/src/main/assembly/assemble_distribution_brz.xml b/src/main/assembly/assemble_distribution_brz.xml new file mode 100644 index 0000000..ca31425 --- /dev/null +++ b/src/main/assembly/assemble_distribution_brz.xml @@ -0,0 +1,44 @@ + + + + distribution_brz + + zip + + true + + + + false + runtime + lib + + *:${project.artifactId}:jar + + + + + + + src/main/distribution/pdf-as.bat + + true + + + + + target + + + ${project.build.finalName}.jar + + + + dok + doc + + *.pdf + + + + diff --git a/src/main/distribution/pdf-as.bat b/src/main/distribution/pdf-as.bat new file mode 100644 index 0000000..4f9d641 --- /dev/null +++ b/src/main/distribution/pdf-as.bat @@ -0,0 +1 @@ +java -Dpdf-as.work-dir=. -jar ${project.build.finalName}.jar %* \ No newline at end of file diff --git a/src/main/java/at/gv/egiz/pdfas/api/sign/SignParameters.java b/src/main/java/at/gv/egiz/pdfas/api/sign/SignParameters.java index cc59cbd..54de38d 100644 --- a/src/main/java/at/gv/egiz/pdfas/api/sign/SignParameters.java +++ b/src/main/java/at/gv/egiz/pdfas/api/sign/SignParameters.java @@ -55,7 +55,36 @@ public class SignParameters * profile here instead of the profile id. *

*/ - protected String signatureProfileId = null;; + protected String signatureProfileId = null; + + /** + * The signature key identifier specifying which signature key should be used + * by the signature device to perform the signature. + * + *

+ * Providing a null value (default) means that no explicit signature key + * identifier is provided. The selected signature device will then use its + * default mechanism for retrieving this information (which is usually to read + * the key from the provided signature profile). + *

+ *

+ * Note that not all signature devices may support this parameter. + * If a signature device doesn't support this parameter the value should be null. + *

+ *

+ * This key is usually passed straight through to the signature device and + * thereby has to contain an appropriate value for the signature device + * chosen. + *

+ *

+ * Currently, only the {@link Constants#SIGNATURE_DEVICE_MOA} signature device + * evaluates this parameter and passes the provided String to MOA as the MOA + * key group identifier. If null is provided, the MOA signature device will + * determine the signature key identifier to be used from the provided profile + * and, if not specified there either, from the MOA default configuration. + *

+ */ + protected String signatureKeyIdentifier = null; /** * The signature position. Consult the PDF-AS documentation section @@ -170,4 +199,21 @@ public class SignParameters this.output = output; } + /** + * @return the signatureKeyIdentifier + */ + public String getSignatureKeyIdentifier() + { + return this.signatureKeyIdentifier; + } + + /** + * @param signatureKeyIdentifier the signatureKeyIdentifier to set + */ + public void setSignatureKeyIdentifier(String signatureKeyIdentifier) + { + this.signatureKeyIdentifier = signatureKeyIdentifier; + } + + } diff --git a/src/main/java/at/gv/egiz/pdfas/framework/ConnectorParameters.java b/src/main/java/at/gv/egiz/pdfas/framework/ConnectorParameters.java index 618624d..a7c5d7a 100644 --- a/src/main/java/at/gv/egiz/pdfas/framework/ConnectorParameters.java +++ b/src/main/java/at/gv/egiz/pdfas/framework/ConnectorParameters.java @@ -27,6 +27,18 @@ public class ConnectorParameters */ protected String profileId = null; + /** + * The signature key identifier to be used or null if it should be read from + * the profile. + * + *

+ * Currently this is only used by MOA connectors and identifies the MOA key + * group to be used when signing. If null, the MOA connector reads the key + * from the profile. + *

+ */ + protected String signatureKeyIdentifier = null; + /** * Tells, if the connector should ask the device to return the hash input * data. @@ -61,6 +73,16 @@ public class ConnectorParameters { this.profileId = profileId; } + + public String getSignatureKeyIdentifier() + { + return this.signatureKeyIdentifier; + } + + public void setSignatureKeyIdentifier(String signatureKeyIdentifier) + { + this.signatureKeyIdentifier = signatureKeyIdentifier; + } public boolean isReturnHashInputData() { diff --git a/src/main/java/at/gv/egiz/pdfas/impl/api/CheckHelper.java b/src/main/java/at/gv/egiz/pdfas/impl/api/CheckHelper.java index 9daae59..4466d8b 100644 --- a/src/main/java/at/gv/egiz/pdfas/impl/api/CheckHelper.java +++ b/src/main/java/at/gv/egiz/pdfas/impl/api/CheckHelper.java @@ -67,6 +67,7 @@ public final class CheckHelper { checkSignaturePositioning(sp.getSignaturePositioning()); } + checkSignatureKeyIdentifier(sp.getSignatureKeyIdentifier(), sp.getSignatureDevice()); } /** @@ -186,6 +187,14 @@ public final class CheckHelper throw new IllegalArgumentException(msg); } } + + protected static void checkSignatureKeyIdentifier (String signatureKeyIdentifier, String signatureDevice) + { + if (signatureKeyIdentifier != null && !Constants.SIGNATURE_DEVICE_MOA.equals(signatureDevice)) + { + log.warn("A signatureKeyIdentifier (" + signatureKeyIdentifier + ") was provided although the signatureDevice (" + signatureDevice + ") is not moa. Currently only the moa signature device evaluates the signatureKeyIdentifier parameter."); + } + } protected static void checkVerifyMode(String verifyMode) { diff --git a/src/main/java/at/gv/egiz/pdfas/impl/api/PdfAsObject.java b/src/main/java/at/gv/egiz/pdfas/impl/api/PdfAsObject.java index 40da270..46157e3 100644 --- a/src/main/java/at/gv/egiz/pdfas/impl/api/PdfAsObject.java +++ b/src/main/java/at/gv/egiz/pdfas/impl/api/PdfAsObject.java @@ -14,7 +14,6 @@ import java.util.Vector; import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.log4j.PropertyConfigurator; import at.gv.egiz.pdfas.api.PdfAs; import at.gv.egiz.pdfas.api.analyze.AnalyzeParameters; @@ -30,7 +29,6 @@ import at.gv.egiz.pdfas.api.verify.VerifyResult; import at.gv.egiz.pdfas.api.verify.VerifyResults; import at.gv.egiz.pdfas.commandline.CommandlineConnectorChooser; import at.gv.egiz.pdfas.exceptions.ErrorCode; -import at.gv.egiz.pdfas.framework.ConnectorFactory; import at.gv.egiz.pdfas.framework.config.SettingsHelper; import at.gv.egiz.pdfas.framework.input.ExtractionStage; import at.gv.egiz.pdfas.framework.signator.SignatorInformation; @@ -244,6 +242,7 @@ public class PdfAsObject implements PdfAs signatorId, connectorId, signParameters.getSignatureProfileId(), + signParameters.getSignatureKeyIdentifier(), pos ); diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java b/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java index 3824a98..302e8cb 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java @@ -96,7 +96,7 @@ public abstract class PdfAS * The current version of the pdf-as library. This version string is logged on every invocation * of the api or the web application. */ - public static final String PDFAS_VERSION = "3.0.8-20090113"; + public static final String PDFAS_VERSION = "3.0.9-20090129"; /** * The key of the strict mode setting. @@ -1033,12 +1033,13 @@ public abstract class PdfAS // signCommandline(pdfDataSource, dataSink, signatorId, connectorId, profile, pos); // } - public static SignatorInformation signCommandline(PdfDataSource pdfDataSource, DataSink dataSink, PdfASID signatorId, String connectorId, final String profile, TablePos pos) throws PresentableException + public static SignatorInformation signCommandline(PdfDataSource pdfDataSource, DataSink dataSink, PdfASID signatorId, String connectorId, final String profile, final String signatureKeyIdentifier, TablePos pos) throws PresentableException { at.gv.egiz.pdfas.framework.signator.Signator signator = at.gv.egiz.pdfas.framework.SignatorFactory.createSignator(signatorId); ConnectorParameters cp = new ConnectorParameters(); cp.setProfileId(profile); + cp.setSignatureKeyIdentifier(signatureKeyIdentifier); Connector c = at.gv.egiz.pdfas.framework.ConnectorFactory.createConnector(connectorId, cp); // SignatorInformation si = signator.prepareSign(pdfDataSource, profile, pos, ConnectorFactory.needsSIG_ID(connector)); diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java b/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java index 9e45469..577d05f 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java @@ -612,7 +612,7 @@ public abstract class Main String connectorId = CommandlineConnectorChooser.chooseCommandlineConnectorForSign(connector); - PdfAS.signCommandline(pdfDataSource, dataSink, signatorId, connectorId, signature_type, pos); + PdfAS.signCommandline(pdfDataSource, dataSink, signatorId, connectorId, signature_type, null, pos); // PdfAS.sign(algorithm, pdfDataSource, dataSink, signature_type, connector, pos); } diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignResult.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignResult.java index c7dfcdb..05beac0 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignResult.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignResult.java @@ -52,7 +52,7 @@ public class SignResult implements Serializable */ public SignResult(String document_mime_type, byte[] document_data) { - if (document_mime_type == null && document_mime_type.length() == 0) + if (document_mime_type == null || document_mime_type.length() == 0) { throw new IllegalArgumentException("Please provide a valid Mime Type for the SignResult. " + document_mime_type); } diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java index 7d58d79..a6db63c 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java @@ -63,7 +63,7 @@ public class EnvelopingBase64MOAConnector implements Connector public EnvelopingBase64MOAConnector(ConnectorParameters connectorParameters) throws ConnectorException { this.params = connectorParameters; - this.environment = new Environment(connectorParameters.getProfileId()); + this.environment = new Environment(connectorParameters.getProfileId(), connectorParameters.getSignatureKeyIdentifier()); } /** @@ -419,7 +419,7 @@ public class EnvelopingBase64MOAConnector implements Connector * @throws ConnectorException * f.e. */ - public Environment(String profile) throws ConnectorException + public Environment(String profile, String signKeyIdentifier) throws ConnectorException { this.profile = profile; @@ -433,7 +433,14 @@ public class EnvelopingBase64MOAConnector implements Connector throw new ConnectorException(300, e); } - this.sign_key_identifier = getConnectorValueFromProfile(settings, profile, SIGN_KEY_IDENTIFIER_KEY); + if (signKeyIdentifier != null) + { + this.sign_key_identifier = signKeyIdentifier; + } + else + { + this.sign_key_identifier = getConnectorValueFromProfile(settings, profile, SIGN_KEY_IDENTIFIER_KEY); + } String sign_request_filename = getConnectorValueFromProfile(settings, profile, SIGN_REQUEST_TEMPLATE_KEY); this.sign_request_template = FileHelper.readFromFile(SettingsReader.relocateFile(sign_request_filename)); diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java index b45303d..7776698 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java @@ -77,7 +77,7 @@ public class MOASoapWithAttachmentConnector implements Connector public MOASoapWithAttachmentConnector(ConnectorParameters connectorParameters) throws ConnectorException { this.params = connectorParameters; - this.environment = new Environment(this.params.getProfileId(), MULTIPART_LOC_REF_CONTENT); + this.environment = new Environment(this.params.getProfileId(), this.params.getSignatureKeyIdentifier(), MULTIPART_LOC_REF_CONTENT); } protected String prepareSignRequest(SignatureData data) throws ConnectorException @@ -445,7 +445,7 @@ public class MOASoapWithAttachmentConnector implements Connector * @throws ConnectorException * f.e. */ - public Environment(String profile, String signature_data_url) throws ConnectorException + public Environment(String profile, String signKeyIdentifier, String signature_data_url) throws ConnectorException { this.profile = profile; @@ -461,7 +461,14 @@ public class MOASoapWithAttachmentConnector implements Connector throw new ConnectorException(300, e); } - this.sign_key_identifier = getConnectorValueFromProfile(settings, profile, SIGN_KEY_IDENTIFIER_KEY); + if (signKeyIdentifier != null) + { + this.sign_key_identifier = signKeyIdentifier; + } + else + { + this.sign_key_identifier = getConnectorValueFromProfile(settings, profile, SIGN_KEY_IDENTIFIER_KEY); + } String sign_request_filename = TEMPLATE_FILE_PREFIX + settings.getValueFromKey("default.moa.algorithm.id") + SIGN_TEMPLATE_FILE_SUFIX; diff --git a/src/site/changes.xml b/src/site/changes.xml index 50f3c54..347cbae 100644 --- a/src/site/changes.xml +++ b/src/site/changes.xml @@ -13,6 +13,12 @@ --> + + Added signatureKeyIdentifier to SignParameters in the API, which allows to override the one specified in the profile (MOA Connector only). + Added maven assembly and batch file for BRZ distribution. + Corrected faulty mime-type argument checking in SignResult constructor. + + Switching to itext-2.1.5-rev3628. itext library: minor adjustments for pdf-as -- cgit v1.2.3