1/* 2 * Copyright (C) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include "permission_util.h" 17 18#include "accesstoken_kit.h" 19#include "data_storage_log_wrapper.h" 20#include "ipc_skeleton.h" 21 22namespace OHOS { 23namespace Telephony { 24using namespace Security::AccessToken; 25 26/** 27 * @brief Permission check by callingUid. 28 * @param permissionName permission name. 29 * @return Returns true on success, false on failure. 30 */ 31bool PermissionUtil::CheckPermission(const std::string &permissionName) 32{ 33 if (permissionName.empty()) { 34 DATA_STORAGE_LOGD("permission check failed, permission name is empty."); 35 return false; 36 } 37 38 auto callerToken = IPCSkeleton::GetCallingTokenID(); 39 int result = AccessTokenKit::VerifyAccessToken(callerToken, permissionName); 40 if (result != PermissionState::PERMISSION_GRANTED) { 41 DATA_STORAGE_LOGD("permission check failed, permission:%{public}s, callerToken:%{public}u", 42 permissionName.c_str(), callerToken); 43 return false; 44 } 45 return true; 46} 47} // namespace Telephony 48} // namespace OHOS 49