X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fpkgmgr-info.h;h=01745d60609e71456eb88308ef8b8f0b921a8dd3;hb=e43f1cc2cbb874761163b71c8fe5f614bdc626bd;hp=c00fc1137698726908505b04cdc43094ed57768d;hpb=930f5d770402ca1e93e3fd8ff8fb165702446ef4;p=platform%2Fcore%2Fappfw%2Fpkgmgr-info.git diff --git a/include/pkgmgr-info.h b/include/pkgmgr-info.h index c00fc11..01745d6 100755 --- a/include/pkgmgr-info.h +++ b/include/pkgmgr-info.h @@ -99,6 +99,7 @@ typedef enum { PMINFO_CERT_COMPARE_LHS_NO_CERT, PMINFO_CERT_COMPARE_RHS_NO_CERT, PMINFO_CERT_COMPARE_BOTH_NO_CERT, + PMINFO_CERT_COMPARE_ERROR, } pkgmgrinfo_cert_compare_result_type_e; /** @@ -178,6 +179,11 @@ typedef void* pkgmgrinfo_pkginfo_filter_h; typedef void* pkgmgrinfo_appinfo_filter_h; /** + * @brief A handle to filter application metadata information + */ +typedef void* pkgmgrinfo_appinfo_metadata_filter_h; + +/** * @brief A handle to get appcontrol information */ typedef void* pkgmgrinfo_appcontrol_h; @@ -201,15 +207,16 @@ typedef int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle, /** * @fn int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle, void *user_data) * - * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo() + * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach() * * @param[in] handle the appinfo handle - * @param[in] user_data user data passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo() + * @param[in] user_data user data passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach() * * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n * * @see pkgmgrinfo_appinfo_get_list() * @see pkgmgrinfo_appinfo_filter_foreach_appinfo() + * @see pkgmgrinfo_appinfo_metadata_filter_foreach() */ typedef int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle, void *user_data); @@ -230,7 +237,7 @@ typedef int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name, void *user_data); /** - * @fn int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_name, const char *metadata_value, void *user_data) + * @fn int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key, const char *metadata_value, void *user_data) * * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_metadata() * @@ -242,7 +249,7 @@ typedef int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name, * * @see pkgmgrinfo_appinfo_foreach_metadata() */ -typedef int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_name, +typedef int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key, const char *metadata_value, void *user_data); /** @@ -1345,6 +1352,44 @@ static int get_pkg_removable(const char *pkgid) int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable); /** + * @fn int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable) + * @brief This API check that the package can move internal storage to external storage or external storage to internal storage from the package ID + * + * @par This API is for package-manager client application + * @par Sync (or) Async : Synchronous API + * + * @param[in] handle pointer to package info handle + * @param[out] movable pointer to hold package movable state + * @return 0 if success, error code(<0) if fail + * @retval PMINFO_R_OK success + * @retval PMINFO_R_EINVAL invalid argument + * @retval PMINFO_R_ERROR internal error + * @pre pkgmgrinfo_pkginfo_get_pkginfo() + * @post pkgmgrinfo_pkginfo_destroy_pkginfo() + * @see pkgmgrinfo_pkginfo_get_pkgid() + * @code +static int get_pkg_movable(const char *pkgid) +{ + int ret = 0; + bool movable; + pkgmgrinfo_pkginfo_h handle; + ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle); + if (ret != PMINFO_R_OK) + return -1; + ret = pkgmgrinfo_pkginfo_is_movable(handle, &movable); + if (ret != PMINFO_R_OK) { + pkgmgrinfo_pkginfo_destroy_pkginfo(handle); + return -1; + } + printf("pkg movable: %d\n", movable); + pkgmgrinfo_pkginfo_destroy_pkginfo(handle); + return 0; +} + * @endcode + */ +int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable); + +/** * @fn int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload) * @brief This API gets the package 'preload' value from the package ID * @@ -2715,9 +2760,9 @@ int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle, * @pre pkgmgrinfo_appinfo_get_appinfo() * @post pkgmgrinfo_appinfo_destroy_appinfo() * @code -int metadata_func(const char *name, const char *value, void *user_data) +int metadata_func(const char *key, const char *value, void *user_data) { - if (strcmp(name, (char *)user_data) == 0) { + if (strcmp(key, (char *)user_data) == 0) { printf("Value is %s\n", value); return -1; } @@ -2725,14 +2770,14 @@ int metadata_func(const char *name, const char *value, void *user_data) return 0; } -static int list_metadata(const char *appid, char *name) +static int list_metadata(const char *appid, char *key) { int ret = 0; pkgmgrinfo_appinfo_h handle; ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_appinfo_foreach_metadata(handle, metadata_func, (void *)name); + ret = pkgmgrinfo_appinfo_foreach_metadata(handle, metadata_func, (void *)key); if (ret != PMINFO_R_OK) { pkgmgrinfo_appinfo_destroy_appinfo(handle); return -1; @@ -3548,754 +3593,403 @@ static int get_capp_count() int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count); /** - * @fn int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle) - * @brief This API creates the package cert information handle to get data from db. + * @fn int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle) + * @brief This API creates the application's metadata information filter handle from db. * * @par This API is for package-manager client application * @par Sync (or) Async : Synchronous API * - * @param[out] handle pointer to the package cert handle. + * @param[out] handle pointer to the application metadata info filter handle. * @return 0 if success, error code(<0) if fail * @retval PMINFO_R_OK success * @retval PMINFO_R_EINVAL invalid argument * @retval PMINFO_R_ERROR internal error * @pre None - * @post pkgmgrinfo_pkginfo_destroy_certinfo() - * @see pkgmgrinfo_pkginfo_get_cert_value() - * @see pkgmgrinfo_pkginfo_load_certinfo() + * @post pkgmgrinfo_appinfo_metadata_filter_destroy() + * @see pkgmgrinfo_appinfo_metadata_filter_foreach() * @code -static int get_cert_info(const char *pkgid) -{ - int ret = 0; - pkgmgrinfo_certinfo_h handle; - char *auth_cert = NULL; - ret = pkgmgrinfo_pkginfo_create_certinfo(&handle); - if (ret != PMINFO_R_OK) - return -1; - ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_pkginfo_destroy_certinfo(handle); - return -1; - } - ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_pkginfo_destroy_certinfo(handle); - return -1; - } - printf("Author root certificate: %s\n", auth_root); - pkgmgrinfo_pkginfo_destroy_certinfo(handle); - return 0; -} - * @endcode - */ -int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle); - -/** - * @fn int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle) - * @brief This API loads the package cert information handle with data from db. - * - * @par This API is for package-manager client application - * @par Sync (or) Async : Synchronous API - * - * @param[in] pkgid pointer to the package ID. - * @param[in] handle pointer to the package cert handle. - * @return 0 if success, error code(<0) if fail - * @retval PMINFO_R_OK success - * @retval PMINFO_R_EINVAL invalid argument - * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_pkginfo_create_certinfo() - * @post pkgmgrinfo_pkginfo_destroy_certinfo() - * @see pkgmgrinfo_pkginfo_get_cert_value() - * @code -static int get_cert_info(const char *pkgid) -{ - int ret = 0; - pkgmgrinfo_certinfo_h handle; - char *auth_cert = NULL; - ret = pkgmgrinfo_pkginfo_create_certinfo(&handle); - if (ret != PMINFO_R_OK) - return -1; - ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_pkginfo_destroy_certinfo(handle); - return -1; - } - ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_pkginfo_destroy_certinfo(handle); - return -1; - } - printf("Author root certificate: %s\n", auth_root); - pkgmgrinfo_pkginfo_destroy_certinfo(handle); - return 0; -} - * @endcode - */ -int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle); - -/** - * @fn int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value) - * @brief This API gets the package cert information from the handle - * - * @par This API is for package-manager client application - * @par Sync (or) Async : Synchronous API - * - * @param[in] handle pointer to the package cert handle. - * @param[in] cert_type certificate type - * @param[out] cert_value pointer to hold certificate value - * @return 0 if success, error code(<0) if fail - * @retval PMINFO_R_OK success - * @retval PMINFO_R_EINVAL invalid argument - * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_pkginfo_create_certinfo() - * @post pkgmgrinfo_pkginfo_destroy_certinfo() - * @see pkgmgrinfo_pkginfo_load_certinfo() - * @code -static int get_cert_info(const char *pkgid) +int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data) { - int ret = 0; - pkgmgrinfo_certinfo_h handle; - char *auth_cert = NULL; - ret = pkgmgrinfo_pkginfo_create_certinfo(&handle); - if (ret != PMINFO_R_OK) - return -1; - ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_pkginfo_destroy_certinfo(handle); - return -1; - } - ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_pkginfo_destroy_certinfo(handle); - return -1; - } - printf("Author root certificate: %s\n", auth_root); - pkgmgrinfo_pkginfo_destroy_certinfo(handle); + char *appid = NULL; + pkgmgrinfo_appinfo_get_appid(handle, &appid); + printf("appid : %s\n", appid); return 0; } - * @endcode - */ -int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value); -/** - * @fn int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle) - * @brief This API destroys the package cert information handle freeing up all the resources - * - * @par This API is for package-manager client application - * @par Sync (or) Async : Synchronous API - * - * @param[in] handle pointer to the package cert handle. - * @return 0 if success, error code(<0) if fail - * @retval PMINFO_R_OK success - * @retval PMINFO_R_EINVAL invalid argument - * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_pkginfo_create_certinfo() - * @post None - * @see pkgmgrinfo_pkginfo_load_certinfo() - * @code -static int get_cert_info(const char *pkgid) +static int get_app_list(const char *mkey, const char *mvalue) { int ret = 0; - pkgmgrinfo_certinfo_h handle; - char *auth_cert = NULL; - ret = pkgmgrinfo_pkginfo_create_certinfo(&handle); + pkgmgrinfo_appinfo_metadata_filter_h handle; + ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle); + ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue); if (ret != PMINFO_R_OK) { - pkgmgrinfo_pkginfo_destroy_certinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return -1; } - ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert); + ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL); if (ret != PMINFO_R_OK) { - pkgmgrinfo_pkginfo_destroy_certinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return -1; } - printf("Author root certificate: %s\n", auth_root); - pkgmgrinfo_pkginfo_destroy_certinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return 0; } * @endcode */ -int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle); +int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle); /** - * @fn int pkgmgrinfo_delete_certinfo(const char *pkgid) - * @brief This API deletes the package cert information from DB + * @fn int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle) + * @brief This API destroys the application's metadata information filter handle. * * @par This API is for package-manager client application * @par Sync (or) Async : Synchronous API * - * @param[in] pkgid pointer to the package ID. + * @param[in] handle pointer to the application metadata info filter handle. * @return 0 if success, error code(<0) if fail * @retval PMINFO_R_OK success * @retval PMINFO_R_EINVAL invalid argument * @retval PMINFO_R_ERROR internal error - * @pre None + * @pre pkgmgrinfo_appinfo_metadata_filter_create() * @post None + * @see pkgmgrinfo_appinfo_metadata_filter_foreach() * @code -static int delete_cert_info(const char *pkgid) -{ - int ret = 0; - ret = pkgmgrinfo_delete_certinfo(pkgid); - if (ret != PMINFO_R_OK) - return -1; - return 0; -} - * @endcode - */ - int pkgmgrinfo_delete_certinfo(const char *pkgid); - -/** - * @fn int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle) - * @brief This API creates the package db information handle to set data in db. - * - * @par This API is for package-manager client application - * @par Sync (or) Async : Synchronous API - * - * @param[in] pkgid pointer to the package ID. - * @param[out] handle pointer to the package db info handle. - * @return 0 if success, error code(<0) if fail - * @retval PMINFO_R_OK success - * @retval PMINFO_R_EINVAL invalid argument - * @retval PMINFO_R_ERROR internal error - * @pre None - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() - * @code -static int set_pkg_in_db(const char *pkgid) -{ - int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); - if (ret != PMINFO_R_OK) - return -1; - ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1"); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - ret = pkgmgrinfo_save_pkgdbinfo(handle); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - pkgmgrinfo_destroy_pkgdbinfo(handle); - return 0; -} - * @endcode - */ -int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle); - -/** - * @fn int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type) - * @brief This API sets the package type in db handle - * - * @par This API is for package-manager client application - * @par Sync (or) Async : Synchronous API - * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] type pointer to the package type. - * @return 0 if success, error code(<0) if fail - * @retval PMINFO_R_OK success - * @retval PMINFO_R_EINVAL invalid argument - * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_version_to_pkgdbinfo() - * @code -static int set_pkg_type_in_db(const char *pkgid) -{ - int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); - if (ret != PMINFO_R_OK) - return -1; - ret = pkgmgrinfo_set_type_to_pkgdbinfo(handle, "wgt"); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - ret = pkgmgrinfo_save_pkgdbinfo(handle); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - pkgmgrinfo_destroy_pkgdbinfo(handle); - return 0; -} - * @endcode - */ -int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type); - -/** - * @fn int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version) - * @brief This API sets the package version in db handle - * - * @par This API is for package-manager client application - * @par Sync (or) Async : Synchronous API - * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] version pointer to the package version - * @return 0 if success, error code(<0) if fail - * @retval PMINFO_R_OK success - * @retval PMINFO_R_EINVAL invalid argument - * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() - * @code -static int set_pkg_version_in_db(const char *pkgid) +int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data) { - int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); - if (ret != PMINFO_R_OK) - return -1; - ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1"); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - ret = pkgmgrinfo_save_pkgdbinfo(handle); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - pkgmgrinfo_destroy_pkgdbinfo(handle); + char *appid = NULL; + pkgmgrinfo_appinfo_get_appid(handle, &appid); + printf("appid : %s\n", appid); return 0; } - * @endcode - */ -int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version); -/** - * @fn int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location) - * @brief This API sets the package install location in db handle - * - * @par This API is for package-manager client application - * @par Sync (or) Async : Synchronous API - * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] location package install location - * @return 0 if success, error code(<0) if fail - * @retval PMINFO_R_OK success - * @retval PMINFO_R_EINVAL invalid argument - * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() - * @code -static int set_pkg_install_location_in_db(const char *pkgid) +static int get_app_list(const char *mkey, const char *mvalue) { int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); + pkgmgrinfo_appinfo_metadata_filter_h handle; + ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_set_install_location_to_pkgdbinfo(handle, INSTALL_INTERNAL); + ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return -1; } - ret = pkgmgrinfo_save_pkgdbinfo(handle); + ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return -1; } - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return 0; } * @endcode */ -int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location); +int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle); /** - * @fn int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size) - * @brief This API sets the package size in db handle + * @fn int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle, const char *key, const char *value) + * @brief This API adds filter condition for the query API. The query will search the entire application metadata information collected from + * the manifest file of all the installed packages. You can specify value as NULL to search based on key only. * * @par This API is for package-manager client application * @par Sync (or) Async : Synchronous API * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] size pointer to the package size + * @param[in] handle pointer to the application metadata info filter handle. + * @param[in] key pointer to metadata key + * @param[in] value pointer to metadata value * @return 0 if success, error code(<0) if fail * @retval PMINFO_R_OK success * @retval PMINFO_R_EINVAL invalid argument * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() + * @pre pkgmgrinfo_appinfo_metadata_filter_create() + * @post pkgmgrinfo_appinfo_metadata_filter_foreach(), pkgmgrinfo_appinfo_metadata_filter_destroy() + * @see pkgmgrinfo_appinfo_metadata_filter_foreach() * @code -static int set_pkg_size_in_db(const char *pkgid) +int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data) { - int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); - if (ret != PMINFO_R_OK) - return -1; - ret = pkgmgrinfo_set_size_to_pkgdbinfo(handle, "15"); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - ret = pkgmgrinfo_save_pkgdbinfo(handle); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - pkgmgrinfo_destroy_pkgdbinfo(handle); + char *appid = NULL; + pkgmgrinfo_appinfo_get_appid(handle, &appid); + printf("appid : %s\n", appid); return 0; } - * @endcode - */ -int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size); -/** - * @fn int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale) - * @brief This API sets the package label in db handle - * - * @par This API is for package-manager client application - * @par Sync (or) Async : Synchronous API - * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] label pointer to the package label - * @param[in] locale pointer to the locale - * @return 0 if success, error code(<0) if fail - * @retval PMINFO_R_OK success - * @retval PMINFO_R_EINVAL invalid argument - * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() - * @code -static int set_pkg_label_in_db(const char *pkgid) +static int get_app_list(const char *mkey, const char *mvalue) { int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); + pkgmgrinfo_appinfo_metadata_filter_h handle; + ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_set_label_to_pkgdbinfo(handle, "helloworld", "en-us"); + ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return -1; } - ret = pkgmgrinfo_save_pkgdbinfo(handle); + ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return -1; } - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return 0; } * @endcode */ -int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale); +int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle, + const char *key, const char *value); /** - * @fn int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale) - * @brief This API sets the package icon in db handle + * @fn int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data) + * @brief This API executes the filter query. The query will search the entire application metadata information collected from + * the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns + * negative value, no more callbacks will be called and API will return. * * @par This API is for package-manager client application * @par Sync (or) Async : Synchronous API * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] icon pointer to the package icon - * @param[in] locale pointer to the locale + * @param[in] handle pointer to the application metadata info filter handle. + * @param[in] app_cb function pointer to callback + * @param[in] user_data pointer to user data * @return 0 if success, error code(<0) if fail * @retval PMINFO_R_OK success * @retval PMINFO_R_EINVAL invalid argument * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() + * @pre pkgmgrinfo_appinfo_metadata_filter_create() + * @post pkgmgrinfo_appinfo_metadata_filter_destroy() * @code -static int set_pkg_icon_in_db(const char *pkgid) +int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data) { - int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); - if (ret != PMINFO_R_OK) - return -1; - ret = pkgmgrinfo_set_icon_to_pkgdbinfo(handle, "helloworld.png", "en-us"); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - ret = pkgmgrinfo_save_pkgdbinfo(handle); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - pkgmgrinfo_destroy_pkgdbinfo(handle); + char *appid = NULL; + pkgmgrinfo_appinfo_get_appid(handle, &appid); + printf("appid : %s\n", appid); return 0; } - * @endcode - */ -int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale); -/** - * @fn int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale) - * @brief This API sets the package description in db handle - * - * @par This API is for package-manager client application - * @par Sync (or) Async : Synchronous API - * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] description pointer to the package description - * @param[in] locale pointer to the locale - * @return 0 if success, error code(<0) if fail - * @retval PMINFO_R_OK success - * @retval PMINFO_R_EINVAL invalid argument - * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() - * @code -static int set_pkg_description_in_db(const char *pkgid) +static int get_app_list(const char *mkey, const char *mvalue) { int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); + pkgmgrinfo_appinfo_metadata_filter_h handle; + ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_set_description_to_pkgdbinfo(handle, "helloworld application", "en-us"); + ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return -1; } - ret = pkgmgrinfo_save_pkgdbinfo(handle); + ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return -1; } - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_appinfo_metadata_filter_destroy(handle); return 0; } * @endcode */ -int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale); +int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, + pkgmgrinfo_app_list_cb app_cb, void *user_data); /** - * @fn int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name, - const char *author_email, const char *author_href, const char *locale) - * @brief This API sets the package author info in db handle + * @fn int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle) + * @brief This API creates the package cert information handle to get data from db. * * @par This API is for package-manager client application * @par Sync (or) Async : Synchronous API * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] author_name pointer to the package author name - * @param[in] author_email pointer to the package author email - * @param[in] author_href pointer to the package author href - * @param[in] locale pointer to the locale + * @param[out] handle pointer to the package cert handle. * @return 0 if success, error code(<0) if fail * @retval PMINFO_R_OK success * @retval PMINFO_R_EINVAL invalid argument * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() + * @pre None + * @post pkgmgrinfo_pkginfo_destroy_certinfo() + * @see pkgmgrinfo_pkginfo_get_cert_value() + * @see pkgmgrinfo_pkginfo_load_certinfo() * @code -static int set_pkg_author_in_db(const char *pkgid) +static int get_cert_info(const char *pkgid) { int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); + pkgmgrinfo_certinfo_h handle; + char *auth_cert = NULL; + ret = pkgmgrinfo_pkginfo_create_certinfo(&handle); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_set_author_to_pkgdbinfo(handle, "John", "john@samsung.com", "www.samsung.com", "en-us"); + ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return -1; } - ret = pkgmgrinfo_save_pkgdbinfo(handle); + ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return -1; } - pkgmgrinfo_destroy_pkgdbinfo(handle); + printf("Author root certificate: %s\n", auth_root); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return 0; } * @endcode */ -int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name, - const char *author_email, const char *author_href, const char *locale); +int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle); /** - * @fn int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable) - * @brief This API sets the package 'removable' value in db handle + * @fn int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle) + * @brief This API loads the package cert information handle with data from db. * * @par This API is for package-manager client application * @par Sync (or) Async : Synchronous API * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] removable package removable value + * @param[in] pkgid pointer to the package ID. + * @param[in] handle pointer to the package cert handle. * @return 0 if success, error code(<0) if fail * @retval PMINFO_R_OK success * @retval PMINFO_R_EINVAL invalid argument * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() + * @pre pkgmgrinfo_pkginfo_create_certinfo() + * @post pkgmgrinfo_pkginfo_destroy_certinfo() + * @see pkgmgrinfo_pkginfo_get_cert_value() * @code -static int set_pkg_removable_in_db(const char *pkgid) +static int get_cert_info(const char *pkgid) { int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); + pkgmgrinfo_certinfo_h handle; + char *auth_cert = NULL; + ret = pkgmgrinfo_pkginfo_create_certinfo(&handle); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_set_removable_to_pkgdbinfo(handle, 1); + ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return -1; } - ret = pkgmgrinfo_save_pkgdbinfo(handle); + ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return -1; } - pkgmgrinfo_destroy_pkgdbinfo(handle); + printf("Author root certificate: %s\n", auth_root); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return 0; } * @endcode */ -int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable); +int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle); /** - * @fn int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload) - * @brief This API sets the package 'preload' value in db handle + * @fn int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value) + * @brief This API gets the package cert information from the handle * * @par This API is for package-manager client application * @par Sync (or) Async : Synchronous API * - * @param[in] handle pointer to the pkgdbinfo handle. - * @param[in] preload package preload value + * @param[in] handle pointer to the package cert handle. + * @param[in] cert_type certificate type + * @param[out] cert_value pointer to hold certificate value * @return 0 if success, error code(<0) if fail * @retval PMINFO_R_OK success * @retval PMINFO_R_EINVAL invalid argument * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() + * @pre pkgmgrinfo_pkginfo_create_certinfo() + * @post pkgmgrinfo_pkginfo_destroy_certinfo() + * @see pkgmgrinfo_pkginfo_load_certinfo() * @code -static int set_pkg_preload_in_db(const char *pkgid) +static int get_cert_info(const char *pkgid) { int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); + pkgmgrinfo_certinfo_h handle; + char *auth_cert = NULL; + ret = pkgmgrinfo_pkginfo_create_certinfo(&handle); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_set_preload_to_pkgdbinfo(handle, 1); + ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return -1; } - ret = pkgmgrinfo_save_pkgdbinfo(handle); + ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return -1; } - pkgmgrinfo_destroy_pkgdbinfo(handle); + printf("Author root certificate: %s\n", auth_root); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return 0; } * @endcode */ -int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload); +int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value); /** - * @fn int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle) - * @brief This API saves all the information from the handle to the DB. + * @fn int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle) + * @brief This API destroys the package cert information handle freeing up all the resources * * @par This API is for package-manager client application * @par Sync (or) Async : Synchronous API * - * @param[in] handle pointer to the package db info handle. + * @param[in] handle pointer to the package cert handle. * @return 0 if success, error code(<0) if fail * @retval PMINFO_R_OK success * @retval PMINFO_R_EINVAL invalid argument * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() - * @post pkgmgrinfo_destroy_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() + * @pre pkgmgrinfo_pkginfo_create_certinfo() + * @post None + * @see pkgmgrinfo_pkginfo_load_certinfo() * @code -static int set_pkg_in_db(const char *pkgid) +static int get_cert_info(const char *pkgid) { int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); + pkgmgrinfo_certinfo_h handle; + char *auth_cert = NULL; + ret = pkgmgrinfo_pkginfo_create_certinfo(&handle); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1"); + ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return -1; } - ret = pkgmgrinfo_save_pkgdbinfo(handle); + ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert); if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return -1; } - pkgmgrinfo_destroy_pkgdbinfo(handle); + printf("Author root certificate: %s\n", auth_root); + pkgmgrinfo_pkginfo_destroy_certinfo(handle); return 0; } * @endcode */ -int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle); +int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle); /** - * @fn int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle) - * @brief This API destroys the package db information handle freeing up all the resources + * @fn int pkgmgrinfo_delete_certinfo(const char *pkgid) + * @brief This API deletes the package cert information from DB * * @par This API is for package-manager client application * @par Sync (or) Async : Synchronous API * - * @param[in] handle pointer to the package db info handle. + * @param[in] pkgid pointer to the package ID. * @return 0 if success, error code(<0) if fail * @retval PMINFO_R_OK success * @retval PMINFO_R_EINVAL invalid argument * @retval PMINFO_R_ERROR internal error - * @pre pkgmgrinfo_create_pkgdbinfo() + * @pre None * @post None - * @see pkgmgrinfo_save_pkgdbinfo() - * @see pkgmgrinfo_set_type_to_pkgdbinfo() * @code -static int set_pkg_in_db(const char *pkgid) +static int delete_cert_info(const char *pkgid) { int ret = 0; - pkgmgrinfo_pkgdbinfo_h handle; - ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle); + ret = pkgmgrinfo_delete_certinfo(pkgid); if (ret != PMINFO_R_OK) return -1; - ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1"); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - ret = pkgmgrinfo_save_pkgdbinfo(handle); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_destroy_pkgdbinfo(handle); - return -1; - } - pkgmgrinfo_destroy_pkgdbinfo(handle); return 0; } * @endcode */ -int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle); + int pkgmgrinfo_delete_certinfo(const char *pkgid); /** * @fn int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle)