14faa1673Sopenharmony_ci/* 24faa1673Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 34faa1673Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44faa1673Sopenharmony_ci * you may not use this file except in compliance with the License. 54faa1673Sopenharmony_ci * You may obtain a copy of the License at 64faa1673Sopenharmony_ci * 74faa1673Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84faa1673Sopenharmony_ci * 94faa1673Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104faa1673Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114faa1673Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124faa1673Sopenharmony_ci * See the License for the specific language governing permissions and 134faa1673Sopenharmony_ci * limitations under the License. 144faa1673Sopenharmony_ci */ 154faa1673Sopenharmony_ci 164faa1673Sopenharmony_ci#include "alloc_token.h" 174faa1673Sopenharmony_ci 184faa1673Sopenharmony_ci#include <string> 194faa1673Sopenharmony_ci#include "access_token.h" 204faa1673Sopenharmony_ci#include "accesstoken_kit.h" 214faa1673Sopenharmony_ci#include "nativetoken_kit.h" 224faa1673Sopenharmony_ci#include "permission_def.h" 234faa1673Sopenharmony_ci#include "permission_state_full.h" 244faa1673Sopenharmony_ci#include "token_setproc.h" 254faa1673Sopenharmony_ci 264faa1673Sopenharmony_cinamespace OHOS { 274faa1673Sopenharmony_ci const std::string SET_POLICY_PERMISSION = "ohos.permission.SET_SANDBOX_POLICY"; 284faa1673Sopenharmony_ci const std::string ACCESS_PERSIST_PERMISSION = "ohos.permission.FILE_ACCESS_PERSIST"; 294faa1673Sopenharmony_ci uint64_t g_mockToken; 304faa1673Sopenharmony_ci Security::AccessToken::PermissionStateFull g_testState1 = { 314faa1673Sopenharmony_ci .permissionName = SET_POLICY_PERMISSION, 324faa1673Sopenharmony_ci .isGeneral = true, 334faa1673Sopenharmony_ci .resDeviceID = {"1"}, 344faa1673Sopenharmony_ci .grantStatus = {0}, 354faa1673Sopenharmony_ci .grantFlags = {0}, 364faa1673Sopenharmony_ci }; 374faa1673Sopenharmony_ci Security::AccessToken::PermissionStateFull g_testState2 = { 384faa1673Sopenharmony_ci .permissionName = ACCESS_PERSIST_PERMISSION, 394faa1673Sopenharmony_ci .isGeneral = true, 404faa1673Sopenharmony_ci .resDeviceID = {"1"}, 414faa1673Sopenharmony_ci .grantStatus = {0}, 424faa1673Sopenharmony_ci .grantFlags = {0}, 434faa1673Sopenharmony_ci }; 444faa1673Sopenharmony_ci Security::AccessToken::HapInfoParams g_testInfoParms = { 454faa1673Sopenharmony_ci .userID = 1, 464faa1673Sopenharmony_ci .bundleName = "sandbox_manager_test", 474faa1673Sopenharmony_ci .instIndex = 0, 484faa1673Sopenharmony_ci .appIDDesc = "test" 494faa1673Sopenharmony_ci }; 504faa1673Sopenharmony_ci 514faa1673Sopenharmony_ci Security::AccessToken::HapPolicyParams g_testPolicyPrams = { 524faa1673Sopenharmony_ci .apl = Security::AccessToken::APL_NORMAL, 534faa1673Sopenharmony_ci .domain = "test.domain", 544faa1673Sopenharmony_ci .permList = {}, 554faa1673Sopenharmony_ci .permStateList = {g_testState1, g_testState2} 564faa1673Sopenharmony_ci }; 574faa1673Sopenharmony_ci 584faa1673Sopenharmony_ci bool AllocTokenWithFuzz(const uint8_t *data, size_t size, bool(*func)(const uint8_t *, size_t)) 594faa1673Sopenharmony_ci { 604faa1673Sopenharmony_ci AllocToken(); 614faa1673Sopenharmony_ci bool ret = func(data, size); 624faa1673Sopenharmony_ci DeleteToken(); 634faa1673Sopenharmony_ci return ret; 644faa1673Sopenharmony_ci } 654faa1673Sopenharmony_ci 664faa1673Sopenharmony_ci void AllocToken() 674faa1673Sopenharmony_ci { 684faa1673Sopenharmony_ci Security::AccessToken::AccessTokenIDEx tokenIdEx = {0}; 694faa1673Sopenharmony_ci tokenIdEx = Security::AccessToken::AccessTokenKit::AllocHapToken(g_testInfoParms, g_testPolicyPrams); 704faa1673Sopenharmony_ci g_mockToken = tokenIdEx.tokenIdExStruct.tokenID; 714faa1673Sopenharmony_ci SetSelfTokenID(tokenIdEx.tokenIdExStruct.tokenID); 724faa1673Sopenharmony_ci } 734faa1673Sopenharmony_ci 744faa1673Sopenharmony_ci void DeleteToken() 754faa1673Sopenharmony_ci { 764faa1673Sopenharmony_ci Security::AccessToken::AccessTokenKit::DeleteToken(g_mockToken); 774faa1673Sopenharmony_ci } 784faa1673Sopenharmony_ci} 794faa1673Sopenharmony_ci 80