diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/X509CertificateToCertificateROConverterTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/X509CertificateToCertificateROConverterTest.java index 9fd77d52e4467127feaed54949350831914ffd61..53156baae5bb41ff185739e843703317966f76cf 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/X509CertificateToCertificateROConverterTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/X509CertificateToCertificateROConverterTest.java @@ -4,11 +4,19 @@ import eu.europa.ec.edelivery.smp.data.ui.CertificateRO; import eu.europa.ec.smp.api.Identifiers; import junitparams.JUnitParamsRunner; import junitparams.Parameters; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.oasis_open.docs.bdxr.ns.smp._2016._05.ParticipantIdentifierType; +import javax.security.auth.x500.X500Principal; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.security.Security; import java.security.cert.CertificateEncodingException; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.Base64; @@ -18,27 +26,39 @@ import static org.junit.Assert.*; @RunWith(JUnitParamsRunner.class) public class X509CertificateToCertificateROConverterTest { + @Before + public void setup(){ + Security.insertProviderAt(new org.bouncycastle.jce.provider.BouncyCastleProvider(), 1); + } + + private static final Object[] testCases() { return new Object[][]{ - // alias, subject, issuer, serial number, blueCoatHeader, certificateId - {"alias", "subject", "issuer","serialNumber","blueCoat","certificateId"}, + // filename, subject, issuer, serial number, blueCoatHeader, certificateId + {"cert-escaped-chars.pem", "C=BE,O=DIGIT,OU=CEF,CN=Escape characters \\,\\\\#\\+\\<\\>\\\"\\=", "C=BE,O=DIGIT,OU=CEF,CN=Escape characters \\,\\\\#\\+\\<\\>\\\"\\=","5c1bb275","sno=5c1bb275&subject=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DEscape+characters+%5C%2C%5C%5C%23%5C%2B%5C%3C%5C%3E%5C%22%5C%3D&validfrom=Dec+20+16%3A17%3A09+2018+GMT&validto=Dec+17+16%3A17%3A09+2028+GMT&issuer=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DEscape+characters+%5C%2C%5C%5C%23%5C%2B%5C%3C%5C%3E%5C%22%5C%3D","CN=Escape characters \\,\\\\\\#\\+\\<\\>\\\"\\=,O=DIGIT,C=BE:000000005c1bb275"}, + {"cert-nonAscii.pem", "C=BE,O=DIGIT,OU=CEF,CN=NonAscii chars: àøýßĉæãäħ", "C=BE,O=DIGIT,OU=CEF,CN=NonAscii chars: àøýßĉæãäħ","5c1bb38d","sno=5c1bb38d&subject=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DNonAscii+chars%3A++%C3%A0%C3%B8%C3%BD%C3%9F%C4%89%C3%A6%C3%A3%C3%A4%C4%A7&validfrom=Dec+20+16%3A21%3A49+2018+GMT&validto=Dec+17+16%3A21%3A49+2028+GMT&issuer=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DNonAscii+chars%3A++%C3%A0%C3%B8%C3%BD%C3%9F%C4%89%C3%A6%C3%A3%C3%A4%C4%A7","CN=NonAscii chars: àøýßĉæãäħ,O=DIGIT,C=BE:000000005c1bb38d"}, + {"cert-with-email.pem", "C=BE,O=DIGIT,OU=CEF,CN=Cert with email", "C=BE,O=DIGIT,OU=CEF,CN=Cert with email","5c1bb358","sno=5c1bb358&subject=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DCert+with+email&validfrom=Dec+20+16%3A20%3A56+2018+GMT&validto=Dec+17+16%3A20%3A56+2028+GMT&issuer=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DCert+with+email","CN=Cert with email,O=DIGIT,C=BE:000000005c1bb358"}, }; } + X509CertificateToCertificateROConverter testInstance = new X509CertificateToCertificateROConverter(); @Test @Parameters(method = "testCases") - public void testconvert(String alias, + public void testconvert(String filename, String subject, String issuer, String serialNumber, String blueCoat, - String certificateId) throws CertificateEncodingException { - /* + String certificateId) throws CertificateException { + + + + // given - X509Certificate certificate = getCertificate(alias); + X509Certificate certificate = getCertificate(filename); // when CertificateRO certRo = testInstance.convert(certificate); @@ -49,22 +69,17 @@ public class X509CertificateToCertificateROConverterTest { assertEquals(serialNumber, certRo.getSerialNumber()); assertEquals(blueCoat, certRo.getBlueCoatHeader()); assertEquals(certificateId, certRo.getCertificateId()); - assertEquals(Base64.getEncoder().encode(certificate.getEncoded()), certRo.getEncodedValue()); + assertNotNull(certRo.getEncodedValue()); assertEquals(certificate.getNotBefore(), certRo.getValidFrom()); assertEquals(certificate.getNotAfter(), certRo.getValidTo()); - */ - } - @Test - public void convert() { } - @Test - public void getCertificateIdFromCertificate() { - } - X509Certificate getCertificate(String alias){ - X509Certificate cert = null; - return cert; + X509Certificate getCertificate(String filename) throws CertificateException { + CertificateFactory fact = CertificateFactory.getInstance("X.509"); + InputStream is = X509CertificateToCertificateROConverterTest.class.getResourceAsStream("/certificates/" + filename); + return (X509Certificate) fact.generateCertificate(is); + } } \ No newline at end of file diff --git a/smp-server-library/src/test/resources/certificates/cert-escaped-chars.pem b/smp-server-library/src/test/resources/certificates/cert-escaped-chars.pem new file mode 100644 index 0000000000000000000000000000000000000000..b5b3339fb350682a468da5f5048a743343b84d6c --- /dev/null +++ b/smp-server-library/src/test/resources/certificates/cert-escaped-chars.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDHDCCAgSgAwIBAgIEXBuydTANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJC +RTEOMAwGA1UECgwFRElHSVQxDDAKBgNVBAsMA0NFRjEjMCEGA1UEAwwaRXNjYXBl +IGNoYXJhY3RlcnMgLFwjKzw+Ij0wHhcNMTgxMjIwMTUxNzA5WhcNMjgxMjE3MTUx +NzA5WjBQMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFRElHSVQxDDAKBgNVBAsMA0NF +RjEjMCEGA1UEAwwaRXNjYXBlIGNoYXJhY3RlcnMgLFwjKzw+Ij0wggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCB0F+y2Ych3RpQardwsC/X4sASQWMA8lPm +4a+sfeJs85BePdbhrqu3ePTOHaomG9n5ElCnQnn/rNjlCtfrxJbwKJJqotHOMbks +OHmed42SuC9Eo596192ve8Vc9PQo4xmAYYlIoESumZydTCnn7W5UVpyuL9i6yMhj +iO/LEYoPhyDplXUQPQFetOyjBKyLh1I3+Bcdj0RP+np7GyrAn1RqegXl6vK1YBYJ +O2SeO7Jq1GymPRMqs1OJQ3Ljkmj6oRKHcxjQ7nsJWHSsSmXOqzVnMl2JbwWTunAS +IRM7fkvMWoYvPxXXLaxvS+7/WFdf/VQD7/+u4aItGtj5WADEwr+LAgMBAAEwDQYJ +KoZIhvcNAQELBQADggEBAClEMFrkvny+VfayEiaA7a0HCq96TvyG0YpavePEeXeL +9E3x8tnYoIetLktVly54vtMe3YHhkQt/WupploE84G8BKrZguddB+bKYUD8gHq4f +GeD9AiGn9CIF8NGZ6LJKkec76n/vt+buhYpjZAMF+el4FZPdN+7B8hoozLXjb3mq +Ys5RWL41/xVGpPNVWAnSIKHIzELeC4IuoXk1oFl5NqJnM6X7JH0ppJH1W7+ROEjx +Fo2v9jLFPHmvpLn37FaZ85e18R/JvKNbVDgx3JnUwYTI8fml1yfNhRs/vWesfgB/ +tWiBIOTXr9CvSGe5E05juHsjlqGqPeDi+tPxB9hPQPE= +-----END CERTIFICATE----- + diff --git a/smp-server-library/src/test/resources/certificates/cert-nonAscii.pem b/smp-server-library/src/test/resources/certificates/cert-nonAscii.pem new file mode 100644 index 0000000000000000000000000000000000000000..9ac5e4f9f0e6982c44e36b4a458283f7ceeb8b20 --- /dev/null +++ b/smp-server-library/src/test/resources/certificates/cert-nonAscii.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDLjCCAhagAwIBAgIEXBuzjTANBgkqhkiG9w0BAQsFADBZMQswCQYDVQQGEwJC +RTEOMAwGA1UECgwFRElHSVQxDDAKBgNVBAsMA0NFRjEsMCoGA1UEAwwjTm9uQXNj +aWkgY2hhcnM6ICDDoMO4w73Dn8SJw6bDo8OkxKcwHhcNMTgxMjIwMTUyMTQ5WhcN +MjgxMjE3MTUyMTQ5WjBZMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFRElHSVQxDDAK +BgNVBAsMA0NFRjEsMCoGA1UEAwwjTm9uQXNjaWkgY2hhcnM6ICDDoMO4w73Dn8SJ +w6bDo8OkxKcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZdkXSg1yd +CPIvjVQk7UzFCtN/lTBz/5mFCHkeF+rQbmBZ+m5lDKRBcP40amjpfW+Ln6c/p6Gj +BJqgRJm7RBRTViNLgdvYUI4LWV24wVhxfhdDvYJmNivjBorioGqXkl5xZhS4g03V +swGSnireULnktXvAT9+Mf1xDb3MfJZFpU8GLZAJjUCKOsCbpzmAWJmgeumQg45Sv +5lOvkDph+Jk1UFt1B3zEtq+ktnbMJbdZ8XJwobk/JfmXsyF7dwo5Eu9BoyAxxysK +oScH3w/CxYb7WwsZoOml8rdGFqcoyDom3L+lx9trlPuzrE0HpET7xAuYxhCfOydQ +AX6lDVAyLTsfAgMBAAEwDQYJKoZIhvcNAQELBQADggEBADsoFoq96Yk+AC7FD38W +0JM/4VAV6qPrqFg/GOWKytap+tIZYggoknOwP5mPpHML4bTeFILvNnI7WCldCQyz +m/cwoC/v5NBSn9zetBpMRFFC5KHyezI5bZbLzSX8/+aw80hJELonCY8jL9Pbi5Jx +/DcbBRIKc+oh0F6/t5ORYI+224F3qRTdst+4jplMLq3zom2JWIRv0Z+mUvQU0KxE +NehrI6Ie57Ty1cILiX41zBs6MwOoaEpCb8bod0HdRjGFk36CohavT7Pf7xla3Gt5 +iCjr1fjB0UkYYAPSEOzYpqWr3LvD4zRUdAoYzsZ4dRt3SDxsaYxNwSKdoYpNMyPS +eEc= +-----END CERTIFICATE----- + diff --git a/smp-server-library/src/test/resources/certificates/cert-with-email.pem b/smp-server-library/src/test/resources/certificates/cert-with-email.pem new file mode 100644 index 0000000000000000000000000000000000000000..780b7d5048d22674c99409db1e5e1394b7b26d21 --- /dev/null +++ b/smp-server-library/src/test/resources/certificates/cert-with-email.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDKzCCAhOgAwIBAgIEXBuzWDANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJC +RTEOMAwGA1UECgwFRElHSVQxDDAKBgNVBAsMA0NFRjEYMBYGA1UEAwwPQ2VydCB3 +aXRoIGVtYWlsMB4XDTE4MTIyMDE1MjA1NloXDTI4MTIxNzE1MjA1NlowRTELMAkG +A1UEBhMCQkUxDjAMBgNVBAoMBURJR0lUMQwwCgYDVQQLDANDRUYxGDAWBgNVBAMM +D0NlcnQgd2l0aCBlbWFpbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AJFP/Ab2B+6XPf4jUsFoqd+Q1hm3E0/p5/nCzYOB2K3CIAilsEo8e8kvwjezgAyD +khVnlGZk3z10X0m278sYNUBlJ1UmoogyV5GI1MsnJQRKXeo/mcV5/vzdaemV0UUO +KJTNAnpIwbFz0D/s/S7dbH+KEKGHmz5MlsovS8+kWCfoZxCEyt1seQyeU2g09bXC +stGLsVlm33AXfgWZ9T4JLh666wtEsra5+nWh+wOQKlGVPbBwtZ4MQtlYkx/IY5Pr +j1FpTef0ho1/YDxLkxcXbBew7ccffxG7JZeL2jyn6jxvn7HBs9Rhiptw30iTC4tm +qbFkw+m6y9u9mbNW/yQsUesCAwEAAaMjMCEwHwYDVR0RBBgwFoIUbXkuZW1haWxA +YWRkcmVzcy5jb20wDQYJKoZIhvcNAQELBQADggEBAArNTK8XWZjmTm4tZKgnf75a +TEimLBqXBbJ6skYp3F1P4BebdnjVtaWdw6yeiQlW6KCVDf6O4zWnFyUU6qhVygCN +TtCVech72GFDR4J/1VSyPlylatNb3ZVIeBdeioRuEx201CZHE8AW9frjXbDouHrY +YB/xMT53vzy7ssoqlCfPBEIo5/AokvwCsSfRe1MLfkYLjwnkuCV1bq3BBkVH2x5V +RgvGaCxveE04tpAc3YB7wFi2ucdzf6lRY/xTzV+on0bIgZ+w2x0d2P1jEyar3gRh +Ck2dyExfs+E4nLMBs4OJspwHfl6Uf7HyZTrXQW9Gx551E2LawBowwlfzQBoDan0= +-----END CERTIFICATE----- +