diff --git a/CMakeLists.txt b/CMakeLists.txt
index c859b23..143f0a8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,141 +1,149 @@
-cmake_minimum_required( VERSION 3.0.0)
+cmake_minimum_required(VERSION 3.0.0)
 
-set (VERSION_MAJOR 0 CACHE STRING "Project major version number")
-set (VERSION_MINOR "1" CACHE STRING "Project minor version number")
-set (VERSION_PATCH "0" CACHE STRING "Project patch version number")
-set (COSE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
+set(VERSION_MAJOR
+    0
+    CACHE STRING "Project major version number")
+set(VERSION_MINOR
+    "1"
+    CACHE STRING "Project minor version number")
+set(VERSION_PATCH
+    "0"
+    CACHE STRING "Project patch version number")
+set(COSE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
 mark_as_advanced(VERSION_MAJOR VERSION_MINOR VERSION_PATCH COSE_VERSION)
 
-project ("cose-c" VERSION "${COSE_VERSION}")
+project("cose-c" VERSION "${COSE_VERSION}")
 
 ###############################################################################
 # OPTIONS
 ###############################################################################
 
-option (COSE_C_USE_CONTEXT	         "Use context pointer for COSE functions" ON)
-option (COSE_C_VERBOSE              "Produce COSE_C_VERBOSE makefile output" OFF)
-option (COSE_C_OPTIMIZE             "Optimize for size" OFF)
-option (COSE_C_FATAL_WARNINGS       "Treat build warnings as error" OFF)
-option (COSE_C_COVERALLS            "Generate coveralls data" ON)
-option (COSE_C_COVERALLS_SEND       "Send data to coveralls site" OFF )
-option (COSE_C_BUILD_DOCS           "Create docs using Doxygen" OFF )
-option (COSE_C_BUILD_TESTS          "build tests" ON )
-option (COSE_C_BUILD_DUMPER         "build dumper" ON )
-option (BUILD_SHARED_LIBS           "Build Shared Libraries" ON)
-option (COSE_C_USE_MBEDTLS          "Use MBedTLS for the Crypto Package" OFF)
-option (COSE_C_USE_FIND_PACKAGE     "Use cmake find_package instead of using cmake project_add" OFF)
-option (COSE_C_INCLUDE_ENCRYPT      "Include COSE_ENCRYPT" ON)
-option (COSE_C_INCLUDE_ENCRYPT0     "Include COSE_ENCRYPT0" ON)
-option (COSE_C_INCLUDE_MAC          "Include COSE_MAC" ON)
-option (COSE_C_INCLUDE_MAC0         "Include COSE_MAC0" ON)
-option (COSE_C_INCLUDE_SIGN         "Include COSE_SIGN" ON)
-option (COSE_C_INCLUDE_SIGN0        "Include COSE_SIGN0" ON)
-option (COSE_C_INCLUDE_SIGN1        "Include COSE_SIGN1" ON)
+option(COSE_C_USE_CONTEXT "Use context pointer for COSE functions" ON)
+option(COSE_C_VERBOSE "Produce COSE_C_VERBOSE makefile output" OFF)
+option(COSE_C_OPTIMIZE "Optimize for size" OFF)
+option(COSE_C_FATAL_WARNINGS "Treat build warnings as error" OFF)
+option(COSE_C_COVERALLS "Generate coveralls data" ON)
+option(COSE_C_COVERALLS_SEND "Send data to coveralls site" OFF)
+option(COSE_C_BUILD_DOCS "Create docs using Doxygen" OFF)
+option(COSE_C_BUILD_TESTS "build tests" ON)
+option(COSE_C_BUILD_DUMPER "build dumper" ON)
+option(BUILD_SHARED_LIBS "Build Shared Libraries" ON)
+option(COSE_C_USE_MBEDTLS "Use MBedTLS for the Crypto Package" OFF)
+option(COSE_C_USE_FIND_PACKAGE "Use cmake find_package instead of using cmake project_add" OFF)
+option(COSE_C_INCLUDE_ENCRYPT "Include COSE_ENCRYPT" ON)
+option(COSE_C_INCLUDE_ENCRYPT0 "Include COSE_ENCRYPT0" ON)
+option(COSE_C_INCLUDE_MAC "Include COSE_MAC" ON)
+option(COSE_C_INCLUDE_MAC0 "Include COSE_MAC0" ON)
+option(COSE_C_INCLUDE_SIGN "Include COSE_SIGN" ON)
+option(COSE_C_INCLUDE_SIGN0 "Include COSE_SIGN0" ON)
+option(COSE_C_INCLUDE_SIGN1 "Include COSE_SIGN1" ON)
 
-if (NOT COSE_C_INCLUDE_SIGN0)
-   message ( "Use COSE_C_INCLUDE_SIGN1 rather than COSE_C_INCLUDE_SIGN0" )
-   set (COSE_C_INCLUDE_SIGN1 ${COSE_C_INCLUDE_SIGN0})
-endif ()
+if(NOT COSE_C_INCLUDE_SIGN0)
+  message("Use COSE_C_INCLUDE_SIGN1 rather than COSE_C_INCLUDE_SIGN0")
+  set(COSE_C_INCLUDE_SIGN1 ${COSE_C_INCLUDE_SIGN0})
+endif()
 
 # Set the output of the libraries and executables.
 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake)
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR})
 
-set ( dist_dir          ${CMAKE_BINARY_DIR}/dist )
-set ( prefix            ${CMAKE_INSTALL_PREFIX} )
-set ( exec_prefix       ${CMAKE_INSTALL_PREFIX}/bin )
-set ( libdir            ${CMAKE_INSTALL_PREFIX}/lib )
-set ( includedir        ${CMAKE_INSTALL_PREFIX}/include )
+set(dist_dir ${CMAKE_BINARY_DIR}/dist)
+set(prefix ${CMAKE_INSTALL_PREFIX})
+set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
+set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
+set(includedir ${CMAKE_INSTALL_PREFIX}/include)
 
+if(NOT CMAKE_BUILD_TYPE)
+  if(COSE_C_OPTIMIZE)
+    set(CMAKE_BUILD_TYPE MinSizeRel)
+    set(COSE_C_COVERALLS OFF)
+    set(COSE_C_COVERALLS_SEND OFF)
+  else()
+    set(CMAKE_BUILD_TYPE Debug)
+  endif()
+endif()
 
-if (NOT CMAKE_BUILD_TYPE)
-   if (COSE_C_OPTIMIZE)
-      set ( CMAKE_BUILD_TYPE MinSizeRel )
-      set ( COSE_C_COVERALLS OFF )
-      set ( COSE_C_COVERALLS_SEND OFF )
-   else ()
-      set ( CMAKE_BUILD_TYPE Debug)
-   endif ()
-endif ()
+if(NOT COSE_C_INCLUDE_ENCRYPT)
+  add_definitions(-DINCLUDE_ENCRYPT=0)
+endif()
+if(NOT COSE_C_INCLUDE_ENCRYPT0)
+  add_definitions(-DINCLUDE_ENCRYPT0=0)
+endif()
+if(NOT COSE_C_INCLUDE_MAC)
+  add_definitions(-DINCLUDE_MAC=0)
+endif()
+if(NOT COSE_C_INCLUDE_MAC0)
+  add_definitions(-DINCLUDE_MAC0=0)
+endif()
+if(NOT COSE_C_INCLUDE_SIGN)
+  add_definitions(-DINCLUDE_SIGN=0)
+endif()
+if(NOT COSE_C_INCLUDE_SIGN1)
+  add_definitions(-DINCLUDE_SIGN1=0)
+endif()
+if(COSE_C_USE_CONTEXT)
+  add_definitions(-DUSE_CBOR_CONTEXT)
+endif()
+if(MSVC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
+  set(COSE_C_COVERALLS OFF)
+endif()
 
-if (NOT COSE_C_INCLUDE_ENCRYPT)
-   add_definitions( -DINCLUDE_ENCRYPT=0 )
-endif ()
-if (NOT COSE_C_INCLUDE_ENCRYPT0)
-   add_definitions( -DINCLUDE_ENCRYPT0=0 )
-endif ()
-if (NOT COSE_C_INCLUDE_MAC)
-   add_definitions( -DINCLUDE_MAC=0 )
-endif ()
-if (NOT COSE_C_INCLUDE_MAC0)
-   add_definitions( -DINCLUDE_MAC0=0 )
-endif ()
-if (NOT COSE_C_INCLUDE_SIGN)
-   add_definitions( -DINCLUDE_SIGN=0 )
-endif ()
-if (NOT COSE_C_INCLUDE_SIGN1)
-   add_definitions( -DINCLUDE_SIGN1=0 )
-endif ()
+message("Build type: ${CMAKE_BUILD_TYPE}")
 
-if ( MSVC OR CMAKE_C_COMPILER_ID MATCHES "Clang" )
-   set (COSE_C_COVERALLS OFF)
-endif ()
+add_definitions(-DUSE_ARRAY)
+if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
+  message(STATUS "adding GCC/Clang options ")
+  add_definitions(-std=gnu99 -Wall -Wextra -pedantic)
+  if(COSE_C_FATAL_WARNINGS)
+    add_definitions(-Werror)
+  endif()
+  if(COSE_C_OPTIMIZE)
+    add_definitions(-Os)
+  endif()
+  add_definitions(-DNDEBUG)
+elseif(MSVC)
+  add_definitions(/W4)
+  if(COSE_C_FATAL_WARNINGS)
+    add_definitions(/WX)
+  endif()
+else()
+  message(FATAL_ERROR "unhandled compiler id: ${CMAKE_C_COMPILER_ID}")
+endif()
 
-message ( "Build type: ${CMAKE_BUILD_TYPE}" )
+set(LIB_TYPE STATIC)
+if(BUILD_SHARED_LIBS)
+  set(LIB_TYPE SHARED)
+endif(BUILD_SHARED_LIBS)
 
-add_definitions( -DUSE_ARRAY )
-if ( CMAKE_C_COMPILER_ID STREQUAL "GNU" OR
-     CMAKE_C_COMPILER_ID MATCHES "Clang")
-   message ( STATUS "adding GCC/Clang options ")
-   add_definitions( -std=gnu99 -Wall -Wextra -pedantic )
-   if ( COSE_C_FATAL_WARNINGS )
-      add_definitions( -Werror )
-   endif ()
-   if (COSE_C_OPTIMIZE) 
-      add_definitions( -Os )
-   endif ()
-   add_definitions( -DNDEBUG )
-elseif (MSVC)
-   add_definitions ( /W4 )
-   if (COSE_C_FATAL_WARNINGS)
-      add_definitions( /WX )
-   endif ()
-else ()
-    message ( FATAL_ERROR "unhandled compiler id: ${CMAKE_C_COMPILER_ID}" )
-endif ()
-
-set (LIB_TYPE STATIC)
-if (BUILD_SHARED_LIBS)
-   set (LIB_TYPE SHARED)
-endif (BUILD_SHARED_LIBS)
-
-if (versbose)
-   set (CMAKE_VERBOSE_MAKEFILE ON)
-endif ()
+if(versbose)
+  set(CMAKE_VERBOSE_MAKEFILE ON)
+endif()
 
 ###############################################################################
 # DOCS
 ###############################################################################
 
-if (COSE_C_BUILD_DOCS)
-   find_package(Doxygen)
-   if (NOT DOXYGEN_FOUND)
-        message(FATAL_ERROR "Doxygen is needed to build the documenation")
-   endif()
+if(COSE_C_BUILD_DOCS)
+  find_package(Doxygen)
+  if(NOT DOXYGEN_FOUND)
+    message(FATAL_ERROR "Doxygen is needed to build the documenation")
+  endif()
 
-   set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
-   set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
+  set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
+  set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
 
-   configure_file(${doxyfile_in} ${doxyfile} @ONLY)
+  configure_file(${doxyfile_in} ${doxyfile} @ONLY)
 
-   add_custom_target(doc
-       COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
-       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-       COMMENT "Generating API documentation with Doxygen"
-       VERBATIM)
+  add_custom_target(
+    doc
+    COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+    COMMENT "Generating API documentation with Doxygen"
+    VERBATIM)
 
-   install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc)
+  install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc)
 endif()
 
 ###############################################################################
@@ -143,60 +151,81 @@
 ###############################################################################
 
 if(COSE_C_USE_FIND_PACKAGE)
-   find_package(cn-cbor REQUIRED)
+  find_package(cn-cbor REQUIRED)
 else()
-   include(ExternalProject)
-   ExternalProject_Add(
-   project_cn-cbor
-   GIT_REPOSITORY https://github.com/jimsch/cn-cbor
-   GIT_TAG master
-   CMAKE_ARGS -Doptimize=OFF -Duse_context=${COSE_C_USE_CONTEXT} -Dbuild_docs=OFF -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -Dcoveralls=OFF -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} -Dfatal_warnings=OFF
-   INSTALL_DIR "${dist_dir}"
-   UPDATE_DISCONNECTED 1
-   )
+  include(ExternalProject)
+  externalproject_add(
+    project_cn-cbor
+    GIT_REPOSITORY https://github.com/jimsch/cn-cbor
+    GIT_TAG master
+    CMAKE_ARGS -Doptimize=OFF
+               -Duse_context=${COSE_C_USE_CONTEXT}
+               -Dbuild_docs=OFF
+               -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+               -Dcoveralls=OFF
+               -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
+               -Dfatal_warnings=OFF
+    INSTALL_DIR "${dist_dir}"
+    UPDATE_DISCONNECTED 1)
 
-   ExternalProject_Get_Property(project_cn-cbor install_dir)
-   include_directories ( "${install_dir}/include" )
+  externalproject_get_property(project_cn-cbor install_dir)
+  include_directories("${install_dir}/include")
 
-   if (MSVC)
-      add_library (cn-cbor STATIC IMPORTED)
-      set_property (TARGET cn-cbor PROPERTY IMPORTED_LOCATION "${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor.lib")
-   else ()
-      add_library (cn-cbor STATIC IMPORTED)
-      set_property (TARGET cn-cbor PROPERTY IMPORTED_LOCATION "${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor${CMAKE_SHARED_LIBRARY_SUFFIX}")
-   endif ()
+  if(MSVC)
+    add_library(cn-cbor STATIC IMPORTED GLOBAL)
+    set_property(TARGET cn-cbor PROPERTY IMPORTED_LOCATION
+                                         "${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor.lib")
+  else()
+    add_library(cn-cbor STATIC IMPORTED GLOBAL)
+    set_property(
+      TARGET cn-cbor PROPERTY IMPORTED_LOCATION
+                              "${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor${CMAKE_SHARED_LIBRARY_SUFFIX}")
+  endif()
 
-   add_dependencies(cn-cbor project_cn-cbor)
+  if(NOT TARGET cn-cbor::cn-cbor)
+    add_library(cn-cbor::cn-cbor ALIAS cn-cbor)
+  endif()
+
+  add_dependencies(cn-cbor project_cn-cbor)
 endif()
 
-if (COSE_C_USE_MBEDTLS)
-   add_definitions( -DUSE_MBED_TLS )
+if(COSE_C_USE_MBEDTLS)
+  add_definitions(-DUSE_MBED_TLS)
 
-   if(COSE_C_USE_FIND_PACKAGE)
-      find_package(MbedTLS REQUIRED)
-   else()
-      ExternalProject_Add(
-         project_mbedtls
-         GIT_REPOSITORY https://github.com/ARMmbed/mbedtls
-         CMAKE_ARGS -DENABLED_PROGRAMS=OFF -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -Dcoveralls=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=${BUILD_SHARED_LIBS} -Dfatal_warnings=OFF -DENABLE_TESTING=OFF -DLIB_INSTALL_DIR=${install_dir}/lib
-         INTALL_DIR "${dist_dir}"
-         UPDATE_DISCONNECTED 1
-      )
+  if(COSE_C_USE_FIND_PACKAGE)
+    find_package(MbedTLS REQUIRED)
+  else()
+    externalproject_add(
+      project_mbedtls
+      GIT_REPOSITORY https://github.com/ARMmbed/mbedtls
+      CMAKE_ARGS -DENABLED_PROGRAMS=OFF
+                 -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+                 -Dcoveralls=OFF
+                 -DUSE_SHARED_MBEDTLS_LIBRARY=${BUILD_SHARED_LIBS}
+                 -Dfatal_warnings=OFF
+                 -DENABLE_TESTING=OFF
+                 -DLIB_INSTALL_DIR=${install_dir}/lib
+                 INTALL_DIR
+                 "${dist_dir}"
+      UPDATE_DISCONNECTED 1)
 
-      ExternalProject_Get_Property(project_mbedtls install_dir)
-      include_directories( "${install_dir}/include" )
-      add_library( mbedtls STATIC IMPORTED)
-      if (MSVC)
-         set_property (TARGET mbedtls PROPERTY IMPORTED_LOCATION "${dist_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}mbedcrypto.lib")
-      else ()
-         set_property (TARGET mbedtls PROPERTY IMPORTED_LOCATION "${dist_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}mbedcrypto${CMAKE_SHARED_LIBRARY_SUFFIX}")
-      endif ()
-      add_dependencies(mbedtls project_mbedtls)
-   endif()
+    externalproject_get_property(project_mbedtls install_dir)
+    include_directories("${install_dir}/include")
+    add_library(mbedtls STATIC IMPORTED)
+    if(MSVC)
+      set_property(TARGET mbedtls PROPERTY IMPORTED_LOCATION
+                                           "${dist_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}mbedcrypto.lib")
+    else()
+      set_property(
+        TARGET mbedtls PROPERTY IMPORTED_LOCATION
+                                "${dist_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}mbedcrypto${CMAKE_SHARED_LIBRARY_SUFFIX}")
+    endif()
+    add_dependencies(mbedtls project_mbedtls)
+  endif()
 
 else()
-   find_package(OpenSSL REQUIRED)
-endif ()
+  find_package(OpenSSL REQUIRED)
+endif()
 
 ###############################################################################
 # ADD LIBRARY
@@ -205,42 +234,41 @@
 add_subdirectory(src)
 
 ###############################################################################
-# ADD DUMPER 
+# ADD DUMPER
 ###############################################################################
 
 if(COSE_C_BUILD_DUMPER)
-   add_subdirectory(dumper)
+  add_subdirectory(dumper)
 endif()
 
 ###############################################################################
-# ADD TESTS 
+# ADD TESTS
 ###############################################################################
 
 if(COSE_C_BUILD_TESTS)
-   include (CTest)
-   add_subdirectory(test)
+  enable_testing()
+  include(CTest)
+  add_subdirectory(test)
 endif()
 
 ###############################################################################
-# PRINT CONFIG 
+# PRINT CONFIG
 ###############################################################################
 
-message(STATUS "COSE_C_INCLUDE_ENCRYPT:..............${COSE_C_INCLUDE_ENCRYPT}")
-message(STATUS "COSE_C_INCLUDE_ENCRYPT0:.............${COSE_C_INCLUDE_ENCRYPT0}")
-message(STATUS "COSE_C_INCLUDE_MAC:..................${COSE_C_INCLUDE_MAC}")
-message(STATUS "COSE_C_INCLUDE_MAC0:.................${COSE_C_INCLUDE_MAC0}")
-message(STATUS "COSE_C_INCLUDE_SIGN:.................${COSE_C_INCLUDE_SIGN}")
-message(STATUS "COSE_C_INCLUDE_SIGN0:................${COSE_C_INCLUDE_SIGN0}")
-message(STATUS "COSE_C_INCLUDE_SIGN1:................${COSE_C_INCLUDE_SIGN1}")
-message(STATUS "COSE_C_USE_CONTEXT:..................${COSE_C_USE_CONTEXT}")
-message(STATUS "COSE_C_FATAL_WARNINGS:...............${COSE_C_FATAL_WARNINGS}")
-message(STATUS "COSE_C_BUILD_TESTS:..................${COSE_C_BUILD_TESTS}")
-message(STATUS "COSE_C_BUILD_DOCS:...................${COSE_C_BUILD_DOCS}")
-message(STATUS "COSE_C_USE_MBEDTLS:..................${COSE_C_USE_MBEDTLS}")
-message(STATUS "COSE_C_USE_FIND_PACKAGE:.............${COSE_C_USE_FIND_PACKAGE}")
-message(STATUS "COSE_C_BUILD_DUMPER:.................${COSE_C_BUILD_DUMPER}")
-message(STATUS "CMAKE_BUILD_TYPE:....................${CMAKE_BUILD_TYPE}")
-message(STATUS "BUILD_SHARED_LIBS:...................${BUILD_SHARED_LIBS}")
-message(STATUS "COSE_VERSION:........................${COSE_VERSION}")
-
-
+message(STATUS "COSE_C_INCLUDE_ENCRYPT:..........${COSE_C_INCLUDE_ENCRYPT}")
+message(STATUS "COSE_C_INCLUDE_ENCRYPT0:.........${COSE_C_INCLUDE_ENCRYPT0}")
+message(STATUS "COSE_C_INCLUDE_MAC:..............${COSE_C_INCLUDE_MAC}")
+message(STATUS "COSE_C_INCLUDE_MAC0:.............${COSE_C_INCLUDE_MAC0}")
+message(STATUS "COSE_C_INCLUDE_SIGN:.............${COSE_C_INCLUDE_SIGN}")
+message(STATUS "COSE_C_INCLUDE_SIGN0:............${COSE_C_INCLUDE_SIGN0}")
+message(STATUS "COSE_C_INCLUDE_SIGN1:............${COSE_C_INCLUDE_SIGN1}")
+message(STATUS "COSE_C_USE_CONTEXT:..............${COSE_C_USE_CONTEXT}")
+message(STATUS "COSE_C_FATAL_WARNINGS:...........${COSE_C_FATAL_WARNINGS}")
+message(STATUS "COSE_C_BUILD_TESTS:..............${COSE_C_BUILD_TESTS}")
+message(STATUS "COSE_C_BUILD_DOCS:...............${COSE_C_BUILD_DOCS}")
+message(STATUS "COSE_C_USE_MBEDTLS:..............${COSE_C_USE_MBEDTLS}")
+message(STATUS "COSE_C_USE_FIND_PACKAGE:.........${COSE_C_USE_FIND_PACKAGE}")
+message(STATUS "COSE_C_BUILD_DUMPER:.............${COSE_C_BUILD_DUMPER}")
+message(STATUS "CMAKE_BUILD_TYPE:................${CMAKE_BUILD_TYPE}")
+message(STATUS "BUILD_SHARED_LIBS:...............${BUILD_SHARED_LIBS}")
+message(STATUS "COSE_VERSION:....................${COSE_VERSION}")
diff --git a/cmake-format.yaml b/cmake-format.yaml
new file mode 100644
index 0000000..60329ed
--- /dev/null
+++ b/cmake-format.yaml
@@ -0,0 +1,15 @@
+# https://github.com/cheshirekow/cmake_format
+
+# How wide to allow formatted cmake files
+line_width: 120
+
+# How many spaces to tab for indent
+tab_size: 2
+
+# Format command names consistently as 'lower' or 'upper' case
+command_case: "lower"
+
+first_comment_is_literal: False
+
+# enable comment markup parsing and reflow
+enable_markup: False
diff --git a/conanfile.txt b/conanfile.txt
new file mode 100644
index 0000000..91b2156
--- /dev/null
+++ b/conanfile.txt
@@ -0,0 +1,19 @@
+# conan usage:
+
+# pip install conan --upgrade
+# rm -rf build
+# mkdir build
+# cd build
+# conan install ..
+# cmake .. -DCOSE_C_USE_FIND_PACKAGE=OFF
+# cmake --build .
+
+[requires]
+mbedtls/2.16.3-gpl
+cn-cbor/1.0.0
+
+[generators]
+cmake_find_package
+cmake_paths
+
+[options]
diff --git a/dumper/CMakeLists.txt b/dumper/CMakeLists.txt
index 52e87a9..600a0db 100644
--- a/dumper/CMakeLists.txt
+++ b/dumper/CMakeLists.txt
@@ -1,40 +1,20 @@
-#
-#  Compiling/running tests
-#
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dist_dir}/dumper)
 
-if (COSE_C_USE_CONTEXT)
-   add_definitions(-DUSE_CBOR_CONTEXT)
+add_executable(cose_dumper dumper.c)
+target_link_libraries(cose_dumper PRIVATE cn-cbor::cn-cbor cose-c::cose-c)
+if(MSVC)
+  target_link_libraries(cose_dumper PRIVATE ws2_32)
 endif()
 
-set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dist_dir}/dumper )
-
-add_executable ( cose_dumper dumper.c )
-
-target_link_libraries (cose_dumper PRIVATE cose-c )
-
-## OpenSSL
-
-target_include_directories(cose_dumper PRIVATE ${OPENSSL_INCLUDE_DIR})
-#target_link_libraries( cose_dumper PRIVATE event_openssl)
-target_link_libraries( cose_dumper PRIVATE ${OPENSSL_LIBRARIES} )
-target_link_libraries( cose_dumper PRIVATE cn-cbor )
-
-if ( MSVC )
-   message ( "test: ${BUILD_SHARED_LIBS}")
-   message ( "COSE_C_VERBOSE: ${COSE_C_VERBOSE}")
-
-target_link_libraries( cose_dumper PRIVATE ws2_32 )
-endif ()
-if (COSE_C_USE_MBEDTLS)
-    target_include_directories ( cose_dumper PUBLIC ${CMAKE_SHARED_MODLE_PREFIX}mbedtls${CMAKE_SHARED_LIBRARY_SUFFIX}/include )
-    target_link_libraries ( cose_dumper PRIVATE mbedtls )
+if(COSE_C_USE_MBEDTLS)
+  # mbedtls
+  target_include_directories(cose_dumper
+                             PUBLIC ${CMAKE_SHARED_MODLE_PREFIX}mbedtls${CMAKE_SHARED_LIBRARY_SUFFIX}/include)
+  target_link_libraries(cose_dumper PRIVATE mbedtls)
+else()
+  # openssl
+  target_include_directories(cose_dumper PRIVATE ${OPENSSL_INCLUDE_DIR})
+  target_link_libraries(cose_dumper PRIVATE ${OPENSSL_LIBRARIES})
 endif()
 
-target_include_directories ( cose_dumper PRIVATE ../include )
-target_include_directories ( cose_dumper PRIVATE ../src )
-target_include_directories ( cose_dumper PUBLIC ../../cose/cn-cbor/include )
-target_include_directories ( cose_dumper PUBLIC ../../cn-cbor/implement/cn-cbor/include )
-
-enable_testing()
-# add_test ( NAME cose_dumper COMMAND cose_dumper )
-
+# target_include_directories(cose_dumper PRIVATE ../src)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 55e577e..587e86c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,84 +1,81 @@
+add_library(${PROJECT_NAME} ${LIB_TYPE})
 
-if (COSE_C_USE_MBEDTLS)
-  set (cose_crypto mbedtls.c)
-else ()
-  set (cose_crypto openssl.c)
+if(COSE_C_USE_MBEDTLS)
+  set(cose_crypto mbedtls.c)
+else()
+  set(cose_crypto openssl.c)
 endif()
 
 set(cose_sources
-  ${CMAKE_CURRENT_LIST_DIR}/../include/cose/cose.h
-  ${CMAKE_CURRENT_LIST_DIR}/../include/cose/cose_configure.h
-  crypto.h
-  cose_int.h
-  crypto.h
-  Cose.c
-  MacMessage.c
-  MacMessage0.c
-  Sign.c
-  Sign1.c
-  cbor.c
-  Encrypt.c
-  Encrypt0.c
-  Recipient.c
-  SignerInfo.c
-  ${cose_crypto}
-)
+    ${PROJECT_SOURCE_DIR}/include/cose/cose.h
+    ${PROJECT_SOURCE_DIR}/include/cose/cose_configure.h
+    crypto.h
+    cose_int.h
+    crypto.h
+    Cose.c
+    MacMessage.c
+    MacMessage0.c
+    Sign.c
+    Sign1.c
+    cbor.c
+    Encrypt.c
+    Encrypt0.c
+    Recipient.c
+    SignerInfo.c
+    ${cose_crypto})
 
+target_sources(${PROJECT_NAME} PRIVATE ${cose_sources})
 
-if (COSE_C_USE_CONTEXT)
-    add_definitions(-DUSE_CBOR_CONTEXT)
+target_include_directories(
+  ${PROJECT_NAME}
+  PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>
+  PRIVATE ../src)
+target_link_libraries(${PROJECT_NAME} PRIVATE cn-cbor::cn-cbor)
+# target_include_directories(${PROJECT_NAME} PUBLIC ${dist_dir}/include)
+
+if(COSE_C_USE_MBEDTLS)
+  target_include_directories(${PROJECT_NAME}
+                             PUBLIC ${CMAKE_SHARED_MODLE_PREFIX}mbedtls${CMAKE_SHARED_LIBRARY_SUFFIX}/include)
+  target_link_libraries(${PROJECT_NAME} PRIVATE mbedtls)
+else()
+  target_include_directories(${PROJECT_NAME} PRIVATE ${OPENSSL_INCLUDE_DIR})
+  target_link_libraries(${PROJECT_NAME} PRIVATE ${OPENSSL_LIBRARIES})
 endif()
 
-add_library ( cose-c ${LIB_TYPE} ${cose_sources} )
-
-target_include_directories ( cose-c PRIVATE ${OPENSSL_INCLUDE_DIR} )
-target_include_directories ( cose-c PUBLIC ${dist_dir}/include )
-target_include_directories ( cose-c PUBLIC ../include )
-target_include_directories ( cose-c PRIVATE ../src )
-
-target_link_libraries ( cose-c PRIVATE ${OPENSSL_LIBRARIES} )
-target_link_libraries ( cose-c PRIVATE cn-cbor )
-if (COSE_C_USE_MBEDTLS)
-    target_include_directories ( cose-c PUBLIC ${CMAKE_SHARED_MODLE_PREFIX}mbedtls${CMAKE_SHARED_LIBRARY_SUFFIX}/include )
-    target_link_libraries ( cose-c PRIVATE mbedtls )
+if(MSVC)
+  target_link_libraries(${PROJECT_NAME} PRIVATE ws2_32)
 endif()
 
-if ( MSVC )
-    target_link_libraries( cose-c PRIVATE ws2_32 )
-endif ()
+add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
 
-if (COSE_C_COVERALLS)
-    include(Coveralls)
-    coveralls_turn_on_coverage()
+if(COSE_C_COVERALLS)
+  include(Coveralls)
+  coveralls_turn_on_coverage()
 
-    set(COVERAGE_SRC "")
-    foreach (S ${cose_sources})
-       get_filename_component(S_ABS ${S} ABSOLUTE)
-       list (APPEND COVERAGE_SRCS ${S_ABS})
-    endforeach()
+  set(COVERAGE_SRC "")
+  foreach(S ${cose_sources})
+    get_filename_component(S_ABS ${S} ABSOLUTE)
+    list(APPEND COVERAGE_SRCS ${S_ABS})
+  endforeach()
 
-    # Create the coveralls target.
-    coveralls_setup(
-    	"${COVERAGE_SRCS}"
-  	${COSE_C_COVERALLS_SEND}	# If we should upload
-    )
+  # Create the coveralls target. If we should upload
+  coveralls_setup("${COVERAGE_SRCS}" ${COSE_C_COVERALLS_SEND})
 endif()
 
-
 ###############################################################################
-# INSTALL LIBRARY
+#INSTALL LIBRARY
 ###############################################################################
 
 include(GNUInstallDirs)
 
-install ( TARGETS cose-c
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  RUNTIME DESTINATION bin)
 install(
-  DIRECTORY ../include
+  TARGETS ${PROJECT_NAME}
+  LIBRARY DESTINATION lib COMPONENT lib
+  ARCHIVE DESTINATION lib COMPONENT dev
+  RUNTIME DESTINATION lib COMPONENT lib)
+install(
+  DIRECTORY ${PROJECT_SOURCE_DIR}/include
   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
   COMPONENT dev
   FILES_MATCHING
   PATTERN "*.h")
-
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index c95f71f..d8b48cc 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,80 +1,152 @@
-#
-#  Compiling/running tests
-#
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dist_dir}/test)
 
-if (COSE_C_USE_CONTEXT)
-   add_definitions(-DUSE_CBOR_CONTEXT)
+add_executable(cose_test test.c json.c encrypt.c sign.c context.c mac_test.c)
+
+target_link_libraries(cose_test PRIVATE cose-c::cose-c cn-cbor::cn-cbor)
+
+if(COSE_C_USE_MBEDTLS)
+  # mbedtls
+  target_link_libraries(cose_test PRIVATE mbedtls)
+else()
+  # OpenSSL
+  target_include_directories(cose_test PRIVATE ${OPENSSL_INCLUDE_DIR})
+  target_link_libraries(cose_test PRIVATE ${OPENSSL_LIBRARIES})
 endif()
 
-set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dist_dir}/test )
-
-add_executable ( cose_test test.c json.c encrypt.c sign.c context.c mac_test.c)
-
-target_link_libraries (cose_test PRIVATE cose-c )
-if (COSE_C_USE_MBEDTLS)
-    target_link_libraries ( cose_test PRIVATE mbedtls )
+if(MSVC)
+  target_link_libraries(cose_test PRIVATE ws2_32)
 endif()
 
-## OpenSSL
-
-target_include_directories(cose_test PRIVATE ${OPENSSL_INCLUDE_DIR})
-target_link_libraries( cose_test PRIVATE ${OPENSSL_LIBRARIES} )
-
-target_link_libraries( cose_test PRIVATE cn-cbor )
-if ( MSVC )
-    target_link_libraries( cose_test PRIVATE ws2_32 )
-endif ()
-
-target_include_directories ( cose_test PRIVATE ../include )
-target_include_directories ( cose_test PRIVATE ../src )
-target_include_directories ( cose_test PUBLIC ../../cose/cn-cbor/include )
-target_include_directories ( cose_test PUBLIC ../../cn-cbor/implement/cn-cbor/include )
+target_include_directories(cose_test PRIVATE ../src)
+# target_include_directories(cose_test PUBLIC ../../cose/cn-cbor/include)
 
 enable_testing()
 
-add_test ( NAME cose_test COMMAND cose_test )
+add_test(NAME cose_test COMMAND cose_test)
 
-add_test ( NAME RFC8152 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/RFC8152 )
+add_test(
+  NAME RFC8152
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/RFC8152)
 
-add_test ( NAME aes-ccm WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/aes-ccm-examples )
+add_test(
+  NAME aes-ccm
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/aes-ccm-examples)
 
-add_test ( NAME aes-gcm WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/aes-gcm-examples )
+add_test(
+  NAME aes-gcm
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/aes-gcm-examples)
 
-add_test ( NAME enveloped WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/enveloped-tests )
-add_test ( NAME encrypted WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/encrypted-tests )
+add_test(
+  NAME enveloped
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/enveloped-tests)
+add_test(
+  NAME encrypted
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/encrypted-tests)
 
-add_test ( NAME cbc-mac WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/cbc-mac-examples )
+add_test(
+  NAME cbc-mac
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/cbc-mac-examples)
 
-add_test ( NAME ecdsa WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/ecdsa-examples )
+add_test(
+  NAME ecdsa
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/ecdsa-examples)
 
-add_test ( NAME hmac WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/hmac-examples )
-add_test ( NAME mac WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/mac-tests )
-add_test ( NAME mac0 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/mac0-tests )
+add_test(
+  NAME hmac
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/hmac-examples)
+add_test(
+  NAME mac
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/mac-tests)
+add_test(
+  NAME mac0
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/mac0-tests)
 
-add_test (NAME hkdf-hmac-sha WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/hkdf-hmac-sha-examples )
-add_test (NAME hkdf-aes WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/hkdf-aes-examples )
+add_test(
+  NAME hkdf-hmac-sha
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/hkdf-hmac-sha-examples)
+add_test(
+  NAME hkdf-aes
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/hkdf-aes-examples)
 
-add_test (NAME aes-wrap WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/aes-wrap-examples )
+add_test(
+  NAME aes-wrap
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/aes-wrap-examples)
 
-add_test (NAME ecdh-direct WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/ecdh-direct-examples )
-add_test (NAME ecdh-wrap WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/ecdh-wrap-examples )
-add_test ( NAME sign WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/sign-tests )
-add_test ( NAME sign1 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --dir Examples/sign1-tests )
+add_test(
+  NAME ecdh-direct
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/ecdh-direct-examples)
+add_test(
+  NAME ecdh-wrap
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/ecdh-wrap-examples)
+add_test(
+  NAME sign
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/sign-tests)
+add_test(
+  NAME sign1
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --dir Examples/sign1-tests)
 
+add_test(
+  NAME corner-cases
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --corners)
 
-add_test (NAME corner-cases WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --corners )
+add_test(
+  NAME Memory-mac-hmac
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/hmac-examples/HMac-01.json)
+add_test(
+  NAME Memory-mac-cbc-mac
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/cbc-mac-examples/cbc-mac-01.json)
+add_test(
+  NAME Memory-mac0
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/hmac-examples/HMac-enc-01.json)
 
-add_test (NAME Memory-mac-hmac WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/hmac-examples/HMac-01.json )
-add_test (NAME Memory-mac-cbc-mac WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/cbc-mac-examples/cbc-mac-01.json )
-add_test (NAME Memory-mac0 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/hmac-examples/HMac-enc-01.json )
+add_test(
+  NAME Memory-encrypt-gcm
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/aes-gcm-examples/aes-gcm-enc-01.json)
+add_test(
+  NAME Memory-encrypt-ccm
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/aes-ccm-examples/aes-ccm-enc-01.json)
+add_test(
+  NAME Memory-enveloped
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/aes-gcm-examples/aes-gcm-01.json)
 
-add_test (NAME Memory-encrypt-gcm WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/aes-gcm-examples/aes-gcm-enc-01.json )
-add_test (NAME Memory-encrypt-ccm WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/aes-ccm-examples/aes-ccm-enc-01.json )
-add_test (NAME Memory-enveloped WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/aes-gcm-examples/aes-gcm-01.json )
+add_test(
+  NAME Memory-ecdh
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/ecdh-direct-examples/p256-hkdf-256-01.json)
+add_test(
+  NAME Memory-aes-kw
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/aes-wrap-examples/aes-wrap-128-01.json)
 
-add_test (NAME Memory-ecdh WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/ecdh-direct-examples/p256-hkdf-256-01.json )
-add_test (NAME Memory-aes-kw WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/aes-wrap-examples/aes-wrap-128-01.json )
-
-add_test (NAME Memory-sign0 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/ecdsa-examples/ecdsa-sig-01.json )
-add_test (NAME Memory-sign WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND cose_test --memory Examples/ecdsa-examples/ecdsa-01.json )
-
+add_test(
+  NAME Memory-sign0
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/ecdsa-examples/ecdsa-sig-01.json)
+add_test(
+  NAME Memory-sign
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND cose_test --memory Examples/ecdsa-examples/ecdsa-01.json)
