diff --git a/BUILD.gn b/BUILD.gn index d57c193e9917a78fda6d7a3ae133a5704c51cc7d..176357c329fc0d0e060307acacecc34ca171f9dc 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -36,6 +36,14 @@ group("tokensync_build_module") { } } +group("tools_target") { + if (is_standard_system) { + deps = [ + "//base/security/access_token/tools/accesstoken:tools_atm" + ] + } +} + group("accesstoken_build_module_test") { testonly = true deps = [] diff --git a/frameworks/accesstoken/include/i_accesstoken_manager.h b/frameworks/accesstoken/include/i_accesstoken_manager.h index 12b1d3165ad69bd12b4b08c149115da08f444c23..8ef43afdcb83c2461ab7f7ae1212097ba64577e0 100644 --- a/frameworks/accesstoken/include/i_accesstoken_manager.h +++ b/frameworks/accesstoken/include/i_accesstoken_manager.h @@ -68,7 +68,7 @@ public: virtual int DeleteRemoteToken(const std::string& deviceID, AccessTokenID tokenID) = 0; virtual int DeleteRemoteDeviceTokens(const std::string& deviceID) = 0; - virtual int DumpToken(std::string& dumpInfo) = 0; + virtual void DumpTokenInfo(std::string& tokenInfo) = 0; enum class InterfaceCode { VERIFY_ACCESSTOKEN = 0xff10, @@ -96,7 +96,7 @@ public: DELETE_REMOTE_TOKEN_INFO = 0xff2b, DELETE_REMOTE_DEVICE_TOKEN = 0xff2c, - DUMP = 0xff30, + DUMP_TOKENINFO = 0xff30, }; }; } // namespace AccessToken diff --git a/interfaces/innerkits/accesstoken/include/accesstoken_kit.h b/interfaces/innerkits/accesstoken/include/accesstoken_kit.h index 495f451d9de18a8ea95305f16d8fef812470bf84..36fc7934242a0f933077f2b00aafd0a05a932639 100644 --- a/interfaces/innerkits/accesstoken/include/accesstoken_kit.h +++ b/interfaces/innerkits/accesstoken/include/accesstoken_kit.h @@ -60,7 +60,7 @@ public: std::vector& nativeTokenInfoList); static int DeleteRemoteToken(const std::string& deviceID, AccessTokenID tokenID); static int DeleteRemoteDeviceTokens(const std::string& deviceID); - static int DumpToken(std::string& dumpInfo); + static void DumpTokenInfo(std::string& dumpInfo); }; } // namespace AccessToken } // namespace Security diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp index dbdad0dabddef5fa2bad6a598504565c3634d143..a1791f7a05b8f0268d7729cc5d423437631a32d2 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp @@ -321,10 +321,12 @@ int AccessTokenKit::DeleteRemoteDeviceTokens(const std::string& deviceID) return AccessTokenManagerClient::GetInstance().DeleteRemoteDeviceTokens(deviceID); } -int AccessTokenKit::DumpToken(std::string& dumpInfo) +void AccessToken::DumpTokenInfo(std::string& dumpInfo) { - return AccessTokenManagerClient::GetInstance().DumpToken(dumpInfo); + ACCESSTOKEN_LOG_INFO(LABEL, "%{public}s called", __func__); + AccessTokenManagerClient::GetInstance().DumpTokenInfo(dumpInfo); } + } // namespace AccessToken } // namespace Security } // namespace OHOS diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp index fc9225c37387946f035bd5dad975c8240d054c81..0010899c9439f8fc5cabb1343b4a2a9ba2d46afe 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp @@ -360,18 +360,18 @@ int AccessTokenManagerClient::DeleteRemoteDeviceTokens(const std::string& device return res; } -int AccessTokenManagerClient::DumpToken(std::string& dumpInfo) +void AccessTokenManagerClient::DumpTokenInfo(std::string& dumpInfo) { ACCESSTOKEN_LOG_DEBUG(LABEL, "%{public}s: called!", __func__); auto proxy = GetProxy(); if (proxy == nullptr) { - ACCESSTOKEN_LOG_ERROR(LABEL, "proxy is null"); - return RET_FAILED; + ACCESSTOKEN_LOG_ERROR(LABEL, "%{public}s: proxy is null", __func__); + return; } - AccessTokenID res = proxy->DumpToken(dumpInfo); - return res; + proxy->DumpTokenInfo(dumpInfo); } + sptr AccessTokenManagerClient::GetProxy() { if (proxy_ == nullptr) { diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h index d3cc13fcafe7b3aaeb3fa8efd0cd8f3e6e0ec39c..4d260b6df69ede3ca748ef5c5ad6c9f6c2a7c9de 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h @@ -64,7 +64,7 @@ public: std::vector& nativeTokenInfoList); int DeleteRemoteToken(const std::string& deviceID, AccessTokenID tokenID); int DeleteRemoteDeviceTokens(const std::string& deviceID); - int DumpToken(std::string& dumpInfo); + void DumpTokenInfo(std::string& dumpInfo); private: AccessTokenManagerClient(); diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp index af6849ecbc7ad9ca74973b89876edba5b889b781..204e6559b81fc89dc15a5722c37b3121c004004c 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp @@ -801,28 +801,27 @@ int AccessTokenManagerProxy::DeleteRemoteDeviceTokens(const std::string& deviceI return result; } -int AccessTokenManagerProxy::DumpToken(std::string& dumpInfo) +void AccessTokenManagerProxy::DumpTokenInfo(std::string& dumpInfo) { MessageParcel data; data.WriteInterfaceToken(IAccessTokenManager::GetDescriptor()); MessageParcel reply; - MessageOption option(MessageOption::TF_SYNC); + MessageOption option; sptr remote = Remote(); if (remote == nullptr) { - ACCESSTOKEN_LOG_ERROR(LABEL, "remote service null."); - return RET_FAILED; + ACCESSTOKEN_LOG_ERROR(LABEL, "%{public}s: remote service null.", __func__); + return; } int32_t requestResult = remote->SendRequest( - static_cast(IAccessTokenManager::InterfaceCode::DUMP), data, reply, option); + static_cast(IAccessTokenManager::InterfaceCode::DUMP_TOKENINFO), data, reply, option); if (requestResult != NO_ERROR) { - ACCESSTOKEN_LOG_ERROR(LABEL, "send request fail, result: %{public}d", requestResult); - return RET_FAILED; + ACCESSTOKEN_LOG_ERROR(LABEL, "%{public}s send request fail, result: %{public}d", __func__, requestResult); + return; } dumpInfo = reply.ReadString(); - AccessTokenID result = reply.ReadInt32(); - ACCESSTOKEN_LOG_DEBUG(LABEL, "get result from server data = %{public}d", result); + ACCESSTOKEN_LOG_DEBUG(LABEL, "%{public}s get result from server dumpInfo = %{public}s", __func__, dumpInfo.c_str()); return result; } } // namespace AccessToken diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h index 55655a6f4e76c3e9169689c4d477524bb1512c7d..5e5b55172f3749a00d897d0dc2b579e90b0b711e 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h @@ -66,7 +66,7 @@ public: int DeleteRemoteToken(const std::string& deviceID, AccessTokenID tokenID) override; int DeleteRemoteDeviceTokens(const std::string& deviceID) override; - int DumpToken(std::string& dumpInfo) override; + void DumpTokenInfo(std::string& dumpInfo) override; private: static inline BrokerDelegator delegator_; }; diff --git a/interfaces/kits/accesstoken/BUILD.gn b/interfaces/kits/accesstoken/BUILD.gn index ae9e53c0a75ea43194f16f2b9e6f8e250d4defcf..b22a67175bb3bb139b2a3ae96558028bac0a9d71 100644 --- a/interfaces/kits/accesstoken/BUILD.gn +++ b/interfaces/kits/accesstoken/BUILD.gn @@ -15,35 +15,18 @@ import("//build/ohos.gni") ohos_shared_library("libabilityaccessctrl") { include_dirs = [ - "//foundation/appexecfwk/standard/interfaces/innerkits/libeventhandler/include", - "//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy/include", - "//foundation/ace/napi/interfaces/kits", - "//third_party/json/single_include", - "//third_party/node/src", - "//utils/system/safwk/native/include", - "//foundation/communication/dsoftbus/interfaces/kits/transport", - "//foundation/communication/dsoftbus/interfaces/kits/common", - "//foundation/communication/dsoftbus/interfaces/kits/bus_center", - "//third_party/json/include", - "//foundation/aafwk/standard/interfaces/innerkits/ability_manager/include", - "//base/security/access_token/frameworks/common/include", "//base/security/access_token/interfaces/kits/accesstoken/napi/include", "//base/security/access_token/interfaces/innerkits/accesstoken/include", + "//base/security/access_token/frameworks/common/include", + "//foundation/ace/napi/interfaces/innerkits", + "//foundation/ace/napi/interfaces/kits", ] sources = [ "//base/security/access_token/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp" ] deps = [ - "//base/notification/ans_standard/frameworks/ans/core:ans_core", - "//base/notification/ans_standard/frameworks/wantagent:wantagent_innerkits", - "//base/security/access_token/interfaces/innerkits/accesstoken:libaccesstoken_sdk", - "//base/startup/syspara_lite/interfaces/innerkits/native/syspara:syspara", - "//foundation/aafwk/standard/interfaces/innerkits/base:base", "//foundation/ace/napi:ace_napi", - "//foundation/appexecfwk/standard/interfaces/innerkits/libeventhandler:libeventhandler", - "//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk", - "//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy", - "//utils/native/base:utils", + "//base/security/access_token/interfaces/innerkits/accesstoken:libaccesstoken_sdk", ] cflags_cc = [ "-DHILOG_ENABLE" ] external_deps = [ diff --git a/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp b/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp index 02dd841c4922adfbf9249e6adfdbd9602063059c..80cdb438e24fb04e48f4a2388924d28cdeed0919 100644 --- a/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp +++ b/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp @@ -268,7 +268,7 @@ void NapiAtManager::GrantUserGrantedPermissionExcute(napi_env env, void *data) asyncContext->permissionName, asyncContext->flag); - ACCESSTOKEN_LOG_DEBUG(LABEL, + ACCESSTOKEN_LOG_DEBUG(LABEL, "tokenId = %{public}d, permissionName = %{public}s, flag = %{public}d, grant result = %{public}d.", asyncContext->tokenId, asyncContext->permissionName, asyncContext->flag, asyncContext->result); diff --git a/ohos.build b/ohos.build index dcd83476236ce9997c20f6f4f254893566b8819e..d03375d977dae93b10798aacb19a39394147eda3 100644 --- a/ohos.build +++ b/ohos.build @@ -37,7 +37,8 @@ ], "module_list": [ "//base/security/access_token:accesstoken_build_module", - "//base/security/access_token:tokensync_build_module" + "//base/security/access_token:tokensync_build_module", + "//base/security/access_token:tools_target" ], "test_list": [ "//base/security/access_token:accesstoken_build_module_test", 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 cbb3cfa143bfe2c8263872da670c478911df9d48..8968ab84476425516bdadd9e100b7efdae61b871 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h @@ -66,7 +66,7 @@ public: int DeleteRemoteToken(const std::string& deviceID, AccessTokenID tokenID) override; int DeleteRemoteDeviceTokens(const std::string& deviceID) override; - int DumpToken(std::string& dumpInfo) override; + void DumpTokenInfo(std::string& dumpInfo) override; private: bool Initialize() const; 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 c4fbb77e17aad1acf09db4d25745008f0cb1b968..332718599b5a4f766cf84068c84f8c46d6c81bab 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h @@ -60,7 +60,7 @@ private: void DeleteRemoteTokenInner(MessageParcel& data, MessageParcel& reply); void DeleteRemoteDeviceTokensInner(MessageParcel& data, MessageParcel& reply); void GetRemoteHapTokenIDInner(MessageParcel& data, MessageParcel& reply); - void DumpTokenInner(MessageParcel& data, MessageParcel& reply); + void DumpTokenInfoInner(MessageParcel& data, MessageParcel& reply); bool IsAuthorizedCalling() const; static const int SYSTEM_UID = 1000; diff --git a/services/accesstokenmanager/main/cpp/include/token/accesstoken_info_manager.h b/services/accesstokenmanager/main/cpp/include/token/accesstoken_info_manager.h index 3c43293803adb1d97c5664dcd2ec5cfd58f2e193..1da2564f6c56d32a28b7320905a00a24f90bbe29 100644 --- a/services/accesstokenmanager/main/cpp/include/token/accesstoken_info_manager.h +++ b/services/accesstokenmanager/main/cpp/include/token/accesstoken_info_manager.h @@ -50,7 +50,7 @@ public: AccessTokenID AllocLocalTokenID(const std::string& remoteDeviceID, AccessTokenID remoteTokenID); void ProcessNativeTokenInfos(const std::vector>& tokenInfos); int UpdateHapToken(AccessTokenID tokenID, const std::string& appIDDesc, const HapPolicyParams& policy); - void Dump(std::string& dumpInfo); + void DumpTokenInfo(std::string& dumpInfo); void RefreshTokenInfoIfNeeded(); /* tokensync needed */ diff --git a/services/accesstokenmanager/main/cpp/src/permission/permission_policy_set.cpp b/services/accesstokenmanager/main/cpp/src/permission/permission_policy_set.cpp index 9cb3d050755137a1fe4df66b5e0eb202a6144661..4bea4ec4aab3ad1fc3abc82c5f7ecb3014f0d510 100644 --- a/services/accesstokenmanager/main/cpp/src/permission/permission_policy_set.cpp +++ b/services/accesstokenmanager/main/cpp/src/permission/permission_policy_set.cpp @@ -247,75 +247,82 @@ void PermissionPolicySet::GetPermissionStateList(std::vector infoGuard(this->permPolicySetLock_); - info.append(",\n\t"); - info.append(R"("permDefList": [)"); + info.append(R"( "permDefList": [)"); + info.append("\n"); for (auto iter = permList_.begin(); iter != permList_.end(); iter++) { - info.append("\n\t\t"); PermDefToString(*iter, info); if (iter != (permList_.end() - 1)) { - info.append(","); + info.append(",\n"); } } - info.append("]"); + info.append("\n ],\n"); - info.append(",\n\t"); - info.append(R"("permStateList": [)"); + info.append(R"( "permStateList": [)"); for (auto iter = permStateList_.begin(); iter != permStateList_.end(); iter++) { - info.append("\n\t\t"); PermStateFullToString(*iter, info); if (iter != (permStateList_.end() - 1)) { - info.append(","); + info.append(",\n"); } } - info.append("]"); + info.append("\n ]\n"); } } // 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 4fe4e741bb38c80904e0f01a7ab945a8c1dd6ad4..87236d583815ce4a01d4ca1a7604d77f4b8fcdb0 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp @@ -293,10 +293,11 @@ int AccessTokenManagerService::DeleteRemoteDeviceTokens(const std::string& devic return AccessTokenInfoManager::GetInstance().DeleteRemoteDeviceTokens(deviceID); } -int AccessTokenManagerService::DumpToken(std::string& dumpInfo) +void AccessTokenManagerService::DumpTokenInfo(std::string& dumpInfo) { - AccessTokenInfoManager::GetInstance().Dump(dumpInfo); - return 0; + ACCESSTOKEN_LOG_INFO(LABEL, "%{public}s called", __func__); + + AccessTokenInfoManager::GetInstance().DumpTokenInfo(dumpInfo); } bool AccessTokenManagerService::Initialize() const 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 afb050cda7924bb3a27792e46234d5eb0207118e..24712019f33c35f77513b53fe9b180b56d3c16b5 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp @@ -368,17 +368,15 @@ void AccessTokenManagerStub::DeleteRemoteDeviceTokensInner(MessageParcel& data, reply.WriteInt32(result); } -void AccessTokenManagerStub::DumpTokenInner(MessageParcel& data, MessageParcel& reply) +void AccessTokenManagerStub::DumpTokenInfoInner(MessageParcel& data, MessageParcel& reply) { if (!IsAuthorizedCalling()) { ACCESSTOKEN_LOG_INFO(LABEL, "%{public}s called, permission denied", __func__); - reply.WriteInt32(RET_FAILED); return; } - std::string dumpInfo; - int result = this->DumpToken(dumpInfo); + std::string dumpInfo = ""; + this->DumpTokenInfo(dumpInfo); reply.WriteString(dumpInfo); - reply.WriteUint32(result); } bool AccessTokenManagerStub::IsAuthorizedCalling() const @@ -436,8 +434,8 @@ AccessTokenManagerStub::AccessTokenManagerStub() &AccessTokenManagerStub::DeleteRemoteTokenInner; requestFuncMap_[static_cast(IAccessTokenManager::InterfaceCode::DELETE_REMOTE_DEVICE_TOKEN)] = &AccessTokenManagerStub::DeleteRemoteDeviceTokensInner; - requestFuncMap_[static_cast(IAccessTokenManager::InterfaceCode::DUMP)] = - &AccessTokenManagerStub::DumpTokenInner; + requestFuncMap_[static_cast(IAccessTokenManager::InterfaceCode::DUMP_TOKENINFO)] = + &AccessTokenManagerStub::DumpTokenInfoInner; } AccessTokenManagerStub::~AccessTokenManagerStub() diff --git a/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp b/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp index c504c2c7215e83395fdefac9cfa133595393bdfd..d36bf4bd97aec2a8f90908c0cc4b6e937b73f66a 100644 --- a/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp +++ b/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp @@ -821,25 +821,27 @@ void AccessTokenInfoManager::RefreshTokenInfoIfNeeded() }); } -void AccessTokenInfoManager::Dump(std::string& dumpInfo) +void AccessTokenInfoManager::DumpTokenInfo(std::string& dumpInfo) { + ACCESSTOKEN_LOG_INFO(LABEL, "%{public}s called", __func__); + ACCESSTOKEN_LOG_INFO(LABEL, "get hapTokenInfo"); + Utils::UniqueReadGuard hapInfoGuard(this->hapTokenInfoLock_); for (auto iter = hapTokenInfoMap_.begin(); iter != hapTokenInfoMap_.end(); iter++) { if (iter->second != nullptr) { - dumpInfo.append("\n"); iter->second->ToString(dumpInfo); - dumpInfo.append("\n"); } } + ACCESSTOKEN_LOG_INFO(LABEL, "get nativeTokenInfo"); Utils::UniqueReadGuard nativeInfoGuard(this->nativeTokenInfoLock_); for (auto iter = nativeTokenInfoMap_.begin(); iter != nativeTokenInfoMap_.end(); iter++) { if (iter->second != nullptr) { - dumpInfo.append("\n"); iter->second->ToString(dumpInfo); dumpInfo.append("\n"); } } + ACCESSTOKEN_LOG_INFO(LABEL, "get tokeninfo: %{public}s", dumpInfo.c_str()); } } // namespace AccessToken } // namespace Security 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 bb2ab3d95f25d16cab186cf30db2fa166798a357..7acc7b1a1df38e76386a52af38e59e38193bb6fb 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 @@ -226,16 +226,17 @@ void HapTokenInfoInner::SetRemote(bool isRemote) void HapTokenInfoInner::ToString(std::string& info) const { - info.append(R"({"tokenID": )" + std::to_string(tokenInfoBasic_.tokenID)); - info.append(R"(, "tokenAttr": )" + std::to_string(tokenInfoBasic_.tokenAttr)); - info.append(R"(, "ver": )" + std::to_string(tokenInfoBasic_.ver)); - info.append(R"(, "userId": )" + std::to_string(tokenInfoBasic_.userID)); - info.append(R"(, "bundleName": ")" + tokenInfoBasic_.bundleName + R"(")"); - info.append(R"(, "instIndex": )" + std::to_string(tokenInfoBasic_.instIndex)); - info.append(R"(, "appID": ")" + tokenInfoBasic_.appID + R"(")"); - info.append(R"(, "deviceID": ")" + tokenInfoBasic_.deviceID + R"(")"); - info.append(R"(, "apl": )" + std::to_string(tokenInfoBasic_.apl)); - info.append(R"(, "isRemote": )" + std::to_string(isRemote_)); + info.append(R"({)"); + info.append("\n"); + info.append(R"( "tokenID": )" + std::to_string(tokenID_) + ",\n"); + info.append(R"( "tokenAttr": )" + std::to_string(tokenAttr_) + ",\n"); + info.append(R"( "ver": )" + std::to_string(ver_) + ",\n"); + info.append(R"( "userId": )" + std::to_string(userID_) + ",\n"); + info.append(R"( "bundleName": ")" + bundleName_ + R"(")" + ",\n"); + info.append(R"( "instIndex": )" + std::to_string(instIndex_) + ",\n"); + info.append(R"( "appID": ")" + appID_ + R"(")" + ",\n"); + info.append(R"( "deviceID": ")" + deviceID_ + R"(")" + ",\n"); + info.append(R"( "apl": )" + std::to_string(apl_) + ",\n"); if (permPolicySet_ != nullptr) { permPolicySet_->ToString(info); diff --git a/services/accesstokenmanager/main/cpp/src/token/native_token_info_inner.cpp b/services/accesstokenmanager/main/cpp/src/token/native_token_info_inner.cpp index 0e5f70d85920a81bf480958a3c4e0048f71eff60..f272da58ee5e93ded71b369e61b15f3177b47b50 100644 --- a/services/accesstokenmanager/main/cpp/src/token/native_token_info_inner.cpp +++ b/services/accesstokenmanager/main/cpp/src/token/native_token_info_inner.cpp @@ -184,14 +184,15 @@ void NativeTokenInfoInner::SetDcaps(const std::string& dcapStr) void NativeTokenInfoInner::ToString(std::string& info) const { - info.append(R"({"tokenID": )" + std::to_string(tokenInfoBasic_.tokenID)); - info.append(R"(, "tokenAttr": )" + std::to_string(tokenInfoBasic_.tokenAttr)); - info.append(R"(, "ver": )" + std::to_string(tokenInfoBasic_.ver)); - info.append(R"(, "processName": ")" + tokenInfoBasic_.processName + R"(")"); - info.append(R"(, "apl": )" + std::to_string(tokenInfoBasic_.apl)); - info.append(R"(, "dcap": ")" + DcapToString(tokenInfoBasic_.dcap) + R"(")"); - info.append(R"(, "isRemote": )" + std::to_string(isRemote_)); - info.append("}"); + info.append(R"({)"); + info.append("\n"); + info.append(R"( "tokenID": )" + std::to_string(tokenID_) + ",\n"); + info.append(R"( "tokenAttr": )" + std::to_string(tokenAttr_) + ",\n"); + info.append(R"( "ver": )" + std::to_string(ver_) + ",\n"); + info.append(R"( "processName": ")" + processName_ + R"(")" + ",\n"); + info.append(R"( "apl": )" + std::to_string(apl_) + ",\n"); + info.append(R"( "dcap": ")" + DcapToString(dcap_) + R"(")" + ",\n"); + info.append("\n}"); } } // namespace AccessToken } // namespace Security diff --git a/tools/accesstoken/BUILD.gn b/tools/accesstoken/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..69150a071c17ee6e504887b4dac7bc0af142855f --- /dev/null +++ b/tools/accesstoken/BUILD.gn @@ -0,0 +1,61 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/ohos.gni") + +ohos_source_set("tools_atm_source_set") { + include_dirs = [ + "//base/security/access_token/tools/accesstoken/include", + "//base/security/access_token/frameworks/common/include", + "//foundation/aafwk/standard/tools/aa/include", + "//base/security/access_token/interfaces/innerkits/accesstoken/main/cpp/include", + "//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core/include/bundlemgr", + "//foundation/aafwk/standard/services/common/include", + ] + + sources = [ + "//foundation/aafwk/standard/tools/aa/src/shell_command.cpp", + "src/main.cpp", + "src/atm_command.cpp", + "src/atm_receiver_impl.cpp", + ] + + deps = [ + "//utils/native/base:utils", + "//base/security/access_token/interfaces/innerkits/accesstoken:libaccesstoken_sdk", + "//foundation/aafwk/standard/tools/aa:aa", + ] + + cflags = [ "-DHILOG_ENABLE" ] + + if (target_cpu == "arm") { + cflags += [ "-DBINDER_IPC_32BIT" ] + } + + external_deps = [ + "hiviewdfx_hilog_native:libhilog", + "ipc:ipc_core", + ] +} + +ohos_executable("atm") { + deps = [ ":tools_atm_source_set" ] + + install_enable = true + subsystem_name = "security" + part_name = "access_token" +} + +group("tools_atm") { + deps = [ ":atm" ] +} diff --git a/tools/accesstoken/include/atm_command.h b/tools/accesstoken/include/atm_command.h new file mode 100644 index 0000000000000000000000000000000000000000..6af00ec42c9f39199d3d4415ec25e0437b7d7694 --- /dev/null +++ b/tools/accesstoken/include/atm_command.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ACCESSTOKENMANAGER_COMMAND_H +#define ACCESSTOKENMANAGER_COMMAND_H + +#include "shell_command.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { +const std::string TOOLS_NAME = "atm"; +const std::string HELP_MSG = "usage: atm \n" + "These are common atm commands list:\n" + " help list available commands\n" + " dump list token info\n" + +class AtmCommand : public OHOS::AAfwk::ShellCommand { +public: + AtmCommand(int argc, char *argv[]); + ~AtmCommand() override + {} + +private: + ErrCode CreateCommandMap() override; + ErrCode CreateMessageMap() override; + ErrCode init() override; + + ErrCode RunAsHelpCommand(); + ErrCode RunAsDumpCommand(); +}; +} // namespace AccessToken +} // namespace Security +} // namespace OHOS + +#endif // ACCESSTOKENMANAGER_COMMAND_H diff --git a/tools/accesstoken/include/atm_receiver_impl.h b/tools/accesstoken/include/atm_receiver_impl.h new file mode 100644 index 0000000000000000000000000000000000000000..56f982d65fe5b89958bbecc33b8f50ade9053f99 --- /dev/null +++ b/tools/accesstoken/include/atm_receiver_impl.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ACCESSTOKENMANAGER_RECEIVER_IMPL_H +#define ACCESSTOKENMANAGER_RECEIVER_IMPL_H + +#include +#include "status_receiver_host.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { +class AtmReceiverImpl : public AppExcFwk::StatusReceiverHost { +public: + AtmReceiverImpl() + virtual ~AtmReceiverImpl() override; + + virtual void OnStatusNotify(const int process) override; + virtual void OnFinished(const int32_t resultCode, const std::string &resultMsg) override; + int32_t GetResultCode() const; + +private: + mutable std::promise resultMsgSignal_; + + DISALLOW_COPY_AND_MOVE(AtmReceiverImpl); +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS + +#endif // ACCESSTOKENMANAGER_RECEIVER_IMPL_H diff --git a/tools/accesstoken/src/atm_command.c b/tools/accesstoken/src/atm_command.c new file mode 100644 index 0000000000000000000000000000000000000000..36db449941f8ad0129f7445bf7343a639f2f7caa --- /dev/null +++ b/tools/accesstoken/src/atm_command.c @@ -0,0 +1,335 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "atm_command.h" + +#include + +#include "accesstoken_kit.h" +#include "status_receiver_host.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { +AtmCommand::AtmCommand(int argc, char *argv[]) : ShellCommand(argc, argv, TOOL_NAME) +{} + +ErrCode AtmCommand::CreateCommandMap() +{ + commandMap_ = { + {"help", std::bind(&AtmCommand::RunAsHelpCommand, this)}, + {"dump", std::bind(&AtmCommand::RunAsDumpCommand, this)}, + }; + + return OHOS::ERR_OK; +} + +ErrCode AtmCommand::CreateMessageMap() +{ + messageMap_ = { + // error + message + // error + message + { + IStatusReceiver::ERR_INSTALL_INTERNAL_ERROR, + "error: install internal error.", + }, + { + IStatusReceiver::ERR_INSTALL_HOST_INSTALLER_FAILED, + "error: install host installer failed.", + }, + { + IStatusReceiver::ERR_INSTALL_PARSE_FAILED, + "error: install parse failed.", + }, + { + IStatusReceiver::ERR_INSTALL_VERSION_DOWNGRADE, + "error: install version downgrade.", + }, + { + IStatusReceiver::ERR_INSTALL_VERIFICATION_FAILED, + "error: install verification failed.", + }, + { + IStatusReceiver::ERR_INSTALL_NO_SIGNATURE_INFO, + "error: install no signature info.", + }, + { + IStatusReceiver::ERR_INSTALL_SIGN_INFO_INCONSISTENT, + "error: install sign info inconsistent.", + }, + { + IStatusReceiver::ERR_INSTALL_PARAM_ERROR, + "error: install param error.", + }, + { + IStatusReceiver::ERR_INSTALL_PERMISSION_DENIED, + "error: install permission denied.", + }, + { + IStatusReceiver::ERR_INSTALL_ENTRY_ALREADY_EXIST, + "error: install entry already exist.", + }, + { + IStatusReceiver::ERR_INSTALL_STATE_ERROR, + "error: install state error.", + }, + { + IStatusReceiver::ERR_INSTALL_FILE_PATH_INVALID, + "error: install file path invalid.", + }, + { + IStatusReceiver::ERR_INSTALL_INVALID_HAP_NAME, + "error: install invalid hap name.", + }, + { + IStatusReceiver::ERR_INSTALL_INVALID_BUNDLE_FILE, + "error: install invalid bundle file.", + }, + { + IStatusReceiver::ERR_INSTALL_INVALID_HAP_SIZE, + "error: install invalid hap size.", + }, + { + IStatusReceiver::ERR_INSTALL_GENERATE_UID_ERROR, + "error: install generate uid error.", + }, + { + IStatusReceiver::ERR_INSTALL_INSTALLD_SERVICE_ERROR, + "error: install installd service error.", + }, + { + IStatusReceiver::ERR_INSTALL_BUNDLE_MGR_SERVICE_ERROR, + "error: install bundle mgr service error.", + }, + { + IStatusReceiver::ERR_INSTALL_ALREADY_EXIST, + "error: install already exist.", + }, + { + IStatusReceiver::ERR_INSTALL_BUNDLENAME_NOT_SAME, + "error: install bundle name not same", + }, + { + IStatusReceiver::ERR_INSTALL_VERSIONCODE_NOT_SAME, + "error: install version code not same", + }, + { + IStatusReceiver::ERR_INSTALL_VERSIONNAME_NOT_SAME, + "error: install version name not same", + }, + { + IStatusReceiver::ERR_INSTALL_VENDOR_NOT_SAME, + "error: install vendor not same", + }, + { + IStatusReceiver::ERR_INSTALL_RELEASETYPE_TARGET_NOT_SAME, + "error: install releaseType target not same", + }, + { + IStatusReceiver::ERR_INSTALL_RELEASETYPE_COMPATIBLE_NOT_SAME, + "error: install releaseType compatible not same", + }, + { + IStatusReceiver::ERR_INSTALL_VERSION_NOT_COMPATIBLE, + "error: install version not compatible", + }, + { + IStatusReceiver::ERR_INSTALL_INVALID_NUMBER_OF_ENTRY_HAP, + "error: install invalid number of entry hap", + }, + { + IStatusReceiver::ERR_INSTALL_DISK_MEM_INSUFFICIENT, + "error: install failed due to insufficient disk memory", + }, + { + IStatusReceiver::ERR_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED, + "error: install failed due to grant request permissions failed", + }, + { + IStatusReceiver::ERR_INSTALL_UPDATE_HAP_TOKEN_FAILED, + "error: install failed due to update hap token failed", + }, + + { + IStatusReceiver::ERR_INSTALL_PARSE_UNEXPECTED, + "error: install parse unexpected.", + }, + { + IStatusReceiver::ERR_INSTALL_PARSE_MISSING_BUNDLE, + "error: install parse missing bundle.", + }, + { + IStatusReceiver::ERR_INSTALL_PARSE_MISSING_ABILITY, + "error: install parse missing ability.", + }, + { + IStatusReceiver::ERR_INSTALL_PARSE_NO_PROFILE, + "error: install parse no profile.", + }, + { + IStatusReceiver::ERR_INSTALL_PARSE_BAD_PROFILE, + "error: install parse bad profile.", + }, + { + IStatusReceiver::ERR_INSTALL_PARSE_PROFILE_PROP_TYPE_ERROR, + "error: install parse profile prop type error.", + }, + { + IStatusReceiver::ERR_INSTALL_PARSE_PROFILE_MISSING_PROP, + "error: install parse profile missing prop.", + }, + { + IStatusReceiver::ERR_INSTALL_PARSE_PERMISSION_ERROR, + "error: install parse permission error.", + }, + { + IStatusReceiver::ERR_INSTALL_PARSE_PROFILE_PROP_CHECK_ERROR, + "error: install parse profile prop check error.", + }, + { + IStatusReceiver::ERR_INSTALLD_PARAM_ERROR, + "error: installd param error.", + }, + { + IStatusReceiver::ERR_INSTALLD_GET_PROXY_ERROR, + "error: installd get proxy error.", + }, + { + IStatusReceiver::ERR_INSTALLD_CREATE_DIR_FAILED, + "error: installd create dir failed.", + }, + { + IStatusReceiver::ERR_INSTALLD_CREATE_DIR_EXIST, + "error: installd create dir exist.", + }, + { + IStatusReceiver::ERR_INSTALLD_CHOWN_FAILED, + "error: installd chown failed.", + }, + { + IStatusReceiver::ERR_INSTALLD_REMOVE_DIR_FAILED, + "error: installd remove dir failed.", + }, + { + IStatusReceiver::ERR_INSTALLD_EXTRACT_FILES_FAILED, + "error: installd extract files failed.", + }, + { + IStatusReceiver::ERR_INSTALLD_RNAME_DIR_FAILED, + "error: installd rename dir failed.", + }, + { + IStatusReceiver::ERR_INSTALLD_CLEAN_DIR_FAILED, + "error: installd clean dir failed.", + }, + + { + IStatusReceiver::ERR_UNINSTALL_SYSTEM_APP_ERROR, + "error: uninstall system app error.", + }, + { + IStatusReceiver::ERR_UNINSTALL_KILLING_APP_ERROR, + "error: uninstall killing app error.", + }, + { + IStatusReceiver::ERR_UNINSTALL_INVALID_NAME, + "error: uninstall invalid name.", + }, + { + IStatusReceiver::ERR_UNINSTALL_PARAM_ERROR, + "error: uninstall param error.", + }, + { + IStatusReceiver::ERR_UNINSTALL_PERMISSION_DENIED, + "error: uninstall permission denied.", + }, + { + IStatusReceiver::ERR_UNINSTALL_BUNDLE_MGR_SERVICE_ERROR, + "error: uninstall bundle mgr service error.", + }, + { + IStatusReceiver::ERR_UNINSTALL_MISSING_INSTALLED_BUNDLE, + "error: uninstall missing installed bundle.", + }, + { + IStatusReceiver::ERR_UNINSTALL_MISSING_INSTALLED_MODULE, + "error: uninstall missing installed module.", + }, + { + IStatusReceiver::ERR_UNKNOWN, + "error: unknown.", + }, + { + IStatusReceiver::ERR_FAILED_GET_INSTALLER_PROXY, + "error: failed to get installer proxy", + }, + { + IStatusReceiver::ERR_FAILED_SERVICE_DIED, + "error: bundle manager service is died.", + }, + { + IStatusReceiver::ERR_RECOVER_GET_BUNDLEPATH_ERROR, + "error: recover get bundlePath err.", + }, + { + IStatusReceiver::ERR_RECOVER_INVALID_BUNDLE_NAME, + "error: recover invalid bundle name.", + }, + { + IStatusReceiver::ERR_USER_NOT_EXIST, + "error: user not exist.", + }, + { + IStatusReceiver::ERR_USER_CREATE_FAILED, + "error: user create failed.", + }, + { + IStatusReceiver::ERR_USER_REMOVE_FAILED, + "error: user remove failed.", + }, + }; + + return OHOS::ERR_OK; +} + +ErrCode AtmCommand::init() +{ + ErrorCode result = OHOS::ERR_OK; + + // there is no need to get proxy currently, the function used in class AccessTokenKit is static + + return result; +} + +ErrCode AtmCommand::RunAsHelpCommand() +{ + resultReceiver_.append(HELP_MSG); + + return OHOS::ERR_OK; +} + +ErrCode AtmCommand::RunAsDumpCommand() +{ + int result = OHOS::ERR_OK; + std::string tokenInfo = ""; + + AccessTokenKit::DumpTokenInfo(tokenInfo); + resultReceiver_ = tokenInfo + "\n"; + + return result; +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS \ No newline at end of file diff --git a/tools/accesstoken/src/atm_receiver_impl.c b/tools/accesstoken/src/atm_receiver_impl.c new file mode 100644 index 0000000000000000000000000000000000000000..f49565f75cb87c105cb97a11efee77a2ef9aaedc --- /dev/null +++ b/tools/accesstoken/src/atm_receiver_impl.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "accesstoken_log.h" +#include "atm_receiver_impl.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { +namespace { +static constexpr OHOS::HiviewDFX::HilogLabel LABEL = { + LOG_CORE, SECURITY_DOMAIN_ACCESSTOKEN, "AccessTokenManagerTools" +}; +} + +AtmReceiverImpl::AtmReceiverImpl() +{ + ACCESSTOKEN_LOG_DEBUG(LABEL, "create atm status receiver instance"); +} + +AtmReceiverImpl::~AtmReceiverImpl() +{ + ACCESSTOKEN_LOG_DEBUG(LABEL, "destory atm status receiver instance"); +} + +void AtmReceiverImpl::OnFinished(const int32_t resultCode, const std::string &resultMsg) +{ + ACCESSTOKEN_LOG_DEBUG(LABEL, "on finished result is %{public}d, %{public}s", resultCode, resultMsg); + resultMsgSignal_.set_value(resultCode); +} + +void AtmReceiverImpl::OnStatusNotify(const int process) +{ + ACCESSTOKEN_LOG_DEBUG(LABEL, "on OnStatusNotify is %{public}d", process); +} + +int32_t AtmReceiverImpl::GetResultCode() const +{ + auto future = resultMsgSignal_.get_future(); + future.wait(); + int32_t resultCode = future.get(); + + return resultCode; +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS \ No newline at end of file diff --git a/tools/accesstoken/src/main.cpp b/tools/accesstoken/src/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8d921026507c3985ae77338b02bb6372e75b1a66 --- /dev/null +++ b/tools/accesstoken/src/main.cpp @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #include + + #include "atm_command.h" + + int main(int argc, char *argv[]) + { + OHODS::Security::AccessToken::AtmCommand cmd(argc, argv); + std::cout << cmd.ExecCommand(); + return 0; + } \ No newline at end of file