11// Copyright (c) Microsoft Corporation. All rights reserved.
22// Licensed under the Apache 2.0 License.
33
4+ #include " ccf/crypto/openssl/openssl_wrappers.h"
45#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
56#include " ccf/crypto/base64.h"
67#include " ccf/crypto/eddsa_key_pair.h"
@@ -1349,4 +1350,49 @@ TEST_CASE("Decrypt should validate integrity")
13491350 ~broken_ciphertext[ciphertext.size () / 2 ];
13501351
13511352 CHECK_THROWS (ccf::crypto::aes_gcm_decrypt (key, broken_ciphertext));
1353+ }
1354+
1355+ TEST_CASE (" Carriage returns in PEM certificates" )
1356+ {
1357+ const std::string single_cert =
1358+ " -----BEGIN "
1359+ " CERTIFICATE-----"
1360+ " \n MIIByDCCAU6gAwIBAgIQOBe5SrcwReWmSzTjzj2HDjAKBggqhkjOPQQDAzATMREw\n DwYDVQ"
1361+ " QDDAhDQ0YgTm9kZTAeFw0yMzA1MTcxMzUwMzFaFw0yMzA1MTgxMzUwMzBa\n MBMxETAPBgNVBA"
1362+ " MMCENDRiBOb2RlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE74qL\n Ac/"
1363+ " 45tiriN5MuquYhHVdMGQRvYSm08HBfYcODtET88qC0A39o6Y2TmfbIn6BdjMG\n kD58o377ZMT"
1364+ " aApQu/oJcwt7qZ9/LE8j8WU2qHn0cPTlpwH/"
1365+ " 2tiud2w+U3voSo2cw\n ZTASBgNVHRMBAf8ECDAGAQH/"
1366+ " AgEAMB0GA1UdDgQWBBS9FJNwWSXtUpHaBV57EwTW\n oM8vHjAfBgNVHSMEGDAWgBS9FJNwWSXt"
1367+ " UpHaBV57EwTWoM8vHjAPBgNVHREECDAG\n hwR/"
1368+ " xF96MAoGCCqGSM49BAMDA2gAMGUCMQDKxpjPToJ7VSqKqQSeMuW9tr4iL+"
1369+ " 9I\n 7gTGdGwiIYV1qTSS35Sk9XQZ0VpSa58c/"
1370+ " 5UCMEgmH71k7XlTGVUypm4jAgjpC46H\n s+hJpGMvyD9dKzEpZgmZYtghbyakUkwBiqmFQA=="
1371+ " \n -----END CERTIFICATE-----" ;
1372+ Pem cert_pem (single_cert);
1373+ auto cert_vec = cert_pem.raw ();
1374+ OpenSSL::Unique_BIO certbio (cert_vec);
1375+ OpenSSL::Unique_X509 cert (certbio, true );
1376+ REQUIRE_NE (cert, nullptr );
1377+
1378+ const std::string single_cert_cr =
1379+ " -----BEGIN "
1380+ " CERTIFICATE-----"
1381+ " \r\n MIIByDCCAU6gAwIBAgIQOBe5SrcwReWmSzTjzj2HDjAKBggqhkjOPQQDAzATMREw\r\n Dw"
1382+ " YDVQQDDAhDQ0YgTm9kZTAeFw0yMzA1MTcxMzUwMzFaFw0yMzA1MTgxMzUwMzBa\r\n MBMxETAP"
1383+ " BgNVBAMMCENDRiBOb2RlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE74qL\r\n Ac/"
1384+ " 45tiriN5MuquYhHVdMGQRvYSm08HBfYcODtET88qC0A39o6Y2TmfbIn6BdjMG\r\n kD58o377Z"
1385+ " MTaApQu/oJcwt7qZ9/LE8j8WU2qHn0cPTlpwH/"
1386+ " 2tiud2w+U3voSo2cw\r\n ZTASBgNVHRMBAf8ECDAGAQH/"
1387+ " AgEAMB0GA1UdDgQWBBS9FJNwWSXtUpHaBV57EwTW\r\n oM8vHjAfBgNVHSMEGDAWgBS9FJNwWS"
1388+ " XtUpHaBV57EwTWoM8vHjAPBgNVHREECDAG\r\n hwR/"
1389+ " xF96MAoGCCqGSM49BAMDA2gAMGUCMQDKxpjPToJ7VSqKqQSeMuW9tr4iL+"
1390+ " 9I\r\n 7gTGdGwiIYV1qTSS35Sk9XQZ0VpSa58c/"
1391+ " 5UCMEgmH71k7XlTGVUypm4jAgjpC46H\r\n s+hJpGMvyD9dKzEpZgmZYtghbyakUkwBiqmFQA="
1392+ " =\r\n -----END CERTIFICATE-----" ;
1393+ Pem cert_pem_cr (single_cert_cr);
1394+ auto cert_vec_cr = cert_pem_cr.raw ();
1395+ OpenSSL::Unique_BIO certbio_cr (cert_vec_cr);
1396+ OpenSSL::Unique_X509 cert_cr (certbio_cr, true );
1397+ REQUIRE_NE (cert_cr, nullptr );
13521398}
0 commit comments