From c14096c5a87dabcc7483c5ff7bcd7014ee3a0319 Mon Sep 17 00:00:00 2001 From: Thomas <> Date: Mon, 17 Oct 2022 14:48:29 +0200 Subject: test(sigblock): add jUnit test to check title attribute of signer name --- ...CertificateAndRequestParameterResolverTest.java | 121 +++++++++++++++++++++ ...mann_Peyerl.20210930-20260930.SerNo651789F5.cer | 33 ++++++ 2 files changed, 154 insertions(+) create mode 100644 pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/stamping/CertificateAndRequestParameterResolverTest.java create mode 100644 pdf-as-lib/src/test/resources/data/Hermann_Peyerl.20210930-20260930.SerNo651789F5.cer (limited to 'pdf-as-lib/src/test') 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 new file mode 100644 index 00000000..68222881 --- /dev/null +++ b/pdf-as-lib/src/test/java/at/gv/egiz/pdfas/lib/test/stamping/CertificateAndRequestParameterResolverTest.java @@ -0,0 +1,121 @@ +package at.gv.egiz.pdfas.lib.test.stamping; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.security.cert.CertificateException; +import java.util.Map; +import java.util.Vector; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import com.google.gson.annotations.SerializedName; + +import at.gv.egiz.pdfas.common.settings.DefaultSignatureProfileSettings; +import at.gv.egiz.pdfas.common.settings.ISettings; +import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; +import at.gv.egiz.pdfas.lib.api.sign.SignParameter; +import at.gv.egiz.pdfas.lib.impl.SignParameterImpl; +import at.gv.egiz.pdfas.lib.impl.stamping.CertificateAndRequestParameterResolver; +import at.gv.egiz.pdfas.lib.impl.stamping.ValueResolver; +import at.gv.egiz.pdfas.lib.impl.status.ICertificateProvider; +import at.gv.egiz.pdfas.lib.impl.status.OperationStatus; +import iaik.x509.X509Certificate; + +@RunWith(JUnit4.class) +public class CertificateAndRequestParameterResolverTest { + + private OperationStatus opStatus; + private SignatureProfileSettings sigProfileSetting; + + @Before + public void initialize() { + SignParameter signParams = new SignParameterImpl(null, null, null); + opStatus = new OperationStatus(buildDummySettings(), signParams , null); + + sigProfileSetting = new SignatureProfileSettings("test", buildDummySettings()); + + } + + @Test + public void signerWithTitleOld() throws CertificateException, IOException { + X509Certificate cert = new X509Certificate( + CertificateAndRequestParameterResolverTest.class.getResourceAsStream( + "/data/Hermann_Peyerl.20210930-20260930.SerNo651789F5.cer")); + ValueResolver resolver = new ValueResolver(buildCertProvider(cert), opStatus); + + String result = resolver.resolve("", + "${subject.T != null ? (subject.T + \" \") : \"\"}${subject.CN}", + sigProfileSetting); + assertEquals("wrong signer Name", "Hermann Peyerl", result); + + } + + @Test + public void signerWithTitle() throws CertificateException, IOException { + X509Certificate cert = new X509Certificate( + CertificateAndRequestParameterResolverTest.class.getResourceAsStream( + "/data/Hermann_Peyerl.20210930-20260930.SerNo651789F5.cer")); + ValueResolver resolver = new ValueResolver(buildCertProvider(cert), opStatus); + + String result = resolver.resolve("", + "${subject.title != null ? (subject.title + \" \") : \"\"}${subject.CN}", + sigProfileSetting); + assertEquals("wrong signer Name", "A.Univ.Prof.DDr. Hermann Peyerl", result); + + } + + private ICertificateProvider buildCertProvider(final X509Certificate cert) { + return new ICertificateProvider() { + + @Override + public X509Certificate getCertificate() { + return cert; + } + }; + } + + private ISettings buildDummySettings() { + return new ISettings() { + + @Override + public boolean hasValue(String key) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean hasPrefix(String prefix) { + // TODO Auto-generated method stub + return false; + } + + @Override + public String getWorkingDirectory() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Map getValuesPrefix(String prefix) { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getValue(String key) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Vector getFirstLevelKeys(String prefix) { + // TODO Auto-generated method stub + return null; + } + }; + } +} diff --git a/pdf-as-lib/src/test/resources/data/Hermann_Peyerl.20210930-20260930.SerNo651789F5.cer b/pdf-as-lib/src/test/resources/data/Hermann_Peyerl.20210930-20260930.SerNo651789F5.cer new file mode 100644 index 00000000..39f609dc --- /dev/null +++ b/pdf-as-lib/src/test/resources/data/Hermann_Peyerl.20210930-20260930.SerNo651789F5.cer @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFrzCCA5egAwIBAgIEZReJ9TANBgkqhkiG9w0BAQsFADCBnTELMAkGA1UEBhMC +QVQxSDBGBgNVBAoMP0EtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUg +aW0gZWxla3RyLiBEYXRlbnZlcmtlaHIgR21iSDEhMB8GA1UECwwYYS1zaWduLXBy +ZW1pdW0tbW9iaWxlLTA1MSEwHwYDVQQDDBhhLXNpZ24tcHJlbWl1bS1tb2JpbGUt +MDUwHhcNMjEwOTMwMDc1MjE1WhcNMjYwOTMwMDc1MjE1WjB7MQswCQYDVQQGEwJB +VDEXMBUGA1UEAwwOSGVybWFubiBQZXllcmwxDzANBgNVBAQMBlBleWVybDEQMA4G +A1UEKgwHSGVybWFubjEVMBMGA1UEBRMMNTc1NDcwMTM4NzUxMRkwFwYDVQQMDBBB +LlVuaXYuUHJvZi5ERHIuMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8blARx8X +uWDpWxlZdka0fig4zuAwnw6bqbtDZWccS/y9L8+bkt50X2XOi0+e1wXVTmuuVYTz +rC3bCi29DEKB/KOCAeEwggHdMH0GCCsGAQUFBwEBBHEwbzBEBggrBgEFBQcwAoY4 +aHR0cDovL3d3dy5hLXRydXN0LmF0L2NlcnRzL2Etc2lnbi1wcmVtaXVtLW1vYmls +ZS0wNS5jcnQwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLmEtdHJ1c3QuYXQvb2Nz +cDATBgNVHSMEDDAKgAhI8/2cIw6HdzByBggrBgEFBQcBAwRmMGQwCgYIKwYBBQUH +CwIwCAYGBACORgEBMAgGBgQAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGATAtBgYE +AI5GAQUwIzAhFhtodHRwczovL3d3dy5hLXRydXN0LmF0L3Bkcy8TAkVOMBEGA1Ud +DgQKBAhJBIQ9948+azAOBgNVHQ8BAf8EBAMCBsAwCQYDVR0TBAIwADBgBgNVHSAE +WTBXMAgGBgQAizABATBLBgYqKAARARQwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3 +dy5hLXRydXN0LmF0L2RvY3MvY3AvYS1zaWduLXByZW1pdW0tbW9iaWxlMEMGA1Ud +HwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuYS10cnVzdC5hdC9jcmwvYS1zaWduLXBy +ZW1pdW0tbW9iaWxlLTA1MA0GCSqGSIb3DQEBCwUAA4ICAQBlqkb7w3qHqxycLyfT +YLjXJ6c9eiuMh0+dfPOLCveVF3l9vylTVJF5MZN4qeIKm9yGTpnzGXPSpHgrUbAl ++6GaYZ55BRtFAEeW/t6x5ngVfXaE/CtcL/J/lt+2D0rKZvjPvXRJ31T3LtE44JLC +3SK6g7tsUbgsx1qEh2kChX90HIN8r3JjFsuMyZ1xeSKkLogLfHwhwAmVmC2RxJxf +X0R4xsBl6yUkn3qGO8S5zN4lia9TLKMVMNdAfl0QiHdMtRAkdgg4p8UjN/Imq2El +f6j1UGZUMlF/iZdPl79AKXo8H9eYrskeXSwy0T3XUcfMzNzvKQBElis78C2MPsfD +I6jsGg3ILTIVhap0yxfB/5LZiDYGb/4NnkYntmXr2FgcKKm/a4zbpHjd8ChgUkSe +eKnpqy9YtyKQruHE8CoRsPGK4EZHbX6Gq7srhwSC+TjyylwjE0Qj9toeBl5mMaQk +PYVMwQiJT93BQH5amEJU4bvCuPR6Z6sWUzZXxCe7EAMOuZ9aIWY0bPwDixZhM01g +x/1juRQ77UB0uWw6wTxj9RIU0fYS9BnW5+jHxU39ululdq9hY+V0PSTm1hP27r9a +IbrQCD9twYbYacr9DTR1czeuxe5SpSeNnIlqpkjTN/lxGS88SH2j29hIEz6C6c+Q +rQ1l5SFmkQZH91bEnmt1V+F41w== +-----END CERTIFICATE----- \ No newline at end of file -- cgit v1.2.3