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