Remove duplicated privilege checking
[platform/core/api/package-manager.git] / src / package_manager_drm.c
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <unistd.h>
18
19 #include <package-manager.h>
20
21 #include "package_manager.h"
22 #include "package_manager_internal.h"
23
24 API int package_manager_drm_generate_license_request(const char *resp_data,
25                 char **req_data, char **license_url)
26 {
27         int ret;
28         pkgmgr_client *pc;
29
30         if (resp_data == NULL || req_data == NULL || license_url == NULL)
31                 return package_manager_error(
32                                 PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
33                                 __FUNCTION__, NULL);
34
35         pc = pkgmgr_client_new(PC_REQUEST);
36         if (pc == NULL)
37                 return package_manager_error(
38                                 PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
39                                 __FUNCTION__, NULL);
40
41         ret = pkgmgr_client_generate_license_request(pc, resp_data, req_data,
42                         license_url);
43         pkgmgr_client_free(pc);
44         if (ret < 0) {
45                 ret = package_manager_convert_internal_error(ret);
46                 return package_manager_error(ret, __FUNCTION__, NULL);
47         }
48
49         return PACKAGE_MANAGER_ERROR_NONE;
50 }
51
52 API int package_manager_drm_register_license(const char *resp_data)
53 {
54         int ret;
55         pkgmgr_client *pc;
56
57         if (resp_data == NULL)
58                 return package_manager_error(
59                                 PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
60                                 __FUNCTION__, NULL);
61
62
63         pc = pkgmgr_client_new(PC_REQUEST);
64         if (pc == NULL)
65                 return package_manager_error(
66                                 PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
67                                 __FUNCTION__, NULL);
68
69         ret = pkgmgr_client_register_license(pc, resp_data);
70         pkgmgr_client_free(pc);
71         if (ret < 0) {
72                 ret = package_manager_convert_internal_error(ret);
73                 return package_manager_error(ret, __FUNCTION__, NULL);
74         }
75
76         return PACKAGE_MANAGER_ERROR_NONE;
77 }
78
79 API int package_manager_drm_decrypt_package(const char *drm_file_path,
80                 const char *decrypted_file_path)
81 {
82         int ret;
83         pkgmgr_client *pc;
84
85         if (drm_file_path == NULL || decrypted_file_path == NULL)
86                 return package_manager_error(
87                                 PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
88                                 __FUNCTION__, NULL);
89
90         pc = pkgmgr_client_new(PC_REQUEST);
91         if (pc == NULL)
92                 return package_manager_error(
93                                 PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
94                                 __FUNCTION__, NULL);
95
96         ret = pkgmgr_client_decrypt_package(pc, drm_file_path,
97                         decrypted_file_path);
98         pkgmgr_client_free(pc);
99         if (ret < 0) {
100                 ret = package_manager_convert_internal_error(ret);
101                 return package_manager_error(ret, __FUNCTION__, NULL);
102         }
103
104         return PACKAGE_MANAGER_ERROR_NONE;
105 }