package es.uji.security.crypto.mityc;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import es.mityc.firmaJava.configuracion.Configuracion;
import es.mityc.firmaJava.libreria.xades.FirmaXML;
import es.uji.security.crypto.ISignFormatProvider;
import es.uji.security.crypto.SignatureOptions;
import es.uji.security.crypto.SignatureResult;
import es.uji.security.crypto.config.OS;
public class MitycXAdESSignatureFactory implements ISignFormatProvider
{
public SignatureResult formatSignature(SignatureOptions signatureOptions) throws Exception
{
byte[] data = OS.inputStreamToByteArray(signatureOptions.getDataToSign());
X509Certificate certificate = signatureOptions.getCertificate();
PrivateKey privateKey = signatureOptions.getPrivateKey();
Configuracion configuracion = new Configuracion();
configuracion.cargarConfiguracion();
FirmaXML sxml = new FirmaXML(configuracion);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
sxml.signFile(certificate.getSerialNumber(), certificate.getIssuerDN().toString(),
certificate, new ByteArrayInputStream(data), null, "Certificate1,<root>",
privateKey, bos, false);
SignatureResult signatureResult = new SignatureResult();
signatureResult.setValid(true);
signatureResult.setSignatureData(new ByteArrayInputStream(bos.toByteArray()));
return signatureResult;
}
}