diff options
author | Rafal Krypa <r.krypa@samsung.com> | 2014-07-03 20:34:41 +0200 |
---|---|---|
committer | RafaĆ Krypa <rafal@krypa.net> | 2014-07-13 23:11:50 +0200 |
commit | 0ba5ce3d312676bd3e0ba7b8d64df58922a6c541 (patch) | |
tree | 6163f0077e76e8547fa2ba4a6921a86f27d6cb5f /src | |
parent | ff65c427acfcb6d445ee6ae8cbeb570dc744edae (diff) | |
download | security-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.txt | 2 | ||||
-rw-r--r-- | src/server/service/cynara.cpp | 57 | ||||
-rw-r--r-- | src/server/service/include/cynara.h | 54 |
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_ |