Implement package_manager_drm_* apis 94/52694/2 accepted/tizen/mobile/20151201.031743 accepted/tizen/tv/20151201.031800 accepted/tizen/wearable/20151201.031825 submit/tizen/20151130.235340 submit/tizen_common/20151229.142028 submit/tizen_common/20151229.144031 submit/tizen_common/20151229.154718
authorSangyoon Jang <s89.jang@samsung.com>
Thu, 26 Nov 2015 01:18:37 +0000 (10:18 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Thu, 26 Nov 2015 10:21:59 +0000 (19:21 +0900)
Change-Id: I31a7183d892f32f40473251aceb10b1de4ee08e2
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
CMakeLists.txt
src/package_manager.c
src/package_manager_drm.c [new file with mode: 0644]
src/package_manager_internal.h

index d80032e..408d3a5 100644 (file)
@@ -3,6 +3,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 PROJECT(capi-appfw-package-manager C)
 SET(SOURCES src/package_info.c
        src/package_manager.c
+       src/package_manager_drm.c
        src/package_manager_internal.c)
 
 INCLUDE(FindPkgConfig)
index 9bd5e16..b588af6 100644 (file)
@@ -1462,54 +1462,6 @@ API int package_manager_filter_foreach_package_info(package_manager_filter_h han
        }
 }
 
-API int package_manager_drm_generate_license_request(const char *resp_data, char **req_data, char **license_url)
-{
-
-       int retval;
-       retval = check_privilege(PRIVILEGE_PACKAGE_MANAGER_ADMIN);
-       if (retval != PACKAGE_MANAGER_ERROR_NONE)
-               return retval;
-
-       if (resp_data == NULL || req_data == NULL || license_url == NULL) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       }
-
-       /* TODO */
-       return PACKAGE_MANAGER_ERROR_NONE;
-}
-
-API int package_manager_drm_register_license(const char *resp_data)
-{
-
-       int retval;
-       retval = check_privilege(PRIVILEGE_PACKAGE_MANAGER_ADMIN);
-       if (retval != PACKAGE_MANAGER_ERROR_NONE)
-               return retval;
-
-       if (resp_data == NULL) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       }
-
-       /* TODO */
-       return PACKAGE_MANAGER_ERROR_NONE;
-}
-
-API int package_manager_drm_decrypt_package(const char *drm_file_path, const char *decrypted_file_path)
-{
-
-       int retval;
-       retval = check_privilege(PRIVILEGE_PACKAGE_MANAGER_ADMIN);
-       if (retval != PACKAGE_MANAGER_ERROR_NONE)
-               return retval;
-
-       if (drm_file_path == NULL || decrypted_file_path == NULL) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       }
-
-       /* TODO */
-       return PACKAGE_MANAGER_ERROR_NONE;
-}
-
 API int package_size_info_get_data_size(package_size_info_h handle, long long *data_size)
 {
        if (handle == NULL)
diff --git a/src/package_manager_drm.c b/src/package_manager_drm.c
new file mode 100644 (file)
index 0000000..313b71f
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 <unistd.h>
+
+#include <package-manager.h>
+
+#include "package_manager.h"
+#include "package_manager_internal.h"
+
+API int package_manager_drm_generate_license_request(const char *resp_data,
+               char **req_data, char **license_url)
+{
+       int ret;
+       pkgmgr_client *pc;
+
+       if (resp_data == NULL || req_data == NULL || license_url == NULL)
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
+                               __FUNCTION__, NULL);
+
+       pc = pkgmgr_client_new(PC_REQUEST);
+       if (pc == NULL)
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
+                               __FUNCTION__, NULL);
+
+       ret = pkgmgr_client_generate_license_request(pc, resp_data, req_data,
+                       license_url);
+       pkgmgr_client_free(pc);
+       if (ret == PKGMGR_R_EINVAL) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
+                               __FUNCTION__, NULL);
+       } else if (ret == PKGMGR_R_ENOMEM) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
+                               __FUNCTION__, NULL);
+       } else if (ret == PKGMGR_R_EPRIV) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_PERMISSION_DENIED,
+                               __FUNCTION__, NULL);
+       } else if (ret != PKGMGR_R_OK) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_SYSTEM_ERROR,
+                               __FUNCTION__, NULL);
+       }
+
+       return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+API int package_manager_drm_register_license(const char *resp_data)
+{
+       int ret;
+       pkgmgr_client *pc;
+
+       if (resp_data == NULL)
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
+                               __FUNCTION__, NULL);
+
+
+       pc = pkgmgr_client_new(PC_REQUEST);
+       if (pc == NULL)
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
+                               __FUNCTION__, NULL);
+
+       ret = pkgmgr_client_register_license(pc, resp_data);
+       pkgmgr_client_free(pc);
+       if (ret == PKGMGR_R_EINVAL) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
+                               __FUNCTION__, NULL);
+       } else if (ret == PKGMGR_R_ENOMEM) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
+                               __FUNCTION__, NULL);
+       } else if (ret == PKGMGR_R_EPRIV) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_PERMISSION_DENIED,
+                               __FUNCTION__, NULL);
+       } else if (ret != PKGMGR_R_OK) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_SYSTEM_ERROR,
+                               __FUNCTION__, NULL);
+       }
+
+       return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+API int package_manager_drm_decrypt_package(const char *drm_file_path,
+               const char *decrypted_file_path)
+{
+       int ret;
+       pkgmgr_client *pc;
+
+       if (drm_file_path == NULL || decrypted_file_path == NULL)
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
+                               __FUNCTION__, NULL);
+
+       pc = pkgmgr_client_new(PC_REQUEST);
+       if (pc == NULL)
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
+                               __FUNCTION__, NULL);
+
+       ret = pkgmgr_client_decrypt_package(pc, drm_file_path,
+                       decrypted_file_path);
+       pkgmgr_client_free(pc);
+       if (ret == PKGMGR_R_EINVAL) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
+                               __FUNCTION__, NULL);
+       } else if (ret == PKGMGR_R_ENOMEM) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
+                               __FUNCTION__, NULL);
+       } else if (ret == PKGMGR_R_EPRIV) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_PERMISSION_DENIED,
+                               __FUNCTION__, NULL);
+       } else if (ret != PKGMGR_R_OK) {
+               return package_manager_error(
+                               PACKAGE_MANAGER_ERROR_SYSTEM_ERROR,
+                               __FUNCTION__, NULL);
+       }
+
+       return PACKAGE_MANAGER_ERROR_NONE;
+}
index 231bacc..9d683dc 100644 (file)
@@ -18,6 +18,7 @@
 #define __TIZEN_APPFW_PACKAGE_MANAGER_INTERNAL_H__
 
 #include <dlog.h>
+#include <pkgmgr-info.h>
 #include "package_manager.h"
 
 #ifndef API