/*
* DSS - Digital Signature Services
*
* Copyright (C) 2013 European Commission, Directorate-General Internal Market and Services (DG MARKT), B-1049 Bruxelles/Brussel
*
* Developed by: 2013 ARHS Developments S.A. (rue Nicolas Bové 2B, L-1253 Luxembourg) http://www.arhs-developments.com
*
* This file is part of the "DSS - Digital Signature Services" project.
*
* "DSS - Digital Signature Services" is free software: you can redistribute it and/or modify it under the terms of
* the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the
* License, or (at your option) any later version.
*
* DSS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* "DSS - Digital Signature Services". If not, see <http://www.gnu.org/licenses/>.
*/
package eu.europa.ec.markt.dss.applet.main;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import eu.europa.ec.markt.dss.DSSUtils;
import eu.europa.ec.markt.dss.applet.controller.ActivityController;
import eu.europa.ec.markt.dss.applet.main.Parameters.AppletUsage;
import eu.europa.ec.markt.dss.applet.model.ActivityModel;
import eu.europa.ec.markt.dss.applet.model.ExtendSignatureModel;
import eu.europa.ec.markt.dss.applet.model.SignatureModel;
import eu.europa.ec.markt.dss.applet.model.ValidationModel;
import eu.europa.ec.markt.dss.applet.model.ValidationPolicyModel;
import eu.europa.ec.markt.dss.applet.util.DSSStringUtils;
import eu.europa.ec.markt.dss.applet.wizard.extension.ExtensionWizardController;
import eu.europa.ec.markt.dss.applet.wizard.signature.SignatureWizardController;
import eu.europa.ec.markt.dss.applet.wizard.validation.ValidationWizardController;
import eu.europa.ec.markt.dss.applet.wizard.validationpolicy.ValidationPolicyWizardController;
import eu.europa.ec.markt.dss.common.SignatureTokenType;
import eu.europa.ec.markt.dss.commons.swing.mvc.applet.AppletCore;
import eu.europa.ec.markt.dss.signature.SignaturePackaging;
/**
* TODO
* <p/>
* <p/>
* DISCLAIMER: Project owner DG-MARKT.
*
* @author <a href="mailto:dgmarkt.Project-DSS@arhs-developments.com">ARHS Developments</a>
* @version $Revision: 1016 $ - $Date: 2011-06-17 15:30:45 +0200 (Fri, 17 Jun 2011) $
*/
@SuppressWarnings("serial")
public class DSSAppletCore extends AppletCore {
private static final String PARAM_APPLET_USAGE = "usage";
private static final String PARAM_SERVICE_URL = "service_url";
private static final String PARAM_PKCS11_FILE = "pkcs11_file";
private static final String PARAM_PKCS12_FILE = "pkcs12_file";
private static final String PARAM_SIGNATURE_POLICY_ALGO = "signature_policy_algo";
private static final String PARAM_SIGNATURE_POLICY_HASH = "signature_policy_hash";
private static final String PARAM_STRICT_RFC3370 = "strict_rfc3370";
private static final String PARAM_TOKEN_TYPE = "token_type";
private static final String PARAM_SIGNATURE_PACKAGING = "signature_packaging";
private static final String PARAM_SIGNATURE_FORMAT = "signature_format";
private static final String PARAM_SIGNATURE_LEVEL = "signature_level";
private static final String PARAM_DEFAULT_POLICY_URL = "default_policy_url";
private Parameters parameters;
/**
* @return the parameters
*/
public Parameters getParameters() {
return parameters;
}
/*
* (non-Javadoc)
*
* @see eu.ecodex.dss.commons.swing.mvc.AbstractApplet#layout(javax.swing.JApplet)
*/
@Override
protected void layout(final AppletCore core) {
getController(ActivityController.class).display();
}
/*
* (non-Javadoc)
*
* @see eu.ecodex.dss.commons.swing.mvc.AbstractApplet#registerControllers()
*/
@Override
protected void registerControllers() {
getControllers().put(ActivityController.class, new ActivityController(this, new ActivityModel()));
getControllers().put(ValidationWizardController.class, new ValidationWizardController(this, new ValidationModel()));
getControllers().put(SignatureWizardController.class, new SignatureWizardController(this, new SignatureModel()));
getControllers().put(ExtensionWizardController.class, new ExtensionWizardController(this, new ExtendSignatureModel()));
getControllers().put(ValidationPolicyWizardController.class, new ValidationPolicyWizardController(this, new ValidationPolicyModel()));
}
/*
* (non-Javadoc)
*
* @see eu.ecodex.dss.commons.swing.mvc.applet.AppletCore#registerParameters()
*/
@Override
protected void registerParameters(ParameterProvider parameterProvider) {
LOG.info("Register applet parameters ");
final Parameters parameters = new Parameters();
final String appletUsageParam = parameterProvider.getParameter(PARAM_APPLET_USAGE);
if (DSSUtils.isNotEmpty(appletUsageParam)) {
parameters.setAppletUsage(AppletUsage.valueOf(appletUsageParam.toUpperCase()));
}
final String signatureFormatParam = parameterProvider.getParameter(PARAM_SIGNATURE_FORMAT);
if (!DSSUtils.isEmpty(signatureFormatParam)) {
parameters.setSignatureFormat(signatureFormatParam);
final String signaturePackagingParam = parameterProvider.getParameter(PARAM_SIGNATURE_PACKAGING);
if (!DSSUtils.isEmpty(signaturePackagingParam)) {
parameters.setSignaturePackaging(SignaturePackaging.valueOf(signaturePackagingParam));
final String signatureLevelParam = parameterProvider.getParameter(PARAM_SIGNATURE_LEVEL);
if (!DSSUtils.isEmpty(signatureLevelParam)) {
parameters.setSignatureLevel(signatureLevelParam);
}
}
}
// Service URL
final String serviceParam = parameterProvider.getParameter(PARAM_SERVICE_URL);
// System.out.println(serviceParam);
if (DSSUtils.isEmpty(serviceParam)) {
throw new IllegalArgumentException(PARAM_SERVICE_URL + "cannot be empty");
}
parameters.setServiceURL(serviceParam);
// Signature Token
final String tokenParam = parameterProvider.getParameter(PARAM_TOKEN_TYPE);
if (DSSStringUtils
.contains(tokenParam, SignatureTokenType.MOCCA.name(), SignatureTokenType.MSCAPI.name(), SignatureTokenType.PKCS11.name(), SignatureTokenType.PKCS12.name())) {
parameters.setSignatureTokenType(SignatureTokenType.valueOf(tokenParam));
} else {
LOG.warn("Invalid value of " + PARAM_TOKEN_TYPE + " parameter: {}", tokenParam);
}
// RFC3370
final String rfc3370Param = parameterProvider.getParameter(PARAM_STRICT_RFC3370);
if (DSSUtils.isNotEmpty(rfc3370Param)) {
try {
parameters.setStrictRFC3370(Boolean.parseBoolean(rfc3370Param));
} catch (final Exception e) {
LOG.warn("Invalid value of " + PARAM_STRICT_RFC3370 + " parameter: {}", rfc3370Param);
}
}
// File path PKCS11
final String pkcs11Param = parameterProvider.getParameter(PARAM_PKCS11_FILE);
if (DSSUtils.isNotEmpty(pkcs11Param)) {
final File file = new File(pkcs11Param);
if (!file.exists() || file.isFile()) {
LOG.warn("Invalid value of " + PARAM_PKCS11_FILE + " parameter: {}", pkcs11Param);
}
parameters.setPkcs11File(file);
}
// File path PKCS12
final String pkcs12Param = parameterProvider.getParameter(PARAM_PKCS12_FILE);
if (DSSUtils.isNotEmpty(pkcs12Param)) {
final File file = new File(pkcs12Param);
if (!file.exists() || file.isFile()) {
LOG.warn("Invalid value of " + PARAM_PKCS12_FILE + " parameter: {}", pkcs11Param);
}
parameters.setPkcs12File(file);
}
final String signaturePolicyAlgoParam = parameterProvider.getParameter(PARAM_SIGNATURE_POLICY_ALGO);
parameters.setSignaturePolicyAlgo(signaturePolicyAlgoParam);
final String signaturePolicyValueParam = parameterProvider.getParameter(PARAM_SIGNATURE_POLICY_HASH);
parameters.setSignaturePolicyValue(DSSUtils.base64Decode(signaturePolicyValueParam));
// Default policy URL
final String defaultPolicyUrl = parameterProvider.getParameter(PARAM_DEFAULT_POLICY_URL);
if (DSSUtils.isNotEmpty(defaultPolicyUrl)) {
try {
parameters.setDefaultPolicyUrl(new URL(defaultPolicyUrl));
} catch (IOException e) {
throw new IllegalArgumentException(PARAM_DEFAULT_POLICY_URL + " cannot be opened", e);
}
}
this.parameters = parameters;
LOG.info("Parameters - {}", parameters);
}
}