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; +}