125c1cde8Sopenharmony_ci/* 225c1cde8Sopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 325c1cde8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 425c1cde8Sopenharmony_ci * you may not use this file except in compliance with the License. 525c1cde8Sopenharmony_ci * You may obtain a copy of the License at 625c1cde8Sopenharmony_ci * 725c1cde8Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 825c1cde8Sopenharmony_ci * 925c1cde8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1025c1cde8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1125c1cde8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1225c1cde8Sopenharmony_ci * See the License for the specific language governing permissions and 1325c1cde8Sopenharmony_ci * limitations under the License. 1425c1cde8Sopenharmony_ci */ 1525c1cde8Sopenharmony_ci 1625c1cde8Sopenharmony_ci#include "permission_util.h" 1725c1cde8Sopenharmony_ci 1825c1cde8Sopenharmony_ci#include "accesstoken_kit.h" 1925c1cde8Sopenharmony_ci#include "data_storage_log_wrapper.h" 2025c1cde8Sopenharmony_ci#include "ipc_skeleton.h" 2125c1cde8Sopenharmony_ci 2225c1cde8Sopenharmony_cinamespace OHOS { 2325c1cde8Sopenharmony_cinamespace Telephony { 2425c1cde8Sopenharmony_ciusing namespace Security::AccessToken; 2525c1cde8Sopenharmony_ci 2625c1cde8Sopenharmony_ci/** 2725c1cde8Sopenharmony_ci * @brief Permission check by callingUid. 2825c1cde8Sopenharmony_ci * @param permissionName permission name. 2925c1cde8Sopenharmony_ci * @return Returns true on success, false on failure. 3025c1cde8Sopenharmony_ci */ 3125c1cde8Sopenharmony_cibool PermissionUtil::CheckPermission(const std::string &permissionName) 3225c1cde8Sopenharmony_ci{ 3325c1cde8Sopenharmony_ci if (permissionName.empty()) { 3425c1cde8Sopenharmony_ci DATA_STORAGE_LOGD("permission check failed, permission name is empty."); 3525c1cde8Sopenharmony_ci return false; 3625c1cde8Sopenharmony_ci } 3725c1cde8Sopenharmony_ci 3825c1cde8Sopenharmony_ci auto callerToken = IPCSkeleton::GetCallingTokenID(); 3925c1cde8Sopenharmony_ci int result = AccessTokenKit::VerifyAccessToken(callerToken, permissionName); 4025c1cde8Sopenharmony_ci if (result != PermissionState::PERMISSION_GRANTED) { 4125c1cde8Sopenharmony_ci DATA_STORAGE_LOGD("permission check failed, permission:%{public}s, callerToken:%{public}u", 4225c1cde8Sopenharmony_ci permissionName.c_str(), callerToken); 4325c1cde8Sopenharmony_ci return false; 4425c1cde8Sopenharmony_ci } 4525c1cde8Sopenharmony_ci return true; 4625c1cde8Sopenharmony_ci} 4725c1cde8Sopenharmony_ci} // namespace Telephony 4825c1cde8Sopenharmony_ci} // namespace OHOS 49