add wrapper to security-manager
[src/app-framework-main.git] / src / secmgr-wrap.c
1
2 #include <errno.h>
3 #if 0
4 #include <security-manager.h>
5 #else
6 enum lib_retcode {
7         SECURITY_MANAGER_SUCCESS,
8         SECURITY_MANAGER_ERROR_INPUT_PARAM,
9         SECURITY_MANAGER_ERROR_MEMORY,
10         SECURITY_MANAGER_ERROR_REQ_NOT_COMPLETE,
11         SECURITY_MANAGER_ERROR_AUTHENTICATION_FAILED,
12         SECURITY_MANAGER_ERROR_ACCESS_DENIED
13 };
14 enum app_install_path_type {
15         SECURITY_MANAGER_PATH_PUBLIC_RO,
16         SECURITY_MANAGER_PATH_RO,
17         SECURITY_MANAGER_PATH_RW
18 };
19 typedef void app_inst_req;
20 static int diese = 0;
21 #define  security_manager_app_inst_req_free(r) \
22  (printf("security_manager_app_inst_req_free(%p)\n",r),(void)0)
23
24 #define  security_manager_app_inst_req_new(pr) \
25  (*(pr)=(void*)(++diese), printf("security_manager_app_inst_req_new(%p)\n",*pr), SECURITY_MANAGER_SUCCESS)
26
27 #define security_manager_app_inst_req_set_pkg_id(r,i) \
28  (printf("security_manager_app_inst_req_set_pkg_id(%p,\"%s\")\n",r,i), SECURITY_MANAGER_SUCCESS)
29  
30 #define security_manager_app_inst_req_set_app_id(r,i) \
31  (printf("security_manager_app_inst_req_set_app_id(%p,\"%s\")\n",r,i), SECURITY_MANAGER_SUCCESS)
32  
33 #define security_manager_app_inst_req_add_privilege(r,p) \
34  (printf("security_manager_app_inst_req_add_privilege(%p,\"%s\")\n",r,p), SECURITY_MANAGER_SUCCESS)
35
36 #define security_manager_app_inst_req_add_path(r,p,t) \
37  (printf("security_manager_app_inst_req_add_path(%p,\"%s\",%d)\n",r,p,t), SECURITY_MANAGER_SUCCESS)
38 #endif
39
40 static app_inst_req *request = NULL;
41
42 static int retcode(enum lib_retcode rc)
43 {
44         switch (rc) {
45         case SECURITY_MANAGER_SUCCESS: return 0;
46         case SECURITY_MANAGER_ERROR_INPUT_PARAM: errno = EINVAL; break;
47         case SECURITY_MANAGER_ERROR_MEMORY: errno = ENOMEM; break;
48         case SECURITY_MANAGER_ERROR_REQ_NOT_COMPLETE: errno = EBADMSG; break;
49         case SECURITY_MANAGER_ERROR_AUTHENTICATION_FAILED: errno = EPERM; break;
50         case SECURITY_MANAGER_ERROR_ACCESS_DENIED: errno = EACCES; break;
51         default: errno = 0; break;
52         }
53         return -1;
54 }
55
56 void secmgr_cancel()
57 {
58         security_manager_app_inst_req_free(request);
59         request = NULL;
60 }
61
62 int secmgr_init(const char *pkgid, const char *appid)
63 {
64         int rc = security_manager_app_inst_req_new(&request);
65         if (rc == SECURITY_MANAGER_SUCCESS) {
66                 rc = security_manager_app_inst_req_set_pkg_id(request, pkgid);
67                 if (rc == SECURITY_MANAGER_SUCCESS)
68                         rc = security_manager_app_inst_req_set_app_id(request, appid);
69         }
70         if (rc != SECURITY_MANAGER_SUCCESS)
71                 secmgr_cancel();
72         return retcode(rc);
73 }
74
75 int secmgr_permit(const char *permission)
76 {
77         int rc = security_manager_app_inst_req_add_privilege(request, permission);
78         return retcode(rc);
79 }
80
81 static int addpath(const char *pathname, enum app_install_path_type type)
82 {
83         int rc = security_manager_app_inst_req_add_path(request, pathname, type);
84         return retcode(rc);
85 }
86
87 int secmgr_path_public_read_only(const char *pathname)
88 {
89         return addpath(pathname, SECURITY_MANAGER_PATH_PUBLIC_RO);
90 }
91
92 int secmgr_path_read_only(const char *pathname)
93 {
94         return addpath(pathname, SECURITY_MANAGER_PATH_RO);
95 }
96
97 int secmgr_path_read_write(const char *pathname)
98 {
99         return addpath(pathname, SECURITY_MANAGER_PATH_RW);
100 }
101