From 1c08a3e4a421715ce307ec7bb4dbc26f7a355fb1 Mon Sep 17 00:00:00 2001 From: fpagliughi Date: Mon, 8 Jul 2024 20:51:00 -0400 Subject: [PATCH] Copied certificates from Paho C library for testing SSL/TLS examples, w/ Mosquitto config --- include/mqtt/CMakeLists.txt | 3 +- test/ssl/all-ca.crt | 102 ++++++++++++++++ test/ssl/client.pem | 211 +++++++++++++++++++++++++++++++++ test/ssl/mosquitto.conf | 40 +++++++ test/ssl/server.crt | 82 +++++++++++++ test/ssl/server.key | 27 +++++ test/ssl/test-root-ca.crt | 23 ++++ test/unit/test_ssl_options.cpp | 13 ++ 8 files changed, 500 insertions(+), 1 deletion(-) create mode 100644 test/ssl/all-ca.crt create mode 100644 test/ssl/client.pem create mode 100644 test/ssl/mosquitto.conf create mode 100644 test/ssl/server.crt create mode 100644 test/ssl/server.key create mode 100644 test/ssl/test-root-ca.crt diff --git a/include/mqtt/CMakeLists.txt b/include/mqtt/CMakeLists.txt index 9fc173f..e39656d 100644 --- a/include/mqtt/CMakeLists.txt +++ b/include/mqtt/CMakeLists.txt @@ -12,7 +12,7 @@ # # Contributors: # Guilherme Maciel Ferreira - initial version -# Frank Pagliughi +# Frank Pagliughi - updates throughout #*******************************************************************************/ install( @@ -26,6 +26,7 @@ install( create_options.h delivery_token.h disconnect_options.h + event.h exception.h export.h iaction_listener.h diff --git a/test/ssl/all-ca.crt b/test/ssl/all-ca.crt new file mode 100644 index 0000000..5e4fd31 --- /dev/null +++ b/test/ssl/all-ca.crt @@ -0,0 +1,102 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=GB, ST=Wiltshire, L=Salisbury, O=Paho Project, OU=Testing, CN=Root CA + Validity + Not Before: Apr 13 13:22:31 2023 GMT + Not After : Apr 11 13:22:31 2028 GMT + Subject: C=GB, ST=Wiltshire, O=Paho Project, OU=Testing, CN=Signing CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: + 00:e6:ce:0e:a2:6a:56:1c:35:8c:7a:af:31:43:7d: + 28:cb:61:15:81:2d:37:ff:f1:8f:7d:78:c3:37:58: + 8f:6a:4c:00:b6:9d:04:f3:1c:cd:fb:ca:7d:c0:dc: + 2b:3b:e4:c1:00:0c:71:83:df:cf:12:6f:98:ea:19: + 01:0b:87:5f:df:a7:58:76:9c:56:b9:f2:1d:d8:9f: + 24:89:eb:af:7f:fe:47:5a:a8:b3:79:c2:46:be:38: + bf:77:03:61:b7:de:d0:ae:37:8b:ad:0d:02:5c:c3: + e2:3a:17:e7:fc:86:9e:cd:ff:87:21:4a:c9:f5:c2: + 3d:bf:c9:14:1e:19:d9:89:19:e9:d9:b2:c8:a9:e9: + d2:9b:ae:73:f2:b7:e7:fc:3d:9b:c3:72:b6:be:10: + fc:0c:c2:eb:b7:8f:4a:67:4c:1b:43:ca:4e:58:df: + cc:74:c6:6b:95:de:09:ae:ef:60:62:81:82:74:de: + b8:48:24:3e:0a:ac:75:72:fa:f8:5d:f2:72:7a:bd: + 04:13:d2:c8:90:a3:ad:08:39:74:22:3f:10:7b:88: + 37:b8:77:2b:4a:34:1a:fa:4a:64:82:b4:fe:de:6c: + b5:a5:4c:70:6b:7e:ab:b4:2f:57:80:f0:0c:49:1b: + f1:32:1f:46:2f:12:af:e7:96:be:b1:09:df:b9:6a: + 88:bf + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + E1:BE:F5:5F:36:50:CF:FE:3D:42:EE:80:33:22:46:C2:3D:2A:41:41 + X509v3 Authority Key Identifier: + keyid:FE:98:8A:C3:41:B2:71:3A:4A:B3:76:5A:3C:17:06:93:11:99:8E:C8 + + X509v3 Basic Constraints: + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption + 0d:67:f0:6d:9e:7f:ad:7a:fb:81:f7:ed:40:fe:80:69:e3:df: + 94:ed:94:b7:3f:11:db:02:ba:08:1e:a9:28:95:b5:3f:e5:86: + 02:6d:33:3c:57:39:be:18:4a:d5:18:0f:e8:59:5b:40:38:b2: + 9d:71:18:4c:b1:e6:d9:51:2d:a0:7b:af:35:b4:d9:f3:d8:f5: + 09:b9:e5:e9:81:38:b0:a6:89:57:51:76:71:7d:91:bb:db:10: + 2b:25:ce:2d:59:5a:cd:29:a2:19:a6:a0:56:19:d7:38:f4:cb: + 94:43:90:ff:20:ce:af:37:c7:73:34:ef:fb:cb:e1:f2:1f:68: + 42:91:9d:33:3f:a1:7a:cb:80:5f:f2:52:81:f1:15:fa:79:01: + 1a:29:c4:36:41:26:75:5c:4b:ff:be:67:12:d8:d2:72:03:5a: + 3e:2e:aa:b3:10:b5:10:37:2b:eb:f7:59:3a:66:87:f4:ca:e4: + d4:35:6f:78:aa:26:de:ac:02:65:91:d2:fa:80:db:b9:8b:a6: + 26:bb:46:8f:21:e8:18:84:a6:b5:17:fb:e2:de:d8:b3:39:b2: + 6a:42:28:e9:05:55:e6:0b:39:32:42:28:a2:72:51:7c:46:96: + e2:c2:7f:b3:a5:b9:af:3b:04:3a:93:ba:9c:2c:0a:28:39:fc: + 8b:12:7d:b7 +-----BEGIN CERTIFICATE----- +MIIDmjCCAoKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwJHQjES +MBAGA1UECAwJV2lsdHNoaXJlMRIwEAYDVQQHDAlTYWxpc2J1cnkxFTATBgNVBAoM +DFBhaG8gUHJvamVjdDEQMA4GA1UECwwHVGVzdGluZzEQMA4GA1UEAwwHUm9vdCBD +QTAeFw0yMzA0MTMxMzIyMzFaFw0yODA0MTExMzIyMzFaMF8xCzAJBgNVBAYTAkdC +MRIwEAYDVQQIDAlXaWx0c2hpcmUxFTATBgNVBAoMDFBhaG8gUHJvamVjdDEQMA4G +A1UECwwHVGVzdGluZzETMBEGA1UEAwwKU2lnbmluZyBDQTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAObODqJqVhw1jHqvMUN9KMthFYEtN//xj314wzdY +j2pMALadBPMczfvKfcDcKzvkwQAMcYPfzxJvmOoZAQuHX9+nWHacVrnyHdifJInr +r3/+R1qos3nCRr44v3cDYbfe0K43i60NAlzD4joX5/yGns3/hyFKyfXCPb/JFB4Z +2YkZ6dmyyKnp0puuc/K35/w9m8Nytr4Q/AzC67ePSmdMG0PKTljfzHTGa5XeCa7v +YGKBgnTeuEgkPgqsdXL6+F3ycnq9BBPSyJCjrQg5dCI/EHuIN7h3K0o0GvpKZIK0 +/t5staVMcGt+q7QvV4DwDEkb8TIfRi8Sr+eWvrEJ37lqiL8CAwEAAaNQME4wHQYD +VR0OBBYEFOG+9V82UM/+PULugDMiRsI9KkFBMB8GA1UdIwQYMBaAFP6YisNBsnE6 +SrN2WjwXBpMRmY7IMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAA1n +8G2ef616+4H37UD+gGnj35TtlLc/EdsCuggeqSiVtT/lhgJtMzxXOb4YStUYD+hZ +W0A4sp1xGEyx5tlRLaB7rzW02fPY9Qm55emBOLCmiVdRdnF9kbvbECslzi1ZWs0p +ohmmoFYZ1zj0y5RDkP8gzq83x3M07/vL4fIfaEKRnTM/oXrLgF/yUoHxFfp5ARop +xDZBJnVcS/++ZxLY0nIDWj4uqrMQtRA3K+v3WTpmh/TK5NQ1b3iqJt6sAmWR0vqA +27mLpia7Ro8h6BiEprUX++Le2LM5smpCKOkFVeYLOTJCKKJyUXxGluLCf7Olua87 +BDqTupwsCig5/IsSfbc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDwDCCAqigAwIBAgIUPajsILLwblnD7WEDCk00ebOAASgwDQYJKoZIhvcNAQEL +BQAwcDELMAkGA1UEBhMCR0IxEjAQBgNVBAgMCVdpbHRzaGlyZTESMBAGA1UEBwwJ +U2FsaXNidXJ5MRUwEwYDVQQKDAxQYWhvIFByb2plY3QxEDAOBgNVBAsMB1Rlc3Rp +bmcxEDAOBgNVBAMMB1Jvb3QgQ0EwIBcNMjMwNDEzMTMyMjMxWhgPMjEwNTA2MDIx +MzIyMzFaMHAxCzAJBgNVBAYTAkdCMRIwEAYDVQQIDAlXaWx0c2hpcmUxEjAQBgNV +BAcMCVNhbGlzYnVyeTEVMBMGA1UECgwMUGFobyBQcm9qZWN0MRAwDgYDVQQLDAdU +ZXN0aW5nMRAwDgYDVQQDDAdSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsqFZCPniXeWNtd5NhccCmirdLv6i/c6FAffg4iMPEYanDTh0PPWE +/tPiiOTzcGp5udF3hjjtv2lx5OSEaZYNSIgWERf0LPS0MBsHjMmVoU4S8+gZAst1 +igzWKmmZAaUwBdGz0D6cRr7ZMUBfzJnrF1V6VQMLNXfrXmYAXRpxRMcBv3FPYLUc +qXp9gbFYnc+xNbuDE3Ir6/wMOu3Q1H6BvnIGVmdGqnmrONqzkMcqCuTEGlFEBQ4s +HrZUbXQGSKtlMInAM1hyP+qHmuMwTfue8/qspewHds9fNstJL9wLCZBk3Jdf6B5I +S6S+cmHM00cThnuVVwnwgU6syGhgekCNYwIDAQABo1AwTjAdBgNVHQ4EFgQU/piK +w0GycTpKs3ZaPBcGkxGZjsgwHwYDVR0jBBgwFoAU/piKw0GycTpKs3ZaPBcGkxGZ +jsgwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAhno5Byj3BGy/je/u +yPl8/uGOqh+uK0Ds+6YvUBRTHlnAFegwQrJhq17bzTdZZlw5s0+bYEVtOwX6p7Zk +mT4zUEPEQ7B223+r3TiB5xQ4ad+wZsDa9X7XY0+vqc+wf4CHFPHX4ZR0Xa1p/vBL +Y3L6ANHkwRFgx+XREmkiv4GJxeZtNSevuM63bbRZ/Y7OSZQlvKTxNlsKqi+61d7w +ciWk9BmmXNm2kQeKwsx5o7bMiETOhDXobcibD8R3U+3tf3vWp9jWIMZKkJ40U1Wb +LM0S9B1ZBkqb3Ml4Rq0AhQntQNGKDobt93ilQoGSUKq0/bR5wA8Yad9viVbbbSsm +kkdThg== +-----END CERTIFICATE----- diff --git a/test/ssl/client.pem b/test/ssl/client.pem new file mode 100644 index 0000000..69051ce --- /dev/null +++ b/test/ssl/client.pem @@ -0,0 +1,211 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 2 (0x2) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=GB, ST=Wiltshire, O=Paho Project, OU=Testing, CN=Signing CA + Validity + Not Before: Apr 13 13:22:40 2023 GMT + Not After : Apr 11 13:22:40 2028 GMT + Subject: C=GB, ST=Wiltshire, L=Salisbury, O=Paho Project, OU=Production, CN=test client + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: + 00:c9:03:bc:43:8e:1e:2e:cd:ac:4a:33:2f:99:fc: + de:9b:43:ff:c3:c2:ca:ab:de:a8:e2:10:1b:86:d2: + 51:ef:71:26:1f:7c:0e:5c:5b:5d:e7:1e:62:25:eb: + db:1f:7a:7f:c8:87:3b:79:38:b4:0b:e6:8e:43:8b: + 8b:3a:e8:85:0a:2f:77:13:80:cb:1b:86:30:ff:7f: + f9:a2:70:68:5e:0b:dd:7f:4b:7d:f4:82:2b:39:5d: + 43:cd:fd:d9:38:be:4e:4f:0f:5d:5c:f6:cc:49:95: + d5:b4:d5:a1:56:93:38:1d:62:5e:58:f3:90:3c:44: + 1e:3d:85:2b:0f:9f:4f:9e:9a:e3:b1:4b:18:a8:e1: + 05:6b:88:c5:ea:bf:a6:85:b9:3c:9f:02:ad:83:31: + 09:5e:e3:a2:b1:78:6b:bc:b2:d1:05:f5:22:3a:90: + a5:1c:0f:b5:94:aa:29:aa:7d:c8:ee:f5:3a:8f:2c: + 32:42:e1:c0:ec:8f:a8:73:ca:38:17:05:c9:c0:ce: + e2:c4:40:68:0b:4f:86:fb:1b:35:9c:4e:69:81:4f: + c8:cf:09:06:eb:ed:3a:f6:46:86:4f:91:f8:35:be: + 3c:ca:03:a4:0f:3d:75:56:d1:93:7f:a2:d2:32:38: + df:02:ac:2b:ff:a1:94:a4:80:b7:9f:ca:9e:51:0f: + 1a:bb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: + DF:C7:7A:E1:90:8C:51:CB:9F:32:43:B0:A6:60:E8:FB:A0:79:6E:F0 + X509v3 Authority Key Identifier: + keyid:E1:BE:F5:5F:36:50:CF:FE:3D:42:EE:80:33:22:46:C2:3D:2A:41:41 + + Signature Algorithm: sha256WithRSAEncryption + 5b:94:99:5f:8d:97:69:31:9d:ea:3d:e1:a5:a8:75:4c:1a:ef: + c0:cb:b1:92:a6:19:c4:a1:25:12:2f:64:3c:af:6d:d4:48:b8: + 77:e8:29:4b:5a:6a:50:65:85:c7:ba:22:a5:9c:24:93:75:fc: + 3e:ee:81:23:a4:89:da:89:4c:54:3b:02:8f:2d:de:dd:85:df: + 11:ac:26:b5:e6:b5:d9:82:21:28:90:3c:45:42:fe:7a:0a:ba: + 46:6c:8f:05:1d:ff:6f:c6:47:16:04:f3:4b:b3:e2:82:a2:3b: + 97:71:78:0b:12:19:db:a4:fc:2f:e1:ce:2b:b1:b6:8b:1b:30: + 69:6a:b0:16:2e:2a:c1:a1:d5:69:ab:b2:b4:95:e1:8f:bf:dc: + 4e:33:7d:06:8c:2b:37:ca:d9:c2:49:b4:4b:ec:32:ac:f1:12: + 80:c9:08:02:67:d9:f8:90:62:d9:27:4d:14:67:7b:09:bb:bc: + 56:8a:68:57:d5:6b:4f:df:00:14:0a:69:45:fc:30:5f:88:3a: + 37:b8:55:8f:a6:8e:fe:48:d8:1b:25:4b:e8:c1:16:84:26:5b: + e5:0b:ba:96:11:a0:db:b2:68:57:a9:55:f3:a8:03:65:82:da: + 9d:40:19:73:8f:d6:ab:98:fa:26:15:27:da:46:ab:29:df:a9: + 61:8b:55:2d +-----BEGIN CERTIFICATE----- +MIIDzDCCArSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBfMQswCQYDVQQGEwJHQjES +MBAGA1UECAwJV2lsdHNoaXJlMRUwEwYDVQQKDAxQYWhvIFByb2plY3QxEDAOBgNV +BAsMB1Rlc3RpbmcxEzARBgNVBAMMClNpZ25pbmcgQ0EwHhcNMjMwNDEzMTMyMjQw +WhcNMjgwNDExMTMyMjQwWjB3MQswCQYDVQQGEwJHQjESMBAGA1UECAwJV2lsdHNo +aXJlMRIwEAYDVQQHDAlTYWxpc2J1cnkxFTATBgNVBAoMDFBhaG8gUHJvamVjdDET +MBEGA1UECwwKUHJvZHVjdGlvbjEUMBIGA1UEAwwLdGVzdCBjbGllbnQwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJA7xDjh4uzaxKMy+Z/N6bQ//Dwsqr +3qjiEBuG0lHvcSYffA5cW13nHmIl69sfen/Ihzt5OLQL5o5Di4s66IUKL3cTgMsb +hjD/f/micGheC91/S330gis5XUPN/dk4vk5PD11c9sxJldW01aFWkzgdYl5Y85A8 +RB49hSsPn0+emuOxSxio4QVriMXqv6aFuTyfAq2DMQle46KxeGu8stEF9SI6kKUc +D7WUqimqfcju9TqPLDJC4cDsj6hzyjgXBcnAzuLEQGgLT4b7GzWcTmmBT8jPCQbr +7Tr2RoZPkfg1vjzKA6QPPXVW0ZN/otIyON8CrCv/oZSkgLefyp5RDxq7AgMBAAGj +ezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVk +IENlcnRpZmljYXRlMB0GA1UdDgQWBBTfx3rhkIxRy58yQ7CmYOj7oHlu8DAfBgNV +HSMEGDAWgBThvvVfNlDP/j1C7oAzIkbCPSpBQTANBgkqhkiG9w0BAQsFAAOCAQEA +W5SZX42XaTGd6j3hpah1TBrvwMuxkqYZxKElEi9kPK9t1Ei4d+gpS1pqUGWFx7oi +pZwkk3X8Pu6BI6SJ2olMVDsCjy3e3YXfEawmtea12YIhKJA8RUL+egq6RmyPBR3/ +b8ZHFgTzS7PigqI7l3F4CxIZ26T8L+HOK7G2ixswaWqwFi4qwaHVaauytJXhj7/c +TjN9BowrN8rZwkm0S+wyrPESgMkIAmfZ+JBi2SdNFGd7Cbu8VopoV9VrT98AFApp +RfwwX4g6N7hVj6aO/kjYGyVL6MEWhCZb5Qu6lhGg27JoV6lV86gDZYLanUAZc4/W +q5j6JhUn2karKd+pYYtVLQ== +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAyQO8Q44eLs2sSjMvmfzem0P/w8LKq96o4hAbhtJR73EmH3wO +XFtd5x5iJevbH3p/yIc7eTi0C+aOQ4uLOuiFCi93E4DLG4Yw/3/5onBoXgvdf0t9 +9IIrOV1Dzf3ZOL5OTw9dXPbMSZXVtNWhVpM4HWJeWPOQPEQePYUrD59PnprjsUsY +qOEFa4jF6r+mhbk8nwKtgzEJXuOisXhrvLLRBfUiOpClHA+1lKopqn3I7vU6jywy +QuHA7I+oc8o4FwXJwM7ixEBoC0+G+xs1nE5pgU/IzwkG6+069kaGT5H4Nb48ygOk +Dz11VtGTf6LSMjjfAqwr/6GUpIC3n8qeUQ8auwIDAQABAoIBAQCQS8soX2uRQ3kr +JoVEL/6ITI7cMweTytlGtjNcW7wPexTXwxD4AWpuDyR7fkyk0yXJiDIMOcUdSdrT +5+cBWYqvHhWHfYvPbUvdDTvg/HofELtmtoVrMMngeu/CfjghgJLsM+ZcZpmNNS7c +igIwCKxeg4+goO7oJCnlFaQsqbrY6aWzVcPz/Jr/IpTQJfHfFwhZmFGOoLzZNsnv +K5Y0rsVWxMjFDjhFpvTHWI+GJGHv9BNmxezc7hxbnI5QnS/EZUpLvECQryixjxLc +OnubZlGD3mk6eGvO2a+8zYQnOFw5BcX0qx1OoVbbkkzaN8DGytbTZqR9Irx7yFeB +RHg/fEHxAoGBAPrtthY61l7cj28UGFKGtC/a7r+6vYdqDGEJ+O8Ej9y4YZa7SI7x +dYQL/kVrgGFpWlntoW1l7iDRUvLV7oQIv78fKIlVj/kQou5LOLa9AYMLteULPuov +h3krszjOeRtTZSSAOo/tlgkgXPd9gqaFEOqGOII6ZC7S+a4B0eog0kBZAoGBAM0T +xbn/gkHNouOJtfMXjQyhxTcdQcTSsmDA1MxrwMFOj4PkBZ8BygGoNCOX48eK4h3v +2Eq/vGF4PApfwYb1Q4Hmd3quTvTDLprVt+OGsfvcM+91ng44wdCUM5oCV9o0bz9r ++ubsjoqDE+pTj7Oe8diJaqWkOXRjY/cDrjjOTXEzAoGAOOlRMxmFJV7A6WCVY6JJ +m9D79WBVPDFBPYEVhKB0QItRFu7DNihtjtVphjUrmOxcIalTw4wqxiazuX/r6OZT +FvXqK7vMO6EaUxGce1XC0gYF6zzxuAuvnjvbGjc6IIh5mB29KoeoT8mXTEqbJ0lm +3Mo0ZtT3g+c12dFv2ro29YECgYBZ55AoYX5+UKNXc1jj8HAymHz4E4hwvBndVswz +rg178W/zVzSrp8IihdYNwJnoMde9XheJdZMle+t+dMpH2yA0Q5AfpWkR3ruAv671 +PWirzLasBPk8rN8zDLWuj9Zp39DhkfoV4KEA0kQZ13ZJPaYy0tOBOITDpIr/kIqB +dtf2hwKBgBQhkugpz/UZOywrrspaYkB0fDjT19MpJDDFMdj7Q9EbVWszdwC00bpk +KvrfB8bH3u/cpQwnJkMHpIEuT4r4JUY1lTq9laGIAJ5kZTYoJoKEfynq8FnMDY12 +tO/1WhwvBvWcmvAgR/aI7RVGLJ5VaeCX8LhzU9wNTKkxrgMpC1Ke +-----END RSA PRIVATE KEY----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=GB, ST=Wiltshire, L=Salisbury, O=Paho Project, OU=Testing, CN=Root CA + Validity + Not Before: Apr 13 13:22:31 2023 GMT + Not After : Apr 11 13:22:31 2028 GMT + Subject: C=GB, ST=Wiltshire, O=Paho Project, OU=Testing, CN=Signing CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: + 00:e6:ce:0e:a2:6a:56:1c:35:8c:7a:af:31:43:7d: + 28:cb:61:15:81:2d:37:ff:f1:8f:7d:78:c3:37:58: + 8f:6a:4c:00:b6:9d:04:f3:1c:cd:fb:ca:7d:c0:dc: + 2b:3b:e4:c1:00:0c:71:83:df:cf:12:6f:98:ea:19: + 01:0b:87:5f:df:a7:58:76:9c:56:b9:f2:1d:d8:9f: + 24:89:eb:af:7f:fe:47:5a:a8:b3:79:c2:46:be:38: + bf:77:03:61:b7:de:d0:ae:37:8b:ad:0d:02:5c:c3: + e2:3a:17:e7:fc:86:9e:cd:ff:87:21:4a:c9:f5:c2: + 3d:bf:c9:14:1e:19:d9:89:19:e9:d9:b2:c8:a9:e9: + d2:9b:ae:73:f2:b7:e7:fc:3d:9b:c3:72:b6:be:10: + fc:0c:c2:eb:b7:8f:4a:67:4c:1b:43:ca:4e:58:df: + cc:74:c6:6b:95:de:09:ae:ef:60:62:81:82:74:de: + b8:48:24:3e:0a:ac:75:72:fa:f8:5d:f2:72:7a:bd: + 04:13:d2:c8:90:a3:ad:08:39:74:22:3f:10:7b:88: + 37:b8:77:2b:4a:34:1a:fa:4a:64:82:b4:fe:de:6c: + b5:a5:4c:70:6b:7e:ab:b4:2f:57:80:f0:0c:49:1b: + f1:32:1f:46:2f:12:af:e7:96:be:b1:09:df:b9:6a: + 88:bf + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + E1:BE:F5:5F:36:50:CF:FE:3D:42:EE:80:33:22:46:C2:3D:2A:41:41 + X509v3 Authority Key Identifier: + keyid:FE:98:8A:C3:41:B2:71:3A:4A:B3:76:5A:3C:17:06:93:11:99:8E:C8 + + X509v3 Basic Constraints: + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption + 0d:67:f0:6d:9e:7f:ad:7a:fb:81:f7:ed:40:fe:80:69:e3:df: + 94:ed:94:b7:3f:11:db:02:ba:08:1e:a9:28:95:b5:3f:e5:86: + 02:6d:33:3c:57:39:be:18:4a:d5:18:0f:e8:59:5b:40:38:b2: + 9d:71:18:4c:b1:e6:d9:51:2d:a0:7b:af:35:b4:d9:f3:d8:f5: + 09:b9:e5:e9:81:38:b0:a6:89:57:51:76:71:7d:91:bb:db:10: + 2b:25:ce:2d:59:5a:cd:29:a2:19:a6:a0:56:19:d7:38:f4:cb: + 94:43:90:ff:20:ce:af:37:c7:73:34:ef:fb:cb:e1:f2:1f:68: + 42:91:9d:33:3f:a1:7a:cb:80:5f:f2:52:81:f1:15:fa:79:01: + 1a:29:c4:36:41:26:75:5c:4b:ff:be:67:12:d8:d2:72:03:5a: + 3e:2e:aa:b3:10:b5:10:37:2b:eb:f7:59:3a:66:87:f4:ca:e4: + d4:35:6f:78:aa:26:de:ac:02:65:91:d2:fa:80:db:b9:8b:a6: + 26:bb:46:8f:21:e8:18:84:a6:b5:17:fb:e2:de:d8:b3:39:b2: + 6a:42:28:e9:05:55:e6:0b:39:32:42:28:a2:72:51:7c:46:96: + e2:c2:7f:b3:a5:b9:af:3b:04:3a:93:ba:9c:2c:0a:28:39:fc: + 8b:12:7d:b7 +-----BEGIN CERTIFICATE----- +MIIDmjCCAoKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwJHQjES +MBAGA1UECAwJV2lsdHNoaXJlMRIwEAYDVQQHDAlTYWxpc2J1cnkxFTATBgNVBAoM +DFBhaG8gUHJvamVjdDEQMA4GA1UECwwHVGVzdGluZzEQMA4GA1UEAwwHUm9vdCBD +QTAeFw0yMzA0MTMxMzIyMzFaFw0yODA0MTExMzIyMzFaMF8xCzAJBgNVBAYTAkdC +MRIwEAYDVQQIDAlXaWx0c2hpcmUxFTATBgNVBAoMDFBhaG8gUHJvamVjdDEQMA4G +A1UECwwHVGVzdGluZzETMBEGA1UEAwwKU2lnbmluZyBDQTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAObODqJqVhw1jHqvMUN9KMthFYEtN//xj314wzdY +j2pMALadBPMczfvKfcDcKzvkwQAMcYPfzxJvmOoZAQuHX9+nWHacVrnyHdifJInr +r3/+R1qos3nCRr44v3cDYbfe0K43i60NAlzD4joX5/yGns3/hyFKyfXCPb/JFB4Z +2YkZ6dmyyKnp0puuc/K35/w9m8Nytr4Q/AzC67ePSmdMG0PKTljfzHTGa5XeCa7v +YGKBgnTeuEgkPgqsdXL6+F3ycnq9BBPSyJCjrQg5dCI/EHuIN7h3K0o0GvpKZIK0 +/t5staVMcGt+q7QvV4DwDEkb8TIfRi8Sr+eWvrEJ37lqiL8CAwEAAaNQME4wHQYD +VR0OBBYEFOG+9V82UM/+PULugDMiRsI9KkFBMB8GA1UdIwQYMBaAFP6YisNBsnE6 +SrN2WjwXBpMRmY7IMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAA1n +8G2ef616+4H37UD+gGnj35TtlLc/EdsCuggeqSiVtT/lhgJtMzxXOb4YStUYD+hZ +W0A4sp1xGEyx5tlRLaB7rzW02fPY9Qm55emBOLCmiVdRdnF9kbvbECslzi1ZWs0p +ohmmoFYZ1zj0y5RDkP8gzq83x3M07/vL4fIfaEKRnTM/oXrLgF/yUoHxFfp5ARop +xDZBJnVcS/++ZxLY0nIDWj4uqrMQtRA3K+v3WTpmh/TK5NQ1b3iqJt6sAmWR0vqA +27mLpia7Ro8h6BiEprUX++Le2LM5smpCKOkFVeYLOTJCKKJyUXxGluLCf7Olua87 +BDqTupwsCig5/IsSfbc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDwDCCAqigAwIBAgIUPajsILLwblnD7WEDCk00ebOAASgwDQYJKoZIhvcNAQEL +BQAwcDELMAkGA1UEBhMCR0IxEjAQBgNVBAgMCVdpbHRzaGlyZTESMBAGA1UEBwwJ +U2FsaXNidXJ5MRUwEwYDVQQKDAxQYWhvIFByb2plY3QxEDAOBgNVBAsMB1Rlc3Rp +bmcxEDAOBgNVBAMMB1Jvb3QgQ0EwIBcNMjMwNDEzMTMyMjMxWhgPMjEwNTA2MDIx +MzIyMzFaMHAxCzAJBgNVBAYTAkdCMRIwEAYDVQQIDAlXaWx0c2hpcmUxEjAQBgNV +BAcMCVNhbGlzYnVyeTEVMBMGA1UECgwMUGFobyBQcm9qZWN0MRAwDgYDVQQLDAdU +ZXN0aW5nMRAwDgYDVQQDDAdSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsqFZCPniXeWNtd5NhccCmirdLv6i/c6FAffg4iMPEYanDTh0PPWE +/tPiiOTzcGp5udF3hjjtv2lx5OSEaZYNSIgWERf0LPS0MBsHjMmVoU4S8+gZAst1 +igzWKmmZAaUwBdGz0D6cRr7ZMUBfzJnrF1V6VQMLNXfrXmYAXRpxRMcBv3FPYLUc +qXp9gbFYnc+xNbuDE3Ir6/wMOu3Q1H6BvnIGVmdGqnmrONqzkMcqCuTEGlFEBQ4s +HrZUbXQGSKtlMInAM1hyP+qHmuMwTfue8/qspewHds9fNstJL9wLCZBk3Jdf6B5I +S6S+cmHM00cThnuVVwnwgU6syGhgekCNYwIDAQABo1AwTjAdBgNVHQ4EFgQU/piK +w0GycTpKs3ZaPBcGkxGZjsgwHwYDVR0jBBgwFoAU/piKw0GycTpKs3ZaPBcGkxGZ +jsgwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAhno5Byj3BGy/je/u +yPl8/uGOqh+uK0Ds+6YvUBRTHlnAFegwQrJhq17bzTdZZlw5s0+bYEVtOwX6p7Zk +mT4zUEPEQ7B223+r3TiB5xQ4ad+wZsDa9X7XY0+vqc+wf4CHFPHX4ZR0Xa1p/vBL +Y3L6ANHkwRFgx+XREmkiv4GJxeZtNSevuM63bbRZ/Y7OSZQlvKTxNlsKqi+61d7w +ciWk9BmmXNm2kQeKwsx5o7bMiETOhDXobcibD8R3U+3tf3vWp9jWIMZKkJ40U1Wb +LM0S9B1ZBkqb3Ml4Rq0AhQntQNGKDobt93ilQoGSUKq0/bR5wA8Yad9viVbbbSsm +kkdThg== +-----END CERTIFICATE----- diff --git a/test/ssl/mosquitto.conf b/test/ssl/mosquitto.conf new file mode 100644 index 0000000..ebc660d --- /dev/null +++ b/test/ssl/mosquitto.conf @@ -0,0 +1,40 @@ +log_type error +log_type warning +log_type notice +log_type information +#log_type debug + +#log_dest file /var/log/mosquitto/tls-testing.log + +allow_anonymous true +#password_file test/tls-testing/mosquitto.pw + +#message_size_limit 5000000 + +# non-SSL listeners +listener 1883 +listener 18883 + +# listener for mutual authentication +listener 18884 +cafile test/ssl/all-ca.crt +certfile test/ssl/server.crt +keyfile test/ssl/server.key +require_certificate true +use_identity_as_username false +#tls_version tlsv1 + +# server authentication - no client authentication +listener 18885 +protocol websockets +cafile test/ssl/all-ca.crt +certfile test/ssl/server.crt +keyfile test/ssl/server.key +require_certificate false +#tls_version tlsv1 + +# TLS-PSK authentication +#listener 18888 +#ciphers PSK-AES128-CBC-SHA +#psk_hint Test +#psk_file test/tls-testing/mosquitto.psk diff --git a/test/ssl/server.crt b/test/ssl/server.crt new file mode 100644 index 0000000..16fa79f --- /dev/null +++ b/test/ssl/server.crt @@ -0,0 +1,82 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=GB, ST=Wiltshire, O=Paho Project, OU=Testing, CN=Signing CA + Validity + Not Before: Apr 13 13:22:38 2023 GMT + Not After : Apr 11 13:22:38 2028 GMT + Subject: C=GB, ST=Wiltshire, L=Salisbury, O=Paho Project, OU=Production, CN=localhost + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: + 00:c8:b2:1f:2b:d4:6c:20:f0:67:64:14:9d:79:14: + b3:99:49:a9:65:1d:20:f3:1e:b7:96:92:9b:e7:0c: + 1d:90:be:dc:a5:c5:10:e1:9e:d9:fd:f4:6f:f0:1e: + 18:ef:db:fd:f9:88:e3:fb:0f:fb:4b:6b:15:c3:8d: + 43:86:6c:2b:f0:12:94:b5:ce:9d:60:57:04:15:0e: + 07:0f:72:87:5b:38:62:f4:75:5d:17:05:3d:45:1f: + e7:7b:ee:da:50:95:22:10:de:f8:87:cb:b8:39:38: + cf:88:6d:69:80:7d:df:a7:50:28:45:df:aa:33:e3: + 3d:d6:a2:4c:2b:8d:bb:83:db:98:2d:cd:1a:7f:88: + 75:e5:5d:fc:ea:c8:60:93:31:76:66:f3:24:ad:2b: + fa:20:77:41:61:ab:43:ee:47:52:45:6b:a4:11:98: + 3d:bf:7c:09:57:c0:0b:36:8f:ba:be:e3:29:d5:3e: + f9:c1:51:15:1f:b1:c1:4e:9f:c8:68:e2:b1:d8:11: + 25:7b:65:56:11:79:fe:f7:f1:c8:ac:9b:b0:a2:4b: + e5:c4:e4:96:ab:92:30:f8:ce:a7:ae:c9:53:e1:f4: + d9:f8:55:e1:52:1a:b2:e0:ae:b6:76:f7:e4:dc:2c: + 0b:f2:c3:09:b2:f7:42:8d:56:d6:d4:3b:af:18:2e: + 26:31 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: + 93:31:D2:88:FB:6F:4C:AB:37:BE:CE:30:6B:1B:AB:70:27:58:8F:DA + X509v3 Authority Key Identifier: + keyid:E1:BE:F5:5F:36:50:CF:FE:3D:42:EE:80:33:22:46:C2:3D:2A:41:41 + + Signature Algorithm: sha256WithRSAEncryption + 4a:2e:1f:9c:7e:99:2e:cc:40:b4:49:ea:92:27:d4:35:f5:07: + 6b:ff:a2:2e:15:47:76:40:3c:9b:1c:85:b3:a8:f6:a6:f2:15: + c0:a1:dc:d6:bd:66:71:09:fd:e6:93:4f:9a:36:e4:a7:0f:b0: + f5:5a:4d:e2:30:50:9b:12:0d:12:4d:6a:67:81:02:17:92:69: + 00:e4:24:91:5c:83:99:9c:7b:6d:8d:3f:fc:46:81:c2:4a:f4: + 9c:3f:d6:5f:6b:1f:c6:84:fa:de:33:26:3a:d4:d2:4c:98:23: + c1:2b:20:f2:12:bd:dc:61:5f:63:84:4c:1b:7b:c5:28:3c:4a: + bb:da:07:61:b7:d7:79:43:66:eb:f9:21:96:14:34:80:1b:bd: + b7:62:22:ea:7a:0a:25:b5:27:fb:40:c7:f7:ce:18:ea:e6:16: + 55:d9:bb:de:98:c5:19:04:a1:3c:03:e2:6f:50:79:ac:ce:88: + 9c:6e:d0:1a:d2:87:10:2e:59:dd:14:19:be:23:aa:bc:17:1b: + 21:96:5f:08:ce:16:d9:71:52:72:f9:f5:be:f7:cd:17:ae:9a: + 9a:3f:e1:11:a3:a9:9a:6c:8d:ca:c9:7f:e5:6d:32:72:4e:3e: + c0:c7:96:95:e4:dc:9e:b6:3a:e3:57:4f:eb:79:2a:09:61:51: + 78:c1:b9:50 +-----BEGIN CERTIFICATE----- +MIIDyjCCArKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBfMQswCQYDVQQGEwJHQjES +MBAGA1UECAwJV2lsdHNoaXJlMRUwEwYDVQQKDAxQYWhvIFByb2plY3QxEDAOBgNV +BAsMB1Rlc3RpbmcxEzARBgNVBAMMClNpZ25pbmcgQ0EwHhcNMjMwNDEzMTMyMjM4 +WhcNMjgwNDExMTMyMjM4WjB1MQswCQYDVQQGEwJHQjESMBAGA1UECAwJV2lsdHNo +aXJlMRIwEAYDVQQHDAlTYWxpc2J1cnkxFTATBgNVBAoMDFBhaG8gUHJvamVjdDET +MBEGA1UECwwKUHJvZHVjdGlvbjESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyLIfK9RsIPBnZBSdeRSzmUmpZR0g8x63 +lpKb5wwdkL7cpcUQ4Z7Z/fRv8B4Y79v9+Yjj+w/7S2sVw41Dhmwr8BKUtc6dYFcE +FQ4HD3KHWzhi9HVdFwU9RR/ne+7aUJUiEN74h8u4OTjPiG1pgH3fp1AoRd+qM+M9 +1qJMK427g9uYLc0af4h15V386shgkzF2ZvMkrSv6IHdBYatD7kdSRWukEZg9v3wJ +V8ALNo+6vuMp1T75wVEVH7HBTp/IaOKx2BEle2VWEXn+9/HIrJuwokvlxOSWq5Iw ++M6nrslT4fTZ+FXhUhqy4K62dvfk3CwL8sMJsvdCjVbW1DuvGC4mMQIDAQABo3sw +eTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD +ZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUkzHSiPtvTKs3vs4waxurcCdYj9owHwYDVR0j +BBgwFoAU4b71XzZQz/49Qu6AMyJGwj0qQUEwDQYJKoZIhvcNAQELBQADggEBAEou +H5x+mS7MQLRJ6pIn1DX1B2v/oi4VR3ZAPJschbOo9qbyFcCh3Na9ZnEJ/eaTT5o2 +5KcPsPVaTeIwUJsSDRJNameBAheSaQDkJJFcg5mce22NP/xGgcJK9Jw/1l9rH8aE ++t4zJjrU0kyYI8ErIPISvdxhX2OETBt7xSg8SrvaB2G313lDZuv5IZYUNIAbvbdi +Iup6CiW1J/tAx/fOGOrmFlXZu96YxRkEoTwD4m9QeazOiJxu0BrShxAuWd0UGb4j +qrwXGyGWXwjOFtlxUnL59b73zReumpo/4RGjqZpsjcrJf+VtMnJOPsDHlpXk3J62 +OuNXT+t5KglhUXjBuVA= +-----END CERTIFICATE----- diff --git a/test/ssl/server.key b/test/ssl/server.key new file mode 100644 index 0000000..aa02b98 --- /dev/null +++ b/test/ssl/server.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAyLIfK9RsIPBnZBSdeRSzmUmpZR0g8x63lpKb5wwdkL7cpcUQ +4Z7Z/fRv8B4Y79v9+Yjj+w/7S2sVw41Dhmwr8BKUtc6dYFcEFQ4HD3KHWzhi9HVd +FwU9RR/ne+7aUJUiEN74h8u4OTjPiG1pgH3fp1AoRd+qM+M91qJMK427g9uYLc0a +f4h15V386shgkzF2ZvMkrSv6IHdBYatD7kdSRWukEZg9v3wJV8ALNo+6vuMp1T75 +wVEVH7HBTp/IaOKx2BEle2VWEXn+9/HIrJuwokvlxOSWq5Iw+M6nrslT4fTZ+FXh +Uhqy4K62dvfk3CwL8sMJsvdCjVbW1DuvGC4mMQIDAQABAoIBACd6wp8AnnSsVepe +E8wpwlq5HtWBMWYh+MNp+7krrPU4VndVmMiJUyCd4Rc/FHC6ue9IenB86FYhrppV +Q59B0DLdtNs+1b6J34e0xrbHNNFA+lZUcAeDRFZAvGyow9FuRNFEy2cLMCYxgsG3 +pDVejYyAPCvin7ytSxDZxFoc+3Ioeqgx6XKuaT9gFyy1SVYzXiQYXvzCIONGGNJW +7Y1q9l5vqnC3hquaDPs4zYy46I7Iv3pMfoQyMagCyi5sliK7sBWzu5sGPLJK0Sch +CkEvqtCve9mFU75jVE9dg404sil3oiYvPyRcM/fEAj3rR0ZLruVdOoaCr+V0Q+G6 +WujDQ7ECgYEA/6J64B639hwPeAY5QNwRY8gLIggAUjzSvvYeG+7/MfzBr+gNzI8l +etMBPp/1VrxRtUw9hAlW6+hcsBA17ynnwzUsTjlYBjs2WvOg5MEZDjlQvyFS9ULA +ejfJgbo1Tdv+IEqUlyW5OXT0QJncpry7shUS7jeUcsC0mmi3Qi1CKksCgYEAyPuL +ERAyW3On04MCz72LiJVngyOZeTyLP8U7WK4spdsXOxW5UUaQXpj23F1JME7LUGnz +ESXQQ9xMNQrPHA81BLCjhi+CKFmmTXrcLnWtw68SQRGiXWx9yH4axkS3nrj2GPUi +U2UbLEu4CaSaJYxHBjTRtUML8qp53AhsvjDvY/MCgYAsQaLoPik3EHCVJO6wjejs +z2st/xifJCyQJufbiirgKpQVsiUBbx7b/r/Oab79vyieLI7R1xQXT2kMiiHsP+MB +5qi++iqFGac1Y8xNDikaT03taQWFtILCJfpa3TPxQM7kJEVJTZydl+PZc0nCDBaq +o/9dAn5Ox5H80Xg4msFDtQKBgQCNSHasGgysSRMzFqfFTWNnMk+/2iirFyp0O7vK +TTZJqUgdWtoZDleyiCkRI+qtMNavwqsB5OkQqy5PIzgQa4hDscBiNcdzggHr+XAK +oOLz6oAUicbvkbKiXDOKKQhDZZZqWPg2U57Udq366WELAB91d2/r0iP2BG0BhlKb +KF9AjQKBgDc3gVP4YDZfqQywEnq6LMl79eda4NBA44MA9AXjxSgBDJIjpkkAOz3I +yL+al6rz/zJlG3kEx46b4LRX40JlF8em50i9VmnVpbe/MKYoacZRTVbuJqWav6En +bRRr+zj0s9T8ksYp9kH/iS0g9Tf4qnB154e7D/br4dRbPJPX97k2 +-----END RSA PRIVATE KEY----- diff --git a/test/ssl/test-root-ca.crt b/test/ssl/test-root-ca.crt new file mode 100644 index 0000000..2374b03 --- /dev/null +++ b/test/ssl/test-root-ca.crt @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDwDCCAqigAwIBAgIUPajsILLwblnD7WEDCk00ebOAASgwDQYJKoZIhvcNAQEL +BQAwcDELMAkGA1UEBhMCR0IxEjAQBgNVBAgMCVdpbHRzaGlyZTESMBAGA1UEBwwJ +U2FsaXNidXJ5MRUwEwYDVQQKDAxQYWhvIFByb2plY3QxEDAOBgNVBAsMB1Rlc3Rp +bmcxEDAOBgNVBAMMB1Jvb3QgQ0EwIBcNMjMwNDEzMTMyMjMxWhgPMjEwNTA2MDIx +MzIyMzFaMHAxCzAJBgNVBAYTAkdCMRIwEAYDVQQIDAlXaWx0c2hpcmUxEjAQBgNV +BAcMCVNhbGlzYnVyeTEVMBMGA1UECgwMUGFobyBQcm9qZWN0MRAwDgYDVQQLDAdU +ZXN0aW5nMRAwDgYDVQQDDAdSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsqFZCPniXeWNtd5NhccCmirdLv6i/c6FAffg4iMPEYanDTh0PPWE +/tPiiOTzcGp5udF3hjjtv2lx5OSEaZYNSIgWERf0LPS0MBsHjMmVoU4S8+gZAst1 +igzWKmmZAaUwBdGz0D6cRr7ZMUBfzJnrF1V6VQMLNXfrXmYAXRpxRMcBv3FPYLUc +qXp9gbFYnc+xNbuDE3Ir6/wMOu3Q1H6BvnIGVmdGqnmrONqzkMcqCuTEGlFEBQ4s +HrZUbXQGSKtlMInAM1hyP+qHmuMwTfue8/qspewHds9fNstJL9wLCZBk3Jdf6B5I +S6S+cmHM00cThnuVVwnwgU6syGhgekCNYwIDAQABo1AwTjAdBgNVHQ4EFgQU/piK +w0GycTpKs3ZaPBcGkxGZjsgwHwYDVR0jBBgwFoAU/piKw0GycTpKs3ZaPBcGkxGZ +jsgwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAhno5Byj3BGy/je/u +yPl8/uGOqh+uK0Ds+6YvUBRTHlnAFegwQrJhq17bzTdZZlw5s0+bYEVtOwX6p7Zk +mT4zUEPEQ7B223+r3TiB5xQ4ad+wZsDa9X7XY0+vqc+wf4CHFPHX4ZR0Xa1p/vBL +Y3L6ANHkwRFgx+XREmkiv4GJxeZtNSevuM63bbRZ/Y7OSZQlvKTxNlsKqi+61d7w +ciWk9BmmXNm2kQeKwsx5o7bMiETOhDXobcibD8R3U+3tf3vWp9jWIMZKkJ40U1Wb +LM0S9B1ZBkqb3Ml4Rq0AhQntQNGKDobt93ilQoGSUKq0/bR5wA8Yad9viVbbbSsm +kkdThg== +-----END CERTIFICATE----- diff --git a/test/unit/test_ssl_options.cpp b/test/unit/test_ssl_options.cpp index 786359a..fad17fc 100644 --- a/test/unit/test_ssl_options.cpp +++ b/test/unit/test_ssl_options.cpp @@ -393,3 +393,16 @@ TEST_CASE("ssl_options set empty strings", "[options]") REQUIRE(c_struct.protos == nullptr); REQUIRE(c_struct.protos_len == 0); } + +// ---------------------------------------------------------------------- +// Test if empty strings gives nullptr opts +// ---------------------------------------------------------------------- + +TEST_CASE("ssl_options test error handler", "[options]") +{ + mqtt::ssl_options opts{orgOpts}; + + orgOpts.set_error_handler([](const std::string& msg) { + std::cerr << "SSL Error: " << msg << std::endl; + }); +}