2 * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd All Rights Reserved
4 * Contact: Rafal Krypa <r.krypa@samsung.com>
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License
20 * @author Michal Witanowski <m.witanowski@samsung.com>
21 * @author Rafal Krypa <r.krypa@samsung.com>
22 * @brief Implementation of security-manager service
25 #ifndef _SECURITY_MANAGER_SERVICE_
26 #define _SECURITY_MANAGER_SERVICE_
28 #include <service-thread.h>
29 #include <generic-socket-manager.h>
30 #include <message-buffer.h>
31 #include <connection-info.h>
32 #include <privilege_db.h>
35 namespace SecurityManager {
37 class ServiceException
40 DECLARE_EXCEPTION_TYPE(SecurityManager::Exception, Base)
41 DECLARE_EXCEPTION_TYPE(Base, InvalidAction)
45 public SecurityManager::GenericSocketService,
46 public SecurityManager::ServiceThread<Service>
50 ServiceDescriptionVector GetServiceDescription();
52 DECLARE_THREAD_EVENT(AcceptEvent, accept)
53 DECLARE_THREAD_EVENT(WriteEvent, write)
54 DECLARE_THREAD_EVENT(ReadEvent, process)
55 DECLARE_THREAD_EVENT(CloseEvent, close)
57 void accept(const AcceptEvent &event);
58 void write(const WriteEvent &event);
59 void process(const ReadEvent &event);
60 void close(const CloseEvent &event);
63 ConnectionInfoMap m_connectionInfoMap;
64 PrivilegeDb m_privilegeDb;
68 * Handle request from a client
70 * @param conn Socket connection information
71 * @param buffer Raw received data buffer
72 * @param interfaceID identifier used to distinguish source socket
73 * @return true on success
75 bool processOne(const ConnectionID &conn, MessageBuffer &buffer, InterfaceID interfaceID);
78 * Process application installation
80 * @param buffer Raw received data buffer
81 * @param send Raw data buffer to be sent
82 * @param uid User's identifier for whom application will be installed
83 * @return true on success
85 bool processAppInstall(MessageBuffer &buffer, MessageBuffer &send, uid_t uid);
88 * Process application uninstallation
90 * @param buffer Raw received data buffer
91 * @param send Raw data buffer to be sent
92 * @param uid User's identifier for whom application will be uninstalled
93 * @return true on success
95 bool processAppUninstall(MessageBuffer &buffer, MessageBuffer &send, uid_t uid);
98 * Process getting package id from app id
100 * @param buffer Raw received data buffer
101 * @param send Raw data buffer to be sent
102 * @return true on success
104 bool processGetPkgId(MessageBuffer &buffer, MessageBuffer &send);
107 * Process getting permitted group ids for app id
109 * @param buffer Raw received data buffer
110 * @param send Raw data buffer to be sent
111 * @param uid User's identifier for whom application will be launched
112 * @param pid Process id in which application will be launched
113 * @return true on success
115 bool processGetAppGroups(MessageBuffer &buffer, MessageBuffer &send, uid_t uid, pid_t pid);
118 } // namespace SecurityManager
120 #endif // _SECURITY_MANAGER_SERVICE_