/* DigiDoc4J library
*
* This software is released under either the GNU Library General Public
* License (see LICENSE.LGPL).
*
* Note that the only valid version of the LGPL license as far as this
* project is concerned is the original GNU Library General Public License
* Version 2.1, February 1999
*/
package org.digidoc4j.impl.bdoc;
import java.util.ArrayList;
import java.util.List;
import org.digidoc4j.Configuration;
import org.digidoc4j.impl.bdoc.xades.XadesSignature;
import org.digidoc4j.impl.bdoc.xades.XadesSignatureParser;
import org.digidoc4j.impl.bdoc.xades.validation.XadesSignatureValidator;
import org.digidoc4j.impl.bdoc.xades.XadesValidationReportGenerator;
import org.digidoc4j.impl.bdoc.xades.validation.XadesSignatureValidatorFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import eu.europa.esig.dss.DSSDocument;
public class BDocSignatureOpener {
private final static Logger logger = LoggerFactory.getLogger(BDocSignatureOpener.class);
private final List<DSSDocument> detachedContents;
private Configuration configuration;
private XadesSignatureParser xadesSignatureParser = new XadesSignatureParser();
public BDocSignatureOpener(List<DSSDocument> detachedContents, Configuration configuration) {
this.configuration = configuration;
this.detachedContents = detachedContents;
}
public List<BDocSignature> parse(DSSDocument xadesDocument) {
logger.debug("Parsing xades document");
List<BDocSignature> signatures = new ArrayList<>(1);
BDocSignature bDocSignature = createBDocSignature(xadesDocument);
signatures.add(bDocSignature);
return signatures;
}
private BDocSignature createBDocSignature(DSSDocument xadesDocument) {
XadesValidationReportGenerator xadesReportGenerator = new XadesValidationReportGenerator(xadesDocument, detachedContents, configuration);
XadesSignature signature = xadesSignatureParser.parse(xadesReportGenerator);
XadesSignatureValidator xadesValidator = createSignatureValidator(signature);
BDocSignature bDocSignature = new BDocSignature(signature, xadesValidator);
bDocSignature.setSignatureDocument(xadesDocument);
return bDocSignature;
}
private XadesSignatureValidator createSignatureValidator(XadesSignature signature) {
XadesSignatureValidatorFactory validatorFactory = new XadesSignatureValidatorFactory();
validatorFactory.setConfiguration(configuration);
validatorFactory.setSignature(signature);
XadesSignatureValidator xadesValidator = validatorFactory.create();
return xadesValidator;
}
}