diff options
author | Shobhit Adlakha <adlakhashobhit@gmail.com> | 2019-05-06 16:59:32 -0400 |
---|---|---|
committer | Shobhit Adlakha <adlakhashobhit@gmail.com> | 2019-05-06 16:59:32 -0400 |
commit | 8fa75e48236768c2d6a3c070c5d60dd5d92ef9e0 (patch) | |
tree | 49706550817d6d7c0b38dcb1bc9521578f450979 | |
parent | 32f94058e5f356cc886d2020975e084bf311d5b1 (diff) | |
download | sdl_core-8fa75e48236768c2d6a3c070c5d60dd5d92ef9e0.tar.gz |
Added CA certificate and fixed style for sample_websocket_server
-rw-r--r-- | src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h | 232 | ||||
-rw-r--r-- | src/components/transport_manager/test/websocket_connection_test.cc | 183 |
2 files changed, 172 insertions, 243 deletions
diff --git a/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h b/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h index 421462d4d5..86c776bffb 100644 --- a/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h +++ b/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h @@ -64,97 +64,32 @@ using tcp = boost::asio::ip::tcp; // from <boost/asio/ip/tcp.hpp> //------------------------------------------------------------------------------ // Report a failure -void fail(beast::error_code ec, char const* what) { - std::cerr << what << ": " << ec.message() << "\n"; +void Fail(char const* tag, boost::system::error_code ec) { + std::cerr << tag << ": " << ec.message() << "\n"; } // Accepts incoming connections and launches the WSServer class WSSession : public std::enable_shared_from_this<WSSession> { private: - // Echoes back all received WebSocket messages class WSServer : public std::enable_shared_from_this<WSServer> { public: - // Take ownership of the socket explicit WSServer(tcp::socket&& socket) : ws_(std::move(socket)), strand_(ws_.get_executor()) {} - // Start the asynchronous operation - void run() { + void Run() { // Accept the websocket handshake - ws_.async_accept( - boost::asio::bind_executor(strand_, - std::bind(&WSServer::on_accept, - shared_from_this(), - std::placeholders::_1))); + ws_.async_accept(boost::asio::bind_executor( + strand_, + std::bind( + &WSServer::OnAccept, shared_from_this(), std::placeholders::_1))); } - void on_accept(beast::error_code ec) { - std::cout << "SERVER: Accepting connection" << std::endl; + void OnAccept(beast::error_code ec) { if (ec) { - std::cout << "SERVER: Connection accept FAILED" << std::endl; - return fail(ec, "accept"); + return Fail("ERROR_CONNECTION_ACCEPT", ec); } - // Read a message - // do_read(); } - // void do_read() { - // // Read a message into our buffer - // ws_.async_read( - // buffer_, - // boost::asio::bind_executor(strand_, - // std::bind(&WSServer::on_read, - // shared_from_this(), - // std::placeholders::_1, - // std::placeholders::_2))); - // } - - // void do_write() { - // ws_.text(ws_.got_text()); - // ws_.async_write(buffer_.data(), - // std::bind(&WSServer::on_write, - // shared_from_this(), - // std::placeholders::_1, - // std::placeholders::_2)); - // } - - // void on_read(beast::error_code ec, std::size_t bytes_transferred) { - // std::cout << "SERVER: receiving data" << std::endl; - - // boost::ignore_unused(bytes_transferred); - - // // This indicates that the WSServer was closed - // if (ec == websocket::error::closed) { - // std::cout << "SERVER: Websocket closed" << std::endl; - // return; - // } - - // if (ec) { - // std::cout << "SERVER: Read failed" << std::endl; - // fail(ec, "read"); - // } - - // // Echo the message - // do_write(); - // } - - // void on_write(beast::error_code ec, std::size_t bytes_transferred) { - // std::cout << "SERVER: Sending data" << std::endl; - - // boost::ignore_unused(bytes_transferred); - - // if (ec) { - // std::cout << "SERVER: Write failed" << std::endl; - // return fail(ec, "write"); - // } - - // // Clear the buffer - // buffer_.consume(buffer_.size()); - - // // Do another read - // do_read(); - // } - private: websocket::stream<tcp::socket> ws_; beast::flat_buffer buffer_; @@ -165,62 +100,66 @@ class WSSession : public std::enable_shared_from_this<WSSession> { WSSession(const std::string& address, uint16_t port) : address_(address), port_(port), acceptor_(ioc_), socket_(ioc_) { endpoint_ = {boost::asio::ip::make_address(address), port}; - boost::system::error_code error; + // Open the acceptor acceptor_.open(endpoint_.protocol(), error); if (error) { - std::cerr << "ErrorOpen: " << error.message() << std::endl; + Fail("ERROR_ACCEPTOR_OPEN", error); return; } + + // Allow address reuse acceptor_.set_option(boost::asio::socket_base::reuse_address(true), error); if (error) { - std::cerr << "ErrorSetOption: " << error.message() << std::endl; + Fail("ERROR_SET_OPTION", error); return; } + + // Bind to the server address acceptor_.bind(endpoint_, error); if (error) { - std::cerr << "ErrorBind: " << error.message() << std::endl; + Fail("ERROR_BIND", error); return; } + + // Start listening for connections acceptor_.listen(boost::asio::socket_base::max_listen_connections, error); if (error) { - std::cerr << "ErrorListen: " << error.message() << std::endl; + Fail("ERROR_LISTEN", error); return; } } - void run() { + void Run() { if (acceptor_.is_open()) { acceptor_.async_accept( socket_, - std::bind(&WSSession::StartSession, this, std::placeholders::_1)); + std::bind(&WSSession::on_accept, this, std::placeholders::_1)); ioc_.run(); } } - void stop() { - std::cout << "SERVER: Closing connection" << std::endl; - + void Stop() { try { ioc_.stop(); acceptor_.close(); } catch (...) { - std::cout << "SERVER: Failed to close connection" << std::endl; + std::cerr << "Failed to close connection" << std::endl; } } private: - void StartSession(boost::system::error_code ec) { + void on_accept(boost::system::error_code ec) { if (ec) { - std::cerr << "ErrorMessage: " << ec.message() << std::endl; + Fail("ERROR_ON_ACCEPT", ec); ioc_.stop(); return; } // Make websocket object and start ws_ = std::make_shared<WSServer>(std::move(socket_)); - ws_->run(); + ws_->Run(); } boost::asio::io_context ioc_; @@ -244,87 +183,30 @@ class WSSSession : public std::enable_shared_from_this<WSSSession> { : wss_(std::move(socket), ctx) {} // Start the asynchronous operation - void run() { + void Run() { // Perform the SSL handshake wss_.next_layer().async_handshake(ssl::stream_base::server, - std::bind(&WSSServer::on_handshake, + std::bind(&WSSServer::OnSSLHandshake, shared_from_this(), std::placeholders::_1)); } - void on_handshake(beast::error_code ec) { - std::cout << "DEBUG: SSL Handshake" << std::endl; - if (ec) - return fail(ec, "handshake"); + void OnSSLHandshake(beast::error_code ec) { + if (ec) { + return Fail("ERROR_SSL_HANDSHAKE", ec); + } // Accept the websocket handshake wss_.async_accept(std::bind( - &WSSServer::on_accept, shared_from_this(), std::placeholders::_1)); + &WSSServer::OnAccept, shared_from_this(), std::placeholders::_1)); } - void on_accept(beast::error_code ec) { - std::cout << "DEBUG: Server accepted connection" << std::endl; - if (ec) - return fail(ec, "accept"); - - // Read a message - // do_read(); + void OnAccept(beast::error_code ec) { + if (ec) { + return Fail("ERROR_ON_ACCEPT", ec); + } } - // void - // do_read() - // { - // // Read a message into our buffer - // wss_.async_read( - // buffer_, - // std::bind( - // &WSSServer::on_read, - // shared_from_this(), - // std::placeholders::_1, - // std::placeholders::_2)); - // } - - // void - // on_read( - // beast::error_code ec, - // std::size_t bytes_transferred) - // { - // boost::ignore_unused(bytes_transferred); - - // // This indicates that the WSSServer was closed - // if(ec == websocket::error::closed) - // return; - - // if(ec) - // fail(ec, "read"); - - // // Echo the message - // wss_.text(wss_.got_text()); - // wss_.async_write( - // buffer_.data(), - // std::bind( - // &WSSServer::on_write, - // shared_from_this(), - // std::placeholders::_1, - // std::placeholders::_2)); - // } - - // void - // on_write( - // beast::error_code ec, - // std::size_t bytes_transferred) - // { - // boost::ignore_unused(bytes_transferred); - - // if(ec) - // return fail(ec, "write"); - - // // Clear the buffer - // buffer_.consume(buffer_.size()); - - // // Do another read - // do_read(); - // } private: websocket::stream<ssl::stream<tcp::socket> > wss_; beast::flat_buffer buffer_; @@ -339,81 +221,72 @@ class WSSSession : public std::enable_shared_from_this<WSSSession> { beast::error_code ec; endpoint_ = {boost::asio::ip::make_address(address), port}; - std::cout << "DEBUG: Adding certificate" << std::endl; // Load the certificate ctx_.use_certificate( boost::asio::buffer(certificate.c_str(), certificate.size()), ssl::context::file_format::pem, ec); if (ec) { - fail(ec, "Load certficate"); + Fail("ERROR_USE_CERTIFICATE", ec); return; } - std::cout << "DEBUG: Adding private key" << std::endl; // Load the private key ctx_.use_rsa_private_key( boost::asio::buffer(private_key.c_str(), private_key.size()), ssl::context::file_format::pem, ec); if (ec) { - fail(ec, "Load private key"); + Fail("ERROR_USE_RSA_PRIVATE_KEY", ec); return; } // Open the acceptor acceptor_.open(endpoint_.protocol(), ec); if (ec) { - fail(ec, "open"); + Fail("EEROR_ACCEPTOR_OPEN", ec); return; } // Allow address reuse acceptor_.set_option(net::socket_base::reuse_address(true), ec); if (ec) { - fail(ec, "set_option"); + Fail("ERROR_SET_OPTION", ec); return; } - std::cout << "DEBUG: Binding to host:" << address << ", port:" << port - << std::endl; // Bind to the server address acceptor_.bind(endpoint_, ec); if (ec) { - fail(ec, "bind"); + Fail("ERROR_BIND", ec); return; } - std::cout << "DEBUG: Start listening for connections" << std::endl; // Start listening for connections acceptor_.listen(net::socket_base::max_listen_connections, ec); if (ec) { - fail(ec, "listen"); + Fail("ERROR_LISTEN", ec); return; } } // Start accepting incoming connections - void run() { + void Run() { do_accept(); } - void stop() { - std::cout << "SERVER: Closing connection" << std::endl; - + void Stop() { try { ioc_.stop(); acceptor_.close(); } catch (...) { - std::cout << "SERVER: Failed to close connection" << std::endl; + std::cerr << "Failed to close connection" << std::endl; } } private: void do_accept() { if (acceptor_.is_open()) { - std::cout << "DEBUG: Waiting to accept incoming connections" << std::endl; - // The new connection gets its own strand acceptor_.async_accept(socket_, std::bind(&WSSSession::on_accept, shared_from_this(), @@ -423,17 +296,14 @@ class WSSSession : public std::enable_shared_from_this<WSSSession> { } void on_accept(boost::system::error_code ec) { - std::cout << "DEBUG: Accepted incoming connection" << std::endl; if (ec) { - fail(ec, "accept"); + Fail("ERROR_ON_ACCEPT", ec); ioc_.stop(); return; - } else { - std::cout << "DEBUG: Creating secure websocket server" << std::endl; - // Create the session and run it - wss_ = std::make_shared<WSSServer>(std::move(socket_), ctx_); - wss_->run(); } + // Create the session and run it + wss_ = std::make_shared<WSSServer>(std::move(socket_), ctx_); + wss_->Run(); } private: diff --git a/src/components/transport_manager/test/websocket_connection_test.cc b/src/components/transport_manager/test/websocket_connection_test.cc index a2af3893ba..be7d7059b0 100644 --- a/src/components/transport_manager/test/websocket_connection_test.cc +++ b/src/components/transport_manager/test/websocket_connection_test.cc @@ -55,13 +55,13 @@ class WebsocketConnectionTest : public ::testing::Test { public: void StartWSServer() { ws_session = std::make_shared<WSSession>(kHost, kPort); - ws_session->run(); + ws_session->Run(); } void StartWSSServer() { wss_session = std::make_shared<WSSSession>(kHost, kPort, kCertificate, kPrivateKey); - wss_session->run(); + wss_session->Run(); } protected: @@ -87,65 +87,124 @@ class WebsocketConnectionTest : public ::testing::Test { // Sample certificate for localhost std::string kCertificate = "-----BEGIN " - "CERTIFICATE-----\nMIIC/" - "jCCAeagAwIBAgIJAIZjLucUID1mMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV\nBAMMCTEyNy4" - "wLjAuMTAeFw0xOTA1MDYxNDA1MzdaFw0yMjA1MDUxNDA1MzdaMBQx\nEjAQBgNVBAMMCTEyN" - "y4wLjAuMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBALfE5Qhc2mHTIux30l7" - "eHFjFLdzYeXE8vcaXKodalCG8EkRxojDOfUv+y2DV\nJzHAMiGxMFAEcSz71k+" - "jFZwhNG8PLY0b36ChnUsrGkOSJWq3OKUFrg8KxO9At9dL\nJsa+" - "R0N0D1bMoPYdpCi3m0b0q2ITHe56qKuTLTrIPia+" - "qXGEVD7EoEhU9tnwlcwE\npsUURMXCn2+FhHyqN9wjFkldmu4k8U3OJOK4385L+" - "4RJoIV8dsYawAMAf+" - "WuxyWq\niPQTPxr8q33ZZm6z0XrgsgxHYCCsryx8L9Ub9Zwu0mie7eL63rYdr86gULvnF1bY" - "\ncOunKFc71rBYFalbD6YYsre733kCAwEAAaNTMFEwHQYDVR0OBBYEFKW9ByUNG84Z\nYiSc" - "hUrB7KV9FinZMB8GA1UdIwQYMBaAFKW9ByUNG84ZYiSchUrB7KV9FinZMA8G\nA1UdEwEB/" - "wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHYROS1EL2qnrwmAsR6c\nqo8yrk8qzLKt4os" - "41nv7QMUQFIO+QLPE8SbH4fK1YOMMUJ4ppARQBDaIIR3UEhp1\nZHT/" - "wGjK9qxcuQ1EXLyHOY0rxS5q57dYGxOyQo4v6IoLVMZ1ij+RJGPYI/" - "2fDXs0\nbDldeJyC1voHmG6lqTN5nLG7Y3j9j6rtSqJyRz5muaecQNiFPQOM2OTp0rC4VeAF" - "\ndejmTmLhUFVuHMzLF+" - "bpzsN76GnnQquJy2jexzFoWgbEfFVLKuyhTHQAalRb4ccq\nXCIx1hecNDYRY3Sc2Gzv5qxk" - "kWF8zqltT/0d5tx0JwN3k5nP4SlaEldFvD6BELxy\nVkU=\n-----END " + "CERTIFICATE-----\nMIIDqTCCApECCQC/" + "5LlQ+" + "GLgqTANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAwx\nMjcuMC4wLjEgQ0EwIBcNMTkwNTA" + "2MTkzMjM2WhgPMjExOTA0MTIxOTMyMzZaMBQx\nEjAQBgNVBAMMCTEyNy4wLjAuMTCCAiIwD" + "QYJKoZIhvcNAQEBBQADggIPADCCAgoC\nggIBALbeIoAHFaFeNqbMnhtAO5QTgRd0X9qxpB0" + "d4M0dEeog2l/+inNA/eu+CCvm\nJj2I8+6MWH2TUrl/" + "2xfhHjzsMrtISCdpNcjaNzCnvi8ZcspFi3evknvs3+uo2/" + "wn\nyNZ04jp0oQ0k1cZ6WBpLTYV7WgmueemiWEiAfw+YE+wtRg+" + "0H7rksrbpeNPnxQHX\nBDDkWqwvfkD15Sd0XFQkW27K72/" + "et2uKuAcJHCIUbsA4iZyJw4Uu4eusy7W5kddX\nThE7Y1WqTXyA4j/" + "ZCYigXmsHbWrikPLVXbORhiMF4/60u8RDs0jI8xtgRQhLR9Vp\n3xys7/" + "5tHZX00s6x6OVy8aMSZIIVS0eWoVN8bGd9B4+fDMOcNT0YODeQA10w/" + "85P\nEiZDQ8AxneQkh8H3qjD2+" + "G9oHZaTk0zHTyaKRg3xGP3N9C96onaJX4Rm6nNvApO8\nU7lQ+xHkLwjKCQke39W+" + "r3FHwwQvUDeoJBXf6iVkIMFoUPAHNZqKf9Db6KKIEp8i\nDgIhbBxiB4MSn36Zly4SOMojyM" + "ZFri+" + "HzMbuHFlm8e8QRWGmM4UM2rHIpl4OJolg\nejesDqO8YZR5mZXV0FJRiPgLo2Q4OTtb3tEHJ" + "ZLmlT+" + "f42bge4ZCZmGPrkNfr68Y\nDEnJ6z4ksOVkMefOp2SNYLYYGPYyiKwa9qVkH9Obkect1omNA" + "gMBAAEwDQYJKoZI\nhvcNAQELBQADggEBABFJQtOTftrzbLBA5Vm6aPkbUyxhcaOpz+d+" + "Ljd6pIs4H+" + "Eb\nXkoHhmay4stZkDc2HVSKESZloI3Ylup8z3aRJjfOexJqHlYzk2vraYryWm8odgID\n5V" + "B0Zle8ofpHTJw1LCOXHkzKt1G6vdQpuq/" + "4OKpmggaIqqEC1bfOYZt5t6vIx3OF\nxjPz91NTR9gZ4lKrho1+sfS+" + "jbSjKkqVAhE4yTpKLPHRshQnBFEhvATXNvdZGftF\n+tXxqKsBZ9aX0/" + "YmPFIXFcjdjSSiuq1F1DjiqIZo88qfa9jlTg6VJdayyQ/" + "cu41C\nBucY8YTF0Ui8ccIS55h2UTzPy5/4PbrwI4P+Zgo=\n-----END " "CERTIFICATE-----\n"; // Sample private key std::string kPrivateKey = - "-----BEGIN PRIVATE " - "KEY-----" - "\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC3xOUIXNph0yLs\nd9Je" - "3hxYxS3c2HlxPL3GlyqHWpQhvBJEcaIwzn1L/" - "stg1ScxwDIhsTBQBHEs+9ZP\noxWcITRvDy2NG9+" - "goZ1LKxpDkiVqtzilBa4PCsTvQLfXSybGvkdDdA9WzKD2HaQo\nt5tG9KtiEx3ueqirky06y" - "D4mvqlxhFQ+xKBIVPbZ8JXMBKbFFETFwp9vhYR8qjfc\nIxZJXZruJPFNziTiuN/OS/" - "uESaCFfHbGGsADAH/lrsclqoj0Ez8a/Kt92WZus9F6\n4LIMR2AgrK8sfC/VG/" - "WcLtJonu3i+t62Ha/" - "OoFC75xdW2HDrpyhXO9awWBWpWw+m\nGLK3u995AgMBAAECggEBALR7lukgsIY1I+" - "6UO7NadwKkHUfx/" - "0u8eTIKkwU+a4+" - "6\nM0KvS7idhCdYBYyDq6vL9DBs4mMkCbdBWxj5taaSYfnVMUqOHpKXR3Fk0rWcWk01\nx1c" - "jffBeBk5oBGZY86trg3f3C32XGVq+" - "f9RRhxooAA4hclsecnuX32sE8S2CQc4u\nm5HkpmUYXcFtmxaK6WT9mQDcsv/" - "29IY+2AxX4U+" - "yNywPrDZKDJPzom3v0FNb7GWr\nW41ALJrreCq7MBEJibEHjeXBjkhUgXjC9VLs+" - "tFbdqYwDaPfuEIHSeUV6GNpkhvm\nKuBcRCjrmGMwHcqzGOIr4uokWXcXOR2oLRMT7qlrduU" - "CgYEA3qP+lx0jiuhMaUrL\nhEAgHQP533jFnxSyMFiTn9Eg4uF6DguswJ7mUS11/" - "8EhROthn8advoJe1dXpz3SP\nn6TSR/" - "vxN6q46WsDspxtCrVBbF3R5m+FEgiZ+vnTsT3e52ecdskCkJ6/XjE8IU0B\nDR89DKtCZ/" - "vN2uDWvhcuDQyz6l8CgYEA003gEPMJy9Z8mfnRxMMv1LuNi0gbFQWS\nkyUTVwzxZ63B50N9" - "WQZoa8HBUftfPupK4YcLV7nxwE9WYxMSbceiXboTI/Pjj4QM\n2O+uKDQjGA441Bb2bH/" - "AVOz+vhhAc2glMncI5UvjUA2gfiy+JcBUDbQNHR/ux4Nd\ntz/R1W0itScCgYEAmM/" - "K0IGJgbALskFKCs3QvNmbycylJ5kW7KP/" - "PzRU9CR6l+Vf\nfx4RSyp+" - "0ToH0bwVV4sFflsRKIgYYPHKGnMQeaPtXp3pKRzwfslq9myOKQkEJrvo\nhAYvWdnbeM3Ujt" - "PIyqcRAZ5UDxyP/" - "vNRg2YriuSJQcHM+" - "yxTeEmErCRJ4NUCgYEA\nlKh2GhaSbsjgcodyUAauMPEeXL4G55w7CbCM0bJ2Z+" - "WzxFsT5bz/W8g9lMrPsHiu\n48nZbgeQkCaA9UTmszs+/Me7TZD5KO/" - "TBhBhq0E662KeEoBxL9YU3uq5Mc3oEglU\nGhPquz7PlnNv1TTvNaoAuH9StonPuKewGAsbO" - "hcE0wMCgYAjokPhXZi0z3YgwAEY\nCkSLMiHvAn+gd/pr7GIhvfR4MkxEFBoj1GxBJM/By4/" - "tHYMJQCuxFVZqPYH/" - "AWQ2\noVeuFoEjZXaGNV4SfkhNW7W+Btqt+aXT5+8F176+" - "cvG4uex59XGWG52wKOgLFkmk\nJ00j679GO7h2Fpt4I9bml2VfWw==\n-----END " - "PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE " + "KEY-----\nMIIJKAIBAAKCAgEAtt4igAcVoV42psyeG0A7lBOBF3Rf2rGkHR3gzR0R6iDaX/" + "6K\nc0D9674IK+YmPYjz7oxYfZNSuX/" + "bF+EePOwyu0hIJ2k1yNo3MKe+LxlyykWLd6+S\ne+zf66jb/" + "CfI1nTiOnShDSTVxnpYGktNhXtaCa556aJYSIB/" + "D5gT7C1GD7QfuuSy\ntul40+fFAdcEMORarC9+" + "QPXlJ3RcVCRbbsrvb963a4q4BwkcIhRuwDiJnInDhS7h\n66zLtbmR11dOETtjVapNfIDiP9" + "kJiKBeawdtauKQ8tVds5GGIwXj/rS7xEOzSMjz\nG2BFCEtH1WnfHKzv/" + "m0dlfTSzrHo5XLxoxJkghVLR5ahU3xsZ30Hj58Mw5w1PRg4\nN5ADXTD/" + "zk8SJkNDwDGd5CSHwfeqMPb4b2gdlpOTTMdPJopGDfEY/" + "c30L3qidolf\nhGbqc28Ck7xTuVD7EeQvCMoJCR7f1b6vcUfDBC9QN6gkFd/" + "qJWQgwWhQ8Ac1mop/" + "\n0NvooogSnyIOAiFsHGIHgxKffpmXLhI4yiPIxkWuL4fMxu4cWWbx7xBFYaYzhQza\nscim" + "Xg4miWB6N6wOo7xhlHmZldXQUlGI+AujZDg5O1ve0QclkuaVP5/" + "jZuB7hkJm\nYY+uQ1+" + "vrxgMScnrPiSw5WQx586nZI1gthgY9jKIrBr2pWQf05uR5y3WiY0CAwEA\nAQKCAgBGSDGyS" + "wbBMliG2vWZO6KqUqS2wv9kKgoNNsKDkryj42SKqGXFziDJTgwN\n8zKXS9+Uu1P3T3vn13/" + "5OYhJme4VlL5Gh2UogNXdWVr69yjrHLdxlIUUJAIbrJZ/" + "\n3zqNUfbwyIptZs7SrYrW8EInHzWHqwsoBEEx/" + "FDZSXW+u9fFiVD4n5UgP7M0nktV\nXbI6qElBDC/V/" + "6vG8i3aGO8bMdu8fzi3mGUKLzIk1v2J2zDofPosYcxqq8rPWTb4\nMJHMhaqz7fRB+" + "bb7GwtS+2/Oathe0B0td1u//Bo1s7ng1s2jrPFm8/" + "SbfPCLM4O0\nPjCF8OF8Q6uvSp0K283LAdZk+liuDztc/" + "Ed8mcnCZQhBp86mJQi0Jj3Mje7prOAY\nXojMroYj7r2igCJvcwGb1y6zZWSj3jXuHze3bLy" + "fv7pCD+hkiZR7mZhQpOhQRZaU\ntdFGc+" + "DuykxKPqVjAPy7iVQXYnMjpo36SGIWoZLuepQto3GvU6czyOwhK0/" + "Mwbwd\nZpYpLH3L9IetY8GcPefmUR5wQUlUTrpxgGElIzkkWW8zmUWBXwrGbAtN1HJWpJdN" + "\neVshKod2fo03IQMPywSdENCJVeSrgRMuwPyFaOM+" + "CVrBJwD66K9YWn4cVRUIZsTq\nAXhQ8DzF+WCOZshhMUbCJX+KpcOFI8nxOrPp+" + "J1s1YpLLvdmcQKCAQEA7bwvOiCD\nHvaqpYg1jJak6l/" + "iY3QIOOpFyjfYrQXS0BNRmmxK8Lzevi/" + "NPTqu146QKDaIGvzu\n+" + "bXnuV1LmZqnOm5J6Kdx0Mk4Fb88akRtS9gOdzU7WWMYIGkeF1oih0ZrhHuIey6e\nCeLSmJh" + "UDaTIWcCirALRHcLWUS6BTGGuE+up5QG7djIW/" + "LD17lhGE6fXPlbYXb7l\nPbYwL1Yr0urIp9Un+zrExw+77TTGK7T37T1ZJv46qnro0/" + "HK8XxZ+" + "JNc18F763O4\nPmwu8KWrx4qnyPYAuB1rbVntK6UxYks9jvk93XecCUP6HHp0I0tV/" + "kBNd2+" + "18zux\n033xFEVKrUksmwKCAQEAxOrPGyBVFp29V4gQsMQdmafkDAgCLREgjQTOamFsYL5+" + "\nZWq+6VhT/" + "B650sIoRdX0N8timnSLBfjeqaBG5VVhhyKZhP5hulfRjALhdbGBOYvf\n0gLSffImwWdYQfx" + "jtCSO+" + "XCLVdAJGOOWeBVVKzH18ZvCFQwUr3Yrp7KmKWKAqgf7\n6rYovWh8T5LLYS0NzXCEwf9nJ0N" + "JMOy7I9B7EtF8Cs6tK3aaHVqDz7zufwosS7gI\n3aI51Qh4a5D1p95+" + "YU09beWjWGYnPiCKk4D47zaeOe7OQINaWugExlelHtJh9unO\nnhOFXhziav2Kxq1CICAuXl" + "Vx3A+gn/cU3niNHz2A9wKCAQEAws+aw78ws4bef5cG\nipZHveek1GqY8krHtdXdsKs8/" + "VVXYXusTWn3/VGelbYo4GrqpolJLxRloCr4IGXb\nNZwNvUvzNLtCAR1i4C89irdX+Paro/" + "PzFmSluKlrByfNc5y5Lm8sgATLbL56ZKEu\n/58wrpu0sc/" + "9HK40gYHiYn0I8ToElqy8uTaCr78zSIT9p826DFOOKgPsRo2tHp02\nfDf5Bc8eXDjkV1sFX" + "HQKkHZTVA0ZqWJbIKhncoaJDyofcBsR0ZuzuFWzfTOZo4mf\nInz00TEFldpF1e4C8+" + "kCdtHBOA/2Ki2Bp/YUVpHh6aoqZZa75Euehhs8tVpW242M\njEOSUQKCAQAM64sjMH/kt/" + "zQXXEa6AM5LbbcwznBUzpbhlE00aeWwWjxpotYLB92\nj12J4otZ6avYbVPO5o6omaeiYY3F" + "RlDb2P1RqI8o9tIc6aN5YWglKnRJBz5gXR8F\n2Y4E5lZ0X2GyJBxASSIPq/" + "8Xae7ooqKMc7fMQbqpuIssuaAFXx0qCtQQllsd8lkV\nr4AApEAflp5fTC6seNG4kA/" + "HTcqFdZE59E2QaHu8KVA0tSTA2R4G6dBLGnXI8IFW\nLXCwzvxjzfmV2FdbWXiBrwjonLG4o" + "FDJZE3MFdI73LVTfjSrTQp4dObFoGpDvols\nk64jUwLfsLzaG6kY0z2qwT9xSV+" + "ZCSQJAoIBADsSBeyELc5KnmOhT0Xue2o0bkAS\n8KcGWdAoQlaLCIs3vtdlC7DXDXO1l8FkT" + "Qrd+GwP3eWDq6ymtO4vkJ3m4cZ1PEsv\n6Qet7qtkVhUfa+" + "FYKtDzSMRuSaFPW3Ro1PesFa1H3y+sw5HL36vhRaSK+T4Wy5k2\nf7EwNZIf/" + "ZZeA+" + "sEtqj33obOBIiuU9htAjN81Kz4a0Xlh6jc4q6iwYKL8nZ76JYV\n8hXWIz6OXxLXE158+" + "QtJSZaRCvdr6L5UtWfMPKSMqgfhXfTYViPDleQCkJ132mIS\nH28UoET0Y5wI8M6pMkWpSqW" + "WcKPFGwyLInvHdxgnTAsutowkldA7qFwoRz4=\n-----END RSA PRIVATE KEY-----\n"; + // Sample CA certificate(used to sign the server certificate) + std::string kCACertificate = + "-----BEGIN " + "CERTIFICATE-----" + "\nMIIDBjCCAe6gAwIBAgIJAPyCrKRDl3SWMA0GCSqGSIb3DQEBCwUAMBcxFTATBgNV\nBAMM" + "DDEyNy4wLjAuMSBDQTAgFw0xOTA1MDYxOTMyMzZaGA8yMTE5MDQxMjE5MzIz\nNlowFzEVMB" + "MGA1UEAwwMMTI3LjAuMC4xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEA" + "xrNHoY5+" + "JCgnyvEdG2dvvOaZ3sg6uhuF5Ssb5snyo9ixrxO5\nZkDGWwUqFO9PiYuO5ovNeq9LZtPG6s" + "K8zsCS062ChZX/7tZHndf4MKCUDzv/" + "LPHe\nnROoPi9n2FAiOPctY5hpgpIJDPI5Ofx0el2KPeFGeUO/" + "W3yqnfol1ZqzZ2h3uErR\noHkgT2Ja4K+5gnPkr/" + "RluJIu3AmWYw4eKi8i3+" + "PoThGmCFvoGfcWvRoctgnOHYHE\n4bDRirXL9nGkZ5FMzOVDeoIAEAShOqJwL08VcY+Pg/" + "qFQjzRrTmiKgm6QsHNnm0q\nzg70XaD88VJimiGYZOuJHNZpX8o0W+1Ls/" + "NbawIDAQABo1MwUTAdBgNVHQ4EFgQU\nkW3hgFWYMpVUkq9AlzGlI3awTGEwHwYDVR0jBBgw" + "FoAUkW3hgFWYMpVUkq9AlzGl\nI3awTGEwDwYDVR0TAQH/BAUwAwEB/" + "zANBgkqhkiG9w0BAQsFAAOCAQEAZeMkILiG\neEcELWb8cktP3LzvS47O8hys9+" + "6TFmftuO7kjDBd9YH2v8iQ7qCcUvMJ7bqL5RP1\nQssKfNOHZtw/" + "MMcKE6E3nl4yQSKc8ymivvYSVu5SYtQCedcgfRLb5zvVxXw8JmCp\nGNS3/" + "OlIYZAamh76GxkKSaV3tv0XZB6n3rUVQZShncFbMpyJRW0XWxReGWrhXv4s\nNxMeC1r07EE" + "WIDecv8KKf1F8uT4UF48HnC0VBpXiOyDGvn35NiKp+" + "Q5k7QV6jdCS\ngPRcnZhs6jiU0jnV8C9A1A+" + "3pXSSPrAed7tvECOgHCfS10CLsLWsLuSjc93BE5Vt\nav7kmxSwrdvQ2A==\n-----END " + "CERTIFICATE-----\n"; std::string kIncorrectCertificate = "-----BEGIN " "CERTIFICATE-----\nMIIC/" @@ -211,7 +270,7 @@ TEST_F(WebsocketConnectionTest, WSConnection_SUCCESS) { EXPECT_EQ(TransportAdapter::OK, ret_code); // Stop server thread - ws_session->stop(); + ws_session->Stop(); t1.join(); } @@ -220,7 +279,7 @@ TEST_F(WebsocketConnectionTest, WSSConnection_SUCCESS) { uniq_id = dev_id; transport_manager::transport_adapter::CloudAppProperties properties{ .endpoint = dev_id, - .certificate = kCertificate, + .certificate = kCACertificate, .enabled = true, .auth_token = "auth_token", .cloud_transport_type = "WSS", @@ -255,7 +314,7 @@ TEST_F(WebsocketConnectionTest, WSSConnection_SUCCESS) { EXPECT_EQ(TransportAdapter::OK, ret_code); // Stop server thread - wss_session->stop(); + wss_session->Stop(); t1.join(); } @@ -299,7 +358,7 @@ TEST_F(WebsocketConnectionTest, WSSConnection_FAILURE_IncorrectCert) { EXPECT_EQ(TransportAdapter::OK, ret_code); // Stop server thread - wss_session->stop(); + wss_session->Stop(); t1.join(); } } // namespace transport_manager_test |