| 1 | // |
| 2 | // X509CertificateTest.cpp |
| 3 | // |
| 4 | // $Id: //poco/1.4/NetSSL_OpenSSL/testsuite/src/X509CertificateTest.cpp#1 $ |
| 5 | // |
| 6 | // Copyright (c) 2017, Applied Informatics Software Engineering GmbH. |
| 7 | // and Contributors. |
| 8 | // |
| 9 | // SPDX-License-Identifier: BSL-1.0 |
| 10 | // |
| 11 | |
| 12 | |
| 13 | #include "X509CertificateTest.h" |
| 14 | #include "Poco/CppUnit/TestCaller.h" |
| 15 | #include "Poco/CppUnit/TestSuite.h" |
| 16 | #include "Poco/Net/X509Certificate.h" |
| 17 | #include <openssl/opensslv.h> |
| 18 | #include <sstream> |
| 19 | |
| 20 | using namespace Poco::Net; |
| 21 | |
| 22 | |
| 23 | static const std::string BADSSL_PEM( |
| 24 | "-----BEGIN CERTIFICATE-----\n" |
| 25 | "MIIHGjCCBgKgAwIBAgIQC2as9L3V1BSoMGn+fB4NRjANBgkqhkiG9w0BAQ0FADBN\n" |
| 26 | "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E\n" |
| 27 | "aWdpQ2VydCBTSEEyIFNlY3VyZSBTZXJ2ZXIgQ0EwHhcNMTcwMzE4MDAwMDAwWhcN\n" |
| 28 | "MjAwMzI1MTIwMDAwWjBnMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5p\n" |
| 29 | "YTEVMBMGA1UEBxMMV2FsbnV0IENyZWVrMRUwEwYDVQQKEwxMdWNhcyBHYXJyb24x\n" |
| 30 | "FTATBgNVBAMMDCouYmFkc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\n" |
| 31 | "AQoCggEBAMIE7PiM7gTCs9hQ1XBYzJMY61yoaEmwIrX5lZ6xKyx2PmzAS2BMTOqy\n" |
| 32 | "tMAPgLaw+XLJhgL5XEFdEyt/ccRLvOmULlA3pmccYYz2QULFRtMWhyefdOsKnRFS\n" |
| 33 | "JiFzbIRMeVXk0WvoBj1IFVKtsyjbqv9u/2CVSndrOfEk0TG23U3AxPxTuW1CrbV8\n" |
| 34 | "/q71FdIzSOciccfCFHpsKOo3St/qbLVytH5aohbcabFXRNsKEqveww9HdFxBIuGa\n" |
| 35 | "+RuT5q0iBikusbpJHAwnnqP7i/dAcgCskgjZjFeEU4EFy+b+a1SYQCeFxxC7c3Dv\n" |
| 36 | "aRhBB0VVfPlkPz0sw6l865MaTIbRyoUCAwEAAaOCA9owggPWMB8GA1UdIwQYMBaA\n" |
| 37 | "FA+AYRyCMWHVLyjnjUY4tCzhxtniMB0GA1UdDgQWBBSd7sF7gQs6R2lxGH0RN5O8\n" |
| 38 | "pRs/+zAjBgNVHREEHDAaggwqLmJhZHNzbC5jb22CCmJhZHNzbC5jb20wDgYDVR0P\n" |
| 39 | "AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBrBgNVHR8E\n" |
| 40 | "ZDBiMC+gLaArhilodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc3NjYS1zaGEyLWc1\n" |
| 41 | "LmNybDAvoC2gK4YpaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL3NzY2Etc2hhMi1n\n" |
| 42 | "NS5jcmwwTAYDVR0gBEUwQzA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0\n" |
| 43 | "cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBAgMwfAYIKwYBBQUHAQEE\n" |
| 44 | "cDBuMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wRgYIKwYB\n" |
| 45 | "BQUHMAKGOmh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJT\n" |
| 46 | "ZWN1cmVTZXJ2ZXJDQS5jcnQwDAYDVR0TAQH/BAIwADCCAfcGCisGAQQB1nkCBAIE\n" |
| 47 | "ggHnBIIB4wHhAHcApLkJkLQYWBSHuxOizGdwCjw1mAT5G9+443fNDsgN3BAAAAFa\n" |
| 48 | "37GUmAAABAMASDBGAiEAlzAI5gaOsmMH2II7yr08jlqKgxeZT5zAtd9obFeUfMgC\n" |
| 49 | "IQChMLfMCBbgv8Fo+7YoGzXJrNJJXDDBC+R/miHp2PA8BwB2AFYUBpov18Ls0/Xh\n" |
| 50 | "vUSyPsdGdrm8mRFcwO+UmFXWidDdAAABWt+xlX0AAAQDAEcwRQIgWBrOlMeBTCBJ\n" |
| 51 | "ezx+6OwzmD1QSl7/Vq2k/xACoGInSjsCIQCii59Rjt8rZxNIHMQE6/lnYHWyCqEv\n" |
| 52 | "rNAJiUOrJAxJ3QB1AO5Lvbd1zmC64UJpH6vhnmajD35fsHLYgwDEe4l6qP3LAAAB\n" |
| 53 | "Wt+xlqkAAAQDAEYwRAIgEklGobMohZiTQwTgizi4Sfy2CQ/fL1K1EM2yZGrvSCAC\n" |
| 54 | "IGkDXy8uSUh3S09pAODVLHeyMYX8fdGM3UU1uv8ReNH3AHcAu9nfvB+KcbWTlCOX\n" |
| 55 | "qpJ7RzhXlQqrUugakJZkNo4e0YUAAAFa37GUwQAABAMASDBGAiEA2wazyXDaD1k3\n" |
| 56 | "4UVG0AJH+HhNBb728PHxuTJYGffXCckCIQDOb7subG8AQJFc5zWKeKPhnHhP2R56\n" |
| 57 | "28tXqM8mzCQGzzANBgkqhkiG9w0BAQ0FAAOCAQEAyA7NyduD8+zjNI/uclW9WkvG\n" |
| 58 | "6Oolon0vvbs+BGvCl5iY/3BBIxNTWPeRBDE0P+zOkceqGqjENce/d1O5I/H+oFZR\n" |
| 59 | "Y0fLjtILwg/BH5QKoRWJF/rqvu7wlSqnxlYGDducs2hY2WgtIl/BntMaDQXcyzXP\n" |
| 60 | "O+Pjbq0JLb6/Enss558t3DNIKvtspDidxnQIPBzKBVx8prG1C0ng4S+HmZYg166W\n" |
| 61 | "mShTOeNNQMYPIUr44ICQkw82gYuAsjsgxEEjAHo0zrkHlA3cnwXeERAX3qEUQ8WH\n" |
| 62 | "Dw/Py3T1TqiODDqvLLE/sFYUwqDaSdaaOo/geYvJmfqOYXQoaz2t1ptYXdvsfg==\n" |
| 63 | "-----END CERTIFICATE-----\n" |
| 64 | ); |
| 65 | |
| 66 | |
| 67 | X509CertificateTest::X509CertificateTest(const std::string& name): CppUnit::TestCase(name) |
| 68 | { |
| 69 | } |
| 70 | |
| 71 | |
| 72 | X509CertificateTest::~X509CertificateTest() |
| 73 | { |
| 74 | } |
| 75 | |
| 76 | |
| 77 | void X509CertificateTest::testVerify() |
| 78 | { |
| 79 | std::istringstream certStream(BADSSL_PEM); |
| 80 | X509Certificate cert(certStream); |
| 81 | |
| 82 | assertTrue (cert.verify("badssl.com" )); |
| 83 | assertTrue (cert.verify("host.badssl.com" )); |
| 84 | |
| 85 | #if OPENSSL_VERSION_NUMBER < 0x10002000L |
| 86 | assertTrue (cert.verify("wrong.host.badssl.com" )); |
| 87 | #else |
| 88 | assertTrue (!cert.verify("wrong.host.badssl.com" )); |
| 89 | #endif |
| 90 | } |
| 91 | |
| 92 | |
| 93 | void X509CertificateTest::setUp() |
| 94 | { |
| 95 | } |
| 96 | |
| 97 | |
| 98 | void X509CertificateTest::tearDown() |
| 99 | { |
| 100 | } |
| 101 | |
| 102 | |
| 103 | CppUnit::Test* X509CertificateTest::suite() |
| 104 | { |
| 105 | CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("X509CertificateTest" ); |
| 106 | |
| 107 | CppUnit_addTest(pSuite, X509CertificateTest, testVerify); |
| 108 | |
| 109 | return pSuite; |
| 110 | } |
| 111 | |