diff --git a/frameworks/accesstoken/include/i_accesstoken_manager.h b/frameworks/accesstoken/include/i_accesstoken_manager.h index ca2892f6f418a51745d7511359b2ca0cbafcc3c4..5c77f00eec7888648044d9210a62fd7f3f8a1ceb 100644 --- a/frameworks/accesstoken/include/i_accesstoken_manager.h +++ b/frameworks/accesstoken/include/i_accesstoken_manager.h @@ -66,6 +66,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, @@ -113,6 +114,7 @@ public: GET_PERMISSION_OPER_STATE, REGISTER_PERM_STATE_CHANGE_CALLBACK, UNREGISTER_PERM_STATE_CHANGE_CALLBACK, + RELOAD_NATIVE_TOKEN_INFO, }; }; } // namespace AccessToken diff --git a/interfaces/innerkits/accesstoken/include/accesstoken_kit.h b/interfaces/innerkits/accesstoken/include/accesstoken_kit.h index 816787e5e9fe5eeae8969fe53731a97ef138bd32..b5fef3e72b8141949d8c49ad01958e84dead64c3 100644 --- a/interfaces/innerkits/accesstoken/include/accesstoken_kit.h +++ b/interfaces/innerkits/accesstoken/include/accesstoken_kit.h @@ -62,6 +62,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 40c682d81eb16dce769741cf75ff5c3407bf23f7..448a7a2fa30bdfbf4d149100b643a181fd653a40 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp @@ -306,6 +306,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 5bfd25d77fa3377981cebb291ff526f8f3542d7a..60e38e28193d8b5bbf6ef4113119cef536e4c5af 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp @@ -357,6 +357,16 @@ int AccessTokenManagerClient::GetNativeTokenInfo(AccessTokenID tokenID, NativeTo 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 1526569b7b84909ec28326776d6fe358976ee09d..06e855bc07884a07f318cb7e3ed71fda93df7723 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h @@ -63,6 +63,7 @@ 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( diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp index 81086d86c309adfa1a98a5584e4178b9e1009217..ab6abd8577ec01742eda9044902fd248d10285a8 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp @@ -742,6 +742,32 @@ int AccessTokenManagerProxy::UpdateHapToken( return result; } +int32_t AccessTokenManagerProxy::ReloadNativeTokenInfo() +{ + MessageParcel data; + if (!data.WriteInterfaceToken(IAccessTokenManager::GetDescriptor())) { + ACCESSTOKEN_LOG_ERROR(LABEL, "Failed to write WriteInterfaceToken."); + 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 f133fddae37bcd3adbef8ab2e5ed2fabc933f8fa..55dc477fbb0ec4a6b10fccd4910b8a379f7d535d 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h @@ -60,6 +60,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 fb1fda81a6b8b35d9416696a360038c90a63f49e..6069ca1382eb7b5accb77266f577ae491515d095 100644 --- a/interfaces/innerkits/accesstoken/test/BUILD.gn +++ b/interfaces/innerkits/accesstoken/test/BUILD.gn @@ -26,8 +26,6 @@ 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" ] @@ -44,7 +42,9 @@ ohos_unittest("libaccesstoken_sdk_test") { external_deps = [ "c_utils:utils", + "dsoftbus:softbus_client", "hiviewdfx_hilog_native:libhilog", + "ipc:ipc_single", ] 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 e4544897fe4f2ecfa587d2ce3e1fc43048d12c0e..b34b00aca015da21593d3f88c1952e1a1e29552f 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 ret = AccessTokenKit::ReloadNativeTokenInfo(); + ASSERT_EQ(RET_SUCCESS, ret); +} + /** * @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 46b4fe8c35e0352004df152adead70cb2e788167..a6c2757ec5fc4fbb0175354206422ef1d218fce0 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h +++ b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h @@ -56,9 +56,8 @@ public: std::vector& permissionStateFulls, int32_t apiVersion); void DeleteTestToken() const; void AllocTestToken() const; + uint64_t selfTokenId_; - std::string udid_; - std::string networkId_; }; } // namespace AccessToken } // namespace Security 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 6a930dcb14e230fa8634ca0e260853181b725cfc..7f520baa136ab69b4ed91dba51476cf30da0970a 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h @@ -64,6 +64,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 129a29bc5fab5b6747034e9fd3528224eb730cb0..5ed1dfffcdeb21a412996e2fe853bcf98914d5f3 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h @@ -55,6 +55,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/include/token/native_token_receptor.h b/services/accesstokenmanager/main/cpp/include/token/native_token_receptor.h index cc72c61ff398cc1a6d20518553eac85f904ca931..4509c8ec5117d8b08f9fabf731de4023154ccaf1 100644 --- a/services/accesstokenmanager/main/cpp/include/token/native_token_receptor.h +++ b/services/accesstokenmanager/main/cpp/include/token/native_token_receptor.h @@ -40,7 +40,7 @@ public: int Init(); private: - NativeTokenReceptor() : ready_(false) {} + NativeTokenReceptor() {} DISALLOW_COPY_AND_MOVE(NativeTokenReceptor); int ReadCfgFile(std::string &nativeRawData); void FromJson(const nlohmann::json &jsonObject, @@ -48,7 +48,6 @@ private: int32_t ParserNativeRawData(const std::string& nativeRawData, std::vector>& tokenInfos); void from_json(const nlohmann::json& j, NativeTokenInfo& p); - bool ready_; }; } // namespace AccessToken } // namespace Security 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 b9da95668fee9cdd9d457dfc8f55909cac9d1b7a..c1c2a7fd9257773a9d9452981ef25441586ab57f 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp @@ -313,6 +313,11 @@ 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 8e2ff6b15936137907a04a65ef5935f69bfe79a0..17cabcd0c45d206ef45f28ce4b573fec469fe7dd 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp @@ -341,6 +341,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) { @@ -536,7 +542,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 aaa4527364d66fb97bd8270f859803aca1fc6579..0b81a6b7173374d193f2880bb64b16ef84aef8de 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; }