build: improve simulation of security
authorJosé Bollo <jose.bollo@iot.bzh>
Thu, 20 Oct 2016 09:12:06 +0000 (11:12 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Thu, 20 Oct 2016 10:00:52 +0000 (12:00 +0200)
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>
CMakeLists.txt
src/CMakeLists.txt
src/secmgr-wrap.c
src/simulation/smack.h [new file with mode: 0644]

index e893222..d649186 100644 (file)
@@ -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}"
index 6610251..91a2cc1 100644 (file)
@@ -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)
 
 ###########################################################################
 
index fee9d64..e4f0a4a 100644 (file)
 #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 (file)
index 0000000..8ae01ef
--- /dev/null
@@ -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)