diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..2d451727873e233236b00f020b89ae8acf6bc8ac
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "libdap-crypto"]
+	path = libdap-crypto
+	url = https://github.com/cellframe/libdap-crypto.git
+[submodule "libdap"]
+	path = libdap
+	url = https://github.com/cellframe/libdap.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d182988ea22ca338d002fb23678da6024564011f
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,49 @@
+project(dap_crypto_python_module C)
+cmake_minimum_required(VERSION 2.8)
+
+set(CMAKE_VERBOSE_MAKEFILE ON)
+set(CMAKE_COLOR_MAKEFILE   ON)
+set(CMAKE_C_STANDARD 11)
+set(SUBMODULES_NO_BUILD ON)
+
+add_subdirectory(libdap)
+add_subdirectory(libdap-crypto)
+
+file(GLOB CRYPTO_SRCS src/*.c)
+file(GLOB CRYPTO_HEADERS include/*.h)
+
+set(Python_ADDITIONAL_VERSIONS 3.7)
+find_package (PythonLibs REQUIRED)
+#find_package(PkgConfig)
+#pkg_check_modules(PC_JSON-C REQUIRED json-c)
+include_directories(${PYTHON_INCLUDE_DIR} include/)
+
+add_library(${PROJECT_NAME} SHARED ${CRYPTO_SRCS} ${CRYPTO_HEADERS})
+
+target_link_libraries(${PROJECT_NAME})
+
+target_compile_options(
+    dap_core PRIVATE 
+    "-fpic"
+)
+target_compile_options(
+    dap_crypto PRIVATE 
+    "-fpic"
+)
+
+
+target_link_libraries(${PROJECT_NAME} dap_core dap_crypto)
+
+#file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/src/libdapConnector.py
+#        DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+
+#file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test/main_test.py
+#            DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+
+if(BUILD_DAP_TESTS)
+#    file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test/main_test.py
+#            DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+    enable_testing()
+    #add_subdirectory(test)
+endif()
+
diff --git a/include/libdap-crypto-python.h b/include/libdap-crypto-python.h
new file mode 100644
index 0000000000000000000000000000000000000000..23a51c07197e4708fa8d3a4bd3aa1fbfdc072797
--- /dev/null
+++ b/include/libdap-crypto-python.h
@@ -0,0 +1,33 @@
+#define PY_SSIZE_T_CLEAN
+#include <python3.7/Python.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define LOG_TAG "libdap-python-crypto"
+
+static PyObject *dap_crypto_init(PyObject *self, PyObject *args);
+
+static PyObject *dap_crypto_deinit();
+
+static PyMethodDef DapCryptoMethods[] = {
+        {"init", dap_crypto_init, METH_VARARGS, "Initialization of the DAP (Deus Applicaions Prototypes) crypto library"},
+        {"deinit", dap_crypto_init, METH_NOARGS, "Deinitialization of the DAP (Deus Applicaions Prototypes) crypto library"},
+        {NULL, NULL, 0, NULL}
+};
+
+static struct PyModuleDef dapcryptomodule = {
+        PyModuleDef_HEAD_INIT,
+        "libdap_crypto_python_module",   /* name of module */
+        NULL, /* module documentation, may be NULL */
+        -1,       /* size of per-interpreter state of the module,
+                 or -1 if the module keeps state in global variables. */
+        DapCryptoMethods
+};
+
+PyMODINIT_FUNC PyInit_libdap_crypto_python_module(void);
+
+#ifdef  __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/libdap b/libdap
new file mode 160000
index 0000000000000000000000000000000000000000..4896ad4eeda5b8d4b3ba92dfe2eb6d4cf34efcc7
--- /dev/null
+++ b/libdap
@@ -0,0 +1 @@
+Subproject commit 4896ad4eeda5b8d4b3ba92dfe2eb6d4cf34efcc7
diff --git a/libdap-crypto b/libdap-crypto
new file mode 160000
index 0000000000000000000000000000000000000000..bcfcef1cd87cc6cfbc7e47887894c0fa3742a218
--- /dev/null
+++ b/libdap-crypto
@@ -0,0 +1 @@
+Subproject commit bcfcef1cd87cc6cfbc7e47887894c0fa3742a218
diff --git a/src/libdap-crypto-python.c b/src/libdap-crypto-python.c
new file mode 100644
index 0000000000000000000000000000000000000000..8993d767a5161d86901316f864e5e1b2fb635772
--- /dev/null
+++ b/src/libdap-crypto-python.c
@@ -0,0 +1,38 @@
+#include "libdap-crypto-python.h"
+
+static PyObject* dap_crypto_init(PyObject *self, PyObject *args){
+    return PyLong_FromLong(0);
+}
+
+static PyObject* dap_crypto_deinit(){
+    return PyLong_FromLong(0);
+}
+
+PyMODINIT_FUNC PyInit_libdap_crypto_python_module(void){
+    return PyModule_Create(&dapcryptomodule);
+}
+
+int main(int argc, char **argv) {
+    wchar_t *program = Py_DecodeLocale(argv[0], NULL);
+    if (program == NULL) {
+        fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
+        exit(1);
+    }
+
+    /* Add a built-in module, before Py_Initialize */
+    PyImport_AppendInittab("libdap_crypto_python_module", PyInit_libdap_crypto_python_module);
+
+    /* Pass argv[0] to the Python interpreter */
+    Py_SetProgramName(program);
+
+    /* Initialize the Python interpreter.  Required. */
+    Py_Initialize();
+
+    /* Optionally import the module; alternatively,
+       import can be deferred until the embedded script
+       imports it. */
+    PyImport_ImportModule("libdap_crypto_python_module");
+
+    PyMem_RawFree(program);
+    return 0;
+}