package eu.europa.esig.dss.xades.extension;
import org.junit.Assert;
import org.junit.Test;
import eu.europa.esig.dss.DSSDocument;
import eu.europa.esig.dss.DigestAlgorithm;
import eu.europa.esig.dss.FileDocument;
import eu.europa.esig.dss.SignatureAlgorithm;
import eu.europa.esig.dss.SignatureLevel;
import eu.europa.esig.dss.SignaturePackaging;
import eu.europa.esig.dss.test.gen.CertificateService;
import eu.europa.esig.dss.test.mock.MockPrivateKeyEntry;
import eu.europa.esig.dss.test.mock.MockTSPSource;
import eu.europa.esig.dss.validation.CommonCertificateVerifier;
import eu.europa.esig.dss.validation.SignedDocumentValidator;
import eu.europa.esig.dss.validation.reports.Reports;
import eu.europa.esig.dss.validation.reports.SimpleReport;
import eu.europa.esig.dss.validation.reports.wrapper.DiagnosticData;
import eu.europa.esig.dss.xades.XAdESSignatureParameters;
import eu.europa.esig.dss.xades.signature.XAdESService;
public class XAdESBWithoutSignedDataObjectPropertiesToLTATest {
@Test
public void test() throws Exception {
DSSDocument toSignDocument = new FileDocument("src/test/resources/XAdESBWithoutSignedDataObjectProperties.xml");
CertificateService certService = new CertificateService();
MockPrivateKeyEntry signerEntry = certService.generateCertificateChain(SignatureAlgorithm.RSA_SHA256);
XAdESService service = new XAdESService(new CommonCertificateVerifier());
service.setTspSource(new MockTSPSource(new CertificateService().generateTspCertificate(SignatureAlgorithm.RSA_SHA256)));
XAdESSignatureParameters parameters = new XAdESSignatureParameters();
parameters.setSignatureLevel(SignatureLevel.XAdES_BASELINE_LTA);
parameters.setSignaturePackaging(SignaturePackaging.ENVELOPED);
parameters.setSigningCertificate(signerEntry.getCertificate());
parameters.setCertificateChain(signerEntry.getCertificateChain());
parameters.setDigestAlgorithm(DigestAlgorithm.SHA256);
DSSDocument extendDocument = service.extendDocument(toSignDocument, parameters);
// extendDocument.save("target/result.xml");
SignedDocumentValidator validator = SignedDocumentValidator.fromDocument(extendDocument);
validator.setCertificateVerifier(new CommonCertificateVerifier());
Reports reports = validator.validateDocument();
SimpleReport simpleReport = reports.getSimpleReport();
DiagnosticData diagnosticData = reports.getDiagnosticData();
Assert.assertEquals(SignatureLevel.XAdES_BASELINE_LTA.toString(), diagnosticData.getSignatureFormat(simpleReport.getFirstSignatureId()));
}
}