package es.uji.security.crypto.pdf;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import es.uji.security.crypto.test.BaseCryptoAppletTest;
import es.uji.security.crypto.ISignFormatProvider;
import es.uji.security.crypto.SignatureResult;
import es.uji.security.crypto.VerificationResult;
import es.uji.security.crypto.config.OS;
public class PDFTest extends BaseCryptoAppletTest
{
@Before
public void init() throws IOException
{
data = OS.inputStreamToByteArray(new FileInputStream("src/test/resources/in-pdf.pdf"));
signatureOptions.setDataToSign(new ByteArrayInputStream(data));
Map<String, String> bindValues = new HashMap<String, String>();
bindValues.put("%x", "3439-2134-1371-0998");
signatureOptions.setVisibleSignatureTextBindValues(bindValues);
signatureOptions.setVisibleAreaTextPattern("%s con referencia %x a las %t");
signatureOptions.setVisibleAreaRepeatAxis("Y");
}
@Test
public void pdf() throws Exception
{
// Sign
ISignFormatProvider signFormatProvider = new PDFSignatureFactory();
SignatureResult signatureResult = signFormatProvider.formatSignature(signatureOptions);
showErrors(signatureResult, "target/out-pdf.pdf");
data = OS.inputStreamToByteArray(new FileInputStream("target/out-pdf.pdf"));
signatureOptions.setDataToSign(new ByteArrayInputStream(data));
signFormatProvider = new PDFSignatureFactory();
signatureResult = signFormatProvider.formatSignature(signatureOptions);
showErrors(signatureResult, "target/out-pdf2.pdf");
// Verify
byte[] signedData = OS.inputStreamToByteArray(new FileInputStream("target/out-pdf2.pdf"));
PDFSignatureVerifier signatureVerifier = new PDFSignatureVerifier();
VerificationResult verificationResult = signatureVerifier.verify(signedData);
showErrors(verificationResult);
}
}