• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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 #include <securec.h>
16 #include <gtest/gtest.h>
17 #include <pthread.h>
18 
19 #include "devattest_log.h"
20 #include "attest_entry.h"
21 #include "attest_result_info.h"
22 #include "attest_type.h"
23 #include "attest_service_active.h"
24 #include "attest_service_auth.h"
25 #include "attest_service_challenge.h"
26 #include "attest_service_device.h"
27 #include "attest_service.h"
28 #include "attest_service_device.h"
29 #include "attest_security_token.h"
30 #include "attest_service_reset.h"
31 #include "attest_network.h"
32 #include "attest_adapter.h"
33 #include "devattest_errno.h"
34 #include "attest_utils.h"
35 #include "attest_tdd_mock_property.h"
36 #include "attest_tdd_mock_hal.h"
37 #include "attest_tdd_test.h"
38 #include "attest_tdd_mock_config.h"
39 
40 using namespace testing::ext;
41 namespace OHOS {
42 namespace DevAttest {
43 
44 static const int32_t ATTEST_GET_CHANLLEGE = 0;
45 static const int32_t ATTEST_RESET = 1;
46 static const int32_t ATTEST_ACTIVE = 2;
47 static const int32_t ATTEST_AUTH = 3;
48 
49 static const char* ATTEST_REST_ERROR_EXPECT_RESULT = "15003";
50 static const char* ATTEST_RESET_EXPECT_CHAP = "39a9d04d41617162893c3312ceb030acac8d8bd0cc9fcebcab5402a43891341d";
51 
52 class AttestTddTest : public testing::Test {
53 public:
54     static void SetUpTestCase(void);
55 
56     static void TearDownTestCase(void);
57 
58     void SetUp();
59 
60     void TearDown();
61 };
62 
SetUpTestCase(void)63 void AttestTddTest::SetUpTestCase(void)
64 {
65 }
66 
TearDownTestCase(void)67 void AttestTddTest::TearDownTestCase(void)
68 {
69 }
70 
SetUp()71 void AttestTddTest::SetUp()
72 {
73 }
74 
TearDown()75 void AttestTddTest::TearDown()
76 {
77 }
78 
79 /*
80  * @tc.name: TestInitSysData001
81  * @tc.desc: Test init system data.
82  * @tc.type: FUNC
83  */
84 HWTEST_F(AttestTddTest, TestInitSysData001, TestSize.Level1)
85 {
86     int32_t ret = InitSysData();
87     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
88     EXPECT_STREQ(StrdupDevInfo(VERSION_ID), ATTEST_MOCK_PROPERTY_VERSIONID);
89     EXPECT_STREQ(StrdupDevInfo(ROOT_HASH), ATTEST_MOCK_PROPERTY_HASH);
90     EXPECT_STREQ(StrdupDevInfo(DISPLAY_VERSION), ATTEST_MOCK_PROPERTY_SOFTWARE_VERSION);
91     EXPECT_STREQ(StrdupDevInfo(MANU_FACTURE), ATTEST_MOCK_PROPERTY_MANU);
92     EXPECT_STREQ(StrdupDevInfo(PRODUCT_MODEL), ATTEST_MOCK_PROPERTY_MODEL);
93     EXPECT_STREQ(StrdupDevInfo(BRAND), ATTEST_MOCK_PROPERTY_BRAND);
94     EXPECT_STREQ(StrdupDevInfo(SECURITY_PATCH_TAG), ATTEST_MOCK_PROPERTY_PATCH);
95     EXPECT_STREQ(StrdupDevInfo(UDID), ATTEST_MOCK_PROPERTY_UDID);
96     // 恢复环境
97     DestroySysData();
98     EXPECT_TRUE(StrdupDevInfo(VERSION_ID) == nullptr);
99 }
100 
101 /*
102  * @tc.name: TestInitNetWork001
103  * @tc.desc: Test init network, result is success.
104  * @tc.type: FUNC
105  */
106 HWTEST_F(AttestTddTest, TestInitNetWork001, TestSize.Level1)
107 {
108     int ret = InitNetworkServerInfo();
109     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
110     ServerInfo* serverInfo = (ServerInfo*)g_attestNetworkList.head->data;
111     EXPECT_STREQ(serverInfo->hostName, ATTEST_MOCK_HAL_NETWORK_RESULT);
112     ReleaseList(&g_attestNetworkList);
113 }
114 
115 /*
116  * @tc.name: TestInitNetWork002
117  * @tc.desc: Test init network, result is fail.
118  * @tc.type: FUNC
119  */
120 HWTEST_F(AttestTddTest, TestInitNetWork002, TestSize.Level1)
121 {
122     int ret = InitNetworkServerInfo();
123     EXPECT_TRUE(ret == DEVATTEST_FAIL);
124     ReleaseList(&g_attestNetworkList);
125 }
126 
127 /*
128  * @tc.name: TestGetAuthStatus001
129  * @tc.desc: Test get authStatus.
130  * @tc.type: FUNC
131  */
132 HWTEST_F(AttestTddTest, TestGetAuthStatus001, TestSize.Level1)
133 {
134     int32_t ret = FlushAuthResult(ATTEST_MOCK_HAL_TICKET, ATTEST_MOCK_HAL_STATUS);
135     EXPECT_TRUE((ret == DEVATTEST_SUCCESS));
136     char *status = nullptr;
137     ret = GetAuthStatus(&status);
138     EXPECT_TRUE((ret == DEVATTEST_SUCCESS));
139     EXPECT_TRUE((status != nullptr));
140     if (status == nullptr) {
141         return;
142     }
143     EXPECT_STREQ(ATTEST_MOCK_HAL_STATUS, status);
144     free(status);
145 }
146 
147 /*
148  * @tc.name: TestDecodeAuthStatus001
149  * @tc.desc: Test decode auth status.
150  * @tc.type: FUNC
151  */
152 HWTEST_F(AttestTddTest, TestDecodeAuthStatus001, TestSize.Level1)
153 {
154     char *status = nullptr;
155     int32_t ret = GetAuthStatus(&status);
156     EXPECT_TRUE((ret == DEVATTEST_SUCCESS));
157     AuthStatus* outStatus = CreateAuthStatus();
158     EXPECT_TRUE((outStatus != nullptr));
159     if (outStatus == nullptr) {
160         return;
161     }
162     ret = DecodeAuthStatus(status, outStatus);
163     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
164     SoftwareResultDetail* detail = outStatus->softwareResultDetail;
165     EXPECT_TRUE((outStatus->versionId != nullptr) && (outStatus->authType != nullptr) && (detail != nullptr));
166     if ((outStatus->versionId == nullptr) || (outStatus->authType == nullptr) || (detail == nullptr)) {
167         DestroyAuthStatus(&outStatus);
168         return;
169     }
170     EXPECT_TRUE(outStatus->hardwareResult == ATTEST_HARDWARE_RESULT);
171     EXPECT_STREQ(outStatus->authType, ATTEST_AUTH_TYPE);
172     EXPECT_TRUE(outStatus->expireTime == ATTEST_EXPIRE_TIME);
173     EXPECT_STREQ(outStatus->versionId, ATTEST_VERSION_ID);
174     EXPECT_TRUE(outStatus->softwareResult == ATTEST_SOFTWARE_RESULT);
175     DestroyAuthStatus(&outStatus);
176 }
177 
178 /*
179  * @tc.name: TestCheckExpireTime001
180  * @tc.desc: Test check expire time.
181  * @tc.type: FUNC
182  */
183 HWTEST_F(AttestTddTest, TestCheckExpireTime001, TestSize.Level1)
184 {
185     AuthStatus* outStatus = CreateAuthStatus();
186     EXPECT_TRUE(outStatus != nullptr);
187     if (outStatus == nullptr) {
188         return;
189     }
190     outStatus->expireTime = 19673222;
191     uint64_t currentTime = 19673223;
192     int32_t ret = CheckExpireTime(outStatus, currentTime);
193     EXPECT_TRUE(ret != DEVATTEST_SUCCESS);
194     outStatus->expireTime = 19673222;
195     currentTime = 19673221;
196     ret = CheckExpireTime(outStatus, currentTime);
197     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
198     free(outStatus);
199 }
200 
201 /*
202  * @tc.name: TestCheckAuthResult001
203  * @tc.desc: Test check auth result.
204  * @tc.type: FUNC
205  */
206 HWTEST_F(AttestTddTest, TestCheckAuthResult001, TestSize.Level1)
207 {
208     AuthStatus* outStatus = CreateAuthStatus();
209     EXPECT_TRUE(outStatus != nullptr);
210     if (outStatus == nullptr) {
211         return;
212     }
213     outStatus->hardwareResult = 1;
214     outStatus->softwareResult = 0;
215     int32_t ret = CheckAuthResult(outStatus);
216     EXPECT_TRUE(ret != DEVATTEST_SUCCESS);
217     outStatus->hardwareResult = 0;
218     ret = CheckAuthResult(outStatus);
219     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
220     free(outStatus);
221 }
222 
GetAuthResult()223 static AuthResult *GetAuthResult()
224 {
225     AuthResult *authResult = CreateAuthResult();
226     if (authResult == nullptr) {
227         return nullptr;
228     }
229     int32_t ret = ParseAuthResultResp(ATTEST_AUTH_EXPECT_RESULT, authResult);
230     if (ret != DEVATTEST_SUCCESS) {
231         DestroyAuthResult(&authResult);
232         return nullptr;
233     }
234     return authResult;
235 }
236 
TddGenMsg(int input)237 static DevicePacket* TddGenMsg(int input)
238 {
239     DevicePacket* reqMsg = nullptr;
240     int32_t ret = DEVATTEST_SUCCESS;
241     ChallengeResult challenge;
242     do {
243         if (input == ATTEST_CASE_RESET) {
244             challenge.challenge = (char*)ATTEST_RESET_CHAP;
245             challenge.currentTime = ATTEST_RESET_CHAP_TIME;
246             ret = GenResetMsg(&challenge, &reqMsg);
247             break;
248         }
249         if (input == ATTEST_CASE_AUTH) {
250             challenge.challenge = (char*)ATTEST_AUTH_CHAP;
251             challenge.currentTime = ATTEST_AUTH_CHAP_TIME;
252             ret = GenAuthMsg(&challenge, &reqMsg);
253             break;
254         }
255         if (input == ATTEST_CASE_ACTIVE) {
256             challenge.challenge = (char*)ATTEST_ACTIVE_CHAP;
257             challenge.currentTime = ATTEST_ACTIVE_CHAP_TIME;
258             AuthResult *authResult = GetAuthResult();
259             ret = GenActiveMsg(authResult, &challenge, &reqMsg);
260             break;
261         }
262     } while (0);
263     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
264     if (ret != DEVATTEST_SUCCESS) {
265         FREE_DEVICE_PACKET(reqMsg);
266         return nullptr;
267     }
268     return reqMsg;
269 }
270 
271 /*
272  * @tc.name: TestGenResetMsg001
273  * @tc.desc: Test gen reset msg with stored token.
274  * @tc.type: FUNC
275  */
276 HWTEST_F(AttestTddTest, TestGenResetMsg001, TestSize.Level1)
277 {
278     AttestSetMockReadTokenRet(ATTEST_OK);
279     // 初始化参数
280     int32_t ret = InitSysData();
281     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
282 
283     DevicePacket* reqMsg = TddGenMsg(ATTEST_CASE_RESET);
284     EXPECT_TRUE((reqMsg != nullptr));
285     if (reqMsg == nullptr) {
286         DestroySysData();
287         return;
288     }
289     char *outToken = reqMsg->tokenInfo.token;
290     EXPECT_TRUE(outToken != nullptr);
291     if (outToken == nullptr) {
292         FREE_DEVICE_PACKET(reqMsg);
293         DestroySysData();
294         return;
295     }
296     EXPECT_TRUE(strcmp(ATTEST_RESET_GEN_TOKEN, outToken) == 0);
297     FREE_DEVICE_PACKET(reqMsg);
298     // 恢复环境
299     DestroySysData();
300 }
301 
302 /*
303  * @tc.name: TestGenResetMsg002
304  * @tc.desc: Test gen reset msg without token.
305  * @tc.type: FUNC
306  */
307 HWTEST_F(AttestTddTest, TestGenResetMsg002, TestSize.Level1)
308 {
309     AttestSetMockReadTokenRet(TOKEN_UNPRESET);
310     // 初始化参数
311     int32_t ret = InitSysData();
312     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
313 
314     DevicePacket* reqMsg = TddGenMsg(ATTEST_CASE_RESET);
315     EXPECT_TRUE((reqMsg != nullptr));
316     if (reqMsg == nullptr) {
317         DestroySysData();
318         return;
319     }
320     char *outToken = reqMsg->tokenInfo.token;
321     EXPECT_TRUE(outToken != nullptr);
322     if (outToken == nullptr) {
323         FREE_DEVICE_PACKET(reqMsg);
324         DestroySysData();
325         return;
326     }
327 #if defined(__ATTEST_ENABLE_PRESET_TOKEN__)
328     EXPECT_TRUE(strcmp(ATTEST_RESET_GEN_ONLINE_TOKEN, outToken) == 0);
329 
330     outToken = reqMsg->tokenInfo.uuid;
331     EXPECT_TRUE(outToken != nullptr);
332     if (outToken == nullptr) {
333         FREE_DEVICE_PACKET(reqMsg);
334         DestroySysData();
335         return;
336     }
337     EXPECT_TRUE(strcmp(ATTEST_RESET_GEN_ONLINE_TOKEN_ID, outToken) == 0);
338 #else
339     EXPECT_TRUE(strcmp(ATTEST_RESET_GEN_PRODUCT_TOKEN, outToken) == 0);
340 #endif
341     FREE_DEVICE_PACKET(reqMsg);
342     // 恢复环境
343     DestroySysData();
344 }
345 
346 /*
347  * @tc.name: TestParseResetResult001
348  * @tc.desc: Test parse reset result,result is ok.
349  * @tc.type: FUNC
350  */
351 HWTEST_F(AttestTddTest, TestParseResetResult001, TestSize.Level1)
352 {
353     string input = "{\"errcode\":0}";
354     int32_t ret = ParseResetResult(input.c_str());
355     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
356     input = "{\"errcode\":\"-32s\"}";
357     ret = ParseResetResult(input.c_str());
358     EXPECT_TRUE((ret != DEVATTEST_SUCCESS));
359 }
360 
361 /*
362  * @tc.name: TestGenAuthMsg001
363  * @tc.desc: Test gen auth msg.
364  * @tc.type: FUNC
365  */
366 HWTEST_F(AttestTddTest, TestGenAuthMsg001, TestSize.Level1)
367 {
368     AttestSetMockReadTokenRet(ATTEST_OK);
369     // 初始化参数
370     int32_t ret = InitSysData();
371     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
372 
373     DevicePacket* reqMsg = TddGenMsg(ATTEST_CASE_AUTH);
374     EXPECT_TRUE((reqMsg != nullptr));
375     if (reqMsg == nullptr) {
376         return;
377     }
378     char *outToken = reqMsg->tokenInfo.token;
379     EXPECT_TRUE(outToken != nullptr);
380     if (outToken == nullptr) {
381         FREE_DEVICE_PACKET(reqMsg);
382         return;
383     }
384     EXPECT_TRUE(strcmp(outToken, ATTEST_AUTH_GEN_TOKEN) == 0);
385     FREE_DEVICE_PACKET(reqMsg);
386     // 恢复环境
387     DestroySysData();
388 }
389 
390 /*
391  * @tc.name: TestGenAuthMsg002
392  * @tc.desc: Test gen auth msg without token.
393  * @tc.type: FUNC
394  */
395 HWTEST_F(AttestTddTest, TestGenAuthMsg002, TestSize.Level1)
396 {
397     AttestSetMockReadTokenRet(TOKEN_UNPRESET);
398     // 初始化参数
399     int32_t ret = InitSysData();
400     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
401 
402     DevicePacket* reqMsg = TddGenMsg(ATTEST_CASE_AUTH);
403     EXPECT_TRUE((reqMsg != nullptr));
404     if (reqMsg == nullptr) {
405         return;
406     }
407     char *outToken = reqMsg->tokenInfo.token;
408     EXPECT_TRUE(outToken != nullptr);
409     if (outToken == nullptr) {
410         FREE_DEVICE_PACKET(reqMsg);
411         return;
412     }
413 #if defined(__ATTEST_ENABLE_PRESET_TOKEN__)
414     EXPECT_TRUE(strcmp(ATTEST_AUTH_GEN_ONLINE_TOKEN, outToken) == 0);
415 #else
416     EXPECT_TRUE(strcmp(ATTEST_AUTH_GEN_PRODUCT_TOKEN, outToken) == 0);
417 #endif
418     FREE_DEVICE_PACKET(reqMsg);
419     // 恢复环境
420     DestroySysData();
421 }
422 
423 /*
424  * @tc.name: TestParseAuthResultResp001
425  * @tc.desc: Test parse auth result resp.
426  * @tc.type: FUNC
427  */
428 HWTEST_F(AttestTddTest, TestParseAuthResultResp001, TestSize.Level1)
429 {
430     AuthResult *authResult = GetAuthResult();
431     EXPECT_TRUE(authResult != nullptr);
432     if (authResult == nullptr) {
433         return;
434     }
435     EXPECT_TRUE((authResult->ticket != nullptr) && (authResult->tokenValue != nullptr) &&
436         (authResult->authStatus != nullptr));
437     if (authResult->ticket != nullptr) {
438         EXPECT_TRUE(strcmp(authResult->ticket, ATTEST_MOCK_HAL_TICKET) == 0);
439     }
440     DestroyAuthResult(&authResult);
441 }
442 
443 /*
444  * @tc.name: TestGenActiveMsg001
445  * @tc.desc: Test gen active msg.
446  * @tc.type: FUNC
447  */
448 HWTEST_F(AttestTddTest, TestGenActiveMsg001, TestSize.Level1)
449 {
450     AttestSetMockReadTokenRet(ATTEST_OK);
451     // 初始化参数
452     int32_t ret = InitSysData();
453     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
454 
455     DevicePacket* reqMsg = TddGenMsg(ATTEST_CASE_ACTIVE);
456     EXPECT_TRUE((reqMsg != nullptr));
457     if (reqMsg == nullptr) {
458         return;
459     }
460     char *outToken = reqMsg->tokenInfo.token;
461     EXPECT_TRUE(outToken != nullptr);
462     if (outToken == nullptr) {
463         FREE_DEVICE_PACKET(reqMsg);
464         return;
465     }
466     EXPECT_TRUE(strcmp(outToken, ATTEST_ACTIVE_GEN_TOKEN) == 0);
467     FREE_DEVICE_PACKET(reqMsg);
468     // 恢复环境
469     DestroySysData();
470 }
471 
472 /*
473  * @tc.name: TestGenActiveMsg002
474  * @tc.desc: Test gen auth msg without token.
475  * @tc.type: FUNC
476  */
477 HWTEST_F(AttestTddTest, TestGenActiveMsg002, TestSize.Level1)
478 {
479     AttestSetMockReadTokenRet(TOKEN_UNPRESET);
480     // 初始化参数
481     int32_t ret = InitSysData();
482     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
483 
484     DevicePacket* reqMsg = TddGenMsg(ATTEST_CASE_ACTIVE);
485     EXPECT_TRUE((reqMsg != nullptr));
486     if (reqMsg == nullptr) {
487         return;
488     }
489     char *outToken = reqMsg->tokenInfo.token;
490     EXPECT_TRUE(outToken != nullptr);
491     if (outToken == nullptr) {
492         FREE_DEVICE_PACKET(reqMsg);
493         return;
494     }
495 #if defined(__ATTEST_ENABLE_PRESET_TOKEN__)
496     EXPECT_TRUE(strcmp(ATTEST_ACTIVE_GEN_ONLINE_TOKEN, outToken) == 0);
497 #else
498     EXPECT_TRUE(strcmp(ATTEST_ACTIVE_GEN_PRODUCT_TOKEN, outToken) == 0);
499 #endif
500     FREE_DEVICE_PACKET(reqMsg);
501     // 恢复环境
502     DestroySysData();
503 }
504 
505 /*
506  * @tc.name: TestParseActiveResult001
507  * @tc.desc: Test parse active result,result is ok.
508  * @tc.type: FUNC
509  */
510 HWTEST_F(AttestTddTest, TestParseActiveResult001, TestSize.Level1)
511 {
512     string input = "{\"errcode\":0}";
513     int32_t ret = ParseActiveResult(input.c_str());
514     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
515     input = "{\"errcode\":\"-32s\"}";
516     ret = ParseActiveResult(input.c_str());
517     EXPECT_TRUE((ret != DEVATTEST_SUCCESS));
518 }
519 
520 /*
521  * @tc.name: TestGetChallenge001
522  * @tc.desc: Test get reset challenge.
523  * @tc.type: FUNC
524  */
525 HWTEST_F(AttestTddTest, TestGetChallenge001, TestSize.Level1)
526 {
527     // 初始化环境
528     int32_t ret = InitSysData();
529     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
530     (void)InitNetworkServerInfo();
531     (void)D2CConnect();
532 
533     g_netType = ATTEST_GET_CHANLLEGE;
534     ChallengeResult* challenge = nullptr;
535     ret = GetChallenge(&challenge, ATTEST_ACTION_RESET);
536     EXPECT_TRUE(ret == ATTEST_OK);
537     EXPECT_TRUE(challenge != nullptr);
538     if (ret == ATTEST_OK && challenge != nullptr) {
539         EXPECT_TRUE(strcmp(ATTEST_RESET_EXPECT_CHAP, challenge->challenge) == 0);
540         FREE_CHALLENGE_RESULT(challenge);
541     }
542     // 恢复环境
543     DestroySysData();
544     EXPECT_TRUE(StrdupDevInfo(VERSION_ID) == nullptr);
545 }
546 
547 /*
548  * @tc.name: TestSendResetMsg001
549  * @tc.desc: Test send reset msg.
550  * @tc.type: FUNC
551  */
552 HWTEST_F(AttestTddTest, TestSendResetMsg001, TestSize.Level1)
553 {
554     // 初始化环境
555     int32_t ret = InitSysData();
556     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
557     (void)InitNetworkServerInfo();
558     (void)D2CConnect();
559 
560     g_netType = ATTEST_RESET;
561     DevicePacket* reqMsg = TddGenMsg(ATTEST_CASE_RESET);
562     if (reqMsg == nullptr) {
563         return;
564     }
565     char* respMsg = nullptr;
566     ret = SendResetMsg(reqMsg, &respMsg);
567     EXPECT_TRUE((ret == ATTEST_OK) && (respMsg != nullptr));
568     FREE_DEVICE_PACKET(reqMsg);
569     if ((ret == ATTEST_OK) && (respMsg != nullptr)) {
570         EXPECT_TRUE(strstr(respMsg, ATTEST_REST_ERROR_EXPECT_RESULT) != nullptr);
571         free(respMsg);
572     }
573     // 恢复环境
574     DestroySysData();
575     EXPECT_TRUE(StrdupDevInfo(VERSION_ID) == nullptr);
576 }
577 
578 /*
579  * @tc.name: TestSendActiveMsg001
580  * @tc.desc: Test send active msg.
581  * @tc.type: FUNC
582  */
583 HWTEST_F(AttestTddTest, TestSendActiveMsg001, TestSize.Level1)
584 {
585     // 初始化环境
586     int32_t ret = InitSysData();
587     EXPECT_TRUE(ret == DEVATTEST_SUCCESS);
588 
589     (void)InitNetworkServerInfo();
590     (void)D2CConnect();
591 
592     g_netType = ATTEST_ACTIVE;
593     DevicePacket* reqMsg = TddGenMsg(ATTEST_CASE_ACTIVE);
594     ASSERT_TRUE(reqMsg != nullptr);
595 
596     char* respMsg = nullptr;
597     ret = SendActiveMsg(reqMsg, &respMsg);
598     EXPECT_TRUE((ret == ATTEST_OK) && (respMsg != nullptr));
599     FREE_DEVICE_PACKET(reqMsg);
600     if ((ret == ATTEST_OK) && (respMsg != nullptr)) {
601         const char* ATTEST_ACTIVE_EXPECT_RESULT = "{\"errcode\":0}";
602         EXPECT_TRUE(strcmp(ATTEST_ACTIVE_EXPECT_RESULT, respMsg) == 0);
603         free(respMsg);
604     }
605     // 恢复环境
606     DestroySysData();
607     EXPECT_TRUE(StrdupDevInfo(VERSION_ID) == nullptr);
608 }
609 
610 /*
611  * @tc.name: TestQueryAttestStatus001
612  * @tc.desc: Test query attest status.
613  * @tc.type: FUNC
614  */
615 HWTEST_F(AttestTddTest, TestQueryAttestStatus001, TestSize.Level1)
616 {
617     AuthResult *authResult = GetAuthResult();
618     if (authResult == nullptr) {
619         return;
620     }
621     int32_t ret = FlushToken(authResult);
622     EXPECT_TRUE((ret == DEVATTEST_SUCCESS));
623     uint8_t authResultCode = ATTEST_RESULT_CODE;
624     AttestWriteAuthResultCode((char*)&authResultCode, 1);
625     AttestResultInfo attestResultInfo = { .softwareResultDetail = {-2, -2, -2, -2, -2} };
626     attestResultInfo.ticket = nullptr;
627     ret = EntryGetAttestStatus(&attestResultInfo);
628     EXPECT_TRUE((ret == ATTEST_OK) && (attestResultInfo.authResult == ATTEST_OK));
629     EXPECT_TRUE((attestResultInfo.ticket != nullptr));
630     if (attestResultInfo.ticket == nullptr) {
631         return;
632     }
633     EXPECT_TRUE(strcmp(attestResultInfo.ticket, ATTEST_MOCK_HAL_TICKET) == 0);
634 }
635 }
636 }