From 65cf7a9007318862d586b03662366c7f201f6194 Mon Sep 17 00:00:00 2001 From: y1585740638 Date: Sat, 27 Aug 2022 18:48:40 +0800 Subject: [PATCH] Signed-off-by: y1585740638 Change-Id: I53d5da3c27307ff3f166db4976e000c64d73a69c --- .../include/i_accesstoken_manager.h | 2 ++ .../accesstoken/include/accesstoken_kit.h | 1 + .../accesstoken/src/accesstoken_kit.cpp | 5 ++++ .../src/accesstoken_manager_client.cpp | 9 +++++++ .../src/accesstoken_manager_client.h | 2 ++ .../src/accesstoken_manager_proxy.cpp | 26 +++++++++++++++++++ .../src/accesstoken_manager_proxy.h | 1 + .../innerkits/accesstoken/test/BUILD.gn | 6 ++--- .../unittest/src/accesstoken_kit_test.cpp | 12 +++++++++ .../test/unittest/src/accesstoken_kit_test.h | 1 + .../service/accesstoken_manager_service.h | 1 + .../service/accesstoken_manager_stub.h | 1 + .../service/accesstoken_manager_service.cpp | 5 +++- .../src/service/accesstoken_manager_stub.cpp | 9 ++++++- .../cpp/src/token/native_token_receptor.cpp | 6 ----- 15 files changed, 75 insertions(+), 12 deletions(-) diff --git a/frameworks/accesstoken/include/i_accesstoken_manager.h b/frameworks/accesstoken/include/i_accesstoken_manager.h index d5216bf64..77bd670d6 100644 --- a/frameworks/accesstoken/include/i_accesstoken_manager.h +++ b/frameworks/accesstoken/include/i_accesstoken_manager.h @@ -67,6 +67,7 @@ public: virtual int32_t RegisterPermStateChangeCallback( const PermStateChangeScopeParcel& scope, const sptr& callback) = 0; virtual int32_t UnRegisterPermStateChangeCallback(const sptr& callback) = 0; + virtual int32_t ReloadNativeTokenInfo() = 0; #ifdef TOKEN_SYNC_ENABLE virtual int GetHapTokenInfoFromRemote(AccessTokenID tokenID, @@ -115,6 +116,7 @@ public: GET_PERMISSION_OPER_STATE = 0xff31, REGISTER_PERM_STATE_CHANGE_CALLBACK = 0xff32, UNREGISTER_PERM_STATE_CHANGE_CALLBACK = 0xff33, + RELOAD_NATIVE_TOKEN_INFO = 0xff34, }; }; } // namespace AccessToken diff --git a/interfaces/innerkits/accesstoken/include/accesstoken_kit.h b/interfaces/innerkits/accesstoken/include/accesstoken_kit.h index ba1ebc0eb..3f16dd7c2 100644 --- a/interfaces/innerkits/accesstoken/include/accesstoken_kit.h +++ b/interfaces/innerkits/accesstoken/include/accesstoken_kit.h @@ -63,6 +63,7 @@ public: const std::shared_ptr& callback); static int32_t UnRegisterPermStateChangeCallback(const std::shared_ptr& callback); static int32_t GetHapDlpFlag(AccessTokenID tokenID); + static int32_t ReloadNativeTokenInfo(); #ifdef TOKEN_SYNC_ENABLE static int GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSync& hapSync); diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp index 73a0e5ce8..0f4424a86 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp @@ -321,6 +321,11 @@ int32_t AccessTokenKit::GetHapDlpFlag(AccessTokenID tokenID) return (int32_t)(idInner->dlpFlag); } +int32_t AccessTokenKit::ReloadNativeTokenInfo() +{ + return AccessTokenManagerClient::GetInstance().ReloadNativeTokenInfo(); +} + #ifdef TOKEN_SYNC_ENABLE int AccessTokenKit::GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSync& hapSync) { diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp index 59fea9d54..1bcbeeab2 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp @@ -366,6 +366,15 @@ int AccessTokenManagerClient::GetNativeTokenInfo(AccessTokenID tokenID, NativeTo nativeTokenInfoRes = nativeTokenInfoParcel.nativeTokenInfoParams; return res; } +int32_t AccessTokenManagerClient::ReloadNativeTokenInfo() +{ + auto proxy = GetProxy(); + if (proxy == nullptr) { + ACCESSTOKEN_LOG_ERROR(LABEL, "proxy is null"); + return RET_FAILED; + } + return proxy->ReloadNativeTokenInfo(); +} #ifdef TOKEN_SYNC_ENABLE int AccessTokenManagerClient::GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSync& hapSync) diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h index 8a0e14df3..3dd564d32 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h @@ -64,10 +64,12 @@ public: AccessTokenID tokenID, const std::string& appIDDesc, int32_t apiVersion, const HapPolicyParams& policy); int GetHapTokenInfo(AccessTokenID tokenID, HapTokenInfo& hapTokenInfoRes); int GetNativeTokenInfo(AccessTokenID tokenID, NativeTokenInfo& nativeTokenInfoRes); + int32_t ReloadNativeTokenInfo(); int32_t RegisterPermStateChangeCallback( const std::shared_ptr& customizedCallback); int32_t UnRegisterPermStateChangeCallback( const std::shared_ptr& customizedCb); + #ifdef TOKEN_SYNC_ENABLE int GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSync& hapSync); diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp index 078f8e4e8..790de7792 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp @@ -774,6 +774,32 @@ int AccessTokenManagerProxy::UpdateHapToken( return result; } +int32_t AccessTokenManagerProxy::ReloadNativeTokenInfo() +{ + MessageParcel data; + data.WriteInterfaceToken(IAccessTokenManager::GetDescriptor()); + if (!data.WriteUint32(tokenID)) { + return RET_FAILED; + } + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + sptr remote = Remote(); + if (remote == nullptr) { + ACCESSTOKEN_LOG_ERROR(LABEL, "remote service null."); + return RET_FAILED; + } + int32_t requestResult = remote->SendRequest( + static_cast(IAccessTokenManager::InterfaceCode::RELOAD_NATIVE_TOKEN_INFO), data, reply, option); + if (requestResult != NO_ERROR) { + ACCESSTOKEN_LOG_ERROR(LABEL, "request fail, result: %{public}d", requestResult); + return RET_FAILED; + } + + int32_t result = reply.ReadInt32(); + ACCESSTOKEN_LOG_INFO(LABEL, "result from server data = %{public}d", result); + return result; +} + #ifdef TOKEN_SYNC_ENABLE int AccessTokenManagerProxy::GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSyncParcel& hapSyncParcel) diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h index 809061d35..24c0b7b84 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h @@ -61,6 +61,7 @@ public: const HapPolicyParcel& policyPar) override; int GetHapTokenInfo(AccessTokenID tokenID, HapTokenInfoParcel& hapTokenInfoRes) override; int GetNativeTokenInfo(AccessTokenID tokenID, NativeTokenInfoParcel& nativeTokenInfoRes) override; + int32_t ReloadNativeTokenInfo() override; int32_t RegisterPermStateChangeCallback( const PermStateChangeScopeParcel& scope, const sptr& callback) override; int32_t UnRegisterPermStateChangeCallback(const sptr& callback) override; diff --git a/interfaces/innerkits/accesstoken/test/BUILD.gn b/interfaces/innerkits/accesstoken/test/BUILD.gn index fb1fda81a..458557d8c 100644 --- a/interfaces/innerkits/accesstoken/test/BUILD.gn +++ b/interfaces/innerkits/accesstoken/test/BUILD.gn @@ -26,16 +26,12 @@ ohos_unittest("libaccesstoken_sdk_test") { "//base/security/access_token/interfaces/innerkits/nativetoken/include", "//base/security/access_token/interfaces/innerkits/token_setproc/include", "//base/security/access_token/frameworks/common/include", - "//foundation/communication/dsoftbus/interfaces/kits/bus_center", - "//foundation/communication/dsoftbus/interfaces/kits/common", ] sources = [ "unittest/src/accesstoken_kit_test.cpp" ] cflags_cc = [ "-DHILOG_ENABLE" ] - configs = [ "//base/security/access_token/config:coverage_flags" ] - deps = [ "//base/security/access_token/interfaces/innerkits/accesstoken:libaccesstoken_sdk", "//base/security/access_token/interfaces/innerkits/nativetoken:libnativetoken", @@ -44,7 +40,9 @@ ohos_unittest("libaccesstoken_sdk_test") { external_deps = [ "c_utils:utils", + "dsoftbus:softbus_client", "hiviewdfx_hilog_native:libhilog", + "ipc:ipc_core", ] if (token_sync_enable == true) { cflags_cc += [ "-DTOKEN_SYNC_ENABLE" ] diff --git a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp index e4544897f..f7c91edfa 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp @@ -1329,6 +1329,18 @@ HWTEST_F(AccessTokenKitTest, GetHapTokenID004, TestSize.Level1) ASSERT_EQ(0, tokenID); } +/** + * @tc.name: ReloadNativeTokenInfo001 + * @tc.desc: cannot get hap tokenid with invalid bundlename. + * @tc.type: FUNC + * @tc.require:AR000GK6TH + */ +HWTEST_F(AccessTokenKitTest, ReloadNativeTokenInfo001, TestSize.Level1) +{ + int32_t Info = AccessTokenKit::ReloadNativeTokenInfo(); + ASSERT_EQ(RET_SUCCESS, Info); +} + /** * @tc.name: AllocHapToken001 * @tc.desc: alloc a tokenId successfully, delete it successfully the first time and fail to delte it again. diff --git a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h index 46b4fe8c3..9392a6a75 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h +++ b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h @@ -56,6 +56,7 @@ public: std::vector& permissionStateFulls, int32_t apiVersion); void DeleteTestToken() const; void AllocTestToken() const; + uint64_t selfTokenId_; std::string udid_; std::string networkId_; 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 2b46210f1..10298ae09 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h @@ -65,6 +65,7 @@ public: int32_t RegisterPermStateChangeCallback( const PermStateChangeScopeParcel& scope, const sptr& callback) override; int32_t UnRegisterPermStateChangeCallback(const sptr& callback) override; + int32_t ReloadNativeTokenInfo() override; #ifdef TOKEN_SYNC_ENABLE int GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSyncParcel& hapSyncParcel) override; diff --git a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h index e95fa76f9..4d30ad445 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h @@ -56,6 +56,7 @@ private: void GetTokenTypeInner(MessageParcel& data, MessageParcel& reply); void RegisterPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); void UnRegisterPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); + void ReloadNativeTokenInfoInner(MessageParcel& data, MessageParcel& reply); #ifdef TOKEN_SYNC_ENABLE void GetHapTokenInfoFromRemoteInner(MessageParcel& data, MessageParcel& reply); 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 7065736bf..4a9271698 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp @@ -319,7 +319,10 @@ int AccessTokenManagerService::GetNativeTokenInfo(AccessTokenID tokenID, NativeT return AccessTokenInfoManager::GetInstance().GetNativeTokenInfo(tokenID, InfoParcel.nativeTokenInfoParams); } - +int32_t AccessTokenManagerService::ReloadNativeTokenInfo() +{ + return NativeTokenReceptor::GetInstance().Init(); +} #ifdef TOKEN_SYNC_ENABLE int AccessTokenManagerService::GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSyncParcel& hapSyncParcel) 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 5039f472f..0575e434e 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp @@ -349,6 +349,12 @@ void AccessTokenManagerStub::UnRegisterPermStateChangeCallbackInner(MessageParce reply.WriteInt32(result); } +void AccessTokenManagerStub::ReloadNativeTokenInfoInner(MessageParcel& data, MessageParcel& reply) +{ + int32_t result = this->ReloadNativeTokenInfo(); + reply.WriteInt32(result); +} + #ifdef TOKEN_SYNC_ENABLE void AccessTokenManagerStub::GetHapTokenInfoFromRemoteInner(MessageParcel& data, MessageParcel& reply) { @@ -546,7 +552,8 @@ AccessTokenManagerStub::AccessTokenManagerStub() &AccessTokenManagerStub::GetHapTokenInfoInner; requestFuncMap_[static_cast(IAccessTokenManager::InterfaceCode::UPDATE_HAP_TOKEN)] = &AccessTokenManagerStub::UpdateHapTokenInner; - + requestFuncMap_[static_cast(IAccessTokenManager::InterfaceCode::RELOAD_NATIVE_TOKEN_INFO)] = + &AccessTokenManagerStub::ReloadNativeTokenInfoInner; #ifdef TOKEN_SYNC_ENABLE requestFuncMap_[static_cast(IAccessTokenManager::InterfaceCode::GET_HAP_TOKEN_FROM_REMOTE)] = &AccessTokenManagerStub::GetHapTokenInfoFromRemoteInner; diff --git a/services/accesstokenmanager/main/cpp/src/token/native_token_receptor.cpp b/services/accesstokenmanager/main/cpp/src/token/native_token_receptor.cpp index aaa452736..0b81a6b71 100644 --- a/services/accesstokenmanager/main/cpp/src/token/native_token_receptor.cpp +++ b/services/accesstokenmanager/main/cpp/src/token/native_token_receptor.cpp @@ -197,11 +197,6 @@ int NativeTokenReceptor::ReadCfgFile(std::string& nativeRawData) int NativeTokenReceptor::Init() { - if (ready_) { - ACCESSTOKEN_LOG_ERROR(LABEL, "native token has been inited."); - return RET_SUCCESS; - } - std::string nativeRawData; int ret = ReadCfgFile(nativeRawData); if (ret != RET_SUCCESS) { @@ -216,7 +211,6 @@ int NativeTokenReceptor::Init() } AccessTokenInfoManager::GetInstance().ProcessNativeTokenInfos(tokenInfos); - ready_ = true; ACCESSTOKEN_LOG_INFO(LABEL, "init ok."); return RET_SUCCESS; } -- Gitee