/* 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.xades; import java.util.List; import org.digidoc4j.Configuration; import org.digidoc4j.exceptions.InvalidSignatureException; import org.digidoc4j.impl.bdoc.SKCommonCertificateVerifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import eu.europa.esig.dss.DSSDocument; import eu.europa.esig.dss.DSSException; import eu.europa.esig.dss.validation.CertificateVerifier; import eu.europa.esig.dss.validation.SignedDocumentValidator; import eu.europa.esig.dss.xades.validation.XMLDocumentValidator; public class XadesValidationDssFacade { private final static Logger logger = LoggerFactory.getLogger(XadesValidationDssFacade.class); private List<DSSDocument> detachedContents; private Configuration configuration; private CertificateVerifier certificateVerifier; public XadesValidationDssFacade(List<DSSDocument> detachedContents, Configuration configuration) { this.detachedContents = detachedContents; this.configuration = configuration; certificateVerifier = createCertificateVerifier(); } public SignedDocumentValidator openXadesValidator(DSSDocument signature) { try { logger.debug("Opening signature validator"); SignedDocumentValidator validator = new XMLDocumentValidator(signature); logger.debug("Finished opening signature validator"); validator.setDetachedContents(detachedContents); validator.setCertificateVerifier(certificateVerifier); return validator; } catch (DSSException e) { logger.error("Failed to parse xades signature: " + e.getMessage()); throw new InvalidSignatureException(); } } private CertificateVerifier createCertificateVerifier() { logger.debug("Creating new certificate verifier"); CertificateVerifier certificateVerifier = new SKCommonCertificateVerifier(); certificateVerifier.setCrlSource(null); //Disable CRL checks certificateVerifier.setSignatureCRLSource(null); //Disable CRL checks logger.debug("Setting trusted cert source to the certificate verifier"); certificateVerifier.setTrustedCertSource(configuration.getTSL()); logger.debug("Finished creating certificate verifier"); return certificateVerifier; } }