From 8f4e4eb994f5322d0f0b5465ded3df64575295f2 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Thu, 4 Mar 2021 19:32:39 +0900 Subject: [PATCH] Implement pkgmgrinfo_pkginfo_load_certinfo Signed-off-by: Junghyun Yeon --- src/manager/pkginfo_manager.cc | 28 +++++++++++++++++++++++++++- src/manager/pkginfo_manager.h | 2 ++ src/pkgmgrinfo_certinfo.c | 9 +-------- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/manager/pkginfo_manager.cc b/src/manager/pkginfo_manager.cc index 6a81e37..1ff5278 100644 --- a/src/manager/pkginfo_manager.cc +++ b/src/manager/pkginfo_manager.cc @@ -841,7 +841,7 @@ extern "C" EXPORT_API int _pkginfo_insert_certinfo(const char* pkgid, new pkgmgr_common::parcel::CertInfoParcelable(uid, cert)); pkgmgr_client::PkgInfoClient client(parcelable, uid, - pkgmgr_common::ReqType::GET_CERT_INFO); + pkgmgr_common::ReqType::SET_CERT_INFO); if (!client.SendRequest()) return PMINFO_R_ERROR; @@ -867,6 +867,32 @@ extern "C" EXPORT_API int _pkginfo_insert_certinfo(const char* pkgid, return PMINFO_R_OK; } +extern "C" EXPORT_API int _pkginfo_get_certinfo(const char *pkgid, + pkgmgr_certinfo_x** cert, uid_t uid) +{ + std::shared_ptr parcelable( + new pkgmgr_common::parcel::CertInfoParcelable(uid, + std::string(pkgid))); + + pkgmgr_client::PkgInfoClient client(parcelable, uid, + pkgmgr_common::ReqType::GET_CERT_INFO); + if (!client.SendRequest()) + return PMINFO_R_ERROR; + + std::shared_ptr return_parcel( + std::static_pointer_cast( + client.GetResultParcel())); + + tizen_base::Parcel parcel; + parcel.ReadParcelable(return_parcel.get()); + auto certinfo = return_parcel->GetCertInfo(); + if (certinfo == nullptr) + return PMINFO_R_ERROR; + + *cert = (pkgmgr_certinfo_x*)certinfo; + return PMINFO_R_OK; +} + extern "C" EXPORT_API int _pkginfo_delete_certinfo(const char *pkgid) { char* query = sqlite3_mprintf("UPDATE package_cert_info SET " diff --git a/src/manager/pkginfo_manager.h b/src/manager/pkginfo_manager.h index 9520fc0..0f5abba 100644 --- a/src/manager/pkginfo_manager.h +++ b/src/manager/pkginfo_manager.h @@ -78,6 +78,8 @@ int _parser_delete_manifest_info(manifest_x *mfx, uid_t uid); int _pkginfo_insert_certinfo(const char *pkgid, pkgmgr_certinfo_x* cert, uid_t uid); +int _pkginfo_get_certinfo(const char *pkgid, pkgmgr_certinfo_x** cert, uid_t uid); + int _pkginfo_delete_certinfo(const char *pkgid); #ifdef __cplusplus diff --git a/src/pkgmgrinfo_certinfo.c b/src/pkgmgrinfo_certinfo.c index 4843de4..44fc7a8 100644 --- a/src/pkgmgrinfo_certinfo.c +++ b/src/pkgmgrinfo_certinfo.c @@ -134,13 +134,6 @@ API int pkgmgrinfo_pkginfo_compare_app_cert_info( lhs_app_id, rhs_app_id, _getuid(), compare_result); } -static int _pkginfo_get_certinfo(const char *pkgid, pkgmgr_certinfo_x *info) { - - // TODO: need to use pkginfo-client APIs - - return PMINFO_R_OK; -} - API int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle, uid_t uid) { @@ -152,7 +145,7 @@ API int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, return PMINFO_R_EINVAL; } - ret = _pkginfo_get_certinfo(pkgid, info); + ret = _pkginfo_get_certinfo(pkgid, &info, uid); if (ret != PMINFO_R_OK) _LOGE("failed to get certinfo of %s ", pkgid); return ret; -- 2.7.4