summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2016-10-20 11:12:06 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2016-10-20 12:00:52 +0200
commit18103e986d89b9e329f49d9329d8bc40dffd39eb (patch)
tree2cee41c95354be7f2e3fa7078fd50e2b86770363
parent38ba270af828b80e0ffb5eab955aff733de17dba (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.txt11
-rw-r--r--src/CMakeLists.txt19
-rw-r--r--src/secmgr-wrap.c4
-rw-r--r--src/simulation/smack.h24
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)