From 0208d2b7a6fc0952fedf876bf4c95fea99fdc222 Mon Sep 17 00:00:00 2001 From: chennian Date: Thu, 16 Jan 2025 22:21:03 +0800 Subject: [PATCH] Modify permission to code of GetPermissionUsedType Signed-off-by: chennian Change-Id: I3679e56165e2b6d91ec308dc2caf0c69ace3bba1 --- frameworks/accesstoken/include/i_accesstoken_manager.h | 3 +-- interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp | 8 ++++++-- .../accesstoken/src/accesstoken_manager_client.cpp | 5 ++--- .../accesstoken/src/accesstoken_manager_client.h | 2 +- .../accesstoken/src/accesstoken_manager_proxy.cpp | 7 +++---- .../accesstoken/src/accesstoken_manager_proxy.h | 3 +-- .../main/cpp/include/permission/permission_data_brief.h | 2 +- .../main/cpp/include/permission/permission_manager.h | 2 +- .../main/cpp/include/permission/permission_policy_set.h | 2 +- .../cpp/include/service/accesstoken_manager_service.h | 3 +-- .../main/cpp/include/token/hap_token_info_inner.h | 2 +- .../main/cpp/src/permission/permission_data_brief.cpp | 2 +- .../main/cpp/src/permission/permission_manager.cpp | 7 +++---- .../main/cpp/src/service/accesstoken_manager_service.cpp | 7 +++---- .../main/cpp/src/service/accesstoken_manager_stub.cpp | 8 ++++---- .../main/cpp/src/token/hap_token_info_inner.cpp | 9 ++------- 16 files changed, 32 insertions(+), 40 deletions(-) diff --git a/frameworks/accesstoken/include/i_accesstoken_manager.h b/frameworks/accesstoken/include/i_accesstoken_manager.h index 5ec9285f4..1e970017e 100644 --- a/frameworks/accesstoken/include/i_accesstoken_manager.h +++ b/frameworks/accesstoken/include/i_accesstoken_manager.h @@ -47,8 +47,7 @@ public: DECLARE_INTERFACE_DESCRIPTOR(u"ohos.security.accesstoken.IAccessTokenManager"); - virtual PermUsedTypeEnum GetPermissionUsedType( - AccessTokenID tokenID, const std::string& permissionName) = 0; + virtual PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, uint32_t permCode) = 0; virtual int VerifyAccessToken(AccessTokenID tokenID, const std::string& permissionName) = 0; virtual int VerifyAccessToken(AccessTokenID tokenID, const std::vector& permissionList, std::vector& permStateList) = 0; diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp index 870e25653..79d83ac6e 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp @@ -45,11 +45,15 @@ PermUsedTypeEnum AccessTokenKit::GetPermissionUsedType( { ACCESSTOKEN_LOG_DEBUG(LABEL, "TokenID=%{public}d, permissionName=%{public}s.", tokenID, permissionName.c_str()); - if ((tokenID == INVALID_TOKENID) || (!DataValidator::IsPermissionNameValid(permissionName))) { + if (tokenID == INVALID_TOKENID) { ACCESSTOKEN_LOG_ERROR(LABEL, "Input param failed."); return PermUsedTypeEnum::INVALID_USED_TYPE; } - return AccessTokenManagerClient::GetInstance().GetPermissionUsedType(tokenID, permissionName); + uint32_t code; + if (!TransferPermissionToOpcode(permissionName, code)) { + return PermUsedTypeEnum::INVALID_USED_TYPE; + } + return AccessTokenManagerClient::GetInstance().GetPermissionUsedType(tokenID, code); } int AccessTokenKit::GrantPermissionForSpecifiedTime( diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp index a8e0ce1f1..a9e59eccd 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp @@ -62,15 +62,14 @@ AccessTokenManagerClient::~AccessTokenManagerClient() ReleaseProxy(); } -PermUsedTypeEnum AccessTokenManagerClient::GetPermissionUsedType( - AccessTokenID tokenID, const std::string &permissionName) +PermUsedTypeEnum AccessTokenManagerClient::GetPermissionUsedType(AccessTokenID tokenID, uint32_t permCode) { auto proxy = GetProxy(); if (proxy == nullptr) { ACCESSTOKEN_LOG_ERROR(LABEL, "Proxy is null."); return PermUsedTypeEnum::INVALID_USED_TYPE; } - return proxy->GetPermissionUsedType(tokenID, permissionName); + return proxy->GetPermissionUsedType(tokenID, permCode); } int AccessTokenManagerClient::VerifyAccessToken(AccessTokenID tokenID, const std::string& permissionName) diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h index c185a95f6..135a55391 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h @@ -48,7 +48,7 @@ public: virtual ~AccessTokenManagerClient(); - PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, const std::string& permissionName); + PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, uint32_t permCode); int VerifyAccessToken(AccessTokenID tokenID, const std::string& permissionName); int VerifyAccessToken(AccessTokenID tokenID, const std::vector& permissionList, std::vector& permStateList); diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp index e2ed43ae2..ebe0171d9 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp @@ -56,8 +56,7 @@ bool AccessTokenManagerProxy::SendRequest( return true; } -PermUsedTypeEnum AccessTokenManagerProxy::GetPermissionUsedType( - AccessTokenID tokenID, const std::string &permissionName) +PermUsedTypeEnum AccessTokenManagerProxy::GetPermissionUsedType(AccessTokenID tokenID, const uint32_t permCode) { MessageParcel data; if (!data.WriteInterfaceToken(IAccessTokenManager::GetDescriptor())) { @@ -68,8 +67,8 @@ PermUsedTypeEnum AccessTokenManagerProxy::GetPermissionUsedType( ACCESSTOKEN_LOG_ERROR(LABEL, "WriteUint32 failed."); return PermUsedTypeEnum::INVALID_USED_TYPE; } - if (!data.WriteString(permissionName)) { - ACCESSTOKEN_LOG_ERROR(LABEL, "WriteString failed."); + if (!data.WriteUint32(permCode)) { + ACCESSTOKEN_LOG_ERROR(LABEL, "WriteUint32 failed."); return PermUsedTypeEnum::INVALID_USED_TYPE; } diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h index 3c79708d6..7d9b3958e 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h @@ -42,8 +42,7 @@ public: explicit AccessTokenManagerProxy(const sptr& impl); ~AccessTokenManagerProxy() override; - PermUsedTypeEnum GetPermissionUsedType( - AccessTokenID tokenID, const std::string& permissionName) override; + PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, uint32_t permCode) override; int VerifyAccessToken(AccessTokenID tokenID, const std::string& permissionName) override; int VerifyAccessToken(AccessTokenID tokenID, const std::vector& permissionList, std::vector& permStateList) override; diff --git a/services/accesstokenmanager/main/cpp/include/permission/permission_data_brief.h b/services/accesstokenmanager/main/cpp/include/permission/permission_data_brief.h index a7088e8da..2bc91c575 100644 --- a/services/accesstokenmanager/main/cpp/include/permission/permission_data_brief.h +++ b/services/accesstokenmanager/main/cpp/include/permission/permission_data_brief.h @@ -55,7 +55,7 @@ public: int32_t SetBriefPermData(AccessTokenID tokenID, int32_t opCode, bool status, uint32_t flag); int32_t GetBriefPermDataByTokenId(AccessTokenID tokenID, std::vector& data); void ToString(std::string& info); - PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, int32_t opCode); + PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, uint32_t opCode); bool IsPermissionGrantedWithSecComp(AccessTokenID tokenID, const std::string& permissionName); int32_t VerifyPermissionStatus(AccessTokenID tokenID, const std::string& permission); int32_t QueryPermissionFlag(AccessTokenID tokenID, const std::string& permissionName, uint32_t& flag); diff --git a/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h b/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h index 83e5eb808..fe0a95612 100644 --- a/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h +++ b/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h @@ -61,7 +61,7 @@ public: bool updateFlag); void RemoveDefPermissions(AccessTokenID tokenID); int VerifyHapAccessToken(AccessTokenID tokenID, const std::string& permissionName); - PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, const std::string& permissionName); + PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, uint32_t opCode); int GetDefPermission(const std::string& permissionName, PermissionDef& permissionDefResult); void GetDefPermissions(AccessTokenID tokenID, std::vector& permList); int GetReqPermissions( diff --git a/services/accesstokenmanager/main/cpp/include/permission/permission_policy_set.h b/services/accesstokenmanager/main/cpp/include/permission/permission_policy_set.h index 7c3462b8f..44a77612f 100644 --- a/services/accesstokenmanager/main/cpp/include/permission/permission_policy_set.h +++ b/services/accesstokenmanager/main/cpp/include/permission/permission_policy_set.h @@ -44,7 +44,7 @@ public: void StorePermissionPolicySet(std::vector& permStateValueList); void Update(const std::vector& permStateList); - PermUsedTypeEnum GetPermissionUsedType(const std::string& permissionName); + PermUsedTypeEnum GetPermissionUsedType(uint32_t opCode); void GetDefPermissions(std::vector& permList); bool IsPermissionGrantedWithSecComp(const std::string& permissionName); int QueryPermissionFlag(const std::string& permissionName, int& flag); diff --git a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h index a808b9cec..8289bd627 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h @@ -46,8 +46,7 @@ public: void OnRemoveSystemAbility(int32_t systemAbilityId, const std::string& deviceId) override; AccessTokenIDEx AllocHapToken(const HapInfoParcel& info, const HapPolicyParcel& policy) override; - PermUsedTypeEnum GetPermissionUsedType( - AccessTokenID tokenID, const std::string& permissionName) override; + PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, uint32_t opCode) override; int32_t InitHapToken(const HapInfoParcel& info, HapPolicyParcel& policy, AccessTokenIDEx& fullTokenId, HapInfoCheckResult& result) override; int VerifyAccessToken(AccessTokenID tokenID, const std::string& permissionName) override; diff --git a/services/accesstokenmanager/main/cpp/include/token/hap_token_info_inner.h b/services/accesstokenmanager/main/cpp/include/token/hap_token_info_inner.h index f18ddf548..08e089442 100644 --- a/services/accesstokenmanager/main/cpp/include/token/hap_token_info_inner.h +++ b/services/accesstokenmanager/main/cpp/include/token/hap_token_info_inner.h @@ -72,7 +72,7 @@ public: static void RefreshPermStateToKernel(const std::vector& constrainedList, bool hapUserIsActive, AccessTokenID tokenId, std::map& refreshedPermList); static int32_t VerifyPermissionStatus(AccessTokenID tokenID, const std::string& permissionName); - static PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, const std::string& permissionName); + static PermUsedTypeEnum GetPermissionUsedType(AccessTokenID tokenID, uint32_t opCode); static int32_t QueryPermissionFlag(AccessTokenID tokenID, const std::string& permissionName, uint32_t& flag); static void GetPermStatusListByTokenId(AccessTokenID tokenID, const std::vector constrainedList, std::vector& opCodeList, std::vector& statusList); diff --git a/services/accesstokenmanager/main/cpp/src/permission/permission_data_brief.cpp b/services/accesstokenmanager/main/cpp/src/permission/permission_data_brief.cpp index 1914fe401..dcf2f2001 100644 --- a/services/accesstokenmanager/main/cpp/src/permission/permission_data_brief.cpp +++ b/services/accesstokenmanager/main/cpp/src/permission/permission_data_brief.cpp @@ -202,7 +202,7 @@ void PermissionDataBrief::GetPermStatusListByTokenId(AccessTokenID tokenID, return; } -PermUsedTypeEnum PermissionDataBrief::GetPermissionUsedType(AccessTokenID tokenID, int32_t opCode) +PermUsedTypeEnum PermissionDataBrief::GetPermissionUsedType(AccessTokenID tokenID, uint32_t opCode) { Utils::UniqueReadGuard infoGuard(this->permissionStateDataLock_); auto iter = requestedPermData_.find(tokenID); diff --git a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp index 0761e4ffd..47490496b 100644 --- a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp +++ b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp @@ -140,17 +140,16 @@ int PermissionManager::VerifyHapAccessToken(AccessTokenID tokenID, const std::st return HapTokenInfoInner::VerifyPermissionStatus(tokenID, permissionName); // 从data获取 } -PermUsedTypeEnum PermissionManager::GetPermissionUsedType( - AccessTokenID tokenID, const std::string& permissionName) +PermUsedTypeEnum PermissionManager::GetPermissionUsedType(AccessTokenID tokenID, uint32_t opCode) { if ((tokenID == INVALID_TOKENID) || (TOKEN_HAP != AccessTokenIDManager::GetInstance().GetTokenIdTypeEnum(tokenID))) { ACCESSTOKEN_LOG_ERROR(LABEL, "TokenID: %{public}d is invalid.", tokenID); return PermUsedTypeEnum::INVALID_USED_TYPE; } - PermUsedTypeEnum ret = HapTokenInfoInner::GetPermissionUsedType(tokenID, permissionName); + PermUsedTypeEnum ret = HapTokenInfoInner::GetPermissionUsedType(tokenID, opCode); ACCESSTOKEN_LOG_INFO(LABEL, - "Application %{public}u apply for %{public}s for type %{public}d.", tokenID, permissionName.c_str(), ret); + "Application %{public}u apply for %{public}u for type %{public}d.", tokenID, opCode, ret); return ret; } diff --git a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp index 94c1899ac..0559cf6b0 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp @@ -129,11 +129,10 @@ void AccessTokenManagerService::OnRemoveSystemAbility(int32_t systemAbilityId, c } } -PermUsedTypeEnum AccessTokenManagerService::GetPermissionUsedType( - AccessTokenID tokenID, const std::string& permissionName) +PermUsedTypeEnum AccessTokenManagerService::GetPermissionUsedType(AccessTokenID tokenID, uint32_t opCode) { - ACCESSTOKEN_LOG_INFO(LABEL, "TokenID=%{public}d, permission=%{public}s", tokenID, permissionName.c_str()); - return PermissionManager::GetInstance().GetPermissionUsedType(tokenID, permissionName); + ACCESSTOKEN_LOG_INFO(LABEL, "TokenID=%{public}u, opCode=%{public}u", tokenID, opCode); + return PermissionManager::GetInstance().GetPermissionUsedType(tokenID, opCode); } int AccessTokenManagerService::VerifyAccessToken(AccessTokenID tokenID, const std::string& permissionName) diff --git a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp index f01619f39..8760245ac 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp @@ -118,14 +118,14 @@ void AccessTokenManagerStub::GetPermissionUsedTypeInner(MessageParcel& data, Mes "WriteInt32 failed."); return; } - std::string permissionName; - if (!data.ReadString(permissionName)) { - ACCESSTOKEN_LOG_ERROR(LABEL, "Failed to read permissionName."); + uint32_t opCode; + if (!data.ReadUint32(opCode)) { + ACCESSTOKEN_LOG_ERROR(LABEL, "Failed to read opCode."); IF_FALSE_PRINT_LOG(LABEL, reply.WriteInt32( static_cast(PermUsedTypeEnum::INVALID_USED_TYPE)), "WriteInt32 failed."); return; } - PermUsedTypeEnum result = this->GetPermissionUsedType(tokenID, permissionName); + PermUsedTypeEnum result = this->GetPermissionUsedType(tokenID, opCode); int32_t type = static_cast(result); IF_FALSE_PRINT_LOG(LABEL, reply.WriteInt32(type), "WriteInt32 failed."); } diff --git a/services/accesstokenmanager/main/cpp/src/token/hap_token_info_inner.cpp b/services/accesstokenmanager/main/cpp/src/token/hap_token_info_inner.cpp index d073febc4..1fb4a44da 100644 --- a/services/accesstokenmanager/main/cpp/src/token/hap_token_info_inner.cpp +++ b/services/accesstokenmanager/main/cpp/src/token/hap_token_info_inner.cpp @@ -431,14 +431,9 @@ int32_t HapTokenInfoInner::VerifyPermissionStatus(AccessTokenID tokenID, const s return PermissionDataBrief::GetInstance().VerifyPermissionStatus(tokenID, permissionName); } -PermUsedTypeEnum HapTokenInfoInner::GetPermissionUsedType(AccessTokenID tokenID, const std::string& permissionName) +PermUsedTypeEnum HapTokenInfoInner::GetPermissionUsedType(AccessTokenID tokenID, uint32_t opCode) { - uint32_t code; - if (!TransferPermissionToOpcode(permissionName, code)) { - ACCESSTOKEN_LOG_ERROR(LABEL, "permissionName is invalid %{public}s.", permissionName.c_str()); - return PermUsedTypeEnum::INVALID_USED_TYPE; - } - return PermissionDataBrief::GetInstance().GetPermissionUsedType(tokenID, code); + return PermissionDataBrief::GetInstance().GetPermissionUsedType(tokenID, opCode); } int32_t HapTokenInfoInner::QueryPermissionFlag(AccessTokenID tokenID, const std::string& permissionName, uint32_t& flag) -- Gitee