/* 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; import java.io.Serializable; import org.digidoc4j.impl.SignatureFinalizer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * <p> * Data to be signed externally (e.g. in the Web by a browser plugin). * </p> * <p> * {@link DataToSign#getDigestToSign()} and {@link DataToSign#getDigestAlgorithm()} can be used to get the digest bytes to be signed and * digest algorithm (e.g. SHA-256, SHA-512 etc) used in signing. * </p> * <p> * After a signature has been created externally, then it must be included back by calling * {@link DataToSign#finalize(byte[])} with the signature value. This will return a {@link Signature} object * with the signature value, OCSP response etc included. * </p> */ public class DataToSign implements Serializable { private final static Logger logger = LoggerFactory.getLogger(DataToSign.class); private byte[] digestToSign; private SignatureParameters signatureParameters; private SignatureFinalizer signatureFinalizer; public DataToSign(byte[] digestToSign, SignatureParameters signatureParameters, SignatureFinalizer signatureFinalizer) { this.digestToSign = digestToSign; this.signatureParameters = signatureParameters; this.signatureFinalizer = signatureFinalizer; } /** * Signature parameters used to create the signature. * @return signature parameters. */ public SignatureParameters getSignatureParameters() { return signatureParameters; } /** * Signature digest algorithm to be used when creating the signature value. * @return signature digest algorithm. */ public DigestAlgorithm getDigestAlgorithm() { return signatureParameters.getDigestAlgorithm(); } /** * Data to be signed externally. * @return digest bytes to be signed. */ public byte[] getDigestToSign() { return digestToSign; } /** * Finalize the signature by adding externally created signature value in bytes. * This will get OCSP verification etc. to finalize the signature. * * @param signatureValue externally created signature value bytes. * @return Finalized signature. */ public Signature finalize(byte[] signatureValue) { logger.debug("Finalizing signature"); return signatureFinalizer.finalizeSignature(signatureValue); } }