diff --git a/.gitignore b/.gitignore
index b898e9f..d2165dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,7 +45,6 @@
 CMakeFiles
 CMakeCache.txt
 Makefile
-*.cmake
 build
 
 # Visual Studio files
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 42afdcd..c9e6bc6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,6 +25,7 @@
 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 (include_encrypt  "Include COSE_ENCRYPT" ON)
 option (include_encrypt0 "Include COSE_ENCRYPT0" ON)
 option (include_mac      "Include COSE_MAC" ON)
@@ -134,50 +135,60 @@
    install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc)
 endif()
 
-Include(ExternalProject)
-ExternalProject_Add(
-  project_cn-cbor
-  GIT_REPOSITORY https://github.com/jimsch/cn-cbor
-  GIT_TAG master
-  CMAKE_ARGS -Doptimize=OFF -Duse_context=${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
-)
+if(COSE_C_USE_FIND_PACKAGE)
+   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=${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)
+      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 ()
 
-add_dependencies(cn-cbor project_cn-cbor)
+   add_dependencies(cn-cbor project_cn-cbor)
+endif()
 
 if (COSE_C_USE_MBEDTLS)
    add_definitions( -DUSE_MBED_TLS )
-   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)
+   if(COSE_C_USE_FIND_PACKAGE)
+      find_package(MbedTLS REQUIRED)
    else()
-      find_package(OpenSSL REQUIRED)
+      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()
+
+else()
+   find_package(OpenSSL REQUIRED)
 endif ()
 
 ## include the parts
@@ -207,6 +218,7 @@
 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}")
diff --git a/cmake/FindMbedTLS.cmake b/cmake/FindMbedTLS.cmake
new file mode 100644
index 0000000..f7d5a72
--- /dev/null
+++ b/cmake/FindMbedTLS.cmake
@@ -0,0 +1,23 @@
+find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h PATHS "/usr/local" "/usr" "C:/Program Files (x86)/mbed TLS/include")
+
+find_library(MBEDTLS_LIBRARY mbedtls PATHS "C:/Program Files (x86)/mbed TLS/lib")
+find_library(MBEDX509_LIBRARY mbedx509 PATHS "C:/Program Files (x86)/mbed TLS/lib")
+find_library(MBEDCRYPTO_LIBRARY mbedcrypto PATHS "C:/Program Files (x86)/mbed TLS/lib")
+
+set(MBEDTLS_LIBRARIES "${MBEDTLS_LIBRARY}" "${MBEDX509_LIBRARY}" "${MBEDCRYPTO_LIBRARY}")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(MBEDTLS DEFAULT_MSG MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY
+                                  MBEDCRYPTO_LIBRARY)
+
+mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
+
+message(STATUS "MBEDTLS_INCLUDE_DIRS: ${MBEDTLS_INCLUDE_DIRS}")
+message(STATUS "MBEDTLS_LIBRARY: ${MBEDTLS_LIBRARY}")
+message(STATUS "MBEDX509_LIBRARY: ${MBEDX509_LIBRARY}")
+message(STATUS "MBEDCRYPTO_LIBRARY: ${MBEDCRYPTO_LIBRARY}")
+message(STATUS "MBEDTLS_LIBRARIES: ${MBEDTLS_LIBRARIES}")
+
+add_library(mbedtls IMPORTED UNKNOWN)
+set_target_properties(mbedtls PROPERTIES IMPORTED_LOCATION ${MBEDTLS_LIBRARIES})
+set_target_properties(mbedtls PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIRS}")
