1 /*
2  * Copyright (C) 2021 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 <cstdint>
17 #include <cstdlib>
18 #include "gtest/gtest.h"
19 #include "gmock/gmock.h"
20 #include "securec.h"
21 #include "hichain.h"
22 #include "distribution.h"
23 #include "huks_adapter.h"
24 #include "log.h"
25 #include "auth_info_test.h"
26 #include "commonutil_test.h"
27 #include "jsonutil_test.h"
28 #include "cJSON.h"
29 #include "deviceauth_test.h"
30 
31 #define LOG(format, ...) (printf(format"\n", ##__VA_ARGS__))
32 
33 using namespace std;
34 using namespace testing::ext;
35 using ::testing::Return;
36 
37 namespace {
38 const int KEY_LEN = 16;
39 const int AUTH_ID_LENGTH = 64;
40 
41 static struct session_identity g_server_identity = {
42     153666603,
43     {strlen("aaa.bbbb.ccc"), "aaa.bbbb.ccc"},
44     {strlen("CarDevice"), "CarDevice"},
45     0
46 };
47 
48 static struct hc_pin g_testPin = {strlen("123456"), "123456"};
49 
50 static struct hc_auth_id g_testClientAuthId;
51 static struct hc_auth_id g_testServerAuthId;
52 
53 static int32_t g_result;
54 
55 uint8_t g_testPhoneId[65] = {"14bb6543b893a3250f5793fbbbd48be56641505dc6514be1bb37b032903ebc67"};
56 uint8_t g_testCarId[65] = {"14bb6543b893a3250f5793fbbbd48be56641505dc6514be1bb37b032903abcde"};
57 
InitHcAuthId()58 void InitHcAuthId()
59 {
60     memcpy_s(g_testClientAuthId.auth_id, AUTH_ID_LENGTH, g_testPhoneId, AUTH_ID_LENGTH);
61     g_testClientAuthId.length = AUTH_ID_LENGTH;
62 
63     memcpy_s(g_testServerAuthId.auth_id, AUTH_ID_LENGTH, g_testCarId, AUTH_ID_LENGTH);
64     g_testServerAuthId.length = AUTH_ID_LENGTH;
65 
66     return;
67 }
68 
69 enum HksErrorCode {
70     HKS_SUCCESS = 0,
71     HKS_FAILURE = -1,
72     HKS_ERROR_INVALID_KEY_FILE = -27,
73     HKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL = -37,
74     HKS_ERROR_CRYPTO_ENGINE_ERROR = -31,
75 };
76 
Transmit(const struct session_identity * identity,const void * data,uint32_t length)77 static void Transmit(const struct session_identity *identity, const void *data, uint32_t length)
78 {
79     LOG("--------Transmit--------");
80     LOG("identity session_id[%d] package_name[%s]", identity->session_id, identity->package_name.name);
81     LOG("length[%u]", length);
82     LOG("--------Transmit--------");
83 }
84 
GetProtocolParams(const struct session_identity * identity,int32_t operationCode,struct hc_pin * pin,struct operation_parameter * para)85 static void GetProtocolParams(const struct session_identity *identity, int32_t operationCode,
86     struct hc_pin *pin, struct operation_parameter *para)
87 {
88     LOG("--------GetProtocolParams--------");
89     LOG("identity session_id[%d] package_name[%s]", identity->session_id, identity->package_name.name);
90     LOG("operationCode[%d]", operationCode);
91     pin->length = g_testPin.length;
92     memcpy_s(pin->pin, pin->length, g_testPin.pin, pin->length);
93     para->self_auth_id = g_testServerAuthId;
94     para->peer_auth_id = g_testClientAuthId;
95     para->key_length = KEY_LEN;
96     LOG("--------GetProtocolParams--------");
97 }
98 
SetSessionKey(const struct session_identity * identity,const struct hc_session_key * sessionKey)99 static void SetSessionKey(const struct session_identity *identity, const struct hc_session_key *sessionKey)
100 {
101     LOG("--------SetSessionKey--------");
102     LOG("identity session_id[%d] package_name[%s]", identity->session_id, identity->package_name.name);
103     LOG("sessionKey[%s]", sessionKey->session_key);
104     LOG("--------SetSessionKey--------");
105 }
106 
SetServiceResult(const struct session_identity * identity,int32_t result,int32_t errorCode)107 static void SetServiceResult(const struct session_identity *identity, int32_t result, int32_t errorCode)
108 {
109     LOG("--------SetServiceResult--------");
110     LOG("identity session_id[%d] package_name[%s]", identity->session_id, identity->package_name.name);
111     LOG("result[%d]", result);
112     LOG("--------SetServiceResult--------");
113     g_result = result;
114 }
115 
ConfirmReceiveRequest(const struct session_identity * identity,int32_t operationCode)116 static int32_t ConfirmReceiveRequest(const struct session_identity *identity, int32_t operationCode)
117 {
118     LOG("--------ConfirmReceiveRequest--------");
119     LOG("identity session_id[%d] package_name[%s]", identity->session_id, identity->package_name.name);
120     LOG("operationCode[%d]", operationCode);
121     LOG("--------ConfirmReceiveRequest--------");
122     return HC_OK;
123 }
124 
125 /*--------------------------receive_data------------------------*/
126 class ReceiveDataTest : public testing::Test {
127 public:
128     static void SetUpTestCase(void);
129     static void TearDownTestCase(void);
130     void SetUp();
131     void TearDown();
132 };
133 
SetUpTestCase(void)134 void ReceiveDataTest::SetUpTestCase(void) {}
TearDownTestCase(void)135 void ReceiveDataTest::TearDownTestCase(void) {}
SetUp()136 void ReceiveDataTest::SetUp()
137 {
138     InitHcAuthId();
139 }
TearDown()140 void ReceiveDataTest::TearDown() {}
141 
142 static HWTEST_F(ReceiveDataTest, ReceiveDataTest001_empty, TestSize.Level2)
143 {
144     LOG("--------ReceiveDataTest001--------");
145     struct hc_call_back callBack = {
146         Transmit,
147         GetProtocolParams,
148         SetSessionKey,
149         SetServiceResult,
150         ConfirmReceiveRequest
151     };
152 
153     const struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
154     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
155     ASSERT_TRUE(server != nullptr);
156     int32_t ret = start_pake(server, &params);
157     EXPECT_EQ(ret, HC_OK);
158     uint8_t dataStr[] = {""};
159     uint8_buff data = {
160         dataStr,
161         sizeof(dataStr),
162         strlen(reinterpret_cast<char *>(dataStr))
163     };
164     ret = receive_data(server, &data);
165     EXPECT_EQ(ret, HC_OK);
166     EXPECT_EQ(g_result, END_FAILED);
167     destroy(&server);
168     LOG("--------ReceiveDataTest001--------");
169 }
170 
171 static HWTEST_F(ReceiveDataTest, ReceiveDataTest002_msg0, TestSize.Level2)
172 {
173     LOG("--------ReceiveDataTest002--------");
174     struct hc_call_back callBack = {
175         Transmit,
176         GetProtocolParams,
177         SetSessionKey,
178         SetServiceResult,
179         ConfirmReceiveRequest
180     };
181 
182     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
183     ASSERT_TRUE(server != nullptr);
184 
185     uint8_t dataStr[] = "{\"message\":0}";
186     uint8_buff data = {
187         dataStr,
188         sizeof(dataStr),
189         strlen(reinterpret_cast<char *>(dataStr))
190     };
191     receive_data(server, &data);
192     EXPECT_EQ(g_result, END_FAILED);
193 
194     destroy(&server);
195     LOG("--------ReceiveDataTest002--------");
196 }
197 
198 uint8_t g_dataStr031[] = {"{\"message\":32769,\"payload\":{\"version\":{\"currentVersion\":\"1.0.0\","
199                         "\"minVersion\":\"1.0.0\"},\"challenge\":\"76539E5634EDA735A94845C3A4F356D6\","
200                         "\"salt\":\"025E4B3B2DD3B0E67395C760008A9154\","
201                         "\"epk\":\"24EBF8D727B19E8A43B20D22F744113C8B49B226D834B2E3C9CB5B0378732D6CF7C658BFB468682A6762"
202                         "2D5FE061F4D8102E4D8912377AA785919C529F0C1289F2188E641C6DC626054FC30304DC804FD9F059F5F5D8CEAA29"
203                         "A44814F10CC2A770C5BEB0BE86559E4FA85AD6E480DC2A627F5B28626E23B613EAC21101FF1C1DDA76E35A67A5A70B"
204                         "C24ECFD0C92F4F69A5B73FD67BE3EFC0904709BEC26490E21A4A04E29211DF393559B4A71F7368B68F529806DB90C5"
205                         "8315EDFF0A1738E26E82A54D2030A5B9B270DCF01A2377300135C55B3F6B273CF157246D0DF928D6E3E2886E79ECEB"
206                         "F69F98806C37A6128E4E93C9C43DD01B53963458AF60FA1C0E497F5FD4E807DA4F804EE145967D74792AD9B135C2F3"
207                         "A25FAA3427B3666C9D30539F008915A53D1FE2E2DDDCFCFD0815976332575F9EDBC9F4946A83116C7A29C38AC1A5FD"
208                         "8E5B894DCB4A1A29672D2647D6C734D4EA74E4A077D3403CAD0CA15318D9560FFF163D71B2991D70148F97CD524244"
209                         "7DF2B23C856D734CDD39220EC0\"}}"};
210 
211 uint8_t g_dataStr032[] = {"{\"message\":32770,\"payload\":{\"kcfData\":\"463853720FFFC312084B9FF288E17"
212                         "C3F3D8B9D8F2A609D349CAA712AAD926C26\"}}"};
213 
214 uint8_t g_dataStr033[] = {"{\"message\":32771,\"payload\":{\"exAuthInfo\":\"63B2AC76C0645224DA7E395DBCC29D9F"
215                         "9AF5E0ABEEC94048962F838D12C501B22193E1B2AD43A7D9443A80EA92C4BD4F53B14C867DD00308167CB2803754"
216                         "D4A909C0666B231C17736E0C5BE5A21746BE53AF0E72BE30DC56D56752823D9453F025DD3A56904EDBF54FB16667"
217                         "82623DDF7BA29A1FA3CFE34864D4AF958EA616785AB7F06DBC01675ADB19EB12D8CA5CF312AEECE9016CA92BC9A2"
218                         "69FE9BA2C579C7EA69F34855FDF689B3153BBFF618464612C6CC8984167842316A7E6E38813CC901DFBE4BA0767C"
219                         "914B03AD0CF221BC319860A018078F74454DE18B0A144F812A3560D1A3223084A0BE48F737B49840A331B037CC13"
220                         "DF82BFC85C1B95890907972897B827C237071A8D706CE41F9E8B045E3FDD9850BEBB50BFA84721B6E64A23557D0F"
221                         "572B33D18FD8DE25C0B6C57F35AB9931EE02\"}}"};
222 
223 static HWTEST_F(ReceiveDataTest, ReceiveDataTest003_pake_client, TestSize.Level2)
224 {
225     LOG("--------ReceiveDataTest003--------");
226 
227     struct hc_call_back callBack = {
228         Transmit,
229         GetProtocolParams,
230         SetSessionKey,
231         SetServiceResult,
232         ConfirmReceiveRequest
233     };
234 
235     const struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
236     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
237     ASSERT_TRUE(server != nullptr);
238     int32_t ret = start_pake(server, &params);
239     EXPECT_EQ(ret, HC_OK);
240     uint8_buff data001 = {
241         g_dataStr031,
242         sizeof(g_dataStr031),
243         strlen(reinterpret_cast<char *>(g_dataStr031))
244     };
245     ret = receive_data(server, &data001);
246     EXPECT_EQ(ret, HC_OK);
247     EXPECT_EQ(g_result, KEY_AGREEMENT_PROCESSING);
248     uint8_buff data002 = {
249         g_dataStr032,
250         sizeof(g_dataStr032),
251         strlen(reinterpret_cast<char *>(g_dataStr032))
252     };
253     ret = receive_data(server, &data002);
254     EXPECT_EQ(ret, HC_OK);
255     EXPECT_EQ(g_result, KEY_AGREEMENT_END);
256     uint8_buff data003 = {
257         g_dataStr033,
258         sizeof(g_dataStr033),
259         strlen(reinterpret_cast<char *>(g_dataStr033))
260     };
261     ret = receive_data(server, &data003);
262     EXPECT_EQ(ret, HC_OK);
263     EXPECT_EQ(g_result, END_SUCCESS);
264     destroy(&server);
265     LOG("--------ReceiveDataTest003--------");
266 }
267 
268 static HWTEST_F(ReceiveDataTest, ReceiveDataTest004_pake_client, TestSize.Level2)
269 {
270     LOG("--------ReceiveDataTest004--------");
271     struct hc_call_back callBack = {
272         Transmit,
273         GetProtocolParams,
274         SetSessionKey,
275         SetServiceResult,
276         ConfirmReceiveRequest
277     };
278 
279     const struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
280     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
281     ASSERT_TRUE(server != nullptr);
282     int32_t ret = start_pake(server, &params);
283     EXPECT_EQ(ret, HC_OK);
284     uint8_t dataStr001[] = {"{\"message\":32769,\"payload\":{\"version\":{\"currentVersion\":\"1.0.0\","
285                         "\"minVersion\":\"1.0.0\"},\"challenge\":\"76539E5634EDA735A94845C3A4F356D6\","
286                         "\"salt\":\"025E4B3B2DD3B0E67395C760008A9154\","
287                         "\"epk\":\"24EBF8D727B19E8A43B20D22F744113C8B49B226D834B2E3C9CB5B0378732D6CF7C658BFB468682A6762"
288                         "2D5FE061F4D8102E4D8912377AA785919C529F0C1289F2188E641C6DC626054FC30304DC804FD9F059F5F5D8CEAA29"
289                         "A44814F10CC2A770C5BEB0BE86559E4FA85AD6E480DC2A627F5B28626E23B613EAC21101FF1C1DDA76E35A67A5A70B"
290                         "C24ECFD0C92F4F69A5B73FD67BE3EFC0904709BEC26490E21A4A04E29211DF393559B4A71F7368B68F529806DB90C5"
291                         "8315EDFF0A1738E26E82A54D2030A5B9B270DCF01A2377300135C55B3F6B273CF157246D0DF928D6E3E2886E79ECEB"
292                         "F69F98806C37A6128E4E93C9C43DD01B53963458AF60FA1C0E497F5FD4E807DA4F804EE145967D74792AD9B135C2F3"
293                         "A25FAA3427B3666C9D30539F008915A53D1FE2E2DDDCFCFD0815976332575F9EDBC9F4946A83116C7A29C38AC1A5FD"
294                         "8E5B894DCB4A1A29672D2647D6C734D4EA74E4A077D3403CAD0CA15318D9560FFF163D71B2991D70148F97CD524244"
295                         "7DF2B23C856D734CDD39220EC0\"}}"};
296     uint8_buff data001 = {
297         dataStr001,
298         sizeof(dataStr001),
299         strlen(reinterpret_cast<char *>(dataStr001))
300     };
301     ret = receive_data(server, &data001);
302     EXPECT_EQ(ret, HC_OK);
303     EXPECT_EQ(g_result, KEY_AGREEMENT_PROCESSING);
304     destroy(&server);
305     LOG("--------ReceiveDataTest004--------");
306 }
307 
308 static HWTEST_F(ReceiveDataTest, ReceiveDataTest005_pake_client, TestSize.Level2)
309 {
310     LOG("--------ReceiveDataTest005--------");
311     struct hc_call_back callBack = {
312         Transmit,
313         GetProtocolParams,
314         SetSessionKey,
315         SetServiceResult,
316         ConfirmReceiveRequest
317     };
318 
319     const struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
320     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
321     ASSERT_TRUE(server != nullptr);
322     int32_t ret = start_pake(server, &params);
323     EXPECT_EQ(ret, HC_OK);
324     uint8_t dataStr001[] = {"{\"message\":32769,\"payload\":{\"version\":{\"currentVersion\":\"1.0.0\","
325                         "\"minVersion\":\"1.0.0\"},\"challenge\":\"76539E5634EDA735A94845C3A4F356D6\","
326                         "\"salt\":\"025E4B3B2DD3B0E67395C760008A9154\","
327                         "\"epk\":\"24EBF8D727B19E8A43B20D22F744113C8B49B226D834B2E3C9CB5B0378732D6CF7C658BFB468682A6762"
328                         "2D5FE061F4D8102E4D8912377AA785919C529F0C1289F2188E641C6DC626054FC30304DC804FD9F059F5F5D8CEAA29"
329                         "A44814F10CC2A770C5BEB0BE86559E4FA85AD6E480DC2A627F5B28626E23B613EAC21101FF1C1DDA76E35A67A5A70B"
330                         "C24ECFD0C92F4F69A5B73FD67BE3EFC0904709BEC26490E21A4A04E29211DF393559B4A71F7368B68F529806DB90C5"
331                         "8315EDFF0A1738E26E82A54D2030A5B9B270DCF01A2377300135C55B3F6B273CF157246D0DF928D6E3E2886E79ECEB"
332                         "F69F98806C37A6128E4E93C9C43DD01B53963458AF60FA1C0E497F5FD4E807DA4F804EE145967D74792AD9B135C2F3"
333                         "A25FAA3427B3666C9D30539F008915A53D1FE2E2DDDCFCFD0815976332575F9EDBC9F4946A83116C7A29C38AC1A5FD"
334                         "8E5B894DCB4A1A29672D2647D6C734D4EA74E4A077D3403CAD0CA15318D9560FFF163D71B2991D70148F97CD524244"
335                         "7DF2B23C856D734CDD39220EC0\"}}"};
336     uint8_buff data001 = {
337         dataStr001,
338         sizeof(dataStr001),
339         strlen(reinterpret_cast<char *>(dataStr001))
340     };
341     ret = receive_data(server, &data001);
342     EXPECT_EQ(ret, HC_OK);
343     EXPECT_EQ(g_result, KEY_AGREEMENT_PROCESSING);
344 
345     uint8_t dataStr002[] = {"{\"message\":32770,\"payload\":{\"kcfData\":\"463853720FFFC312084B9FF288E17"
346                           "C3F3D8B9D8F2A609D349CAA712AAD926C26\"}}"};
347     uint8_buff data002 = {
348         dataStr002,
349         sizeof(dataStr002),
350         strlen(reinterpret_cast<char *>(dataStr002))
351     };
352     ret = receive_data(server, &data002);
353     EXPECT_EQ(ret, HC_OK);
354     destroy(&server);
355     LOG("--------ReceiveDataTest005--------");
356 }
357 
358 uint8_t g_dataStr061[] = {"{\"message\":32769,\"payload\":{\"version\":{\"currentVersion\":\"1.0.0\","
359                         "\"minVersion\":\"1.0.0\"},\"challenge\":\"76539E5634EDA735A94845C3A4F356D6\","
360                         "\"salt\":\"025E4B3B2DD3B0E67395C760008A9154\","
361                         "\"epk\":""}}"};
362 
363 uint8_t g_dataStr062[] = {"{\"message\":32770,\"payload\":{\"kcfData\":\"463853720FFFC312084B9FF288E17"
364                           "C3F3D8B9D8F2A609D349CAA712AAD926C26\"}}"};
365 
366 uint8_t g_dataStr063[] = {"{\"message\":32771,\"payload\":{\"exAuthInfo\":\"63B2AC76C0645224DA7E395DBCC29D9F"
367                         "9AF5E0ABEEC94048962F838D12C501B22193E1B2AD43A7D9443A80EA92C4BD4F53B14C867DD00308167CB2803754"
368                         "D4A909C0666B231C17736E0C5BE5A21746BE53AF0E72BE30DC56D56752823D9453F025DD3A56904EDBF54FB16667"
369                         "82623DDF7BA29A1FA3CFE34864D4AF958EA616785AB7F06DBC01675ADB19EB12D8CA5CF312AEECE9016CA92BC9A2"
370                         "69FE9BA2C579C7EA69F34855FDF689B3153BBFF618464612C6CC8984167842316A7E6E38813CC901DFBE4BA0767C"
371                         "914B03AD0CF221BC319860A018078F74454DE18B0A144F812A3560D1A3223084A0BE48F737B49840A331B037CC13"
372                         "DF82BFC85C1B95890907972897B827C237071A8D706CE41F9E8B045E3FDD9850BEBB50BFA84721B6E64A23557D0F"
373                         "572B33D18FD8DE25C0B6C57F35AB9931EE02\"}}"};
374 static HWTEST_F(ReceiveDataTest, ReceiveDataTest006_pake_client_error1, TestSize.Level2)
375 {
376     LOG("--------ReceiveDataTest006--------");
377     struct hc_call_back callBack = {
378         Transmit,
379         GetProtocolParams,
380         SetSessionKey,
381         SetServiceResult,
382         ConfirmReceiveRequest
383     };
384 
385     const struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
386     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
387     ASSERT_TRUE(server != nullptr);
388     int32_t ret = start_pake(server, &params);
389     EXPECT_EQ(ret, HC_OK);
390     uint8_buff data001 = {
391         g_dataStr061,
392         sizeof(g_dataStr061),
393         strlen(reinterpret_cast<char *>(g_dataStr061))
394     };
395     ret = receive_data(server, &data001);
396     EXPECT_EQ(ret, HC_OK);
397     uint8_buff data002 = {
398         g_dataStr062,
399         sizeof(g_dataStr062),
400         strlen(reinterpret_cast<char *>(g_dataStr062))
401     };
402     ret = receive_data(server, &data002);
403     EXPECT_EQ(ret, HC_OK);
404     uint8_buff data003 = {
405         g_dataStr063,
406         sizeof(g_dataStr063),
407         strlen(reinterpret_cast<char *>(g_dataStr063))
408     };
409     ret = receive_data(server, &data003);
410     EXPECT_EQ(ret, HC_OK);
411     EXPECT_EQ(g_result, END_FAILED);
412     destroy(&server);
413     LOG("--------ReceiveDataTest006--------");
414 }
415 
416 static HWTEST_F(ReceiveDataTest, ReceiveDataTest007_pake_client_error2, TestSize.Level2)
417 {
418     LOG("--------ReceiveDataTest007--------");
419     struct hc_call_back callBack = {
420         Transmit,
421         GetProtocolParams,
422         SetSessionKey,
423         SetServiceResult,
424         ConfirmReceiveRequest
425     };
426 
427     const struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
428     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
429     ASSERT_TRUE(server != nullptr);
430     int32_t ret = start_pake(server, &params);
431     EXPECT_EQ(ret, HC_OK);
432     uint8_t dataStr001[] = {"{\"message\":32769}"};
433     uint8_buff data001 = {
434         dataStr001,
435         sizeof(dataStr001),
436         strlen(reinterpret_cast<char *>(dataStr001))
437     };
438     ret = receive_data(server, &data001);
439     EXPECT_EQ(ret, HC_OK);
440     EXPECT_EQ(g_result, END_FAILED);
441 
442     uint8_t dataStr002[] = {"{\"message\":32770,\"payload\":{\"kcfData\":\"463853720FFFC312084B9FF288E17"
443                           "C3F3D8B9D8F2A609D349CAA712AAD926C26\"}}"};
444     uint8_buff data002 = {
445         dataStr002,
446         sizeof(dataStr002),
447         strlen(reinterpret_cast<char *>(dataStr002))
448     };
449     ret = receive_data(server, &data002);
450     EXPECT_EQ(ret, HC_OK);
451 
452     uint8_t dataStr003[] = {"{\"message\":32771,\"payload\":{\"exAuthInfo\":\"63B2AC76C0645224DA7E395DBCC29D9F"
453                         "9AF5E0ABEEC94048962F838D12C501B22193E1B2AD43A7D9443A80EA92C4BD4F53B14C867DD00308167CB2803754"
454                         "D4A909C0666B231C17736E0C5BE5A21746BE53AF0E72BE30DC56D56752823D9453F025DD3A56904EDBF54FB16667"
455                         "82623DDF7BA29A1FA3CFE34864D4AF958EA616785AB7F06DBC01675ADB19EB12D8CA5CF312AEECE9016CA92BC9A2"
456                         "69FE9BA2C579C7EA69F34855FDF689B3153BBFF618464612C6CC8984167842316A7E6E38813CC901DFBE4BA0767C"
457                         "914B03AD0CF221BC319860A018078F74454DE18B0A144F812A3560D1A3223084A0BE48F737B49840A331B037CC13"
458                         "DF82BFC85C1B95890907972897B827C237071A8D706CE41F9E8B045E3FDD9850BEBB50BFA84721B6E64A23557D0F"
459                         "572B33D18FD8DE25C0B6C57F35AB9931EE02\"}}"};
460     uint8_buff data003 = {
461         dataStr003,
462         sizeof(dataStr003),
463         strlen(reinterpret_cast<char *>(dataStr003))
464     };
465     ret = receive_data(server, &data003);
466     EXPECT_EQ(ret, HC_OK);
467     destroy(&server);
468     LOG("--------ReceiveDataTest007--------");
469 }
470 
471 uint8_t g_dataStr081[] = {"{\"message\":32769,\"payload\":{\"version\":{\"currentVersion\":\"1.0.0\","
472                         "\"minVersion\":\"1.0.0\"},\"challenge\":\"76539E5634EDA735A94845C3A4F356D6\","
473                         "\"salt\":\"025E4B3B2DD3B0E67395C760008A9154\","
474                         "\"epk\":\"24EBF8D727B19E8A43B20D22F744113C8B49B226D834B2E3C9CB5B0378732D6CF7C658BFB468682A6762"
475                         "2D5FE061F4D8102E4D8912377AA785919C529F0C1289F2188E641C6DC626054FC30304DC804FD9F059F5F5D8CEAA29"
476                         "A44814F10CC2A770C5BEB0BE86559E4FA85AD6E480DC2A627F5B28626E23B613EAC21101FF1C1DDA76E35A67A5A70B"
477                         "C24ECFD0C92F4F69A5B73FD67BE3EFC0904709BEC26490E21A4A04E29211DF393559B4A71F7368B68F529806DB90C5"
478                         "8315EDFF0A1738E26E82A54D2030A5B9B270DCF01A2377300135C55B3F6B273CF157246D0DF928D6E3E2886E79ECEB"
479                         "F69F98806C37A6128E4E93C9C43DD01B53963458AF60FA1C0E497F5FD4E807DA4F804EE145967D74792AD9B135C2F3"
480                         "A25FAA3427B3666C9D30539F008915A53D1FE2E2DDDCFCFD0815976332575F9EDBC9F4946A83116C7A29C38AC1A5FD"
481                         "8E5B894DCB4A1A29672D2647D6C734D4EA74E4A077D3403CAD0CA15318D9560FFF163D71B2991D70148F97CD524244"
482                         "7DF2B23C856D734CDD39220EC0\"}}"};
483 
484 uint8_t g_dataStr082[] = {"{\"message\":0,\"payload\":{\"kcfData\":\"463853720FFFC312084B9FF288E17"
485                         "C3F3D8B9D8F2A609D349CAA712AAD926C26\"}}"};
486 
487 uint8_t g_dataStr083[] = {"{\"message\":32771,\"payload\":{\"exAuthInfo\":\"63B2AC76C0645224DA7E395DBCC29D9F"
488                         "9AF5E0ABEEC94048962F838D12C501B22193E1B2AD43A7D9443A80EA92C4BD4F53B14C867DD00308167CB2803754"
489                         "D4A909C0666B231C17736E0C5BE5A21746BE53AF0E72BE30DC56D56752823D9453F025DD3A56904EDBF54FB16667"
490                         "82623DDF7BA29A1FA3CFE34864D4AF958EA616785AB7F06DBC01675ADB19EB12D8CA5CF312AEECE9016CA92BC9A2"
491                         "69FE9BA2C579C7EA69F34855FDF689B3153BBFF618464612C6CC8984167842316A7E6E38813CC901DFBE4BA0767C"
492                         "914B03AD0CF221BC319860A018078F74454DE18B0A144F812A3560D1A3223084A0BE48F737B49840A331B037CC13"
493                         "DF82BFC85C1B95890907972897B827C237071A8D706CE41F9E8B045E3FDD9850BEBB50BFA84721B6E64A23557D0F"
494                         "572B33D18FD8DE25C0B6C57F35AB9931EE02\"}}"};
495 
496 static HWTEST_F(ReceiveDataTest, ReceiveDataTest008_pake_client_error3, TestSize.Level2)
497 {
498     LOG("--------ReceiveDataTest008--------");
499     struct hc_call_back callBack = {
500         Transmit,
501         GetProtocolParams,
502         SetSessionKey,
503         SetServiceResult,
504         ConfirmReceiveRequest
505     };
506 
507     const struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
508     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
509     ASSERT_TRUE(server != nullptr);
510     int32_t ret = start_pake(server, &params);
511     EXPECT_EQ(ret, HC_OK);
512     uint8_buff data001 = {
513         g_dataStr081,
514         sizeof(g_dataStr081),
515         strlen(reinterpret_cast<char *>(g_dataStr081))
516     };
517     ret = receive_data(server, &data001);
518     EXPECT_EQ(ret, HC_OK);
519     uint8_buff data002 = {
520         g_dataStr082,
521         sizeof(g_dataStr082),
522         strlen(reinterpret_cast<char *>(g_dataStr082))
523     };
524     ret = receive_data(server, &data002);
525     EXPECT_EQ(ret, HC_OK);
526     uint8_buff data003 = {
527         g_dataStr083,
528         sizeof(g_dataStr083),
529         strlen(reinterpret_cast<char *>(g_dataStr083))
530     };
531     ret = receive_data(server, &data003);
532     EXPECT_EQ(ret, HC_OK);
533     destroy(&server);
534     LOG("--------ReceiveDataTest008--------");
535 }
536 
537 static HWTEST_F(ReceiveDataTest, ReceiveDataTest010_pake_client2error, TestSize.Level2)
538 {
539     LOG("--------ReceiveDataTest010--------");
540     struct hc_call_back callBack = {
541         Transmit,
542         GetProtocolParams,
543         SetSessionKey,
544         SetServiceResult,
545         ConfirmReceiveRequest
546     };
547     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
548     ASSERT_TRUE(server != nullptr);
549     struct hichain *hcServer = static_cast<struct hichain *>(server);
550     hcServer->operation_code = BIND;
551     hcServer->last_state = KEY_AGREEMENT_STATE;
552     hcServer->state = OPERATION_STATE;
553     struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
554     build_object(hcServer, PAKE_MODULAR, true, &params);
555     hcServer->pake_client->client_info.protocol_base_info.state = START_REQUEST;
556     hcServer->pake_client->client_info.protocol_base_info.last_state = PROTOCOL_INIT;
557     uint8_t dataStr[] = "{\"message\":32770,\"payload\":{}}";
558     uint8_buff data = {
559         dataStr,
560         sizeof(dataStr),
561         strlen(reinterpret_cast<char *>(dataStr))
562     };
563     receive_data(server, &data);
564     EXPECT_EQ(g_result, END_FAILED);
565 
566     destroy(&server);
567     LOG("--------ReceiveDataTest010--------");
568 }
569 
570 static HWTEST_F(ReceiveDataTest, ReceiveDataTest014_pake_client3error, TestSize.Level2)
571 {
572     LOG("--------ReceiveDataTest014--------");
573     struct hc_call_back callBack = {
574         Transmit,
575         GetProtocolParams,
576         SetSessionKey,
577         SetServiceResult,
578         ConfirmReceiveRequest
579     };
580 
581     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
582     ASSERT_TRUE(server != nullptr);
583     struct hichain *hcServer = static_cast<struct hichain *>(server);
584     hcServer->operation_code = BIND;
585     hcServer->last_state = OPERATION_STATE;
586     hcServer->state = OVER_STATE;
587     struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
588     build_object(hcServer, PAKE_MODULAR, true, &params);
589     hcServer->pake_client->client_info.protocol_base_info.state = END_REQUEST;
590     hcServer->pake_client->client_info.protocol_base_info.last_state = START_REQUEST;
591     uint8_t dataStr[] = {"{\"message\":32771,\"payload\":{}}"};
592     uint8_buff data = {
593         dataStr,
594         sizeof(dataStr),
595         strlen(reinterpret_cast<char *>(dataStr))
596     };
597     receive_data(server, &data);
598     EXPECT_EQ(g_result, END_FAILED);
599 
600     destroy(&server);
601     LOG("--------ReceiveDataTest014--------");
602 }
603 
604 uint8_t g_dataStr0151[] = "{\"message\":32769,\"payload\":{\"version\":{\"currentVersion\":"
605                             "\"1.0.0\",\"minVersion\":\"1.0.0\"},"
606                            "\"challenge\":\"EF6768B27F8BB03128195903788D415A\",\"salt\":"
607                            "\"41F4D7096B21DA799A722DA00EB8B030\",\"epk\":\"5F990513D00D2"
608                            "206A5AA4AAF7659A066236DDCD3CB806EE6373B8FA2F15AA72274A20709B"
609                            "350D8CD17358FD123E7393FE12B5CE4D0CAE62854DBC33425"
610                            "F7B49E727F029C5AA724962E221E6095C8ACC6C8AABA5F4A9"
611                            "DCCB8AF1BD6CEA09B6AEBD2058C1BD1572005FE5096F1D840F7C78E83D89"
612                            "A803C6FF49BF98C03FCEA32247816DF3EB39A52BCCB215747E91B9831BDB"
613                            "5E3349C7AA8FCCF121B1CFD2E5CC1861CD85D47AC698E9933"
614                            "30110889C2221D45ECA9515956FEA641B64C5EC81F449DF74D863539AF49"
615                            "23E13220A513E473352CC532F4710DFB199A5C520D19D14C7"
616                            "4EA425721E8EDAFD655E024C99DA1C130EAFB4B420A0B0A85FEB9030546B"
617                            "8B3FC9F307F50ABEDC249AB69BA3442D8A567D2D2F2A001AF"
618                            "A21D6A9F6FD0D4AB2153EB737094692318FC0C4FCD8026D73585FFD2D411"
619                            "CD7703FF9B7B981C42FF4C969E75D846CDFAC54E122A1B073"
620                            "CAD7123E8B06C7B51FFC832942001FA33E3E85BB3DE306BB2AE2BEC7D1AB"
621                            "BD3D466FFD87FCA3CE65254E4D5A97AD29DFAB4F0\"}}";
622 static HWTEST_F(ReceiveDataTest, ReceiveDataTest015_pake_client_all, TestSize.Level2)
623 {
624     LOG("--------ReceiveDataTest015--------");
625     struct hc_call_back callBack = {
626         Transmit,
627         GetProtocolParams,
628         SetSessionKey,
629         SetServiceResult,
630         ConfirmReceiveRequest
631     };
632 
633     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
634     ASSERT_TRUE(server != nullptr);
635     uint8_buff data001 = {
636         g_dataStr0151,
637         sizeof(g_dataStr0151),
638         strlen(reinterpret_cast<char *>(g_dataStr0151))
639     };
640     receive_data(server, &data001);
641     EXPECT_EQ(g_result, END_FAILED);
642 
643     uint8_t dataStr002[] = "{\"message\":32770,\"payload\":{"\
644                            "\"kcfData\":\"BFA2C2B30CF314401AB067D42655B199824AAF3F3D57926FA903C584BA12A8CB\"}}";
645 
646     uint8_buff data002 = {
647         dataStr002,
648         sizeof(dataStr002),
649         strlen(reinterpret_cast<char *>(dataStr002))
650     };
651     receive_data(server, &data002);
652     EXPECT_EQ(g_result, END_FAILED);
653 
654     uint8_t dataStr003[] = "{\"message\":32771,\"payload\":{"\
655                            "\"exAuthInfo\":\"93E41C6E20911B9B36BC7CE94EDC677E32D83BB6F3AD985FD4BC655B3D9ACBE2\"}}";
656     uint8_buff data003 = {
657         dataStr003,
658         sizeof(dataStr003),
659         strlen(reinterpret_cast<char *>(dataStr003))
660     };
661     receive_data(server, &data003);
662     EXPECT_EQ(g_result, END_FAILED);
663     destroy(&server);
664     LOG("--------ReceiveDataTest015--------");
665 }
666 
667 static HWTEST_F(ReceiveDataTest, ReceiveDataTest016_sts_response1_Ok, TestSize.Level2)
668 {
669     LOG("--------ReceiveDataTest016--------");
670     struct hc_call_back callBack = {
671         Transmit,
672         GetProtocolParams,
673         SetSessionKey,
674         SetServiceResult,
675         ConfirmReceiveRequest
676     };
677 
678     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
679     ASSERT_TRUE(server != nullptr);
680     struct hichain *hcServer = static_cast<struct hichain *>(server);
681     hcServer->operation_code = AUTHENTICATE;
682     struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
683     build_object(hcServer, STS_MODULAR, true, &params);
684     hcServer->sts_client->client_info.protocol_base_info.state = END_REQUEST;
685     hcServer->sts_client->client_info.protocol_base_info.last_state = PROTOCOL_INIT;
686     uint8_t dataStr[] = "{\"authForm\":0,\"message\":32785,\"payload\":{\"authData\":\"4A4EB6622524C"
687                         "BBF7DC96412A82BF4CB6022F50226A201DB3B3C55\",\"challenge\":\"A1714848785F27C22B31\","\
688                         "\"epk\":\"493CB95DB80320360BE5A3E3000E3E8E67371D6DCC57D1F97937ABABC219\","\
689                         "\"salt\":\"93E69DC0D48479316984\",\"version\":{\"currentVersion\":"\
690                         "\"1.0.0\",\"minVersion\":\"1.0.0\"},\"peerAuthId\":\"6B5A16BFA24C941F4C1B094D"\
691                         "6F2FA8DC8A45\",\"peerUserType\":\"0\"}}";
692     uint8_buff data = {
693         dataStr,
694         sizeof(dataStr),
695         strlen(reinterpret_cast<char *>(dataStr))
696     };
697     receive_data(server, &data);
698     EXPECT_EQ(g_result, END_FAILED);
699 
700     destroy(&server);
701     LOG("--------ReceiveDataTest016--------");
702 }
703 
704 uint8_t g_dataStr0171[] = "{\"authForm\":0,\"message\":32785,\"payload\":"
705                            "{\"authData\":\"0CE64CAFFA6AD1146EDB618E6F"
706                            "1DA15183EFDCAE08F909A6ABA7B9F2676F4E4C2A280A72"
707                            "0C3EBB069858DB473191ED51237E201CC697D3E10130CE"
708                            "8FB86FD57F66214643874AD17FE91EC3ACBC446CA666CD"
709                            "C5BDFB0EB5BE76DF673C\",\"challenge\":\"C591479"
710                            "0E4A81F59F286F2F31415A590\",\"epk\":\"8A870771"
711                            "CA779105041966DC462B3B12D7FF87129446F38D1AC39E"
712                            "1F408FEB0D\",\"salt\":\"C8EA30CAE1C16CCEEB652D"
713                            "AE671A97A3\",\"version\":{\"currentVersion\":"
714                            "\"1.0.0\",\"minVersion\":\"1.0.0\"},\"peerAuthId\":\"643"
715                            "3376364376365623839346634333933613239396566383"
716                            "532623466633335613161306437376334"
717                            "3861356233653062323539396162316436396232336136\","
718                            "\"peerUserType\":\"0\"}}";
719 
720 static HWTEST_F(ReceiveDataTest, ReceiveDataTest017_STS_fullprocess_success, TestSize.Level2)
721 {
722     LOG("--------ReceiveDataTest017--------");
723     struct hc_call_back callBack = {
724         Transmit,
725         GetProtocolParams,
726         SetSessionKey,
727         SetServiceResult,
728         ConfirmReceiveRequest
729     };
730     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
731     ASSERT_TRUE(server != nullptr);
732     struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
733     int32_t ret = authenticate_peer(server, &params);
734     EXPECT_EQ(ret, HC_OK);
735     uint8_buff data001 = {
736         g_dataStr0171,
737         sizeof(g_dataStr0171),
738         strlen(reinterpret_cast<char *>(g_dataStr0171))
739     };
740     ret = receive_data(server, &data001);
741     EXPECT_EQ(ret, HC_OK);
742     uint8_t dataStr002[] = "{\"authForm\":0,\"message\":32786,\"payload\":"
743                            "{\"authReturn\":\"57F9D09AA425FB83AB9BE2AF25FC9E5"
744                            "B82F630255AC62872447A9E5802\"}}";
745     uint8_buff data002 = {
746         dataStr002,
747         sizeof(dataStr002),
748         strlen(reinterpret_cast<char *>(dataStr002))
749     };
750     ret = receive_data(server, &data002);
751     EXPECT_EQ(ret, HC_OK);
752     destroy(&server);
753     LOG("--------ReceiveDataTest017--------");
754 }
755 
756 static HWTEST_F(ReceiveDataTest, ReceiveDataTest018_STS_auth_ack_error_message, TestSize.Level2)
757 {
758     LOG("--------ReceiveDataTest018--------");
759     struct hc_call_back callBack = {
760         Transmit,
761         GetProtocolParams,
762         SetSessionKey,
763         SetServiceResult,
764         ConfirmReceiveRequest
765     };
766 
767     hc_handle server = get_instance(&g_server_identity, HC_CENTRE, &callBack);
768     ASSERT_TRUE(server != nullptr);
769     struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
770     int32_t ret = authenticate_peer(server, &params);
771     EXPECT_EQ(ret, HC_OK);
772     uint8_t dataStr001[] = "{\"authForm\":0,\"message\":32785,\"payload\":{\"authData\":\"0CE64CAFFA6AD1146EDB618E6F"
773                          "1DA15183EFDCAE08F909A6ABA7B9F2676F4E4C2A280A720C3EBB069858DB473191ED51237E201CC"
774                          "697D3E10130CE8FB86FD57F66214643874AD17FE91EC3ACBC446CA666CDC5BDFB0EB5BE76DF673C\","
775                          "\"challenge\":\"C5914790E4A81F59F286F2F31415A590\",\"epk\":\"8A870771CA779105041966DC4"
776                          "62B3B12D7FF87129446F38D1AC39E1F408FEB0D\",\"salt\":\"C8EA30CAE1C16CCEEB652DAE671A97"
777                          "A3\",\"version\":{\"currentVersion\":\"1.0.0\",\"minVersion\":\"1.0.0\"},\"peerAuthId\":\"643"
778                          "3376364376365623839346634333933613239396566383532623466633335613161306437376334"
779                          "3861356233653062323539396162316436396232336136\",\"peerUserType\":\"0\"}}";
780     uint8_buff data001 = {
781         dataStr001,
782         sizeof(dataStr001),
783         strlen(reinterpret_cast<char *>(dataStr001))
784     };
785     ret = receive_data(server, &data001);
786     EXPECT_EQ(ret, HC_OK);
787 
788     uint8_t dataStr002[] = "{\"authForm\":0,\"message\":32786,\"payload\":{\"errorCode\":17}}";
789     uint8_buff data002 = {
790         dataStr002,
791         sizeof(dataStr002),
792         strlen(reinterpret_cast<char *>(dataStr002))
793     };
794     ret = receive_data(server, &data002);
795     EXPECT_EQ(ret, HC_OK);
796     destroy(&server);
797     LOG("--------ReceiveDataTest018--------");
798 }
799 
800 uint8_t g_dataStr0191[] = {"{\"message\":32769,\"payload\":{\"version\":{\"currentVersion\":\"1.0.0\","
801                         "\"minVersion\":\"1.0.0\"},"
802                         "\"salt\":\"025E4B3B2DD3B0E67395C760008A9154\","
803                         "\"epk\":\"24EBF8D727B19E8A43B20D22F744113C8B49B226D834B2E3C9CB5B0378732D6CF7C658BFB468682A6762"
804                         "2D5FE061F4D8102E4D8912377AA785919C529F0C1289F2188E641C6DC626054FC30304DC804FD9F059F5F5D8CEAA29"
805                         "A44814F10CC2A770C5BEB0BE86559E4FA85AD6E480DC2A627F5B28626E23B613EAC21101FF1C1DDA76E35A67A5A70B"
806                         "C24ECFD0C92F4F69A5B73FD67BE3EFC0904709BEC26490E21A4A04E29211DF393559B4A71F7368B68F529806DB90C5"
807                         "8315EDFF0A1738E26E82A54D2030A5B9B270DCF01A2377300135C55B3F6B273CF157246D0DF928D6E3E2886E79ECEB"
808                         "F69F98806C37A6128E4E93C9C43DD01B53963458AF60FA1C0E497F5FD4E807DA4F804EE145967D74792AD9B135C2F3"
809                         "A25FAA3427B3666C9D30539F008915A53D1FE2E2DDDCFCFD0815976332575F9EDBC9F4946A83116C7A29C38AC1A5FD"
810                         "8E5B894DCB4A1A29672D2647D6C734D4EA74E4A077D3403CAD0CA15318D9560FFF163D71B2991D70148F97CD524244"
811                         "7DF2B23C856D734CDD39220EC0\"}}"};
812 
813 uint8_t g_dataStr0192[] = {"{\"message\":32769,\"payload\":{\"version\":{\"currentVersion\":\"1.0.0\","
814                         "\"minVersion\":\"1.0.0\"},\"challenge\":\"76539E5634EDA735A94845C3A4F356D6\","
815                         "\"epk\":\"24EBF8D727B19E8A43B20D22F744113C8B49B226D834B2E3C9CB5B0378732D6CF7C658BFB468682A6762"
816                         "2D5FE061F4D8102E4D8912377AA785919C529F0C1289F2188E641C6DC626054FC30304DC804FD9F059F5F5D8CEAA29"
817                         "A44814F10CC2A770C5BEB0BE86559E4FA85AD6E480DC2A627F5B28626E23B613EAC21101FF1C1DDA76E35A67A5A70B"
818                         "C24ECFD0C92F4F69A5B73FD67BE3EFC0904709BEC26490E21A4A04E29211DF393559B4A71F7368B68F529806DB90C5"
819                         "8315EDFF0A1738E26E82A54D2030A5B9B270DCF01A2377300135C55B3F6B273CF157246D0DF928D6E3E2886E79ECEB"
820                         "F69F98806C37A6128E4E93C9C43DD01B53963458AF60FA1C0E497F5FD4E807DA4F804EE145967D74792AD9B135C2F3"
821                         "A25FAA3427B3666C9D30539F008915A53D1FE2E2DDDCFCFD0815976332575F9EDBC9F4946A83116C7A29C38AC1A5FD"
822                         "8E5B894DCB4A1A29672D2647D6C734D4EA74E4A077D3403CAD0CA15318D9560FFF163D71B2991D70148F97CD524244"
823                         "7DF2B23C856D734CDD39220EC0\"}}"};
824 
825 uint8_t g_dataStr0193[] = {"{\"message\":32769,\"payload\":{\"version\":{\"currentVersion\":\"1.0.0\","
826                         "\"minVersion\":\"1.0.0\"},\"challenge\":\"76539E5634EDA735A94845C3A4F356D6\","
827                         "\"salt\":\"025E4B3B2DD3B0E67395C760008A9154\",}}"};
828 
829 uint8_t g_dataStr0194[] = {"{\"message\":32769,\"payload\":{\"challenge\":\"76539E5634EDA735A94845C3A4F356D6\","
830                         "\"salt\":\"025E4B3B2DD3B0E67395C760008A9154\","
831                         "\"epk\":\"24EBF8D727B19E8A43B20D22F744113C8B49B226D834B2E3C9CB5B0378732D6CF7C658BFB468682A6762"
832                         "2D5FE061F4D8102E4D8912377AA785919C529F0C1289F2188E641C6DC626054FC30304DC804FD9F059F5F5D8CEAA29"
833                         "A44814F10CC2A770C5BEB0BE86559E4FA85AD6E480DC2A627F5B28626E23B613EAC21101FF1C1DDA76E35A67A5A70B"
834                         "C24ECFD0C92F4F69A5B73FD67BE3EFC0904709BEC26490E21A4A04E29211DF393559B4A71F7368B68F529806DB90C5"
835                         "8315EDFF0A1738E26E82A54D2030A5B9B270DCF01A2377300135C55B3F6B273CF157246D0DF928D6E3E2886E79ECEB"
836                         "F69F98806C37A6128E4E93C9C43DD01B53963458AF60FA1C0E497F5FD4E807DA4F804EE145967D74792AD9B135C2F3"
837                         "A25FAA3427B3666C9D30539F008915A53D1FE2E2DDDCFCFD0815976332575F9EDBC9F4946A83116C7A29C38AC1A5FD"
838                         "8E5B894DCB4A1A29672D2647D6C734D4EA74E4A077D3403CAD0CA15318D9560FFF163D71B2991D70148F97CD524244"
839                         "7DF2B23C856D734CDD39220EC0\"}}"};
840 
841 uint8_t g_dataStr0195[] = {"{\"message\":32769,\"payload\":{\"challenge\":\"76539E5634EDA735A94845C3A4F356D\","
842                         "\"salt\":\"025E4B3B2DD3B0E67395C760008A915\","
843                         "\"epk\":\"24EBF8D727B19E8A43B20D22F744113C8B49B226D834B2E3C9CB5B0378732D6CF7C658BFB468682A6762"
844                         "2D5FE061F4D8102E4D8912377AA785919C529F0C1289F2188E641C6DC626054FC30304DC804FD9F059F5F5D8CEAA29"
845                         "A44814F10CC2A770C5BEB0BE86559E4FA85AD6E480DC2A627F5B28626E23B613EAC21101FF1C1DDA76E35A67A5A70B"
846                         "C24ECFD0C92F4F69A5B73FD67BE3EFC0904709BEC26490E21A4A04E29211DF393559B4A71F7368B68F529806DB90C5"
847                         "8315EDFF0A1738E26E82A54D2030A5B9B270DCF01A2377300135C55B3F6B273CF157246D0DF928D6E3E2886E79ECEB"
848                         "F69F98806C37A6128E4E93C9C43DD01B53963458AF60FA1C0E497F5FD4E807DA4F804EE145967D74792AD9B135C2F3"
849                         "A25FAA3427B3666C9D30539F008915A53D1FE2E2DDDCFCFD0815976332575F9EDBC9F4946A83116C7A29C38AC1A5FD"
850                         "8E5B894DCB4A1A29672D2647D6C734D4EA74E4A077D3403CAD0CA15318D9560FFF163D71B2991D70148F97CD524244"
851                         "7DF2B23C856D734CDD39220EC\"}}"};
852 
853 static HWTEST_F(ReceiveDataTest, ReceiveDataTest019_pake_client_withoutrandom, TestSize.Level2)
854 {
855     LOG("--------ReceiveDataTest019--------");
856     struct hc_call_back callBack = {
857         Transmit,
858         GetProtocolParams,
859         SetSessionKey,
860         SetServiceResult,
861         ConfirmReceiveRequest
862     };
863     const struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
864     hc_handle server1 = get_instance(&g_server_identity, HC_CENTRE, &callBack);
865     ASSERT_TRUE(server1 != nullptr);
866     int32_t ret = start_pake(server1, &params);
867     EXPECT_EQ(ret, HC_OK);
868     uint8_buff data001 = {
869         g_dataStr0191,
870         sizeof(g_dataStr0191),
871         strlen(reinterpret_cast<char *>(g_dataStr0191))
872     };
873     ret = receive_data(server1, &data001);
874     EXPECT_EQ(ret, HC_OK);
875     destroy(&server1);
876     hc_handle server2 = get_instance(&g_server_identity, HC_CENTRE, &callBack);
877     ASSERT_TRUE(server2 != nullptr);
878     ret = start_pake(server2, &params);
879     EXPECT_EQ(ret, HC_OK);
880     uint8_buff data002 = {
881         g_dataStr0192,
882         sizeof(g_dataStr0192),
883         strlen(reinterpret_cast<char *>(g_dataStr0192))
884     };
885     ret = receive_data(server2, &data002);
886     EXPECT_EQ(ret, HC_OK);
887     destroy(&server2);
888     hc_handle server3 = get_instance(&g_server_identity, HC_CENTRE, &callBack);
889     ASSERT_TRUE(server3 != nullptr);
890     ret = start_pake(server3, &params);
891     EXPECT_EQ(ret, HC_OK);
892     uint8_buff data003 = {
893         g_dataStr0193,
894         sizeof(g_dataStr0193),
895         strlen(reinterpret_cast<char *>(g_dataStr0193))
896     };
897     ret = receive_data(server3, &data003);
898     EXPECT_EQ(ret, HC_OK);
899     destroy(&server3);
900     LOG("--------ReceiveDataTest019--------");
901 }
902 
903 static HWTEST_F(ReceiveDataTest, ReceiveDataTest020_pake_client_withoutrandom2, TestSize.Level2)
904 {
905     LOG("--------ReceiveDataTest020--------");
906     struct hc_call_back callBack = {
907         Transmit,
908         GetProtocolParams,
909         SetSessionKey,
910         SetServiceResult,
911         ConfirmReceiveRequest
912     };
913     const struct operation_parameter params = {g_testServerAuthId, g_testClientAuthId, KEY_LEN};
914     hc_handle server4 = get_instance(&g_server_identity, HC_CENTRE, &callBack);
915     ASSERT_TRUE(server4 != nullptr);
916     int32_t ret = start_pake(server4, &params);
917     EXPECT_EQ(ret, HC_OK);
918     uint8_buff data004 = {
919         g_dataStr0194,
920         sizeof(g_dataStr0194),
921         strlen(reinterpret_cast<char *>(g_dataStr0194))
922     };
923     ret = receive_data(server4, &data004);
924     EXPECT_EQ(ret, HC_OK);
925     uint8_buff data005 = {
926         g_dataStr0195,
927         sizeof(g_dataStr0195),
928         strlen(reinterpret_cast<char *>(g_dataStr0195))
929     };
930     ret = receive_data(server4, &data005);
931     EXPECT_EQ(ret, HC_OK);
932     destroy(&server4);
933 
934     LOG("--------ReceiveDataTest020--------");
935 }
936 }