diff options
author | José Bollo <jose.bollo@iot.bzh> | 2016-10-20 11:12:06 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2016-10-20 12:00:52 +0200 |
commit | 18103e986d89b9e329f49d9329d8bc40dffd39eb (patch) | |
tree | 2cee41c95354be7f2e3fa7078fd50e2b86770363 | |
parent | 38ba270af828b80e0ffb5eab955aff733de17dba (diff) |
build: improve simulation of security
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 <jose.bollo@iot.bzh>
-rw-r--r-- | CMakeLists.txt | 11 | ||||
-rw-r--r-- | src/CMakeLists.txt | 19 | ||||
-rw-r--r-- | src/secmgr-wrap.c | 4 | ||||
-rw-r--r-- | src/simulation/smack.h | 24 |
4 files changed, 52 insertions, 6 deletions
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 <errno.h> #include <assert.h> +#if SIMULATE_SECURITY_MANAGER +#include "simulation/security-manager.h" +#else #include <security-manager.h> +#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 <stdio.h> +#include <string.h> + +#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) |