1060ff233Sopenharmony_ci/*
2060ff233Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
3060ff233Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4060ff233Sopenharmony_ci * you may not use this file except in compliance with the License.
5060ff233Sopenharmony_ci * You may obtain a copy of the License at
6060ff233Sopenharmony_ci *
7060ff233Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8060ff233Sopenharmony_ci *
9060ff233Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10060ff233Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11060ff233Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12060ff233Sopenharmony_ci * See the License for the specific language governing permissions and
13060ff233Sopenharmony_ci * limitations under the License.
14060ff233Sopenharmony_ci */
15060ff233Sopenharmony_ci
16060ff233Sopenharmony_ci#include "softbus_aes_encrypt.h"
17060ff233Sopenharmony_ci
18060ff233Sopenharmony_ci#include <cstring>
19060ff233Sopenharmony_ci#include <securec.h>
20060ff233Sopenharmony_ci
21060ff233Sopenharmony_ci#include "softbus_adapter_crypto.h"
22060ff233Sopenharmony_ci#include "softbus_adapter_mem.h"
23060ff233Sopenharmony_ci#include "softbus_errcode.h"
24060ff233Sopenharmony_ci#include "gtest/gtest.h"
25060ff233Sopenharmony_ci
26060ff233Sopenharmony_ciusing namespace std;
27060ff233Sopenharmony_ciusing namespace testing::ext;
28060ff233Sopenharmony_ci
29060ff233Sopenharmony_cinamespace OHOS {
30060ff233Sopenharmony_ciclass AdapterDsoftbusAesCryptoTest : public testing::Test {
31060ff233Sopenharmony_ciprotected:
32060ff233Sopenharmony_ci    static void SetUpTestCase(void);
33060ff233Sopenharmony_ci    static void TearDownTestCase(void);
34060ff233Sopenharmony_ci    void SetUp();
35060ff233Sopenharmony_ci    void TearDown();
36060ff233Sopenharmony_ci};
37060ff233Sopenharmony_civoid AdapterDsoftbusAesCryptoTest::SetUpTestCase(void) { }
38060ff233Sopenharmony_civoid AdapterDsoftbusAesCryptoTest::TearDownTestCase(void) { }
39060ff233Sopenharmony_civoid AdapterDsoftbusAesCryptoTest::SetUp() { }
40060ff233Sopenharmony_civoid AdapterDsoftbusAesCryptoTest::TearDown() { }
41060ff233Sopenharmony_ci
42060ff233Sopenharmony_ci/*
43060ff233Sopenharmony_ci * @tc.name: SoftBusGenerateHmacHash001
44060ff233Sopenharmony_ci * @tc.desc: parameters are Legal
45060ff233Sopenharmony_ci * @tc.type: FUNC
46060ff233Sopenharmony_ci * @tc.require: I5OHDE
47060ff233Sopenharmony_ci */
48060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusGenerateHmacHash001, TestSize.Level0)
49060ff233Sopenharmony_ci{
50060ff233Sopenharmony_ci    uint32_t randLen = 8;
51060ff233Sopenharmony_ci    uint32_t rootKeyLen = 16;
52060ff233Sopenharmony_ci    uint32_t hashLen = 32;
53060ff233Sopenharmony_ci    uint8_t randStr[randLen];
54060ff233Sopenharmony_ci    uint8_t rootKey[rootKeyLen];
55060ff233Sopenharmony_ci    uint8_t hash[hashLen];
56060ff233Sopenharmony_ci
57060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(randStr, randLen);
58060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
59060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(rootKey, rootKeyLen);
60060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
61060ff233Sopenharmony_ci    EncryptKey randomKey = { randStr, randLen };
62060ff233Sopenharmony_ci
63060ff233Sopenharmony_ci    ret = SoftBusGenerateHmacHash(&randomKey, rootKey, rootKeyLen, hash, hashLen);
64060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
65060ff233Sopenharmony_ci}
66060ff233Sopenharmony_ci
67060ff233Sopenharmony_ci/*
68060ff233Sopenharmony_ci * @tc.name: SoftBusGenerateHmacHash002
69060ff233Sopenharmony_ci * @tc.desc: parameter is nullptr
70060ff233Sopenharmony_ci * @tc.type: FUNC
71060ff233Sopenharmony_ci * @tc.require: I5OHDE
72060ff233Sopenharmony_ci */
73060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusGenerateHmacHash002, TestSize.Level0)
74060ff233Sopenharmony_ci{
75060ff233Sopenharmony_ci    uint32_t randLen = 8;
76060ff233Sopenharmony_ci    uint32_t rootKeyLen = 16;
77060ff233Sopenharmony_ci    uint32_t hashLen = 32;
78060ff233Sopenharmony_ci    uint8_t randStr[randLen];
79060ff233Sopenharmony_ci    uint8_t rootKey[rootKeyLen];
80060ff233Sopenharmony_ci    uint8_t hash[hashLen];
81060ff233Sopenharmony_ci
82060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(randStr, randLen);
83060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
84060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(rootKey, rootKeyLen);
85060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
86060ff233Sopenharmony_ci    EncryptKey randomKey = { randStr, randLen };
87060ff233Sopenharmony_ci
88060ff233Sopenharmony_ci    ret = SoftBusGenerateHmacHash(nullptr, rootKey, rootKeyLen, hash, hashLen);
89060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
90060ff233Sopenharmony_ci    ret = SoftBusGenerateHmacHash(&randomKey, nullptr, rootKeyLen, hash, hashLen);
91060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
92060ff233Sopenharmony_ci    ret = SoftBusGenerateHmacHash(&randomKey, rootKey, rootKeyLen, nullptr, hashLen);
93060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
94060ff233Sopenharmony_ci}
95060ff233Sopenharmony_ci
96060ff233Sopenharmony_ci/*
97060ff233Sopenharmony_ci * @tc.name: SoftBusGenerateHmacHash003
98060ff233Sopenharmony_ci * @tc.desc: rootKeyLen or hashLen is illegal
99060ff233Sopenharmony_ci * @tc.type: FUNC
100060ff233Sopenharmony_ci * @tc.require: I5OHDE
101060ff233Sopenharmony_ci */
102060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusGenerateHmacHash003, TestSize.Level0)
103060ff233Sopenharmony_ci{
104060ff233Sopenharmony_ci    uint32_t randLen = 8;
105060ff233Sopenharmony_ci    uint32_t rootKeyLen = 16;
106060ff233Sopenharmony_ci    uint32_t hashLen = 32;
107060ff233Sopenharmony_ci    uint32_t rootKeyLen1 = 0;
108060ff233Sopenharmony_ci    uint32_t hashLen1 = 0;
109060ff233Sopenharmony_ci    uint8_t randStr[randLen];
110060ff233Sopenharmony_ci    uint8_t rootKey[rootKeyLen];
111060ff233Sopenharmony_ci    uint8_t hash[hashLen];
112060ff233Sopenharmony_ci
113060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(randStr, randLen);
114060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
115060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(rootKey, rootKeyLen);
116060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
117060ff233Sopenharmony_ci    EncryptKey randomKey = { randStr, randLen };
118060ff233Sopenharmony_ci
119060ff233Sopenharmony_ci    ret = SoftBusGenerateHmacHash(&randomKey, rootKey, rootKeyLen1, hash, hashLen);
120060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
121060ff233Sopenharmony_ci    ret = SoftBusGenerateHmacHash(&randomKey, rootKey, rootKeyLen, hash, hashLen1);
122060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
123060ff233Sopenharmony_ci}
124060ff233Sopenharmony_ci
125060ff233Sopenharmony_ci/*
126060ff233Sopenharmony_ci * @tc.name: SoftBusAesCfbRootEncrypt001
127060ff233Sopenharmony_ci * @tc.desc: parameters are Legal
128060ff233Sopenharmony_ci * @tc.type: FUNC
129060ff233Sopenharmony_ci * @tc.require: I5OHDE
130060ff233Sopenharmony_ci */
131060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesCfbRootEncrypt001, TestSize.Level0)
132060ff233Sopenharmony_ci{
133060ff233Sopenharmony_ci    uint32_t randLen = 8;
134060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
135060ff233Sopenharmony_ci    uint32_t rootKeyLen = 16;
136060ff233Sopenharmony_ci    uint8_t randStr[randLen];
137060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
138060ff233Sopenharmony_ci    uint8_t rKey[rootKeyLen];
139060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
140060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
141060ff233Sopenharmony_ci
142060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
143060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
144060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randStr, randLen);
145060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
146060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(rKey, rootKeyLen);
147060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
148060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
149060ff233Sopenharmony_ci    EncryptKey randomKey = { randStr, randLen };
150060ff233Sopenharmony_ci    EncryptKey rootKey = { rKey, rootKeyLen };
151060ff233Sopenharmony_ci
152060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(&encryptInData, &randomKey, &rootKey, ENCRYPT_MODE, &encryptOutData);
153060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
154060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(
155060ff233Sopenharmony_ci        (const AesInputData *)&encryptOutData, &randomKey, &rootKey, DECRYPT_MODE, &decryptOutData);
156060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
157060ff233Sopenharmony_ci
158060ff233Sopenharmony_ci    ret = memcmp((const char *)decryptOutData.data, (const char *)encryptInData.data, decryptOutData.len);
159060ff233Sopenharmony_ci    EXPECT_EQ(0, ret);
160060ff233Sopenharmony_ci    SoftBusFree(encryptOutData.data);
161060ff233Sopenharmony_ci    SoftBusFree(decryptOutData.data);
162060ff233Sopenharmony_ci}
163060ff233Sopenharmony_ci
164060ff233Sopenharmony_ci/*
165060ff233Sopenharmony_ci * @tc.name: SoftBusAesCfbRootEncrypt002
166060ff233Sopenharmony_ci * @tc.desc: encrypt parameter is nullptr
167060ff233Sopenharmony_ci * @tc.type: FUNC
168060ff233Sopenharmony_ci * @tc.require: I5OHDE
169060ff233Sopenharmony_ci */
170060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesCfbRootEncrypt002, TestSize.Level0)
171060ff233Sopenharmony_ci{
172060ff233Sopenharmony_ci    uint32_t randLen = 8;
173060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
174060ff233Sopenharmony_ci    uint32_t rootKeyLen = 16;
175060ff233Sopenharmony_ci    uint8_t randStr[randLen];
176060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
177060ff233Sopenharmony_ci    uint8_t rKey[rootKeyLen];
178060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
179060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
180060ff233Sopenharmony_ci
181060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
182060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
183060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randStr, randLen);
184060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
185060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(rKey, rootKeyLen);
186060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
187060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
188060ff233Sopenharmony_ci    EncryptKey randomKey = { randStr, randLen };
189060ff233Sopenharmony_ci    EncryptKey rootKey = { rKey, rootKeyLen };
190060ff233Sopenharmony_ci
191060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(nullptr, &randomKey, &rootKey, ENCRYPT_MODE, &encryptOutData);
192060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
193060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(
194060ff233Sopenharmony_ci        (const AesInputData *)&encryptOutData, &randomKey, &rootKey, DECRYPT_MODE, &decryptOutData);
195060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
196060ff233Sopenharmony_ci
197060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(&encryptInData, nullptr, &rootKey, ENCRYPT_MODE, &encryptOutData);
198060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
199060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(
200060ff233Sopenharmony_ci        (const AesInputData *)&encryptOutData, &randomKey, &rootKey, DECRYPT_MODE, &decryptOutData);
201060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
202060ff233Sopenharmony_ci
203060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(&encryptInData, &randomKey, nullptr, ENCRYPT_MODE, &encryptOutData);
204060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
205060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(
206060ff233Sopenharmony_ci        (const AesInputData *)&encryptOutData, &randomKey, &rootKey, DECRYPT_MODE, &decryptOutData);
207060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
208060ff233Sopenharmony_ci
209060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(&encryptInData, &randomKey, &rootKey, ENCRYPT_MODE, nullptr);
210060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
211060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(
212060ff233Sopenharmony_ci        (const AesInputData *)&encryptOutData, &randomKey, &rootKey, DECRYPT_MODE, &decryptOutData);
213060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
214060ff233Sopenharmony_ci}
215060ff233Sopenharmony_ci
216060ff233Sopenharmony_ci/*
217060ff233Sopenharmony_ci * @tc.name: SoftBusAesCfbRootEncrypt003
218060ff233Sopenharmony_ci * @tc.desc: decrypt parameter is nullptr
219060ff233Sopenharmony_ci * @tc.type: FUNC
220060ff233Sopenharmony_ci * @tc.require: I5OHDE
221060ff233Sopenharmony_ci */
222060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesCfbRootEncrypt003, TestSize.Level0)
223060ff233Sopenharmony_ci{
224060ff233Sopenharmony_ci    uint32_t randLen = 8;
225060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
226060ff233Sopenharmony_ci    uint32_t rootKeyLen = 16;
227060ff233Sopenharmony_ci    uint8_t randStr[randLen];
228060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
229060ff233Sopenharmony_ci    uint8_t rKey[rootKeyLen];
230060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
231060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
232060ff233Sopenharmony_ci
233060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
234060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
235060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randStr, randLen);
236060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
237060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(rKey, rootKeyLen);
238060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
239060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
240060ff233Sopenharmony_ci    EncryptKey randomKey = { randStr, randLen };
241060ff233Sopenharmony_ci    EncryptKey rootKey = { rKey, rootKeyLen };
242060ff233Sopenharmony_ci
243060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(&encryptInData, &randomKey, &rootKey, ENCRYPT_MODE, &encryptOutData);
244060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
245060ff233Sopenharmony_ci
246060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(nullptr, &randomKey, &rootKey, DECRYPT_MODE, &decryptOutData);
247060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
248060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(
249060ff233Sopenharmony_ci        (const AesInputData *)&encryptOutData, nullptr, &rootKey, DECRYPT_MODE, &decryptOutData);
250060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
251060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(
252060ff233Sopenharmony_ci        (const AesInputData *)&encryptOutData, &randomKey, nullptr, DECRYPT_MODE, &decryptOutData);
253060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
254060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt((const AesInputData *)&encryptOutData, &randomKey, &rootKey, DECRYPT_MODE, nullptr);
255060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
256060ff233Sopenharmony_ci
257060ff233Sopenharmony_ci    SoftBusFree(encryptOutData.data);
258060ff233Sopenharmony_ci}
259060ff233Sopenharmony_ci
260060ff233Sopenharmony_ci/*
261060ff233Sopenharmony_ci * @tc.name: SoftBusAesCfbRootEncrypt004
262060ff233Sopenharmony_ci * @tc.desc: encMode is illegal
263060ff233Sopenharmony_ci * @tc.type: FUNC
264060ff233Sopenharmony_ci * @tc.require: I5OHDE
265060ff233Sopenharmony_ci */
266060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesCfbRootEncrypt004, TestSize.Level0)
267060ff233Sopenharmony_ci{
268060ff233Sopenharmony_ci    uint32_t randLen = 8;
269060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
270060ff233Sopenharmony_ci    uint32_t rootKeyLen = 16;
271060ff233Sopenharmony_ci    int32_t encMode = 2;
272060ff233Sopenharmony_ci    uint8_t randStr[randLen];
273060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
274060ff233Sopenharmony_ci    uint8_t rKey[rootKeyLen];
275060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
276060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
277060ff233Sopenharmony_ci
278060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
279060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
280060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randStr, randLen);
281060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
282060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(rKey, rootKeyLen);
283060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
284060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
285060ff233Sopenharmony_ci    EncryptKey randomKey = { randStr, randLen };
286060ff233Sopenharmony_ci    EncryptKey rootKey = { rKey, rootKeyLen };
287060ff233Sopenharmony_ci
288060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(&encryptInData, &randomKey, &rootKey, encMode, &encryptOutData);
289060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
290060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(
291060ff233Sopenharmony_ci        (const AesInputData *)&encryptOutData, &randomKey, &rootKey, DECRYPT_MODE, &decryptOutData);
292060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
293060ff233Sopenharmony_ci
294060ff233Sopenharmony_ci    ret = SoftBusAesCfbRootEncrypt(&encryptInData, &randomKey, &rootKey, ENCRYPT_MODE, &encryptOutData);
295060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
296060ff233Sopenharmony_ci    ret =
297060ff233Sopenharmony_ci        SoftBusAesCfbRootEncrypt((const AesInputData *)&encryptOutData, &randomKey, &rootKey, encMode, &decryptOutData);
298060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
299060ff233Sopenharmony_ci    SoftBusFree(encryptOutData.data);
300060ff233Sopenharmony_ci}
301060ff233Sopenharmony_ci
302060ff233Sopenharmony_ci/*
303060ff233Sopenharmony_ci * @tc.name: SoftBusAesGcmEncrypt001
304060ff233Sopenharmony_ci * @tc.desc: parameters are Legal
305060ff233Sopenharmony_ci * @tc.type: FUNC
306060ff233Sopenharmony_ci * @tc.require: I5OHDE
307060ff233Sopenharmony_ci */
308060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesGcmEncrypt001, TestSize.Level0)
309060ff233Sopenharmony_ci{
310060ff233Sopenharmony_ci    uint32_t randKeyLen = 32;
311060ff233Sopenharmony_ci    uint32_t randIvLen = 16;
312060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
313060ff233Sopenharmony_ci    uint8_t randSession[randKeyLen];
314060ff233Sopenharmony_ci    uint8_t randIv[randIvLen];
315060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
316060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
317060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
318060ff233Sopenharmony_ci
319060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
320060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
321060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randSession, randKeyLen);
322060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
323060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randIv, randIvLen);
324060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
325060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
326060ff233Sopenharmony_ci    AesCipherKey cipherKey = { randSession, randKeyLen, randIv, randIvLen };
327060ff233Sopenharmony_ci
328060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt(&encryptInData, &cipherKey, ENCRYPT_MODE, &encryptOutData);
329060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
330060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt((const AesInputData *)&encryptOutData, &cipherKey, DECRYPT_MODE, &decryptOutData);
331060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
332060ff233Sopenharmony_ci
333060ff233Sopenharmony_ci    ret = memcmp((const char *)decryptOutData.data, (const char *)encryptInData.data, decryptOutData.len);
334060ff233Sopenharmony_ci    EXPECT_EQ(0, ret);
335060ff233Sopenharmony_ci    SoftBusFree(encryptOutData.data);
336060ff233Sopenharmony_ci    SoftBusFree(decryptOutData.data);
337060ff233Sopenharmony_ci}
338060ff233Sopenharmony_ci
339060ff233Sopenharmony_ci/*
340060ff233Sopenharmony_ci * @tc.name: SoftBusAesGcmEncrypt002
341060ff233Sopenharmony_ci * @tc.desc: encrypt parameter is nullptr
342060ff233Sopenharmony_ci * @tc.type: FUNC
343060ff233Sopenharmony_ci * @tc.require: I5OHDE
344060ff233Sopenharmony_ci */
345060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesGcmEncrypt002, TestSize.Level0)
346060ff233Sopenharmony_ci{
347060ff233Sopenharmony_ci    uint32_t randKeyLen = 32;
348060ff233Sopenharmony_ci    uint32_t randIvLen = 16;
349060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
350060ff233Sopenharmony_ci    uint8_t randSession[randKeyLen];
351060ff233Sopenharmony_ci    uint8_t randIv[randIvLen];
352060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
353060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
354060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
355060ff233Sopenharmony_ci
356060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
357060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
358060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randSession, randKeyLen);
359060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
360060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randIv, randIvLen);
361060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
362060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
363060ff233Sopenharmony_ci    AesCipherKey cipherKey = { randSession, randKeyLen, randIv, randIvLen };
364060ff233Sopenharmony_ci
365060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt(nullptr, &cipherKey, ENCRYPT_MODE, &encryptOutData);
366060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
367060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt((const AesInputData *)&encryptOutData, &cipherKey, DECRYPT_MODE, &decryptOutData);
368060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
369060ff233Sopenharmony_ci
370060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt(&encryptInData, nullptr, ENCRYPT_MODE, &encryptOutData);
371060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
372060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt((const AesInputData *)&encryptOutData, &cipherKey, DECRYPT_MODE, &decryptOutData);
373060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
374060ff233Sopenharmony_ci
375060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt(&encryptInData, &cipherKey, ENCRYPT_MODE, nullptr);
376060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
377060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt((const AesInputData *)&encryptOutData, &cipherKey, DECRYPT_MODE, &decryptOutData);
378060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
379060ff233Sopenharmony_ci}
380060ff233Sopenharmony_ci
381060ff233Sopenharmony_ci/*
382060ff233Sopenharmony_ci * @tc.name: SoftBusAesGcmEncrypt003
383060ff233Sopenharmony_ci * @tc.desc: decrypt parameter is nullptr
384060ff233Sopenharmony_ci * @tc.type: FUNC
385060ff233Sopenharmony_ci * @tc.require: I5OHDE
386060ff233Sopenharmony_ci */
387060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesGcmEncrypt003, TestSize.Level0)
388060ff233Sopenharmony_ci{
389060ff233Sopenharmony_ci    uint32_t randKeyLen = 32;
390060ff233Sopenharmony_ci    uint32_t randIvLen = 16;
391060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
392060ff233Sopenharmony_ci    uint8_t randSession[randKeyLen];
393060ff233Sopenharmony_ci    uint8_t randIv[randIvLen];
394060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
395060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
396060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
397060ff233Sopenharmony_ci
398060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
399060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
400060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randSession, randKeyLen);
401060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
402060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randIv, randIvLen);
403060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
404060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
405060ff233Sopenharmony_ci    AesCipherKey cipherKey = { randSession, randKeyLen, randIv, randIvLen };
406060ff233Sopenharmony_ci
407060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt(&encryptInData, &cipherKey, ENCRYPT_MODE, &encryptOutData);
408060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
409060ff233Sopenharmony_ci
410060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt(nullptr, &cipherKey, DECRYPT_MODE, &decryptOutData);
411060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
412060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt((const AesInputData *)&encryptOutData, nullptr, DECRYPT_MODE, &decryptOutData);
413060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
414060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt((const AesInputData *)&encryptOutData, &cipherKey, DECRYPT_MODE, nullptr);
415060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
416060ff233Sopenharmony_ci
417060ff233Sopenharmony_ci    SoftBusFree(encryptOutData.data);
418060ff233Sopenharmony_ci}
419060ff233Sopenharmony_ci
420060ff233Sopenharmony_ci/*
421060ff233Sopenharmony_ci * @tc.name: SoftBusAesGcmEncrypt004
422060ff233Sopenharmony_ci * @tc.desc: decrypt parameter is nullptr
423060ff233Sopenharmony_ci * @tc.type: FUNC
424060ff233Sopenharmony_ci * @tc.require: I5OHDE
425060ff233Sopenharmony_ci */
426060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesGcmEncrypt004, TestSize.Level0)
427060ff233Sopenharmony_ci{
428060ff233Sopenharmony_ci    uint32_t randKeyLen = 32;
429060ff233Sopenharmony_ci    uint32_t randIvLen = 16;
430060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
431060ff233Sopenharmony_ci    int32_t encMode = 2;
432060ff233Sopenharmony_ci    uint8_t randSession[randKeyLen];
433060ff233Sopenharmony_ci    uint8_t randIv[randIvLen];
434060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
435060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
436060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
437060ff233Sopenharmony_ci
438060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
439060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
440060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randSession, randKeyLen);
441060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
442060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randIv, randIvLen);
443060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
444060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
445060ff233Sopenharmony_ci    AesCipherKey cipherKey = { randSession, randKeyLen, randIv, randIvLen };
446060ff233Sopenharmony_ci
447060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt(&encryptInData, &cipherKey, encMode, &encryptOutData);
448060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
449060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt((const AesInputData *)&encryptOutData, &cipherKey, DECRYPT_MODE, &decryptOutData);
450060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
451060ff233Sopenharmony_ci
452060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt(&encryptInData, &cipherKey, ENCRYPT_MODE, &encryptOutData);
453060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
454060ff233Sopenharmony_ci    ret = SoftBusAesGcmEncrypt((const AesInputData *)&encryptOutData, &cipherKey, encMode, &decryptOutData);
455060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
456060ff233Sopenharmony_ci
457060ff233Sopenharmony_ci    SoftBusFree(encryptOutData.data);
458060ff233Sopenharmony_ci}
459060ff233Sopenharmony_ci
460060ff233Sopenharmony_ci/*
461060ff233Sopenharmony_ci* @tc.name: SoftBusAesCfbEncrypt001
462060ff233Sopenharmony_ci* @tc.desc: parameters are Legal
463060ff233Sopenharmony_ci* @tc.type: FUNC
464060ff233Sopenharmony_ci* @tc.require: I5OHDE
465060ff233Sopenharmony_ci*/
466060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesCfbEncrypt001, TestSize.Level0)
467060ff233Sopenharmony_ci{
468060ff233Sopenharmony_ci    uint32_t randKeyLen = 32;
469060ff233Sopenharmony_ci    uint32_t randIvLen = 16;
470060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
471060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
472060ff233Sopenharmony_ci    uint8_t randSession[randKeyLen];
473060ff233Sopenharmony_ci    uint8_t randIv[randIvLen];
474060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
475060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
476060ff233Sopenharmony_ci
477060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
478060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
479060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randSession, randKeyLen);
480060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
481060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randIv, randIvLen);
482060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
483060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
484060ff233Sopenharmony_ci    AesCipherKey cipherKey = { randSession, randKeyLen, randIv, randIvLen };
485060ff233Sopenharmony_ci
486060ff233Sopenharmony_ci    uint8_t randSession1[randKeyLen];
487060ff233Sopenharmony_ci    (void)memcpy_s(randSession1, randKeyLen, randSession, randKeyLen);
488060ff233Sopenharmony_ci    uint8_t randIv1[randIvLen];
489060ff233Sopenharmony_ci    (void)memcpy_s(randIv1, randIvLen, randIv, randIvLen);
490060ff233Sopenharmony_ci
491060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt(&encryptInData, &cipherKey, ENCRYPT_MODE, &encryptOutData);
492060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
493060ff233Sopenharmony_ci
494060ff233Sopenharmony_ci    AesCipherKey cipherKey1 = { randSession1, randKeyLen, randIv1, randIvLen };
495060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt((const AesInputData *)&encryptOutData, &cipherKey1, DECRYPT_MODE, &decryptOutData);
496060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
497060ff233Sopenharmony_ci
498060ff233Sopenharmony_ci    ret = memcmp((const char *)decryptOutData.data, (const char *)encryptInData.data, decryptOutData.len);
499060ff233Sopenharmony_ci    EXPECT_EQ(0, ret);
500060ff233Sopenharmony_ci    SoftBusFree(encryptOutData.data);
501060ff233Sopenharmony_ci    SoftBusFree(decryptOutData.data);
502060ff233Sopenharmony_ci}
503060ff233Sopenharmony_ci
504060ff233Sopenharmony_ci/*
505060ff233Sopenharmony_ci* @tc.name: SoftBusAesCfbEncrypt002
506060ff233Sopenharmony_ci* @tc.desc: encrypt parameter is nullptr
507060ff233Sopenharmony_ci* @tc.require: I5OHDE
508060ff233Sopenharmony_ci*/
509060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesCfbEncrypt002, TestSize.Level0)
510060ff233Sopenharmony_ci{
511060ff233Sopenharmony_ci    uint32_t randKeyLen = 32;
512060ff233Sopenharmony_ci    uint32_t randIvLen = 16;
513060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
514060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
515060ff233Sopenharmony_ci    uint8_t randSession[randKeyLen];
516060ff233Sopenharmony_ci    uint8_t randIv[randIvLen];
517060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
518060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
519060ff233Sopenharmony_ci
520060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
521060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
522060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randSession, randKeyLen);
523060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
524060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randIv, randIvLen);
525060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
526060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
527060ff233Sopenharmony_ci    AesCipherKey cipherKey = { randSession, randKeyLen, randIv, randIvLen };
528060ff233Sopenharmony_ci
529060ff233Sopenharmony_ci    uint8_t randSession1[randKeyLen];
530060ff233Sopenharmony_ci    (void)memcpy_s(randSession1, randKeyLen, randSession, randKeyLen);
531060ff233Sopenharmony_ci    uint8_t randIv1[randIvLen];
532060ff233Sopenharmony_ci    (void)memcpy_s(randIv1, randIvLen, randIv, randIvLen);
533060ff233Sopenharmony_ci    AesCipherKey cipherKey1 = { randSession1, randKeyLen, randIv1, randIvLen };
534060ff233Sopenharmony_ci
535060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt(nullptr, &cipherKey, ENCRYPT_MODE, &encryptOutData);
536060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
537060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt((const AesInputData *)&encryptOutData, &cipherKey1, DECRYPT_MODE, &decryptOutData);
538060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
539060ff233Sopenharmony_ci
540060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt(&encryptInData, nullptr, ENCRYPT_MODE, &encryptOutData);
541060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
542060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt((const AesInputData *)&encryptOutData, &cipherKey1, DECRYPT_MODE, &decryptOutData);
543060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
544060ff233Sopenharmony_ci
545060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt(&encryptInData, &cipherKey, ENCRYPT_MODE, nullptr);
546060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
547060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt((const AesInputData *)&encryptOutData, &cipherKey1, DECRYPT_MODE, &decryptOutData);
548060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
549060ff233Sopenharmony_ci}
550060ff233Sopenharmony_ci
551060ff233Sopenharmony_ci/*
552060ff233Sopenharmony_ci* @tc.name: SoftBusAesCfbEncrypt003
553060ff233Sopenharmony_ci* @tc.desc: decrypt parameter is nullptr
554060ff233Sopenharmony_ci* @tc.type: FUNC
555060ff233Sopenharmony_ci* @tc.require: I5OHDE
556060ff233Sopenharmony_ci*/
557060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesCfbEncrypt003, TestSize.Level0)
558060ff233Sopenharmony_ci{
559060ff233Sopenharmony_ci    uint32_t randKeyLen = 32;
560060ff233Sopenharmony_ci    uint32_t randIvLen = 16;
561060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
562060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
563060ff233Sopenharmony_ci    uint8_t randSession[randKeyLen];
564060ff233Sopenharmony_ci    uint8_t randIv[randIvLen];
565060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
566060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
567060ff233Sopenharmony_ci
568060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
569060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
570060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randSession, randKeyLen);
571060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
572060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randIv, randIvLen);
573060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
574060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
575060ff233Sopenharmony_ci    AesCipherKey cipherKey = { randSession, randKeyLen, randIv, randIvLen };
576060ff233Sopenharmony_ci
577060ff233Sopenharmony_ci    uint8_t randSession1[randKeyLen];
578060ff233Sopenharmony_ci    (void)memcpy_s(randSession1, randKeyLen, randSession, randKeyLen);
579060ff233Sopenharmony_ci    uint8_t randIv1[randIvLen];
580060ff233Sopenharmony_ci    (void)memcpy_s(randIv1, randIvLen, randIv, randIvLen);
581060ff233Sopenharmony_ci    AesCipherKey cipherKey1 = { randSession1, randKeyLen, randIv1, randIvLen };
582060ff233Sopenharmony_ci
583060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt(&encryptInData, &cipherKey, ENCRYPT_MODE, &encryptOutData);
584060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
585060ff233Sopenharmony_ci
586060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt(nullptr, &cipherKey1, DECRYPT_MODE, &decryptOutData);
587060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
588060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt((const AesInputData *)&encryptOutData, nullptr, DECRYPT_MODE, &decryptOutData);
589060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
590060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt((const AesInputData *)&encryptOutData, &cipherKey1, DECRYPT_MODE, nullptr);
591060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
592060ff233Sopenharmony_ci
593060ff233Sopenharmony_ci    SoftBusFree(encryptOutData.data);
594060ff233Sopenharmony_ci}
595060ff233Sopenharmony_ci
596060ff233Sopenharmony_ci/*
597060ff233Sopenharmony_ci* @tc.name: SoftBusAesCfbEncrypt004
598060ff233Sopenharmony_ci* @tc.desc: encMode is illegal
599060ff233Sopenharmony_ci* @tc.type: FUNC
600060ff233Sopenharmony_ci* @tc.require: I5OHDE
601060ff233Sopenharmony_ci*/
602060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusAesCryptoTest, SoftBusAesCfbEncrypt004, TestSize.Level0)
603060ff233Sopenharmony_ci{
604060ff233Sopenharmony_ci    uint32_t randKeyLen = 32;
605060ff233Sopenharmony_ci    uint32_t randIvLen = 16;
606060ff233Sopenharmony_ci    uint32_t inDataLen = 10;
607060ff233Sopenharmony_ci    int32_t encMode = 2;
608060ff233Sopenharmony_ci    uint8_t inData[inDataLen];
609060ff233Sopenharmony_ci    uint8_t randSession[randKeyLen];
610060ff233Sopenharmony_ci    uint8_t randIv[randIvLen];
611060ff233Sopenharmony_ci    AesOutputData encryptOutData = { 0 };
612060ff233Sopenharmony_ci    AesOutputData decryptOutData = { 0 };
613060ff233Sopenharmony_ci
614060ff233Sopenharmony_ci    int32_t ret = SoftBusGenerateRandomArray(inData, inDataLen);
615060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
616060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randSession, randKeyLen);
617060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
618060ff233Sopenharmony_ci    ret = SoftBusGenerateRandomArray(randIv, randIvLen);
619060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
620060ff233Sopenharmony_ci    AesInputData encryptInData = { inData, inDataLen };
621060ff233Sopenharmony_ci    AesCipherKey cipherKey = { randSession, randKeyLen, randIv, randIvLen };
622060ff233Sopenharmony_ci
623060ff233Sopenharmony_ci    uint8_t randSession1[randKeyLen];
624060ff233Sopenharmony_ci    (void)memcpy_s(randSession1, randKeyLen, randSession, randKeyLen);
625060ff233Sopenharmony_ci    uint8_t randIv1[randIvLen];
626060ff233Sopenharmony_ci    (void)memcpy_s(randIv1, randIvLen, randIv, randIvLen);
627060ff233Sopenharmony_ci    AesCipherKey cipherKey1 = { randSession1, randKeyLen, randIv1, randIvLen };
628060ff233Sopenharmony_ci
629060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt(&encryptInData, &cipherKey, encMode, &encryptOutData);
630060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
631060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt((const AesInputData *)&encryptOutData, &cipherKey1, DECRYPT_MODE, &decryptOutData);
632060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
633060ff233Sopenharmony_ci
634060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt(&encryptInData, &cipherKey, ENCRYPT_MODE, &encryptOutData);
635060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_OK, ret);
636060ff233Sopenharmony_ci    ret = SoftBusAesCfbEncrypt((const AesInputData *)&encryptOutData, &cipherKey1, encMode, &decryptOutData);
637060ff233Sopenharmony_ci    EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
638060ff233Sopenharmony_ci
639060ff233Sopenharmony_ci    SoftBusFree(encryptOutData.data);
640060ff233Sopenharmony_ci}
641060ff233Sopenharmony_ci} // namespace OHOS
642060ff233Sopenharmony_ci
643