Implement pkgmgrinfo_pkginfo_load_certinfo
authorJunghyun Yeon <jungh.yeon@samsung.com>
Thu, 4 Mar 2021 10:32:39 +0000 (19:32 +0900)
committer연정현/Tizen Platform Lab(SR)/Staff Engineer/삼성전자 <jungh.yeon@samsung.com>
Fri, 5 Mar 2021 00:03:32 +0000 (09:03 +0900)
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
src/manager/pkginfo_manager.cc
src/manager/pkginfo_manager.h
src/pkgmgrinfo_certinfo.c

index 6a81e37..1ff5278 100644 (file)
@@ -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<pkgmgr_common::parcel::AbstractParcelable> 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<pkgmgr_common::parcel::CertInfoParcelable> return_parcel(
+               std::static_pointer_cast<pkgmgr_common::parcel::CertInfoParcelable>(
+                               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 "
index 9520fc0..0f5abba 100644 (file)
@@ -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
index 4843de4..44fc7a8 100644 (file)
@@ -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;