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