summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRafal Krypa <r.krypa@samsung.com>2014-07-03 20:34:41 +0200
committerRafaƂ Krypa <rafal@krypa.net>2014-07-13 23:11:50 +0200
commit0ba5ce3d312676bd3e0ba7b8d64df58922a6c541 (patch)
tree6163f0077e76e8547fa2ba4a6921a86f27d6cb5f /src
parentff65c427acfcb6d445ee6ae8cbeb570dc744edae (diff)
downloadsecurity-manager-0ba5ce3d312676bd3e0ba7b8d64df58922a6c541.tar.gz
security-manager-0ba5ce3d312676bd3e0ba7b8d64df58922a6c541.tar.bz2
security-manager-0ba5ce3d312676bd3e0ba7b8d64df58922a6c541.zip
Initial code for adding rules to Cynara
Adding new class for interface to cynara-admin. No operations implemented yet, only initialize and destroy. Change-Id: I1337ae9586c9767fa51c5ffc30671d6b7a758e4c Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Diffstat (limited to 'src')
-rw-r--r--src/server/CMakeLists.txt2
-rw-r--r--src/server/service/cynara.cpp57
-rw-r--r--src/server/service/include/cynara.h54
3 files changed, 113 insertions, 0 deletions
diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt
index 38948881..89b21a66 100644
--- a/src/server/CMakeLists.txt
+++ b/src/server/CMakeLists.txt
@@ -7,6 +7,7 @@ PKG_CHECK_MODULES(SERVER_DEP
libtzplatform-config
sqlite3
db-util
+ cynara-admin
)
FIND_PACKAGE(
@@ -40,6 +41,7 @@ SET(SERVER_SOURCES
${SERVER_PATH}/service/smack-rules.cpp
${SERVER_PATH}/service/smack-labels.cpp
${SERVER_PATH}/service/installer.cpp
+ ${SERVER_PATH}/service/cynara.cpp
${SERVER_PATH}/db/privilege_db.cpp
${DPL_PATH}/core/src/errno_string.cpp
${DPL_PATH}/core/src/string.cpp
diff --git a/src/server/service/cynara.cpp b/src/server/service/cynara.cpp
new file mode 100644
index 00000000..ab760ef8
--- /dev/null
+++ b/src/server/service/cynara.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Contact: Rafal Krypa <r.krypa@samsung.com>
+ *
+ * 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
+ */
+/*
+ * @file cynara.cpp
+ * @author Rafal Krypa <r.krypa@samsung.com>
+ * @brief Wrapper class for Cynara interface
+ */
+
+#include <string>
+#include "cynara.h"
+
+namespace SecurityManager {
+
+static void checkCynaraAdminError(int result, const std::string &msg)
+{
+ switch (result) {
+ case CYNARA_ADMIN_API_SUCCESS:
+ return;
+ case CYNARA_ADMIN_API_OUT_OF_MEMORY:
+ ThrowMsg(CynaraException::OutOfMemory, msg);
+ case CYNARA_ADMIN_API_INVALID_PARAM:
+ ThrowMsg(CynaraException::InvalidParam, msg);
+ case CYNARA_ADMIN_API_SERVICE_NOT_AVAILABLE:
+ ThrowMsg(CynaraException::ServiceNotAvailable, msg);
+ default:
+ ThrowMsg(CynaraException::UnknownError, msg);
+ }
+}
+
+CynaraAdmin::CynaraAdmin()
+{
+ checkCynaraAdminError(
+ cynara_admin_initialize(&m_CynaraAdmin),
+ "Cannot connect to Cynara administrative interface.");
+}
+
+CynaraAdmin::~CynaraAdmin()
+{
+ cynara_admin_finish(m_CynaraAdmin);
+}
+
+} // namespace SecurityManager
diff --git a/src/server/service/include/cynara.h b/src/server/service/include/cynara.h
new file mode 100644
index 00000000..e11b1335
--- /dev/null
+++ b/src/server/service/include/cynara.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Contact: Rafal Krypa <r.krypa@samsung.com>
+ *
+ * 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
+ */
+/*
+ * @file cynara.h
+ * @author Rafal Krypa <r.krypa@samsung.com>
+ * @brief Wrapper class for Cynara interface
+ */
+
+#ifndef _SECURITY_MANAGER_CYNARA_
+#define _SECURITY_MANAGER_CYNARA_
+
+#include <cynara-admin.h>
+#include <dpl/exception.h>
+
+namespace SecurityManager {
+
+class CynaraException
+{
+public:
+ DECLARE_EXCEPTION_TYPE(SecurityManager::Exception, Base)
+ DECLARE_EXCEPTION_TYPE(Base, OutOfMemory)
+ DECLARE_EXCEPTION_TYPE(Base, InvalidParam)
+ DECLARE_EXCEPTION_TYPE(Base, ServiceNotAvailable)
+ DECLARE_EXCEPTION_TYPE(Base, UnknownError)
+};
+
+class CynaraAdmin
+{
+public:
+ CynaraAdmin();
+ virtual ~CynaraAdmin();
+
+private:
+ struct cynara_admin *m_CynaraAdmin;
+};
+
+} // namespace SecurityManager
+
+#endif // _SECURITY_MANAGER_CYNARA_