1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <fstream> 17 #include <gtest/gtest.h> 18 #include <iostream> 19 20 #ifdef GTEST_API_ 21 #define private public 22 #endif 23 24 #include "net_address.h" 25 #include "secure_data.h" 26 #include "socket_error.h" 27 #include "socket_state_base.h" 28 #include "tls.h" 29 #include "tls_certificate.h" 30 #include "tls_configuration.h" 31 #include "tls_key.h" 32 #include "tls_socket.h" 33 #include "tls_socket_server.h" 34 35 namespace OHOS { 36 namespace NetStack { 37 namespace TlsSocketServer { 38 39 class TlsSocketServerBranchTest : public testing::Test { 40 public: SetUpTestCase()41 static void SetUpTestCase() {} 42 TearDownTestCase()43 static void TearDownTestCase() {} 44 SetUp()45 virtual void SetUp() {} 46 TearDown()47 virtual void TearDown() {} 48 }; 49 50 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest001, testing::ext::TestSize.Level2) 51 { 52 auto tlsSocketServer = new TLSSocketServer(); 53 EXPECT_TRUE(tlsSocketServer != nullptr); 54 if (tlsSocketServer == nullptr) { 55 return; 56 } 57 58 TLSServerSendOptions data; 59 TlsSocket::SendCallback sendCallback; 60 bool ret = tlsSocketServer->Send(data, sendCallback); 61 EXPECT_FALSE(ret); 62 63 Socket::TCPExtraOptions tcpExtraOptions; 64 TlsSocket::SetExtraOptionsCallback callback; 65 ret = tlsSocketServer->SetExtraOptions(tcpExtraOptions, callback); 66 EXPECT_FALSE(ret); 67 68 tcpExtraOptions.SetKeepAlive(true); 69 ret = tlsSocketServer->SetExtraOptions(tcpExtraOptions, callback); 70 EXPECT_FALSE(ret); 71 72 tcpExtraOptions.SetOOBInline(true); 73 ret = tlsSocketServer->SetExtraOptions(tcpExtraOptions, callback); 74 EXPECT_FALSE(ret); 75 76 tcpExtraOptions.SetTCPNoDelay(true); 77 ret = tlsSocketServer->SetExtraOptions(tcpExtraOptions, callback); 78 EXPECT_FALSE(ret); 79 } 80 81 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest002, testing::ext::TestSize.Level2) 82 { 83 auto tlsSocketServer = new TLSSocketServer(); 84 EXPECT_TRUE(tlsSocketServer != nullptr); 85 if (tlsSocketServer == nullptr) { 86 return; 87 } 88 89 TlsSocket::TLSConnectOptions config; 90 tlsSocketServer->SetLocalTlsConfiguration(config); 91 92 int socketFd = 0; 93 tlsSocketServer->ProcessTcpAccept(config, socketFd); 94 std::shared_ptr<TLSSocketServer::Connection> connection = std::make_shared<TLSSocketServer::Connection>(); 95 EXPECT_TRUE(connection != nullptr); 96 tlsSocketServer->AddConnect(socketFd, connection); 97 98 std::string data = "test"; 99 auto ret = connection->Send(data); 100 EXPECT_FALSE(ret); 101 102 char *buffer = nullptr; 103 int maxBufferSize = 0; 104 auto value = connection->Recv(buffer, maxBufferSize); 105 EXPECT_EQ(value, -1); 106 107 ret = connection->Close(); 108 EXPECT_FALSE(ret); 109 110 std::vector<std::string> alpnProtocols; 111 ret = connection->SetAlpnProtocols(alpnProtocols); 112 EXPECT_FALSE(ret); 113 114 auto stringVector = connection->GetCipherSuite(); 115 EXPECT_TRUE(stringVector.empty()); 116 117 auto protocol = connection->GetProtocol(); 118 EXPECT_EQ(protocol, "UNKNOW_PROTOCOL"); 119 120 ret = connection->SetSharedSigals(); 121 EXPECT_FALSE(ret); 122 123 ret = connection->StartShakingHands(config); 124 EXPECT_FALSE(ret); 125 } 126 127 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest003, testing::ext::TestSize.Level2) 128 { 129 auto tlsSocketServer = new TLSSocketServer(); 130 EXPECT_TRUE(tlsSocketServer != nullptr); 131 132 std::shared_ptr<TLSSocketServer::Connection> connection = std::make_shared<TLSSocketServer::Connection>(); 133 EXPECT_TRUE(connection != nullptr); 134 OnMessageCallback onMessageCallback; 135 connection->OnMessage(onMessageCallback); 136 OnCloseCallback onCloseCallback; 137 connection->OnClose(onCloseCallback); 138 connection->OffMessage(); 139 140 TlsSocket::OnErrorCallback onErrorCallback; 141 connection->OnError(onErrorCallback); 142 connection->OffClose(); 143 connection->OffError(); 144 145 int32_t err = 0; 146 std::string testString = "test"; 147 connection->CallOnErrorCallback(err, testString); 148 149 OnConnectCallback onConnectCallback; 150 tlsSocketServer->OnConnect(onConnectCallback); 151 tlsSocketServer->OnError(onErrorCallback); 152 tlsSocketServer->OffConnect(); 153 tlsSocketServer->OffError(); 154 155 sa_family_t family = 0; 156 tlsSocketServer->MakeIpSocket(family); 157 family = 2; 158 tlsSocketServer->MakeIpSocket(family); 159 tlsSocketServer->CallOnErrorCallback(err, testString); 160 EXPECT_TRUE(tlsSocketServer->onErrorCallback_ == nullptr); 161 } 162 163 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest004, testing::ext::TestSize.Level2) 164 { 165 auto tlsSocketServer = new TLSSocketServer(); 166 EXPECT_TRUE(tlsSocketServer != nullptr); 167 if (tlsSocketServer == nullptr) { 168 return; 169 } 170 171 int socketFd = 0; 172 TlsSocket::CloseCallback closeCallback; 173 auto userCounter = tlsSocketServer->GetConnectionClientCount(); 174 EXPECT_EQ(userCounter, 0); 175 176 Socket::SocketStateBase state; 177 TlsSocket::GetStateCallback stateCallback; 178 tlsSocketServer->CallGetStateCallback(socketFd, state, stateCallback); 179 Socket::NetAddress address; 180 sockaddr_in addr4 = { 0 }; 181 sockaddr_in6 addr6 = { 0 }; 182 sockaddr *addr = nullptr; 183 socklen_t len; 184 tlsSocketServer->GetAddr(address, &addr4, &addr6, &addr, &len); 185 186 auto result = tlsSocketServer->GetConnectionByClientID(socketFd); 187 EXPECT_TRUE(result == nullptr); 188 189 int32_t err = 0; 190 ListenCallback callback; 191 tlsSocketServer->CallListenCallback(err, callback); 192 193 std::shared_ptr<TLSSocketServer::Connection> connection = std::make_shared<TLSSocketServer::Connection>(); 194 EXPECT_TRUE(connection != nullptr); 195 address.SetPort(0); 196 connection->SetAddress(address); 197 address = connection->GetAddress(); 198 EXPECT_EQ(address.GetPort(), 0); 199 200 TlsSocket::TLSConnectOptions options; 201 connection->SetTlsConfiguration(options); 202 203 auto ret = connection->TlsAcceptToHost(socketFd, options); 204 EXPECT_FALSE(ret); 205 206 std::string data = ""; 207 ret = connection->Send(data); 208 EXPECT_FALSE(ret); 209 210 char *buffer = nullptr; 211 int maxBufferSize = 0; 212 auto value = connection->Recv(buffer, maxBufferSize); 213 EXPECT_EQ(value, -1); 214 } 215 216 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest005, testing::ext::TestSize.Level2) 217 { 218 std::shared_ptr<TLSSocketServer::Connection> connection = std::make_shared<TLSSocketServer::Connection>(); 219 EXPECT_TRUE(connection != nullptr); 220 auto ret = connection->Close(); 221 EXPECT_FALSE(ret); 222 223 std::vector<std::string> alpnProtocols; 224 ret = connection->SetAlpnProtocols(alpnProtocols); 225 EXPECT_FALSE(ret); 226 227 Socket::SocketRemoteInfo remoteInfo; 228 connection->MakeRemoteInfo(remoteInfo); 229 230 TlsSocket::TLSConfiguration tLSConfiguration; 231 tLSConfiguration = connection->GetTlsConfiguration(); 232 std::vector<std::string> certificate; 233 tLSConfiguration.SetCaCertificate(certificate); 234 EXPECT_TRUE(tLSConfiguration.GetCaCertificate().empty()); 235 236 auto cipherSuiteVec = connection->GetCipherSuite(); 237 EXPECT_TRUE(cipherSuiteVec.empty()); 238 239 auto remoteCert = connection->GetRemoteCertificate(); 240 EXPECT_TRUE(remoteCert.empty()); 241 242 auto signatureAlgorithms = connection->GetSignatureAlgorithms(); 243 EXPECT_TRUE(signatureAlgorithms.empty()); 244 245 ret = connection->SetSharedSigals(); 246 EXPECT_FALSE(ret); 247 248 auto point = connection->GetSSL(); 249 EXPECT_FALSE(point != nullptr); 250 } 251 252 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest006, testing::ext::TestSize.Level2) 253 { 254 auto tlsSocketServer = new TLSSocketServer(); 255 EXPECT_TRUE(tlsSocketServer != nullptr); 256 if (tlsSocketServer == nullptr) { 257 return; 258 } 259 std::shared_ptr<TLSSocketServer::Connection> connection = std::make_shared<TLSSocketServer::Connection>(); 260 EXPECT_TRUE(connection != nullptr); 261 262 TLSServerSendOptions tlsServerSendOptions; 263 tlsServerSendOptions.SetSocket(0); 264 auto socketFd = connection->GetSocketFd(); 265 EXPECT_EQ(socketFd, 0); 266 socketFd = tlsServerSendOptions.GetSocket(); 267 EXPECT_EQ(socketFd, 0); 268 269 std::string testString = "test"; 270 tlsServerSendOptions.SetSendData(testString); 271 auto data = tlsServerSendOptions.GetSendData(); 272 EXPECT_EQ(data, testString); 273 274 std::shared_ptr<EventManager> eventManager = nullptr; 275 connection->SetEventManager(eventManager); 276 EXPECT_TRUE(connection->GetEventManager() == nullptr); 277 278 int32_t clientID = 0; 279 connection->SetClientID(clientID); 280 clientID = connection->GetClientID(); 281 EXPECT_EQ(clientID, 0); 282 283 TlsSocket::TLSConnectOptions options; 284 bool ret = connection->StartTlsAccept(options); 285 EXPECT_FALSE(ret); 286 287 ret = connection->CreatTlsContext(); 288 EXPECT_FALSE(ret); 289 290 ret = connection->StartShakingHands(options); 291 EXPECT_FALSE(ret); 292 293 ret = connection->SetRemoteCertRawData(); 294 EXPECT_FALSE(ret); 295 296 int index = 0; 297 tlsSocketServer->InitPollList(index); 298 tlsSocketServer->DropFdFromPollList(index); 299 300 connection->CallOnCloseCallback(socketFd); 301 tlsSocketServer->CallOnConnectCallback(socketFd, eventManager); 302 tlsSocketServer->RemoveConnect(socketFd); 303 tlsSocketServer->RecvRemoteInfo(socketFd, index); 304 305 Socket::SocketRemoteInfo remoteInfo; 306 connection->CallOnMessageCallback(socketFd, testString, remoteInfo); 307 308 EventManager manager; 309 tlsSocketServer->CloseConnectionByEventManager(&manager); 310 tlsSocketServer->DeleteConnectionByEventManager(&manager); 311 auto connections = tlsSocketServer->GetConnectionByClientEventManager(&manager); 312 EXPECT_TRUE(connections == nullptr); 313 } 314 315 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest007, testing::ext::TestSize.Level2) 316 { 317 auto connection = std::make_shared<TLSSocketServer::Connection>(); 318 std::string hostName = "testHost"; 319 X509 *x509Certificates = X509_new(); 320 321 std::string result = connection->CheckServerIdentityLegal(hostName, x509Certificates); 322 EXPECT_GE(result.length(), 0); 323 X509_EXTENSION *ext = X509_EXTENSION_new(); 324 X509_add_ext(x509Certificates, ext, -1); 325 result = connection->CheckServerIdentityLegal(hostName, x509Certificates); 326 EXPECT_GE(result.length(), 0); 327 328 X509_EXTENSION_free(ext); 329 X509_free(x509Certificates); 330 } 331 332 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest008, testing::ext::TestSize.Level2) 333 { 334 auto connection = std::make_shared<TLSSocketServer::Connection>(); 335 std::string hostName = "172.0.0.1"; 336 X509 *x509Certificates = X509_new(); 337 338 std::string result = connection->CheckServerIdentityLegal(hostName, x509Certificates); 339 EXPECT_GE(result.length(), 0); 340 X509_EXTENSION *ext = X509_EXTENSION_new(); 341 X509_add_ext(x509Certificates, ext, -1); 342 result = connection->CheckServerIdentityLegal(hostName, x509Certificates); 343 EXPECT_GE(result.length(), 0); 344 345 X509_EXTENSION_free(ext); 346 X509_free(x509Certificates); 347 } 348 349 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest009, testing::ext::TestSize.Level2) 350 { 351 auto connection = std::make_shared<TLSSocketServer::Connection>(); 352 std::string hostName = "testHost"; 353 X509 *x509Certificates = X509_new(); 354 X509_NAME *subjectName = X509_get_subject_name(x509Certificates); 355 X509_NAME_add_entry_by_txt(subjectName, "CN", MBSTRING_ASC, (unsigned char *)"testHost", -1, -1, 0); 356 int index = X509_get_ext_by_NID(x509Certificates, NID_subject_alt_name, -1); 357 X509_EXTENSION *ext = X509_EXTENSION_new(); 358 X509_add_ext(x509Certificates, ext, index); 359 std::string result = connection->CheckServerIdentityLegal(hostName, x509Certificates); 360 EXPECT_GE(result.length(), 0); 361 X509_EXTENSION_free(ext); 362 X509_free(x509Certificates); 363 } 364 365 extern bool IsIP(const std::string &ip); 366 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest010, testing::ext::TestSize.Level2) 367 { 368 std::string ip = "192.168.1.1"; 369 370 EXPECT_EQ(IsIP(ip), true); 371 std::string ip2 = "192.168.1"; 372 EXPECT_EQ(IsIP(ip2), false); 373 std::string ip3; 374 EXPECT_EQ(IsIP(ip3), false); 375 } 376 377 extern std::vector<std::string> SplitHostName(std::string &hostName); 378 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest011, testing::ext::TestSize.Level2) 379 { 380 std::string hostName = "www.example.com"; 381 std::vector<std::string> result = TlsSocketServer::SplitHostName(hostName); 382 std::vector<std::string> expect = {"www", "example", "com"}; 383 EXPECT_EQ(result, expect); 384 } 385 386 extern bool SeekIntersection(std::vector<std::string> &vecA, std::vector<std::string> &vecB); 387 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest012, testing::ext::TestSize.Level2) 388 { 389 std::vector<std::string> vecA = {"apple", "banana", "cherry"}; 390 std::vector<std::string> vecB = {"banana", "cherry", "date"}; 391 EXPECT_TRUE(SeekIntersection(vecA, vecB)); 392 } 393 394 extern std::vector<std::string> SplitEscapedAltNames(std::string &altNames); 395 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest014, testing::ext::TestSize.Level2) 396 { 397 std::string altNames = R"("test1", "test2", "test3", "test4")"; 398 std::vector<std::string> expected = {""}; 399 std::vector<std::string> result = SplitEscapedAltNames(altNames); 400 EXPECT_EQ(result, expected); 401 } 402 403 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest015, testing::ext::TestSize.Level2) 404 { 405 std::string altNames = "test1"; 406 std::vector<std::string> expected = {"test1"}; 407 std::vector<std::string> result = SplitEscapedAltNames(altNames); 408 EXPECT_EQ(result, expected); 409 } 410 411 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest016, testing::ext::TestSize.Level2) 412 { 413 auto tlsSocketServer = new TLSSocketServer(); 414 bool callbackCalled = false; __anonee3477b50102(int32_t errorNumber, const TlsSocket::X509CertRawData &cert) 415 tlsSocketServer->GetCertificate([&callbackCalled](int32_t errorNumber, const TlsSocket::X509CertRawData &cert) { 416 EXPECT_EQ(errorNumber, -1); 417 callbackCalled = true; 418 }); 419 EXPECT_TRUE(callbackCalled); 420 delete tlsSocketServer; 421 } 422 423 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest017, testing::ext::TestSize.Level2) 424 { 425 auto tlsSocketServer = new TLSSocketServer(); 426 int sockFd = 0; 427 bool callbackCalled = false; 428 tlsSocketServer->GetRemoteCertificate( __anonee3477b50202(int32_t errorNumber, const TlsSocket::X509CertRawData &cert) 429 sockFd, [&callbackCalled](int32_t errorNumber, const TlsSocket::X509CertRawData &cert) { 430 EXPECT_EQ(errorNumber, TlsSocket::TLS_ERR_SYS_EINVAL); 431 callbackCalled = true; 432 }); 433 EXPECT_TRUE(callbackCalled); 434 delete tlsSocketServer; 435 } 436 437 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest018, testing::ext::TestSize.Level2) 438 { 439 constexpr int sockFd = 1; 440 constexpr int testLen = 5; 441 auto tlsSocketServer = new TLSSocketServer(); 442 auto connection = std::make_shared<TLSSocketServer::Connection>(); 443 connection->remoteRawData_.data.length_ = testLen; 444 tlsSocketServer->clientIdConnections_.emplace(sockFd, connection); 445 bool callbackCalled = false; 446 tlsSocketServer->GetRemoteCertificate( __anonee3477b50302(int32_t errorNumber, const TlsSocket::X509CertRawData &cert) 447 sockFd, [&callbackCalled, testLen](int32_t errorNumber, const TlsSocket::X509CertRawData &cert) { 448 EXPECT_EQ(errorNumber, TlsSocket::TLSSOCKET_SUCCESS); 449 EXPECT_EQ(cert.data.Length(), testLen); 450 callbackCalled = true; 451 }); 452 EXPECT_TRUE(callbackCalled); 453 delete tlsSocketServer; 454 } 455 456 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest019, testing::ext::TestSize.Level2) 457 { 458 constexpr int sockFd = 1; 459 constexpr int testLen = 0; 460 auto tlsSocketServer = new TLSSocketServer(); 461 auto connection = std::make_shared<TLSSocketServer::Connection>(); 462 connection->remoteRawData_.data.length_ = testLen; 463 tlsSocketServer->clientIdConnections_.emplace(sockFd, connection); 464 bool callbackCalled = false; 465 tlsSocketServer->GetRemoteCertificate( __anonee3477b50402(int32_t errorNumber, const TlsSocket::X509CertRawData &cert) 466 sockFd, [&callbackCalled, testLen](int32_t errorNumber, const TlsSocket::X509CertRawData &cert) { 467 EXPECT_NE(errorNumber, TlsSocket::TLSSOCKET_SUCCESS); 468 EXPECT_EQ(cert.data.Length(), testLen); 469 callbackCalled = true; 470 }); 471 EXPECT_TRUE(callbackCalled); 472 delete tlsSocketServer; 473 } 474 475 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest020, testing::ext::TestSize.Level2) 476 { 477 auto tlsSocketServer = new TLSSocketServer(); 478 tlsSocketServer->TLSServerConfiguration_.protocol_ = TlsSocket::TLS_V1_3; 479 bool callbackCalled = false; __anonee3477b50502(int32_t errorNumber, const std::string &protocol) 480 tlsSocketServer->GetProtocol([&callbackCalled](int32_t errorNumber, const std::string &protocol) { 481 EXPECT_EQ(errorNumber, TlsSocket::TLSSOCKET_SUCCESS); 482 EXPECT_EQ(protocol, TlsSocket::PROTOCOL_TLS_V13); 483 callbackCalled = true; 484 }); 485 EXPECT_TRUE(callbackCalled); 486 delete tlsSocketServer; 487 } 488 489 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest021, testing::ext::TestSize.Level2) 490 { 491 auto tlsSocketServer = new TLSSocketServer(); 492 tlsSocketServer->TLSServerConfiguration_.protocol_ = TlsSocket::TLS_V1_2; 493 bool callbackCalled = false; __anonee3477b50602(int32_t errorNumber, const std::string &protocol) 494 tlsSocketServer->GetProtocol([&callbackCalled](int32_t errorNumber, const std::string &protocol) { 495 EXPECT_EQ(errorNumber, TlsSocket::TLSSOCKET_SUCCESS); 496 EXPECT_EQ(protocol, TlsSocket::PROTOCOL_TLS_V12); 497 callbackCalled = true; 498 }); 499 EXPECT_TRUE(callbackCalled); 500 delete tlsSocketServer; 501 } 502 503 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest022, testing::ext::TestSize.Level2) 504 { 505 auto tlsSocketServer = new TLSSocketServer(); 506 constexpr int sockFd = 1; 507 bool callbackCalled = false; 508 tlsSocketServer->GetCipherSuite(sockFd, __anonee3477b50702(int32_t errorNumber, const std::vector<std::string> &suite) 509 [&callbackCalled](int32_t errorNumber, const std::vector<std::string> &suite) { 510 EXPECT_EQ(errorNumber, TlsSocket::TLS_ERR_SYS_EINVAL); 511 callbackCalled = true; 512 }); 513 EXPECT_TRUE(callbackCalled); 514 delete tlsSocketServer; 515 } 516 517 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest023, testing::ext::TestSize.Level2) 518 { 519 constexpr int sockFd = 1; 520 auto tlsSocketServer = new TLSSocketServer(); 521 auto connection = std::make_shared<TLSSocketServer::Connection>(); 522 tlsSocketServer->clientIdConnections_.emplace(sockFd, connection); 523 524 bool callbackCalled = false; 525 tlsSocketServer->GetCipherSuite(sockFd, __anonee3477b50802(int32_t errorNumber, const std::vector<std::string> &suite) 526 [&callbackCalled](int32_t errorNumber, const std::vector<std::string> &suite) { 527 EXPECT_NE(errorNumber, TlsSocket::TLSSOCKET_SUCCESS); 528 callbackCalled = true; 529 }); 530 EXPECT_TRUE(callbackCalled); 531 delete tlsSocketServer; 532 } 533 534 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest024, testing::ext::TestSize.Level2) 535 { 536 constexpr int sockFd = 1; 537 auto tlsSocketServer = new TLSSocketServer(); 538 539 bool callbackCalled = false; 540 tlsSocketServer->GetSignatureAlgorithms( __anonee3477b50902(int32_t errorNumber, const std::vector<std::string> &algorithms) 541 sockFd, [&callbackCalled](int32_t errorNumber, const std::vector<std::string> &algorithms) { 542 EXPECT_EQ(errorNumber, TlsSocket::TLS_ERR_SYS_EINVAL); 543 callbackCalled = true; 544 }); 545 EXPECT_TRUE(callbackCalled); 546 delete tlsSocketServer; 547 } 548 549 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest025, testing::ext::TestSize.Level2) 550 { 551 constexpr int sockFd = 1; 552 auto tlsSocketServer = new TLSSocketServer(); 553 auto connection = std::make_shared<TLSSocketServer::Connection>(); 554 tlsSocketServer->clientIdConnections_.emplace(sockFd, connection); 555 556 bool callbackCalled = false; 557 tlsSocketServer->GetSignatureAlgorithms( __anonee3477b50a02(int32_t errorNumber, const std::vector<std::string> &suite) 558 sockFd, [&callbackCalled](int32_t errorNumber, const std::vector<std::string> &suite) { 559 EXPECT_NE(errorNumber, TlsSocket::TLSSOCKET_SUCCESS); 560 callbackCalled = true; 561 }); 562 EXPECT_TRUE(callbackCalled); 563 delete tlsSocketServer; 564 } 565 566 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest026, testing::ext::TestSize.Level2) 567 { 568 constexpr int sockFd = 1; 569 auto tlsSocketServer = new TLSSocketServer(); 570 auto connection = std::make_shared<TLSSocketServer::Connection>(); 571 connection->signatureAlgorithms_ = {"TEST"}; 572 tlsSocketServer->clientIdConnections_.emplace(sockFd, connection); 573 574 bool callbackCalled = false; 575 tlsSocketServer->GetSignatureAlgorithms( __anonee3477b50b02(int32_t errorNumber, const std::vector<std::string> &suite) 576 sockFd, [&callbackCalled](int32_t errorNumber, const std::vector<std::string> &suite) { 577 EXPECT_EQ(errorNumber, TlsSocket::TLSSOCKET_SUCCESS); 578 callbackCalled = true; 579 }); 580 EXPECT_TRUE(callbackCalled); 581 delete tlsSocketServer; 582 } 583 584 extern void CheckIpAndDnsName(const std::string &hostName, std::vector<std::string> &dnsNames, 585 std::vector<std::string> &ips, const X509 *x509Certificates, 586 std::tuple<bool, std::string> &result); 587 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest027, testing::ext::TestSize.Level2) 588 { 589 auto tlsSocketServer = new TLSSocketServer(); 590 std::string hostName = "192.168.1.1"; 591 std::vector<std::string> dnsNames = {"www.test.com", "www.example.com"}; 592 std::vector<std::string> ips = {"192.168.1.1", "192.168.1.2"}; 593 const X509 *x509Certificates = X509_new(); 594 std::tuple<bool, std::string> result; 595 CheckIpAndDnsName(hostName, dnsNames, ips, x509Certificates, result); 596 EXPECT_FALSE(std::get<0>(result)); 597 delete tlsSocketServer; 598 } 599 600 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest028, testing::ext::TestSize.Level2) 601 { 602 auto tlsSocketServer = new TLSSocketServer(); 603 std::string hostName = "192.168.1.3"; 604 std::vector<std::string> dnsNames = {"www.test.com", "www.example.com"}; 605 std::vector<std::string> ips = {"192.168.1.1", "192.168.1.2"}; 606 const X509 *x509Certificates = X509_new(); 607 std::tuple<bool, std::string> result; 608 CheckIpAndDnsName(hostName, dnsNames, ips, x509Certificates, result); 609 EXPECT_FALSE(std::get<0>(result)); 610 EXPECT_EQ(std::get<1>(result), "IP: 192.168.1.3 is not in the cert's list"); 611 delete tlsSocketServer; 612 } 613 614 615 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest029, testing::ext::TestSize.Level2) 616 { 617 auto tlsSocketServer = new TLSSocketServer(); 618 std::string hostName = "www.test.com"; 619 std::vector<std::string> dnsNames = {"www", "test", "com"}; 620 std::vector<std::string> ips = {"192.168.1.1", "192.168.1.2"}; 621 const X509 *x509Certificates = X509_new(); 622 std::tuple<bool, std::string> result; 623 CheckIpAndDnsName(hostName, dnsNames, ips, x509Certificates, result); 624 EXPECT_TRUE(std::get<0>(result)); 625 delete tlsSocketServer; 626 } 627 628 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest031, testing::ext::TestSize.Level2) 629 { 630 auto connection = std::make_shared<TLSSocketServer::Connection>(); 631 std::string hostName = "testHost"; 632 X509 *x509Certificates = X509_new(); 633 std::string result = connection->CheckServerIdentityLegal(hostName, x509Certificates); 634 ASSERT_EQ(result, "X509 get ext nid error"); 635 X509_free(x509Certificates); 636 } 637 638 HWTEST_F(TlsSocketServerBranchTest, TlsSocketServerBranchTest032, testing::ext::TestSize.Level2) 639 { 640 auto connection = std::make_shared<TLSSocketServer::Connection>(); 641 std::string hostName = "testHost"; 642 X509 *x509Certificates = X509_new(); 643 X509_EXTENSION *ext = X509_EXTENSION_new(); 644 X509_add_ext(x509Certificates, ext, -1); 645 std::string result = connection->CheckServerIdentityLegal(hostName, x509Certificates); 646 ASSERT_EQ(result, "X509 get ext nid error"); 647 X509_EXTENSION_free(ext); 648 X509_free(x509Certificates); 649 } 650 } // namespace TlsSocketServer 651 } // namespace NetStack 652 } // namespace OHOS 653