19762338dSopenharmony_ci/* 29762338dSopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 39762338dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 49762338dSopenharmony_ci * you may not use this file except in compliance with the License. 59762338dSopenharmony_ci * You may obtain a copy of the License at 69762338dSopenharmony_ci * 79762338dSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 89762338dSopenharmony_ci * 99762338dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 109762338dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 119762338dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 129762338dSopenharmony_ci * See the License for the specific language governing permissions and 139762338dSopenharmony_ci * limitations under the License. 149762338dSopenharmony_ci */ 159762338dSopenharmony_ci 169762338dSopenharmony_ci#include "pin_auth_hdi_test.h" 179762338dSopenharmony_ci#include "iam_hat_test.h" 189762338dSopenharmony_ci 199762338dSopenharmony_ciusing namespace std; 209762338dSopenharmony_ciusing namespace testing::ext; 219762338dSopenharmony_ciusing namespace OHOS::UserIam::Common; 229762338dSopenharmony_ciusing namespace OHOS::HDI::PinAuth; 239762338dSopenharmony_ciusing namespace OHOS::HDI::PinAuth::V2_0; 249762338dSopenharmony_ciusing Property = OHOS::HDI::PinAuth::V2_0::Property; 259762338dSopenharmony_ci 269762338dSopenharmony_cistatic AllInOneImpl g_executorImpl(make_shared<OHOS::UserIam::PinAuth::PinAuth>()); 279762338dSopenharmony_cistatic OHOS::Parcel parcel; 289762338dSopenharmony_ciint32_t Expectedvalue = 0; 299762338dSopenharmony_ci 309762338dSopenharmony_civoid UserIamPinAuthTest::SetUpTestCase() 319762338dSopenharmony_ci{ 329762338dSopenharmony_ci} 339762338dSopenharmony_ci 349762338dSopenharmony_civoid UserIamPinAuthTest::TearDownTestCase() 359762338dSopenharmony_ci{ 369762338dSopenharmony_ci} 379762338dSopenharmony_ci 389762338dSopenharmony_civoid UserIamPinAuthTest::SetUp() 399762338dSopenharmony_ci{ 409762338dSopenharmony_ci} 419762338dSopenharmony_ci 429762338dSopenharmony_civoid UserIamPinAuthTest::TearDown() 439762338dSopenharmony_ci{ 449762338dSopenharmony_ci} 459762338dSopenharmony_ci 469762338dSopenharmony_ciclass DummyIExecutorCallback : public IExecutorCallback { 479762338dSopenharmony_cipublic: 489762338dSopenharmony_ci DummyIExecutorCallback(int32_t onResultResult, int32_t onGetDataResult, int32_t onGetDataV1Result, 499762338dSopenharmony_ci int32_t onTipResult, int32_t onMessageResult) 509762338dSopenharmony_ci : onResultResult_(onResultResult), onGetDataResult_(onGetDataResult), onTipResult_(onTipResult), 519762338dSopenharmony_ci onMessageResult_(onMessageResult) 529762338dSopenharmony_ci { 539762338dSopenharmony_ci } 549762338dSopenharmony_ci 559762338dSopenharmony_ci int32_t OnResult(int32_t result, const std::vector<uint8_t> &extraInfo) override 569762338dSopenharmony_ci { 579762338dSopenharmony_ci cout << "result is " << result << " extraInfo len is " << extraInfo.size() << endl; 589762338dSopenharmony_ci return onResultResult_; 599762338dSopenharmony_ci } 609762338dSopenharmony_ci 619762338dSopenharmony_ci int32_t OnGetData(const std::vector<uint8_t>& algoParameter, uint64_t authSubType, uint32_t algoVersion, 629762338dSopenharmony_ci const std::vector<uint8_t>& challenge, const std::string &complexityReg) override 639762338dSopenharmony_ci { 649762338dSopenharmony_ci cout << "algoVersion is " << algoVersion << endl; 659762338dSopenharmony_ci cout << " algoParameter len is " << algoParameter.size() << endl; 669762338dSopenharmony_ci cout << " authSubType is " << authSubType << endl; 679762338dSopenharmony_ci return onGetDataResult_; 689762338dSopenharmony_ci } 699762338dSopenharmony_ci 709762338dSopenharmony_ci int32_t OnTip(int32_t tip, const std::vector<uint8_t>& extraInfo) override 719762338dSopenharmony_ci { 729762338dSopenharmony_ci return onTipResult_; 739762338dSopenharmony_ci } 749762338dSopenharmony_ci 759762338dSopenharmony_ci int32_t OnMessage(int32_t destRole, const std::vector<uint8_t>& msg) override 769762338dSopenharmony_ci { 779762338dSopenharmony_ci return onMessageResult_; 789762338dSopenharmony_ci } 799762338dSopenharmony_ci 809762338dSopenharmony_ciprivate: 819762338dSopenharmony_ci int32_t onResultResult_; 829762338dSopenharmony_ci int32_t onGetDataResult_; 839762338dSopenharmony_ci int32_t onTipResult_; 849762338dSopenharmony_ci int32_t onMessageResult_; 859762338dSopenharmony_ci}; 869762338dSopenharmony_ci 879762338dSopenharmony_cistatic void FillTestExecutorInfo(Parcel &parcel, ExecutorInfo &executorInfo) 889762338dSopenharmony_ci{ 899762338dSopenharmony_ci executorInfo.sensorId = parcel.ReadUint16(); 909762338dSopenharmony_ci executorInfo.executorMatcher = parcel.ReadUint32(); 919762338dSopenharmony_ci executorInfo.executorRole = static_cast<ExecutorRole>(parcel.ReadInt32()); 929762338dSopenharmony_ci executorInfo.authType = static_cast<AuthType>(parcel.ReadInt32()); 939762338dSopenharmony_ci executorInfo.esl = static_cast<ExecutorSecureLevel>(parcel.ReadInt32()); 949762338dSopenharmony_ci FillTestUint8Vector(parcel, executorInfo.publicKey); 959762338dSopenharmony_ci FillTestUint8Vector(parcel, executorInfo.extraInfo); 969762338dSopenharmony_ci} 979762338dSopenharmony_ci 989762338dSopenharmony_cistatic void FillTestIExecutorCallback(Parcel &parcel, sptr<IExecutorCallback> &callbackObj) 999762338dSopenharmony_ci{ 1009762338dSopenharmony_ci bool isNull = parcel.ReadBool(); 1019762338dSopenharmony_ci if (isNull) { 1029762338dSopenharmony_ci callbackObj = nullptr; 1039762338dSopenharmony_ci } else { 1049762338dSopenharmony_ci callbackObj = new (std::nothrow) DummyIExecutorCallback(parcel.ReadInt32(), 1059762338dSopenharmony_ci parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadInt32()); 1069762338dSopenharmony_ci if (callbackObj == nullptr) { 1079762338dSopenharmony_ci cout << "callbackObj construct fail" << endl; 1089762338dSopenharmony_ci } 1099762338dSopenharmony_ci } 1109762338dSopenharmony_ci} 1119762338dSopenharmony_ci 1129762338dSopenharmony_civoid FillTestGetPropertyTypeVector(Parcel &parcel, std::vector<int32_t> &types) 1139762338dSopenharmony_ci{ 1149762338dSopenharmony_ci std::vector<uint32_t> propertyTypeUint32; 1159762338dSopenharmony_ci FillTestUint32Vector(parcel, propertyTypeUint32); 1169762338dSopenharmony_ci for (const auto& val : propertyTypeUint32) { 1179762338dSopenharmony_ci types.push_back(static_cast<HdiGetPropertyType>(val)); 1189762338dSopenharmony_ci } 1199762338dSopenharmony_ci 1209762338dSopenharmony_ci cout << "success" << endl; 1219762338dSopenharmony_ci} 1229762338dSopenharmony_ci 1239762338dSopenharmony_ci/** 1249762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_FUNC_0101 1259762338dSopenharmony_ci * @tc.name: Test GetExecutorInfo 1269762338dSopenharmony_ci * @tc.size: MediumTest 1279762338dSopenharmony_ci * @tc.type: Function 1289762338dSopenharmony_ci * @tc.level: Level1 1299762338dSopenharmony_ci */ 1309762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_FUNC_0101, Function | MediumTest | Level1) 1319762338dSopenharmony_ci{ 1329762338dSopenharmony_ci cout << "start GetExecutorInfo" << endl; 1339762338dSopenharmony_ci ExecutorInfo executorInfo; 1349762338dSopenharmony_ci FillTestExecutorInfo(parcel, executorInfo); 1359762338dSopenharmony_ci int32_t ret = g_executorImpl.GetExecutorInfo(executorInfo); 1369762338dSopenharmony_ci cout << "ret is " << ret << endl; 1379762338dSopenharmony_ci ASSERT_EQ(ret != Expectedvalue, true); 1389762338dSopenharmony_ci} 1399762338dSopenharmony_ci 1409762338dSopenharmony_ci/** 1419762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_FUNC_0103 1429762338dSopenharmony_ci * @tc.name: Test OnRegisterFinish 1439762338dSopenharmony_ci * @tc.size: MediumTest 1449762338dSopenharmony_ci * @tc.type: Function 1459762338dSopenharmony_ci * @tc.level: Level1 1469762338dSopenharmony_ci */ 1479762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_FUNC_0103, Function | MediumTest | Level1) 1489762338dSopenharmony_ci{ 1499762338dSopenharmony_ci cout << "start OnRegisterFinish" << endl; 1509762338dSopenharmony_ci std::vector<uint64_t> templateIdList; 1519762338dSopenharmony_ci FillTestUint64Vector(parcel, templateIdList); 1529762338dSopenharmony_ci std::vector<uint8_t> frameworkPublicKey; 1539762338dSopenharmony_ci FillTestUint8Vector(parcel, frameworkPublicKey); 1549762338dSopenharmony_ci frameworkPublicKey.resize(32); 1559762338dSopenharmony_ci std::vector<uint8_t> extraInfo; 1569762338dSopenharmony_ci FillTestUint8Vector(parcel, extraInfo); 1579762338dSopenharmony_ci int32_t ret = g_executorImpl.OnRegisterFinish(templateIdList, frameworkPublicKey, extraInfo); 1589762338dSopenharmony_ci cout << "ret is " << ret << endl; 1599762338dSopenharmony_ci EXPECT_EQ(ret, 0); 1609762338dSopenharmony_ci} 1619762338dSopenharmony_ci 1629762338dSopenharmony_ci/** 1639762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_FUNC_0104 1649762338dSopenharmony_ci * @tc.name: Test OnSetData 1659762338dSopenharmony_ci * @tc.size: MediumTest 1669762338dSopenharmony_ci * @tc.type: Function 1679762338dSopenharmony_ci * @tc.level: Level1 1689762338dSopenharmony_ci */ 1699762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_FUNC_0104, Function | MediumTest | Level1) 1709762338dSopenharmony_ci{ 1719762338dSopenharmony_ci cout << "start OnSetData" << endl; 1729762338dSopenharmony_ci uint64_t scheduleId = parcel.ReadUint64(); 1739762338dSopenharmony_ci uint64_t authSubType = parcel.ReadUint64(); 1749762338dSopenharmony_ci std::vector<uint8_t> data; 1759762338dSopenharmony_ci FillTestUint8Vector(parcel, data); 1769762338dSopenharmony_ci int32_t resultCode = 0; 1779762338dSopenharmony_ci int32_t ret = g_executorImpl.SetData(scheduleId, authSubType, data, resultCode); 1789762338dSopenharmony_ci cout << "ret is " << ret << endl; 1799762338dSopenharmony_ci ASSERT_EQ(ret != Expectedvalue, true); 1809762338dSopenharmony_ci} 1819762338dSopenharmony_ci 1829762338dSopenharmony_ci/** 1839762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_FUNC_0105 1849762338dSopenharmony_ci * @tc.name: Test Enroll 1859762338dSopenharmony_ci * @tc.size: MediumTest 1869762338dSopenharmony_ci * @tc.type: Function 1879762338dSopenharmony_ci * @tc.level: Level1 1889762338dSopenharmony_ci */ 1899762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_FUNC_0105, Function | MediumTest | Level1) 1909762338dSopenharmony_ci{ 1919762338dSopenharmony_ci cout << "start Enroll" << endl; 1929762338dSopenharmony_ci uint64_t scheduleId = parcel.ReadUint64(); 1939762338dSopenharmony_ci std::vector<uint8_t> extraInfo; 1949762338dSopenharmony_ci sptr<IExecutorCallback> callbackObj; 1959762338dSopenharmony_ci FillTestIExecutorCallback(parcel, callbackObj); 1969762338dSopenharmony_ci int32_t ret = g_executorImpl.Enroll(scheduleId, extraInfo, callbackObj); 1979762338dSopenharmony_ci cout << "ret is " << ret << endl; 1989762338dSopenharmony_ci EXPECT_EQ(ret, 0); 1999762338dSopenharmony_ci} 2009762338dSopenharmony_ci 2019762338dSopenharmony_ci/** 2029762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_FUNC_0106 2039762338dSopenharmony_ci * @tc.name: Test Authenticate 2049762338dSopenharmony_ci * @tc.size: MediumTest 2059762338dSopenharmony_ci * @tc.type: Function 2069762338dSopenharmony_ci * @tc.level: Level1 2079762338dSopenharmony_ci */ 2089762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_FUNC_0106, Function | MediumTest | Level1) 2099762338dSopenharmony_ci{ 2109762338dSopenharmony_ci cout << "start Authenticate" << endl; 2119762338dSopenharmony_ci uint64_t scheduleId = parcel.ReadUint64(); 2129762338dSopenharmony_ci uint64_t templateId = parcel.ReadUint64(); 2139762338dSopenharmony_ci std::vector<uint64_t> templateIdList; 2149762338dSopenharmony_ci templateIdList.push_back(templateId); 2159762338dSopenharmony_ci std::vector<uint8_t> extraInfo; 2169762338dSopenharmony_ci FillTestUint8Vector(parcel, extraInfo); 2179762338dSopenharmony_ci sptr<IExecutorCallback> callbackObj; 2189762338dSopenharmony_ci FillTestIExecutorCallback(parcel, callbackObj); 2199762338dSopenharmony_ci int32_t ret = g_executorImpl.Authenticate(scheduleId, templateIdList, extraInfo, callbackObj); 2209762338dSopenharmony_ci cout << "ret is " << ret << endl; 2219762338dSopenharmony_ci ASSERT_EQ(ret, 0); 2229762338dSopenharmony_ci} 2239762338dSopenharmony_ci 2249762338dSopenharmony_ci/** 2259762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_FUNC_0107 2269762338dSopenharmony_ci * @tc.name: Test Delete 2279762338dSopenharmony_ci * @tc.size: MediumTest 2289762338dSopenharmony_ci * @tc.type: Function 2299762338dSopenharmony_ci * @tc.level: Level1 2309762338dSopenharmony_ci */ 2319762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_FUNC_0107, Function | MediumTest | Level1) 2329762338dSopenharmony_ci{ 2339762338dSopenharmony_ci cout << "start Delete" << endl; 2349762338dSopenharmony_ci uint64_t templateId = parcel.ReadUint64(); 2359762338dSopenharmony_ci int32_t ret = g_executorImpl.Delete(templateId); 2369762338dSopenharmony_ci cout << "ret is " << ret << endl; 2379762338dSopenharmony_ci ASSERT_EQ(ret != Expectedvalue, true); 2389762338dSopenharmony_ci} 2399762338dSopenharmony_ci 2409762338dSopenharmony_ci/** 2419762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_FUNC_0108 2429762338dSopenharmony_ci * @tc.name: Test Cancel 2439762338dSopenharmony_ci * @tc.size: MediumTest 2449762338dSopenharmony_ci * @tc.type: Function 2459762338dSopenharmony_ci * @tc.level: Level1 2469762338dSopenharmony_ci */ 2479762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_FUNC_0108, Function | MediumTest | Level1) 2489762338dSopenharmony_ci{ 2499762338dSopenharmony_ci cout << "start Cancel" << endl; 2509762338dSopenharmony_ci uint64_t scheduleId = parcel.ReadUint64(); 2519762338dSopenharmony_ci int32_t ret = g_executorImpl.Cancel(scheduleId); 2529762338dSopenharmony_ci cout << "ret is " << ret << endl; 2539762338dSopenharmony_ci EXPECT_EQ(ret, 0); 2549762338dSopenharmony_ci} 2559762338dSopenharmony_ci 2569762338dSopenharmony_ci/** 2579762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_FUNC_0110 2589762338dSopenharmony_ci * @tc.name: Test GetExecutorList 2599762338dSopenharmony_ci * @tc.size: MediumTest 2609762338dSopenharmony_ci * @tc.type: Function 2619762338dSopenharmony_ci * @tc.level: Level1 2629762338dSopenharmony_ci */ 2639762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_FUNC_0110, Function | MediumTest | Level1) 2649762338dSopenharmony_ci{ 2659762338dSopenharmony_ci cout << "start GetExecutorList" << endl; 2669762338dSopenharmony_ci PinAuthInterfaceService g_pinAuthInterFaceService; 2679762338dSopenharmony_ci std::vector<sptr<IAllInOneExecutor>> allInOneExecutors; 2689762338dSopenharmony_ci std::vector<sptr<IVerifier>> verifiers; 2699762338dSopenharmony_ci std::vector<sptr<ICollector>> collectors; 2709762338dSopenharmony_ci int32_t ret = g_pinAuthInterFaceService.GetExecutorList(allInOneExecutors, verifiers, collectors); 2719762338dSopenharmony_ci cout << "ret is " << ret << endl; 2729762338dSopenharmony_ci EXPECT_EQ(ret, 0); 2739762338dSopenharmony_ci} 2749762338dSopenharmony_ci 2759762338dSopenharmony_ci/** 2769762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_NEW_FUNC_0101 2779762338dSopenharmony_ci * @tc.name: Test GetProperty 2789762338dSopenharmony_ci * @tc.size: MediumTest 2799762338dSopenharmony_ci * @tc.type: Function 2809762338dSopenharmony_ci * @tc.level: Level1 2819762338dSopenharmony_ci */ 2829762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_NEW_FUNC_0101, Function | MediumTest | Level1) 2839762338dSopenharmony_ci{ 2849762338dSopenharmony_ci cout << "start GetProperty" << endl; 2859762338dSopenharmony_ci std::vector<uint64_t> templateIdList; 2869762338dSopenharmony_ci FillTestUint64Vector(parcel, templateIdList); 2879762338dSopenharmony_ci std::vector<int32_t> propertyTypes; 2889762338dSopenharmony_ci FillTestGetPropertyTypeVector(parcel, propertyTypes); 2899762338dSopenharmony_ci Property property; 2909762338dSopenharmony_ci 2919762338dSopenharmony_ci int32_t ret = g_executorImpl.GetProperty(templateIdList, propertyTypes, property); 2929762338dSopenharmony_ci 2939762338dSopenharmony_ci cout << "ret is " << ret << endl; 2949762338dSopenharmony_ci ASSERT_EQ(ret != Expectedvalue, true); 2959762338dSopenharmony_ci} 2969762338dSopenharmony_ci 2979762338dSopenharmony_ci/** 2989762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_NEW_FUNC_0102 2999762338dSopenharmony_ci * @tc.name: Test GetExecutorListV1_1 3009762338dSopenharmony_ci * @tc.size: MediumTest 3019762338dSopenharmony_ci * @tc.type: Function 3029762338dSopenharmony_ci * @tc.level: Level1 3039762338dSopenharmony_ci */ 3049762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTest, Security_IAM_PinAuth_HDI_NEW_FUNC_0102, Function | MediumTest | Level1) 3059762338dSopenharmony_ci{ 3069762338dSopenharmony_ci cout << "start GetExecutorListV1_1" << endl; 3079762338dSopenharmony_ci PinAuthInterfaceService pin_Interface; 3089762338dSopenharmony_ci 3099762338dSopenharmony_ci std::vector<sptr<IAllInOneExecutor>> allInOneExecutors; 3109762338dSopenharmony_ci std::vector<sptr<IVerifier>> verifiers; 3119762338dSopenharmony_ci std::vector<sptr<ICollector>> collectors; 3129762338dSopenharmony_ci int32_t ret = pin_Interface.GetExecutorList(allInOneExecutors, verifiers, collectors); 3139762338dSopenharmony_ci 3149762338dSopenharmony_ci cout << "ret is " << ret << endl; 3159762338dSopenharmony_ci ASSERT_EQ(ret, 0); 3169762338dSopenharmony_ci} 317