/* 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.ddoc; import java.security.cert.X509Certificate; import org.digidoc4j.DataToSign; import org.digidoc4j.Signature; import org.digidoc4j.SignatureBuilder; import org.digidoc4j.SignedInfo; import org.digidoc4j.exceptions.ContainerWithoutFilesException; import org.digidoc4j.exceptions.SignerCertificateRequiredException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DDocSignatureBuilder extends SignatureBuilder { private final static Logger logger = LoggerFactory.getLogger(DDocSignatureBuilder.class); @Override public DataToSign buildDataToSign() throws SignerCertificateRequiredException, ContainerWithoutFilesException { logger.debug("Building data to sign"); DDocFacade ddocFacade = getJDigiDocFacade(); ddocFacade.setSignatureParameters(signatureParameters); X509Certificate signingCertificate = signatureParameters.getSigningCertificate(); SignedInfo signedInfo = ddocFacade.prepareSigning(signingCertificate); return new DataToSign(signedInfo.getDigestToSign(), signatureParameters, ddocFacade); } @Override protected Signature invokeSigningProcess() { DDocFacade ddocFacade = getJDigiDocFacade(); ddocFacade.setSignatureParameters(signatureParameters); return ddocFacade.sign(signatureToken); } @Override public Signature openAdESSignature(byte[] signatureDocument) { DDocFacade ddocFacade = getJDigiDocFacade(); ddocFacade.setSignatureParameters(signatureParameters); ddocFacade.addRawSignature(signatureDocument); int signatureIndex = ddocFacade.getSignatures().size() - 1; Signature signature = ddocFacade.getSignatures().get(signatureIndex); return signature; } private DDocFacade getJDigiDocFacade() { return ((DDocContainer)container).getJDigiDocFacade(); } }