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 HdiProperty = 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 Expectedvalue1 = 0; 299762338dSopenharmony_ci 309762338dSopenharmony_civoid UserIamPinAuthTwoTest::SetUpTestCase() 319762338dSopenharmony_ci{ 329762338dSopenharmony_ci} 339762338dSopenharmony_ci 349762338dSopenharmony_civoid UserIamPinAuthTwoTest::TearDownTestCase() 359762338dSopenharmony_ci{ 369762338dSopenharmony_ci} 379762338dSopenharmony_ci 389762338dSopenharmony_civoid UserIamPinAuthTwoTest::SetUp() 399762338dSopenharmony_ci{ 409762338dSopenharmony_ci} 419762338dSopenharmony_ci 429762338dSopenharmony_civoid UserIamPinAuthTwoTest::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 FillTestIExecutorCallback(Parcel &parcel, sptr<IExecutorCallback> &callbackObj) 889762338dSopenharmony_ci{ 899762338dSopenharmony_ci bool isNull = parcel.ReadBool(); 909762338dSopenharmony_ci if (isNull) { 919762338dSopenharmony_ci callbackObj = nullptr; 929762338dSopenharmony_ci } else { 939762338dSopenharmony_ci callbackObj = new (std::nothrow) DummyIExecutorCallback(parcel.ReadInt32(), 949762338dSopenharmony_ci parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadInt32()); 959762338dSopenharmony_ci if (callbackObj == nullptr) { 969762338dSopenharmony_ci cout << "callbackObj construct fail" << endl; 979762338dSopenharmony_ci } 989762338dSopenharmony_ci } 999762338dSopenharmony_ci} 1009762338dSopenharmony_ci 1019762338dSopenharmony_ci/** 1029762338dSopenharmony_ci * @tc.number: Security_IAM_PinAuth_HDI_NEW_FUNC_0104 1039762338dSopenharmony_ci * @tc.name: Test Authenticate 1049762338dSopenharmony_ci * @tc.size: MediumTest 1059762338dSopenharmony_ci * @tc.type: Function 1069762338dSopenharmony_ci * @tc.level: Level1 1079762338dSopenharmony_ci */ 1089762338dSopenharmony_ciHWTEST_F(UserIamPinAuthTwoTest, Security_IAM_PinAuth_HDI_NEW_FUNC_0104, Function | MediumTest | Level1) 1099762338dSopenharmony_ci{ 1109762338dSopenharmony_ci cout << "start Authenticate" << endl; 1119762338dSopenharmony_ci 1129762338dSopenharmony_ci uint64_t scheduleId = parcel.ReadUint64(); 1139762338dSopenharmony_ci uint64_t templateId = parcel.ReadUint64(); 1149762338dSopenharmony_ci std::vector<uint64_t> templateIdList; 1159762338dSopenharmony_ci templateIdList.push_back(templateId); 1169762338dSopenharmony_ci std::vector<uint8_t> extraInfo; 1179762338dSopenharmony_ci FillTestUint8Vector(parcel, extraInfo); 1189762338dSopenharmony_ci sptr<IExecutorCallback> callbackObj; 1199762338dSopenharmony_ci FillTestIExecutorCallback(parcel, callbackObj); 1209762338dSopenharmony_ci int32_t ret = g_executorImpl.Authenticate(scheduleId, templateIdList, extraInfo, callbackObj); 1219762338dSopenharmony_ci 1229762338dSopenharmony_ci cout << "ret is " << ret << endl; 1239762338dSopenharmony_ci ASSERT_EQ(ret != Expectedvalue1, false); 1249762338dSopenharmony_ci}