From 18103e986d89b9e329f49d9329d8bc40dffd39eb Mon Sep 17 00:00:00 2001 From: José Bollo Date: Thu, 20 Oct 2016 11:12:06 +0200 Subject: build: improve simulation of security MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commits allows to simulates either the security-manager and the smack LSM. These simulations are used for developping purpose. Change-Id: I138d7351511ca2663498bfacca28811fc81b8c55 Signed-off-by: José Bollo --- CMakeLists.txt | 11 +++++++++-- src/CMakeLists.txt | 19 +++++++++++++++---- src/secmgr-wrap.c | 4 ++++ src/simulation/smack.h | 24 ++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 src/simulation/smack.h diff --git a/CMakeLists.txt b/CMakeLists.txt index e893222..d649186 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,11 +27,13 @@ set(PROJECT_PRETTY_NAME "Application Framework Main") set(PROJECT_DESCRIPTION "Secured Application framework") set(PROJECT_VERSION "1.0") - set(USE_LIBZIP ON CACHE BOOL "should try to use libzip?") -set(USE_SIMULATION ON CACHE BOOL "if set simulates security manager") +set(USE_SIMULATION OFF CACHE BOOL "if set simulates security manager and smack") set(USE_SDK OFF CACHE BOOL "if set, avoids installating system runtime files") +set(SIMULATE_SECMGR OFF CACHE BOOL "if set, the security manager is simulated") +set(SIMULATE_SMACK OFF CACHE BOOL "if set, the smack environment is simulated") + set(afm_name "afm" CACHE STRING "Name for application framework user") set(afm_confdir "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${afm_name}" CACHE STRING "Directory for configuration files") set(afm_datadir "${CMAKE_INSTALL_FULL_DATADIR}/${afm_name}" CACHE STRING "Root directory for installions") @@ -42,6 +44,11 @@ set(afm_prefix_binding "${afm_prefix}binding:" CACHE STRING "URN for bindin set(afm_user_appdir "app-data" CACHE STRING "User subdirectory for applications") set(wgtpkg_trusted_cert_dir "${afm_confdir}/certs" CACHE STRING "Path to internal certificates") +if(USE_SIMULATION) + set(SIMULATE_SECMGR ON) + set(SIMULATE_SMACK ON) +endif(USE_SIMULATION) + add_definitions( -DFWK_CONFIG_DIR="${afm_confdir}" -DFWK_PREFIX="${afm_prefix}" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6610251..91a2cc1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -58,14 +58,25 @@ endif() ########################################################################### -if(USE_SIMULATION) - include_directories(simulation) -else(USE_SIMULATION) +if(SIMULATE_SECMGR) + add_definitions(-DSIMULATE_SECURITY_MANAGER=1) +else(SIMULATE_SECMGR) pkg_check_modules(SECMGR REQUIRED security-manager) add_compile_options(${SECMGR_CFLAGS}) include_directories(${SECMGR_INCLUDE_DIRS}) link_libraries(${SECMGR_LIBRARIES}) -endif(USE_SIMULATION) + add_definitions(-DSIMULATE_SECURITY_MANAGER=0) +endif(SIMULATE_SECMGR) + +if(SIMULATE_SMACK) + add_definitions(-DSIMULATE_LIBSMACK=1) +else(SIMULATE_SMACK) + pkg_check_modules(SMACK REQUIRED libsmack) + add_compile_options(${SMACK_CFLAGS}) + include_directories(${SMACK_INCLUDE_DIRS}) + link_libraries(${SMACK_LIBRARIES}) + add_definitions(-DSIMULATE_LIBSMACK=0) +endif(SIMULATE_SMACK) ########################################################################### diff --git a/src/secmgr-wrap.c b/src/secmgr-wrap.c index fee9d64..e4f0a4a 100644 --- a/src/secmgr-wrap.c +++ b/src/secmgr-wrap.c @@ -20,7 +20,11 @@ #include #include +#if SIMULATE_SECURITY_MANAGER +#include "simulation/security-manager.h" +#else #include +#endif #include "verbose.h" #include "secmgr-wrap.h" diff --git a/src/simulation/smack.h b/src/simulation/smack.h new file mode 100644 index 0000000..8ae01ef --- /dev/null +++ b/src/simulation/smack.h @@ -0,0 +1,24 @@ +/* + Copyright 2016 IoT.bzh + + 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. +*/ + +#include +#include + +#define smack_set_label_for_path(path,xattr,follow,label) \ + (printf("smack_set_label_for_path(%s,%s,%d,%s)\n",path,xattr,follow,label),(label?(int)strlen(label):(int)0)) + +#define smack_remove_label_for_path(path,xattr,follow) \ + (printf("smack_remove_label_for_path(%s,%s,%d)\n",path,xattr,follow),(int)0) -- cgit 1.2.3-korg