aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-lib/src/test/java/at
diff options
context:
space:
mode:
authorJakob Heher <jakob.heher@iaik.tugraz.at>2026-04-15 13:49:22 +0200
committerGitHub <noreply@github.com>2026-04-15 13:49:22 +0200
commit77dd3fcc4d85088b15ab859c4438521d9cd6ed10 (patch)
treeaefedc8d2ef77e6819b46a948459d6016dfe5b62 /pdf-as-lib/src/test/java/at
parent88930540361a88ff56e07fed31004b583f2e729f (diff)
downloadpdf-as-4-77dd3fcc4d85088b15ab859c4438521d9cd6ed10.tar.gz
pdf-as-4-77dd3fcc4d85088b15ab859c4438521d9cd6ed10.tar.bz2
pdf-as-4-77dd3fcc4d85088b15ab859c4438521d9cd6ed10.zip
pdf-as-5 (#82)
- JDK 17 - PDFBox 3 - PDF-AS Web moved to Spring Boot - MOA Integration tests w/ new error code --------- Co-authored-by: Gerald Palfinger <gerald.palfinger@a-sit.at> Co-authored-by: kathrin.resek <kathrin.resek@a-sit.at>
Diffstat (limited to 'pdf-as-lib/src/test/java/at')
-rw-r--r--pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/SignatureTest.java94
-rw-r--r--pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/stamping/CertificateAndRequestParameterResolverTest.java2
2 files changed, 95 insertions, 1 deletions
diff --git a/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/SignatureTest.java b/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/SignatureTest.java
new file mode 100644
index 00000000..fac1edd0
--- /dev/null
+++ b/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/SignatureTest.java
@@ -0,0 +1,94 @@
+package at.gv.egiz.pdfas.lib.test;
+
+import at.gv.egiz.pdfas.common.exceptions.PDFASError;
+import at.gv.egiz.pdfas.lib.api.ByteArrayDataSource;
+import at.gv.egiz.pdfas.lib.api.PdfAs;
+import at.gv.egiz.pdfas.lib.api.PdfAsFactory;
+import at.gv.egiz.pdfas.sigs.pades.PAdESSignerKeystore;
+import lombok.val;
+import org.junit.*;
+import org.junit.rules.TemporaryFolder;
+import org.junit.runner.RunWith;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.zeroturnaround.zip.ZipUtil;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.security.KeyStore;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+@RunWith(BlockJUnit4ClassRunner.class)
+public class SignatureTest {
+
+ @ClassRule
+ public static TemporaryFolder tempFolder = new TemporaryFolder();
+ static PdfAs pdfAs;
+ static KeyStore keyStore;
+
+ @BeforeClass
+ public static void initialize() throws Exception {
+ // unzip default config to temp dir
+ val configDir = tempFolder.newFolder();
+ ZipUtil.unpack(PdfAs.class.getResourceAsStream("/config/config.zip"), configDir);
+ pdfAs = PdfAsFactory.createPdfAs(configDir);
+
+ // load keystore
+ keyStore = KeyStore.getInstance("PKCS12");
+ keyStore.load(SignatureTest.class.getResourceAsStream("/test.p12"), "password".toCharArray());
+ }
+
+ private final static Map<String, ByteArrayDataSource> _inputPdfCache = new HashMap<>();
+ public static ByteArrayDataSource getInputPdf(String filename) throws IOException {
+ val normalizedName = filename.endsWith(".pdf") ? filename : (filename + ".pdf");
+ var existing = _inputPdfCache.get(normalizedName);
+ if (existing == null) {
+ try (val stream = SignatureTest.class.getResourceAsStream("/data/" + normalizedName)) {
+ existing = new ByteArrayDataSource(Objects.requireNonNull(stream).readAllBytes());
+ }
+ _inputPdfCache.put(normalizedName, existing);
+ }
+ return existing;
+ }
+
+ private final static Map<String, PAdESSignerKeystore> _keystoreSignerCache = new HashMap<>();
+ public static PAdESSignerKeystore getKeystoreSigner(String keyAlias) throws PDFASError {
+ var existing = _keystoreSignerCache.get(keyAlias);
+ if (existing == null) {
+ existing = new PAdESSignerKeystore(keyStore, keyAlias, "password");
+ _keystoreSignerCache.put(keyAlias, existing);
+ }
+ return existing;
+ }
+
+ @Test
+ public void signatureTest() throws Exception {
+ val inputPdf = getInputPdf("align.pdf");
+
+ val param = PdfAsFactory.createSignParameter(pdfAs.getConfiguration(), inputPdf, null);
+ param.setPlainSigner(getKeystoreSigner("test-key"));
+ param.setSignatureProfileId("SIGNATURBLOCK_SMALL_EN_NOTE");
+
+ val outputStream1 = new ByteArrayOutputStream();
+ param.setOutputStream(outputStream1);
+ pdfAs.sign(param);
+
+ val outputStream2 = new ByteArrayOutputStream();
+ param.setOutputStream(outputStream2);
+ pdfAs.sign(param);
+ val state1 = pdfAs.startSign(param);
+ val state2 = state1.setCertificate(param.getPlainSigner().getCertificate(state1.getSignParameter()).getEncoded());
+ val state3 = state2.setSignature(param.getPlainSigner().sign(
+ state2.getSignatureData(),
+ state2.getSignatureDataByteRange(),
+ state2.getSignParameter(),
+ state2.getRequestedSignature()));
+ state3.finishSign();
+
+ try (FileOutputStream fos = new FileOutputStream(tempFolder.newFile())) {
+ fos.write(outputStream1.toByteArray());
+ }
+ }
+}
diff --git a/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/stamping/CertificateAndRequestParameterResolverTest.java b/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/stamping/CertificateAndRequestParameterResolverTest.java
index e94d21e8..4aa07028 100644
--- a/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/stamping/CertificateAndRequestParameterResolverTest.java
+++ b/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/stamping/CertificateAndRequestParameterResolverTest.java
@@ -34,7 +34,7 @@ public class CertificateAndRequestParameterResolverTest {
@Before
public void initialize() throws PDFASError {
SignParameter signParams = new SignParameterImpl(null, null, null);
- opStatus = new OperationStatus(buildDummySettings(), signParams , null);
+ opStatus = new OperationStatus(buildDummySettings(), signParams , null, null);
sigProfileSetting = new SignatureProfileSettings("test", buildDummySettings());