package eu.europa.esig.dss.pades; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.FileInputStream; import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature; import org.junit.Test; import eu.europa.esig.dss.DSSUtils; import eu.europa.esig.dss.DigestAlgorithm; import eu.europa.esig.dss.utils.Utils; public class VRITest { @Test public void vri() throws Exception { String path = "src/test/resources/plugtest/esig2014/ESIG-PAdES/HU_MIC/Signature-P-HU_MIC-3.pdf"; String vriValue = "C41B1DBFE0E816D8A6F99A9DB98FD43960A5CF45"; PDDocument pdDoc = PDDocument.load(new FileInputStream(path)); List<PDSignature> signatureDictionaries = pdDoc.getSignatureDictionaries(); assertTrue(Utils.isCollectionNotEmpty(signatureDictionaries)); PDSignature pdSignature = signatureDictionaries.get(0); byte[] contents = pdSignature.getContents(new FileInputStream(path)); byte[] digest = DSSUtils.digest(DigestAlgorithm.SHA1, contents); assertEquals(vriValue, Utils.upperCase(Utils.toHex(digest))); // We can't use CMSSignedData, the pdSignature content is trimmed (000000) } }