diff --git a/.gitmodules b/.gitmodules index 778e626b0812674c6b091cc019869531a26f7dd6..fe53832bfa940bcf97fc3eb099cb09442cb0909b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ [submodule "libdap-crypto"] path = libdap-crypto - url = https://github.com/cellframe/libdap-crypto.git + url = https://gitlab.demlabs.net/cellframe/libdap-crypto.git [submodule "libdap"] path = libdap - url = https://github.com/cellframe/libdap.git -[submodule "test/libdap-python"] - path = test/libdap-python - url = https://github.com/cellframe/libdap-python.git + url = https://gitlab.demlabs.net/cellframe/libdap.git diff --git a/CMakeLists.txt b/CMakeLists.txt index bfceb387b4773c304c1c11d3cdeaa27dedfa33ac..7ca566b3e5fa53f39d0dbcc11868a1e32e44c700 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,21 +4,28 @@ 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) +#set(SUBMODULES_NO_BUILD ON) +add_definitions("-fpic") + +if(NOT (${SUBMODULES_NO_BUILD} MATCHES ON)) + if (NOT (TARGET dap_core)) + add_subdirectory(libdap) + target_compile_options( + dap_core PRIVATE + "-fpic" + ) + endif() +endif() add_subdirectory(libdap-crypto) -file(GLOB CRYPTO_SRCS src/*.c) -file(GLOB CRYPTO_HEADERS include/*.h) +file(GLOB CRYPTO_PYTHON_SRCS src/*.c) +file(GLOB CRYPTO_PYTHON_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}) +add_library(${PROJECT_NAME} STATIC ${CRYPTO_PYTHON_SRCS} ${CRYPTO_PYTHON_HEADERS}) target_link_libraries(${PROJECT_NAME}) @@ -34,8 +41,21 @@ target_compile_options( target_link_libraries(${PROJECT_NAME} dap_core dap_crypto) -#if(BUILD_DAP_PYTHON_TESTS) -# add_subdirectory(test) -# enable_testing() -#endif() +target_include_directories(${PROJECT_NAME} PUBLIC include/ ) + +if(BUILD_DAP_CRYPTO_PYTHON_TESTS) + add_subdirectory(test) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test/test_b58.py + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/test/) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test/test_b64.py + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/test/) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test/test_iaes256_cbc.py + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/test/) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test/test_iaes256_cbc.py + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/test/) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test/test_oaes.py + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/test/) + + +endif() diff --git a/README.md b/README.md index 8220e1450a0c399cd8b1e760b5868390d176a59e..160dbc91a99d3aba423ef9a16bf4c9fb9d9f1e1c 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,9 @@ libdap-crypto python binding ``` mkdir build cd build -cmake ../ +cmake -BUILD_DAP_CRYPTO_PYTHON_TESTS=ON ../ make -cp ../test/test_b58.py ./ -cp ../test/test_b64.py ./ -cp ../test/test_iaes256_cbc.py ./ -cp ../test/test_oaes.py ./ +cd test python3.7 test_b58.py python3.7 test_b64.py python3.7 test_iaes256_cbc.py diff --git a/include/key_list.h b/include/key_list.h deleted file mode 100644 index 2159cb9fe6b7d6d50159a19c3586a7b684087357..0000000000000000000000000000000000000000 --- a/include/key_list.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef KEY_LIST_H -#define KEY_LIST_H - - -#include "dap_common.h" -#include "dap_enc_key.h" -#include <stdint.h> -#include <string.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#undef LOG_TAG -#define LOG_TAG "key-list" - -typedef struct key_list{ - dap_enc_key_t **keys; - uint8_t lenght; -}key_list_t; - -key_list_t *key_list_init(void); -void key_list_free(key_list_t* list); -uint8_t key_list_add_element(key_list_t *list, dap_enc_key_t* key); -bool key_list_del_element(key_list_t *list, uint8_t key); -dap_enc_key_t *key_list_get_key(key_list_t *list, uint8_t key); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/libdap-crypto-python.h b/include/libdap-crypto-python.h index d08e40119a00b1061d1787c4566849207c02d3b8..e9027124994509bea803f59e30d24101d71f5d65 100644 --- a/include/libdap-crypto-python.h +++ b/include/libdap-crypto-python.h @@ -16,58 +16,84 @@ extern "C" { #undef LOG_TAG #define LOG_TAG "libdap-python-crypto" -static PyObject *dap_crypto_init(PyObject *self, PyObject *args); +typedef struct PyCrypto{ + PyObject_HEAD +}PyCryptoObject; -static PyObject *dap_crypto_deinit(); +int dap_crypto_init(void); -static PyObject *dap_log_it_debug(PyObject *self, PyObject *args); +void dap_crypto_deinit(void); -static PyObject *dap_log_it_info(PyObject *self, PyObject *args); - -static PyMethodDef DapCryptoMethods[] = { - {"init", dap_crypto_init, METH_VARARGS, "Initialization of the DAP (Deus Applicaions Prototypes) crypto library"}, - {"deinit", dap_crypto_deinit, METH_NOARGS, "Deinitialization of the DAP (Deus Applicaions Prototypes) crypto library"}, - {"encodeBase58", dap_encode_base58_py, METH_VARARGS, "Encrypts information using the base58 algorithm from the DAP crypto library"}, - {"decodeBase58", dap_decode_base58_py, METH_VARARGS, "Dencrypts information using the base58 algorithm from the DAP crypto library"}, - {"encodeBase64", dap_encode_base64_py, METH_VARARGS, "Encrypts information using the base64 algorithm from the DAP crypto library"}, - {"decodeBase64", dap_decode_base64_py, METH_VARARGS, "Dencrypts information using the base64 algorithm from the DAP crypto library"}, - {"logItDebug", dap_log_it_debug, METH_VARARGS, ""}, - {"logItInfo", dap_log_it_info, METH_VARARGS, ""}, - {"newKey", dap_enc_key_new_py, METH_VARARGS, "The function creates a new key, and returns it with PyObject."}, - {"delKey", dap_enc_key_delete_py, METH_VARARGS, ""}, - {"generateNewKey", dap_enc_key_new_generate_py, METH_VARARGS, ""}, - {"getEncSizeKey", dap_enc_key_get_enc_size_py, METH_VARARGS, ""}, - {"getDecSizeKey", dap_enc_key_get_dec_size_py, METH_VARARGS, ""}, +static PyMethodDef CryptoMethods[] = { + {"encodeBase58", dap_encode_base58_py, METH_VARARGS | METH_STATIC, "Encrypts information using the base58 algorithm from the DAP crypto library"}, + {"decodeBase58", dap_decode_base58_py, METH_VARARGS | METH_STATIC, "Dencrypts information using the base58 algorithm from the DAP crypto library"}, + {"encodeBase64", dap_encode_base64_py, METH_VARARGS | METH_STATIC, "Encrypts information using the base64 algorithm from the DAP crypto library"}, + {"decodeBase64", dap_decode_base64_py, METH_VARARGS | METH_STATIC, "Dencrypts information using the base64 algorithm from the DAP crypto library"}, + {"newKey", dap_enc_key_new_py, METH_VARARGS | METH_STATIC, "The function creates a new key, and returns it with PyObject."}, + {"generateNewKey", dap_enc_key_new_generate_py, METH_VARARGS | METH_STATIC, ""}, + {"getEncSizeKey", dap_enc_key_get_enc_size_py, METH_VARARGS | METH_STATIC, ""}, + {"getDecSizeKey", dap_enc_key_get_dec_size_py, METH_VARARGS | METH_STATIC, ""}, /*IAES256*/ - {"newKeyIAES", dap_enc_iaes_key_new_py, METH_VARARGS, ""}, - {"deleteKeyIAES", dap_enc_iaes_key_delete_py, METH_VARARGS, ""}, - {"generateKeyIAES", dap_enc_iaes_key_generate_py, METH_VARARGS, ""}, - {"encodeSizeIAES256", dap_enc_iaes256_calc_encode_size_py, METH_VARARGS, ""}, - {"decodeSizeIAES256", dap_enc_iaes256_calc_decode_size_py, METH_VARARGS, ""}, - {"encryptIAES256CBCFast", dap_enc_iaes256_cbc_encrypt_fast_py, METH_VARARGS, ""}, - {"decryptIAES256CBCFast", dap_enc_iaes256_cbc_decrypt_fast_py, METH_VARARGS, ""}, + {"newKeyIAES", dap_enc_iaes_key_new_py, METH_VARARGS | METH_STATIC, ""}, + {"deleteKeyIAES", dap_enc_iaes_key_delete_py, METH_VARARGS | METH_STATIC, ""}, + {"generateKeyIAES", dap_enc_iaes_key_generate_py, METH_VARARGS | METH_STATIC, ""}, + {"encodeSizeIAES256", dap_enc_iaes256_calc_encode_size_py, METH_VARARGS | METH_STATIC, ""}, + {"decodeSizeIAES256", dap_enc_iaes256_calc_decode_size_py, METH_VARARGS | METH_STATIC, ""}, + {"encryptIAES256CBCFast", dap_enc_iaes256_cbc_encrypt_fast_py, METH_VARARGS | METH_STATIC, ""}, + {"decryptIAES256CBCFast", dap_enc_iaes256_cbc_decrypt_fast_py, METH_VARARGS | METH_STATIC, ""}, /*OAES*/ - {"newKeyOAES", dap_enc_oaes_key_new_py, METH_VARARGS, ""}, - {"deleteKeyOAES", dap_enc_oaes_key_delete_py, METH_VARARGS, ""}, - {"generateKeyOAES", dap_enc_oaes_key_generate_py, METH_VARARGS, ""}, - {"encodeSizeOAES", dap_enc_oaes_calc_encode_size_py, METH_VARARGS, ""}, - {"decodeSizeOAES", dap_enc_oaes_calc_decode_size_py, METH_VARARGS, ""}, - {"encryptOAESFast", dap_enc_oaes_encrypt_fast_py, METH_VARARGS, ""}, - {"decryptOAESFast", dap_enc_oaes_decrypt_fast_py, METH_VARARGS, ""}, + {"newKeyOAES", dap_enc_oaes_key_new_py, METH_VARARGS | METH_STATIC, ""}, + {"deleteKeyOAES", dap_enc_oaes_key_delete_py, METH_VARARGS | METH_STATIC, ""}, + {"generateKeyOAES", dap_enc_oaes_key_generate_py, METH_VARARGS | METH_STATIC, ""}, + {"encodeSizeOAES", dap_enc_oaes_calc_encode_size_py, METH_VARARGS | METH_STATIC, ""}, + {"decodeSizeOAES", dap_enc_oaes_calc_decode_size_py, METH_VARARGS | METH_STATIC, ""}, + {"encryptOAESFast", dap_enc_oaes_encrypt_fast_py, METH_VARARGS | METH_STATIC, ""}, + {"decryptOAESFast", dap_enc_oaes_decrypt_fast_py, METH_VARARGS | METH_STATIC, ""}, {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 +static PyTypeObject dapCrypto_dapCryptoType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.Crypto", /* tp_name */ + sizeof(PyCryptoObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_BASETYPE, /* tp_flags */ + "Crypto objects", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + CryptoMethods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + PyType_GenericNew, /* tp_new */ }; -PyMODINIT_FUNC PyInit_libdap_crypto_python_module(void); - #ifdef __cplusplus } #endif diff --git a/include/libdap_crypto_data_type.h b/include/libdap_crypto_data_type.h new file mode 100644 index 0000000000000000000000000000000000000000..1a84d90389a7ed7c388ece6b5045f8a5ebae2417 --- /dev/null +++ b/include/libdap_crypto_data_type.h @@ -0,0 +1,74 @@ +#include "Python.h" +#include "dap_enc_key.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PyCryptoDataType{ + PyObject_HEAD +}PyCryptoDataTypeObjecy; + +static PyObject *get_ENC_DATA_TYPE_RAW(){ + return PyLong_FromLong(DAP_ENC_DATA_TYPE_RAW); +} +static PyObject *get_ENC_DATA_TYPE_B64(){ + return PyLong_FromLong(DAP_ENC_DATA_TYPE_B64); +} +static PyObject *get_ENC_DATA_TYPE_B64_URLSAFE(){ + return PyLong_FromLong(DAP_ENC_DATA_TYPE_B64_URLSAFE); +} + +static PyMethodDef PyCryptoDataTypeObjecyMethods[] = { + {"DAP_ENC_DATA_TYPE_RAW", (PyCFunction)get_ENC_DATA_TYPE_RAW, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_DATA_TYPE_B64", (PyCFunction)get_ENC_DATA_TYPE_B64, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_DATA_TYPE_B64_URLSAFE", (PyCFunction)get_ENC_DATA_TYPE_B64_URLSAFE, METH_NOARGS | METH_STATIC, ""}, + + {NULL, NULL, 0, NULL} +}; + +static PyTypeObject CryptoDataTypeObjecy_CryptoDataTypeObjecyType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.CryptoDataType", /* tp_name */ + sizeof(PyCryptoDataTypeObjecy), /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_BASETYPE, /* tp_flags */ + "Crypto data type objects", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + PyCryptoDataTypeObjecyMethods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + PyType_GenericNew, /* tp_new */ +}; + +#ifdef __cplusplus +} +#endif diff --git a/include/libdap_crypto_key_python.h b/include/libdap_crypto_key_python.h new file mode 100644 index 0000000000000000000000000000000000000000..109776d211761d0e9e1d525c370f4f7fadfc6e3a --- /dev/null +++ b/include/libdap_crypto_key_python.h @@ -0,0 +1,48 @@ +#ifndef LIBDAP_CRYPTO_KEY_PYTHON_H_ +#define LIBDAP_CRYPTO_KEY_PYTHON_H_ + +#include "Python.h" +#include "dap_enc_key.h" +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PyCryptoKey{ + PyObject_HEAD + dap_enc_key_t *key; +}PyCryptoKeyObject; + +static void PyCryptoKeyObject_dealloc(PyCryptoKeyObject *cryptoObject){ + dap_enc_key_delete(cryptoObject->key); + Py_TYPE(cryptoObject)->tp_free((PyObject*)cryptoObject); +} + +static PyTypeObject PyCryptoKeyObject_PyCryptoKeyType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.Crypto.Key", /* tp_name */ + sizeof(PyCryptoKeyObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)PyCryptoKeyObject_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + "Crypto key objects", /* tp_doc */ +}; + +#ifdef __cplusplus +} +#endif + +#endif //LIBDAP_CRYPTO_KEY_PYTHON_H_ diff --git a/include/libdap_crypto_key_type_python.h b/include/libdap_crypto_key_type_python.h new file mode 100644 index 0000000000000000000000000000000000000000..0ccb9829a1a92f59676a63228b1aeaac29f1a4d2 --- /dev/null +++ b/include/libdap_crypto_key_type_python.h @@ -0,0 +1,99 @@ +#include "Python.h" +#include "dap_enc_key.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PyCryptoKeyType{ + PyObject_HEAD +}PyCryptoKeyTypeObjecy; + +PyObject *get_ENC_KEY_TYPE_IAES(); +PyObject *get_ENC_KEY_TYPE_OAES(); +PyObject *get_ENC_KEY_TYPE_RLWE_NEWHOPE(); +PyObject *get_ENC_KEY_TYPE_SIDH_CLN16(); +PyObject *get_ENC_KEY_TYPE_DEFEO(); +PyObject *get_ENC_KEY_TYPE_MSRLN(); +PyObject *get_ENC_KEY_TYPE_MSRLN16(); +PyObject *get_ENC_KEY_TYPE_RLWE_BCNS15(); +PyObject *get_ENC_KEY_TYPE_LWE_FRODO(); +PyObject *get_ENC_KEY_TYPE_SIDH_IQC_REF(); +PyObject *get_ENC_KEY_TYPE_CODE_MCBITS(); +PyObject *get_ENC_KEY_TYPE_NTRU(); +PyObject *get_ENC_KEY_TYPE_MLWE_KYBER(); +PyObject *get_ENC_KEY_TYPE_SIG_PICNIC(); +PyObject *get_ENC_KEY_TYPE_SIG_BLISS(); +PyObject *get_ENC_KEY_TYPE_SIG_TESLA(); +PyObject *get_ENC_KEY_TYPE_SIG_DILITHIUM(); +PyObject *get_ENC_KEY_TYPE_NULL(); + +static PyMethodDef PyCryptoKeyTypeObjecyMethods[] = { + {"DAP_ENC_KEY_TYPE_IAES", (PyCFunction)get_ENC_KEY_TYPE_IAES, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_OAES", (PyCFunction)get_ENC_KEY_TYPE_OAES, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_RLWE_NEWHOPE", (PyCFunction)get_ENC_KEY_TYPE_RLWE_NEWHOPE, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_SIDH_CLN16", (PyCFunction)get_ENC_KEY_TYPE_SIDH_CLN16, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_DEFEO", (PyCFunction)get_ENC_KEY_TYPE_DEFEO, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_MSRLN", (PyCFunction)get_ENC_KEY_TYPE_MSRLN, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_MSRLN16", (PyCFunction)get_ENC_KEY_TYPE_MSRLN16, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_RLWE_BCNS15", (PyCFunction)get_ENC_KEY_TYPE_RLWE_BCNS15, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_LWE_FRODO", (PyCFunction)get_ENC_KEY_TYPE_LWE_FRODO, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_SIDH_IQC_REF", (PyCFunction)get_ENC_KEY_TYPE_SIDH_IQC_REF, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_CODE_MCBITS", (PyCFunction)get_ENC_KEY_TYPE_CODE_MCBITS, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_NTRU", (PyCFunction)get_ENC_KEY_TYPE_NTRU, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_MLWE_KYBER", (PyCFunction)get_ENC_KEY_TYPE_MLWE_KYBER, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_SIG_PICNIC", (PyCFunction)get_ENC_KEY_TYPE_SIG_PICNIC, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_SIG_BLISS", (PyCFunction)get_ENC_KEY_TYPE_SIG_BLISS, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_SIG_TESLA", (PyCFunction)get_ENC_KEY_TYPE_SIG_TESLA, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_SIG_DILITHIUM", (PyCFunction)get_ENC_KEY_TYPE_SIG_DILITHIUM, METH_NOARGS | METH_STATIC, ""}, + {"DAP_ENC_KEY_TYPE_NULL", (PyCFunction)get_ENC_KEY_TYPE_NULL, METH_NOARGS | METH_STATIC, ""}, + + + {NULL, NULL, 0, NULL} +}; + +static PyTypeObject CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.CryptoKeyType", /* tp_name */ + sizeof(PyCryptoKeyTypeObjecy), /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_BASETYPE, /* tp_flags */ + "Crypto keys type objects", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + PyCryptoKeyTypeObjecyMethods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + PyType_GenericNew, /* tp_new */ +}; + +#ifdef __cplusplus +} +#endif diff --git a/include/wrapping_dap_enc_iaes.h b/include/wrapping_dap_enc_iaes.h index c2a9f0078c6318e74db0bc6fedc855e95bdc2144..e531d6cfd42315b9a65ca0be2139b17e90ec5ee6 100644 --- a/include/wrapping_dap_enc_iaes.h +++ b/include/wrapping_dap_enc_iaes.h @@ -1,6 +1,10 @@ +#ifndef WRAPPING_DAP_ENC_IAES_ +#define WRAPPING_DAP_ENC_IAES_ + #include "Python.h" #include "dap_enc_iaes.h" -#include "key_list.h" +#include "dap_common.h" +#include "libdap_crypto_key_python.h" #ifdef __cplusplus extern "C" { @@ -9,8 +13,6 @@ extern "C" { #undef LOG_TAG #define LOG_TAG "wrapping-dap-enc-iaes" -key_list_t *keys_iaes; - PyObject* dap_enc_iaes_key_new_py(PyObject *self, PyObject *args); PyObject* dap_enc_iaes_key_delete_py(PyObject *self, PyObject *args); @@ -30,3 +32,5 @@ PyObject* dap_enc_iaes256_cbc_encrypt_fast_py(PyObject *self, PyObject *args); #ifdef __cplusplus } #endif + +#endif //WRAPPING_DAP_ENC_IAES_ diff --git a/include/wrapping_dap_enc_key.h b/include/wrapping_dap_enc_key.h index b57bd12c5e902e42a36ae901675d4294494c5edd..079c6d66c8efc74d5c66abb2decf26b978ac7c5f 100644 --- a/include/wrapping_dap_enc_key.h +++ b/include/wrapping_dap_enc_key.h @@ -1,7 +1,10 @@ +#ifndef WRAPPING_DAP_ENC_KEY_ +#define WRAPPING_DAP_ENC_KEY_ + #include "dap_enc_key.h" #include "Python.h" #include "dap_common.h" -#include "key_list.h" +#include "libdap_crypto_key_python.h" #ifdef __cplusplus extern "C" { @@ -10,8 +13,6 @@ extern "C" { #undef LOG_TAG #define LOG_TAG "wrapping-dap-enc-key" -key_list_t *keys; - PyObject* dap_enc_key_get_enc_size_py(PyObject *self, PyObject *args);//dap_enc_key_t * a_key, const size_t buf_in_size); -> size_t PyObject* dap_enc_key_get_dec_size_py(PyObject *self, PyObject *args);//dap_enc_key_t * a_key, const size_t buf_in_size); -> size_t @@ -36,8 +37,10 @@ PyObject *dap_enc_gen_key_public_size_py(PyObject *self, PyObject *args);//dap_e PyObject *dap_enc_gen_key_public_py(PyObject *self, PyObject *args);//dap_enc_key_t *a_key, void * a_output); ->int PyObject *dap_enc_key_signature_delete_py(PyObject *self, PyObject *args);//dap_enc_key_type_t a_key_type, uint8_t *a_sig_buf); ->void -PyObject *dap_enc_key_delete_py(PyObject *self, PyObject *args);//dap_enc_key_t * a_key); ->void + #ifdef __cplusplus } #endif + +#endif //WRAPPING_DAP_ENC_KEY_ diff --git a/include/wrapping_dap_enc_oaes.h b/include/wrapping_dap_enc_oaes.h index 1498a9297c79fd364aa4cfe58a26cc374c48acf9..b2bf79dc206414582ab0f07d0ada19874ff4df57 100644 --- a/include/wrapping_dap_enc_oaes.h +++ b/include/wrapping_dap_enc_oaes.h @@ -1,32 +1,34 @@ +#ifndef WRAPPING_DAP_ENC_OAES_ +#define WRAPPING_DAP_ENC_OAES_ + #include "Python.h" #include "dap_enc_oaes.h" -#include "key_list.h" +#include "dap_common.h" +#include "libdap_crypto_key_python.h" #ifdef __cplusplus extern "C" { #endif -key_list_t *keys_oaes; - -PyObject *dap_enc_oaes_key_new_py(PyObject *self, PyObject *args);//struct dap_enc_key * a_key); -PyObject *dap_enc_oaes_key_delete_py(PyObject *self, PyObject *args);//struct dap_enc_key *a_key); -PyObject *dap_enc_oaes_key_generate_py(PyObject *self, PyObject *args);//struct dap_enc_key * a_key, const void *kex_buf, - //size_t kex_size, const void * seed, size_t seed_size, size_t key_size); +PyObject *dap_enc_oaes_key_new_py(PyObject *self, PyObject *args); +PyObject *dap_enc_oaes_key_delete_py(PyObject *self, PyObject *args); +PyObject *dap_enc_oaes_key_generate_py(PyObject *self, PyObject *args); -PyObject *dap_enc_oaes_calc_decode_size_py(PyObject *self, PyObject *args);//const size_t size_in); -PyObject *dap_enc_oaes_calc_encode_size_py(PyObject *self, PyObject *args);//const size_t size_in); +PyObject *dap_enc_oaes_calc_decode_size_py(PyObject *self, PyObject *args); +PyObject *dap_enc_oaes_calc_encode_size_py(PyObject *self, PyObject *args); -PyObject *dap_enc_oaes_decrypt_py(PyObject *self, PyObject *args);//struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); -PyObject *dap_enc_oaes_encrypt_py(PyObject *self, PyObject *args);//struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); +PyObject *dap_enc_oaes_decrypt_py(PyObject *self, PyObject *args); +PyObject *dap_enc_oaes_encrypt_py(PyObject *self, PyObject *args); // Writes result ( out ) in already allocated buffer -PyObject *dap_enc_oaes_decrypt_fast_py(PyObject *self, PyObject *args);//struct dap_enc_key * a_key, const void * a_in, - //size_t a_in_size, void * buf_out, size_t buf_out_size); +PyObject *dap_enc_oaes_decrypt_fast_py(PyObject *self, PyObject *args); // Writes result ( out ) in already allocated buffer -PyObject *dap_enc_oaes_encrypt_fast_py(PyObject *self, PyObject *args);//struct dap_enc_key * a_key, const void * a_in, - //size_t a_in_size, void * buf_out, size_t buf_out_size); +PyObject *dap_enc_oaes_encrypt_fast_py(PyObject *self, PyObject *args); + #ifdef __cplusplus } #endif + +#endif //WRAPPING_DAP_ENC_OAES_ diff --git a/libdap b/libdap index 4896ad4eeda5b8d4b3ba92dfe2eb6d4cf34efcc7..f91fb3b3b6a69ef53531c8fd729592cdff4ec442 160000 --- a/libdap +++ b/libdap @@ -1 +1 @@ -Subproject commit 4896ad4eeda5b8d4b3ba92dfe2eb6d4cf34efcc7 +Subproject commit f91fb3b3b6a69ef53531c8fd729592cdff4ec442 diff --git a/libdap-crypto b/libdap-crypto index bcfcef1cd87cc6cfbc7e47887894c0fa3742a218..4d764dfacaaa6aa1d8e5ba3c8242d8466e4faf10 160000 --- a/libdap-crypto +++ b/libdap-crypto @@ -1 +1 @@ -Subproject commit bcfcef1cd87cc6cfbc7e47887894c0fa3742a218 +Subproject commit 4d764dfacaaa6aa1d8e5ba3c8242d8466e4faf10 diff --git a/src/key_list.c b/src/key_list.c deleted file mode 100644 index 83e35a9d20f684f4f2c978b7e2862590c2e3c07a..0000000000000000000000000000000000000000 --- a/src/key_list.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "key_list.h" - -key_list_t *key_list_init() -{ - key_list_t *keyList = (key_list_t *)malloc(sizeof(key_list_t)); - keyList->lenght = 0; - return keyList; -} - -void key_list_free(key_list_t* list){ - for (int i=0; i < list->lenght;i++){ - free(list->keys[i]); - } - free(list); -} - -uint8_t key_list_add_element(key_list_t *list, dap_enc_key_t* key){ - uint8_t new_len = list->lenght; - new_len++; - dap_enc_key_t **new_keys = calloc(new_len, sizeof(dap_enc_key_t)); - if (list->lenght != 0) { - memcpy(new_keys, list->keys, list->lenght); - free(list->keys); - } - new_keys[new_len - 1] = key; - list->keys = new_keys; - list->lenght = new_len; - return new_len; - -} - -bool key_list_del_element(key_list_t *list, uint8_t key_id){ - if ((list->lenght-1) > 0) { - return false; - } - uint8_t new_len = list->lenght; - new_len--; - dap_enc_key_t **new_keys = calloc(new_len, sizeof(dap_enc_key_t)); - if (list->lenght - 1 == key_id){ - memcpy(new_keys, list->keys, key_id); - } else if (list->lenght > 1 && key_id < list->lenght) { - memcpy(new_keys, list->keys, key_id); - memcpy(new_keys + key_id, list->keys + (key_id + 1), list->lenght); - } - free(list->keys); - list->keys = new_keys; - list->lenght = new_len; - return true; -} - -dap_enc_key_t *key_list_get_key(key_list_t *list, uint8_t key){ - uint8_t index = key - 1; - if (list->lenght < index) { - return NULL; - } - return list->keys[index]; -} diff --git a/src/libdap-crypto-python.c b/src/libdap-crypto-python.c index 74303fd76fa03f4806cbf52fcd17f3fc1abfb182..bc3b74497b739c38dbdccb45074697a52256ca3e 100644 --- a/src/libdap-crypto-python.c +++ b/src/libdap-crypto-python.c @@ -1,68 +1,19 @@ #include "libdap-crypto-python.h" -static PyObject* dap_crypto_init(PyObject *self, PyObject *args){ - dap_common_init("libdap-crypto","libdap-crypto-python-module.txt"); +int dap_crypto_init(void){ if(dap_enc_init()!=0){ log_it(L_CRITICAL,"Can't init encryption module"); - return PyLong_FromLong(-1); + return -1; } if(dap_enc_key_init()!=0){ log_it(L_CRITICAL,"Can't init encryption key module"); - return PyLong_FromLong(-2); + return -2; } - keys = key_list_init(); - keys_iaes = keys; - keys_oaes = keys; - return PyLong_FromLong(0); + PyCryptoKeyObject_PyCryptoKeyType.tp_new = PyType_GenericNew; + return 0; } -static PyObject* dap_crypto_deinit(){ +void dap_crypto_deinit(void){ dap_enc_key_deinit(); dap_enc_deinit(); - key_list_free(keys); - return PyLong_FromLong(0); -} - -/* Information */ -static PyObject *dap_log_it_debug(PyObject *self, PyObject *args){ - const char *data; - if (!PyArg_ParseTuple(args,"s", &data)){ - return NULL; - } - log_it(L_DEBUG, data); - return PyLong_FromLong(0); -} - -static PyObject *dap_log_it_info(PyObject *self, PyObject *args){ - 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; } diff --git a/src/libdap_crypto_key_type_python.c b/src/libdap_crypto_key_type_python.c new file mode 100644 index 0000000000000000000000000000000000000000..f0ac5f0f660915b408a174d772f51eb78f50bd20 --- /dev/null +++ b/src/libdap_crypto_key_type_python.c @@ -0,0 +1,56 @@ +#include "libdap_crypto_key_type_python.h" + +PyObject *get_ENC_KEY_TYPE_IAES(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_IAES); +} +PyObject *get_ENC_KEY_TYPE_OAES(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_OAES); +} +PyObject *get_ENC_KEY_TYPE_RLWE_NEWHOPE(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_RLWE_NEWHOPE); +} +PyObject *get_ENC_KEY_TYPE_SIDH_CLN16(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_SIDH_CLN16); +} +PyObject *get_ENC_KEY_TYPE_DEFEO(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_DEFEO); +} +PyObject *get_ENC_KEY_TYPE_MSRLN(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_MSRLN); +} +PyObject *get_ENC_KEY_TYPE_MSRLN16(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_RLWE_MSRLN16); +} +PyObject *get_ENC_KEY_TYPE_RLWE_BCNS15(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_RLWE_BCNS15); +} +PyObject *get_ENC_KEY_TYPE_LWE_FRODO(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_LWE_FRODO); +} +PyObject *get_ENC_KEY_TYPE_SIDH_IQC_REF(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_SIDH_IQC_REF); +} +PyObject *get_ENC_KEY_TYPE_CODE_MCBITS(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_CODE_MCBITS); +} +PyObject *get_ENC_KEY_TYPE_NTRU(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_NTRU); +} +PyObject *get_ENC_KEY_TYPE_MLWE_KYBER(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_MLWE_KYBER); +} +PyObject *get_ENC_KEY_TYPE_SIG_PICNIC(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_SIG_PICNIC); +} +PyObject *get_ENC_KEY_TYPE_SIG_BLISS(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_SIG_BLISS); +} +PyObject *get_ENC_KEY_TYPE_SIG_TESLA(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_SIG_TESLA); +} +PyObject *get_ENC_KEY_TYPE_SIG_DILITHIUM(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_SIG_DILITHIUM); +} +PyObject *get_ENC_KEY_TYPE_NULL(){ + return PyLong_FromLong(DAP_ENC_KEY_TYPE_NULL); +} diff --git a/src/wrapping_base64.c b/src/wrapping_base64.c index aaf19232e27938305a4b6fb882e70d6ab9aef2e3..53d562025ec07ebb6e240d67e2b095be02f97ba0 100644 --- a/src/wrapping_base64.c +++ b/src/wrapping_base64.c @@ -26,7 +26,6 @@ return NULL; } void *res = DAP_NEW_SIZE(void*, DAP_ENC_BASE64_ENCODE_SIZE(strlen(in_str))); - //size_t decrypted_size = dap_enc_base58_decode(in_str, res); size_t decrypted_size = dap_enc_base64_decode(in_str, strlen(in_str), res, l_dap_enc_data_type); PyBytesObject *return_object = (PyBytesObject*)PyBytes_FromStringAndSize(res, (Py_ssize_t)decrypted_size); return Py_BuildValue("O", return_object); diff --git a/src/wrapping_dap_enc_iaes.c b/src/wrapping_dap_enc_iaes.c index d7cc58017d25faf18175ef2adf49dac3aa4c27d6..843ce0cd461c09f8187b31d82c5be0acd3929c8c 100644 --- a/src/wrapping_dap_enc_iaes.c +++ b/src/wrapping_dap_enc_iaes.c @@ -2,51 +2,39 @@ PyObject* dap_enc_iaes_key_new_py(PyObject *self, PyObject *args){ - uint8_t key_id; - if (PyArg_ParseTuple(args, "h", &key_id)){ + PyObject *obj_key; + if (PyArg_ParseTuple(args, "O", &obj_key)){ return NULL; } - dap_enc_key_t *key = key_list_get_key(keys_iaes, key_id); - if (key == NULL){ - return NULL; - } - dap_enc_aes_key_new(key); + dap_enc_aes_key_new(((PyCryptoKeyObject*)obj_key)->key); return PyLong_FromLong(0); } PyObject* dap_enc_iaes_key_delete_py(PyObject *self, PyObject *args){ - uint8_t key_id; - if (PyArg_ParseTuple(args, "h", &key_id)){ + PyObject *obj_key; + if (PyArg_ParseTuple(args, "O", &obj_key)){ return NULL; } - dap_enc_key_t *key = key_list_get_key(keys_iaes, key_id); - if (key == NULL){ - return NULL; - } - dap_enc_key_delete(key); + dap_enc_aes_key_delete(((PyCryptoKeyObject*)obj_key)->key); return PyLong_FromLong(0); } PyObject* dap_enc_iaes_key_generate_py(PyObject *self, PyObject *args){ // TODO - uint8_t in_key_id; + PyObject* in_key; PyBytesObject *in_kex_buf; size_t in_kex_size; PyBytesObject *in_seed; size_t in_seed_size; - if (PyArg_ParseTuple(args, "h|S|n|S|n", &in_key_id, &in_kex_buf, &in_kex_size, &in_seed, &in_seed_size)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys_iaes, in_key_id); - if (key == NULL){ + if (PyArg_ParseTuple(args, "O|S|n|S|n", &in_key, &in_kex_buf, &in_kex_size, &in_seed, &in_seed_size)){ return NULL; } - size_t key_size = sizeof(key); + size_t key_size = sizeof(((PyCryptoKeyObject*)in_key)->key); void* kex_buf = NULL; PyBytes_AsStringAndSize((PyObject*)in_kex_buf, kex_buf, (Py_ssize_t*)in_kex_size); void* seed_buf = NULL; PyBytes_AsStringAndSize((PyObject*)in_seed, seed_buf, (Py_ssize_t*)in_seed_size); - dap_enc_aes_key_generate(key, kex_buf, in_kex_size, seed_buf, in_seed_size, key_size); + dap_enc_aes_key_generate(((PyCryptoKeyObject*)in_key)->key, kex_buf, in_kex_size, seed_buf, in_seed_size, key_size); return PyLong_FromLong(0); } @@ -71,80 +59,40 @@ PyObject* dap_enc_iaes256_calc_decode_size_py(PyObject *self, PyObject *args){ PyObject* dap_enc_iaes256_cbc_decrypt_py(PyObject *self, PyObject *args){ //TODO return PyLong_FromLong(0); - /*uint8_t key_id; - PyBytesObject *in_obj; - size_t in_size; - void **a_out = NULL; - if (!PyArg_ParseTuple(args, "h|S|n", &key_id, &in_obj, &in_size)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys_iaes, key_id); - if (key == NULL){ - return NULL; - } - //void *in = PyBytes_AsString(in_obj); - void *in_void = PyBytes_AsString((PyObject*)in_obj); - in_size = (size_t)PyBytes_GET_SIZE(in_obj); - dap_enc_iaes256_cbc_decrypt(key, in_void, in_size, a_out); - //TODO - return Py_BuildValue("O", a_out);*/ } PyObject* dap_enc_iaes256_cbc_encrypt_py(PyObject *self, PyObject *args){ //TODO return PyLong_FromLong(0); - /*uint8_t key_id; - PyBytesObject *in_obj; - size_t in_size; - void **a_out = NULL; - if (!PyArg_ParseTuple(args, "h|S|n", &key_id, &in_obj, &in_size)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys_iaes, key_id); - if (key == NULL){ - return NULL; - } - void *in_void = PyBytes_AsString((PyObject*)in_obj); - in_size = (size_t)PyBytes_GET_SIZE(in_obj); - dap_enc_iaes256_cbc_encrypt(key, in_void, in_size, a_out); - return PyBytes_FromFormat("%p", a_out);*/ } // Writes result ( out ) in already allocated buffer PyObject* dap_enc_iaes256_cbc_decrypt_fast_py(PyObject *self, PyObject *args){ - uint8_t key_id; + PyObject* in_key; PyBytesObject *a_in; size_t a_in_size; size_t buf_out_size; - if (!PyArg_ParseTuple(args, "h|S|n|n", &key_id, &a_in, &a_in_size, &buf_out_size)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys_iaes, key_id); - if (key == NULL){ + if (!PyArg_ParseTuple(args, "O|S|n|n", &in_key, &a_in, &a_in_size, &buf_out_size)){ return NULL; } void *in = PyBytes_AsString((PyObject*)a_in); void *out = DAP_NEW_SIZE(void*, buf_out_size); - size_t res_denc_size = dap_enc_iaes256_cbc_decrypt_fast(key, in, a_in_size, out, buf_out_size); + size_t res_denc_size = dap_enc_iaes256_cbc_decrypt_fast(((PyCryptoKeyObject*)in_key)->key, in, a_in_size, out, buf_out_size); PyBytesObject *bytes_out = (PyBytesObject*)PyBytes_FromStringAndSize(out, (Py_ssize_t)res_denc_size); return Py_BuildValue("S", bytes_out); } // if "a_in size mod IAES_BLOCK_SIZE = 0" encryption will be faster PyObject* dap_enc_iaes256_cbc_encrypt_fast_py(PyObject *self, PyObject *args){ - uint8_t key_id; + PyObject *in_key; PyBytesObject *a_in; size_t a_in_size; size_t buf_out_size; - if (!PyArg_ParseTuple(args, "h|S|n|n", &key_id, &a_in, &a_in_size, &buf_out_size)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys_iaes, key_id); - if (key == NULL){ + if (!PyArg_ParseTuple(args, "O|S|n|n", &in_key, &a_in, &a_in_size, &buf_out_size)){ return NULL; } void *in = PyBytes_AsString((PyObject*)a_in); void *out = DAP_NEW_SIZE(void*, buf_out_size); - size_t res_enc_size = dap_enc_iaes256_cbc_encrypt_fast(key, in, a_in_size, out, buf_out_size); + size_t res_enc_size = dap_enc_iaes256_cbc_encrypt_fast(((PyCryptoKeyObject*)in_key)->key, in, a_in_size, out, buf_out_size); PyBytesObject *bytes_out = (PyBytesObject*)PyBytes_FromStringAndSize(out, (Py_ssize_t)res_enc_size); return Py_BuildValue("S", bytes_out); } diff --git a/src/wrapping_dap_enc_key.c b/src/wrapping_dap_enc_key.c index 359efebb4bb1bfda3483de3896ed3e5b6863e1f5..6779ad279c804dd9c97b189f99aa196675bd3463 100644 --- a/src/wrapping_dap_enc_key.c +++ b/src/wrapping_dap_enc_key.c @@ -1,30 +1,30 @@ #include "wrapping_dap_enc_key.h" PyObject* dap_enc_key_get_enc_size_py(PyObject *self, PyObject *args){ - uint8_t key_id; + PyObject *in_key; size_t buff_in_size; - if (!PyArg_ParseTuple(args, "h|i"), &key_id, &buff_in_size){ + if (!PyArg_ParseTuple(args, "O|i", &in_key, &buff_in_size)){ return NULL; } - dap_enc_key_t *key = key_list_get_key(keys, key_id); - if (key == NULL) - return NULL; - size_t size_buff = dap_enc_key_get_enc_size(key, buff_in_size); +// dap_enc_key_t *key = key_list_get_key(keys, key_id); +// if (key == NULL) +// return NULL; + size_t size_buff = dap_enc_key_get_enc_size(((PyCryptoKeyObject*)in_key)->key, buff_in_size); if (size_buff == 0) return NULL; return PyLong_FromSize_t(size_buff); } PyObject* dap_enc_key_get_dec_size_py(PyObject *self, PyObject *args){ - uint8_t key_id; + PyObject *in_key; size_t buff_in_size; - if (!PyArg_ParseTuple(args, "h|i"), &key_id, &buff_in_size){ + if (!PyArg_ParseTuple(args, "O|i", &in_key, &buff_in_size)){ return NULL; } - dap_enc_key_t *key = key_list_get_key(keys, key_id); - if (key == NULL) - return NULL; - size_t size_buff = dap_enc_key_get_dec_size(key, buff_in_size); +// dap_enc_key_t *key = key_list_get_key(keys, key_id); +// if (key == NULL) +// return NULL; + size_t size_buff = dap_enc_key_get_dec_size(((PyCryptoKeyObject*)in_key)->key, buff_in_size); if (size_buff == 0) return NULL; return PyLong_FromSize_t(size_buff); @@ -40,8 +40,9 @@ PyObject* dap_enc_key_new_py(PyObject *self, PyObject *args){ return PyLong_FromLong(-1); } dap_enc_key_t *new_key = dap_enc_key_new(type_key); - uint8_t res = key_list_add_element(keys, new_key); - return PyLong_FromLong(res); + PyObject *obj = _PyObject_New(&PyCryptoKeyObject_PyCryptoKeyType); + ((PyCryptoKeyObject*)obj)->key = new_key; + return Py_BuildValue("O", obj); } /// default gen key @@ -65,22 +66,22 @@ PyObject *dap_enc_key_new_generate_py(PyObject *self, PyObject *args){ kex_buf = PyBytes_AsString((PyObject*)in_kex_buf); if (in_seed_size != 0) seed = PyBytes_AsString((PyObject*)in_seed); - dap_enc_key_t *new_key = dap_enc_key_new_generate(in_type_key, kex_buf, in_kex_size, seed, in_seed_size, in_key_size); - uint8_t new_key_id = key_list_add_element(keys, new_key); - return PyLong_FromLong(new_key_id); + PyCryptoKeyObject *obj_key = (PyCryptoKeyObject*)_PyObject_New(&PyCryptoKeyObject_PyCryptoKeyType); + obj_key->key = dap_enc_key_new_generate(in_type_key, kex_buf, in_kex_size, seed, in_seed_size, in_key_size); + return Py_BuildValue("O", (PyObject*)obj_key); } // update struct dap_enc_key_t after insert foreign keys PyObject* dap_enc_key_update_py(PyObject *self, PyObject *args){ - uint8_t key_id; - if (!PyArg_ParseTuple(args, "h", &key_id)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys, key_id); - if (key == NULL) { + PyObject *in_key; + if (!PyArg_ParseTuple(args, "O", &in_key)){ return NULL; } - dap_enc_key_update(key); +// dap_enc_key_t *key = key_list_get_key(keys, key_id); +// if (key == NULL) { +// return NULL; +// } + dap_enc_key_update(((PyCryptoKeyObject*)in_key)->key); return PyLong_FromLong(0); } @@ -91,29 +92,29 @@ PyObject *dap_enc_gen_pub_key_from_priv_py(PyObject *self, PyObject *args){ //NO PyObject *dap_enc_gen_key_public_size_py(PyObject *self, PyObject *args){ - uint8_t key_id; - if (PyArg_ParseTuple(args, "h", &key_id)){ + PyObject *in_key; + if (PyArg_ParseTuple(args, "h", &in_key)){ return NULL; } - dap_enc_key_t *key = key_list_get_key(keys, key_id); - if (key == NULL){ - return NULL; - } - size_t size = dap_enc_gen_key_public_size(key); +// dap_enc_key_t *key = key_list_get_key(keys, key_id); +// if (key == NULL){ +// return NULL; +// } + size_t size = dap_enc_gen_key_public_size(((PyCryptoKeyObject*)in_key)->key); return PyLong_FromSize_t(size); } PyObject *dap_enc_gen_key_public_py(PyObject *self, PyObject *args){ - uint8_t key_id; + PyObject *in_key; PyObject *obj; - if (PyArg_ParseTuple(args, "h|O", &key_id, &obj)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys, key_id); - if (key == NULL){ + if (PyArg_ParseTuple(args, "O|O", &in_key, &obj)){ return NULL; } - int size = dap_enc_gen_key_public(key, obj); +// dap_enc_key_t *key = key_list_get_key(keys, key_id); +// if (key == NULL){ +// return NULL; +// } + int size = dap_enc_gen_key_public(((PyCryptoKeyObject*)in_key)->key, obj); return PyLong_FromLong(size); } @@ -131,18 +132,3 @@ PyObject *dap_enc_key_signature_delete_py(PyObject *self, PyObject *args){ dap_enc_key_signature_delete(type_key, a_sig_buf); return PyLong_FromLong(0); } - -PyObject *dap_enc_key_delete_py(PyObject *self, PyObject *args){ - //PyObject *obj; - uint8_t key_id; - if (!PyArg_ParseTuple(args, "h", &key_id)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys, key_id); - if (key == NULL) { - return NULL; - } - key_list_del_element(keys, key_id); - dap_enc_key_delete(key); - return PyLong_FromLong(0); -} diff --git a/src/wrapping_dap_enc_oaes.c b/src/wrapping_dap_enc_oaes.c index 5e2ef99cc1a67edb24013bc01aab03e84e5f04ea..e3ed4bd9ade18d5f8f83d712d835b83a7095e0a8 100644 --- a/src/wrapping_dap_enc_oaes.c +++ b/src/wrapping_dap_enc_oaes.c @@ -2,48 +2,36 @@ PyObject *dap_enc_oaes_key_new_py(PyObject *self, PyObject *args){ - uint8_t key_id; - if (PyArg_ParseTuple(args, "h", &key_id)){ + PyObject *in_key; + if (PyArg_ParseTuple(args, "O", &in_key)){ return NULL; } - dap_enc_key_t *key = key_list_get_key(keys_oaes, key_id); - if (key == NULL){ - return NULL; - } - dap_enc_oaes_key_new(key); + dap_enc_oaes_key_new(((PyCryptoKeyObject*)in_key)->key); return PyLong_FromLong(0); } PyObject *dap_enc_oaes_key_delete_py(PyObject *self, PyObject *args){ - uint8_t key_id; - if (PyArg_ParseTuple(args, "h", &key_id)){ + PyObject *in_key; + if (PyArg_ParseTuple(args, "O", &in_key)){ return NULL; } - dap_enc_key_t *key = key_list_get_key(keys_oaes, key_id); - if (key == NULL){ - return NULL; - } - dap_enc_key_delete(key); + dap_enc_oaes_key_delete(((PyCryptoKeyObject*)in_key)->key); return PyLong_FromLong(0); } PyObject *dap_enc_oaes_key_generate_py(PyObject *self, PyObject *args){ - uint8_t in_key_id; + PyObject *in_key; PyBytesObject *in_kex_buf; size_t in_kex_size; PyBytesObject *in_seed; size_t in_seed_size; - if (PyArg_ParseTuple(args, "h|S|n|S|n", &in_key_id, &in_kex_buf, &in_kex_size, &in_seed, &in_seed_size)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys_oaes, in_key_id); - if (key == NULL){ + if (PyArg_ParseTuple(args, "O|S|n|S|n", &in_key, &in_kex_buf, &in_kex_size, &in_seed, &in_seed_size)){ return NULL; } - size_t key_size = sizeof(key); + size_t key_size = sizeof(((PyCryptoKeyObject*)in_key)->key); void* kex_buf = NULL; PyBytes_AsStringAndSize((PyObject*)in_kex_buf, kex_buf, (Py_ssize_t*)in_kex_size); void* seed_buf = NULL; PyBytes_AsStringAndSize((PyObject*)in_seed, seed_buf, (Py_ssize_t*)in_seed_size); - dap_enc_oaes_key_generate(key, kex_buf, in_kex_size, seed_buf, in_seed_size, key_size); + dap_enc_oaes_key_generate(((PyCryptoKeyObject*)in_key)->key, kex_buf, in_kex_size, seed_buf, in_seed_size, key_size); return PyLong_FromLong(0); } @@ -75,39 +63,31 @@ PyObject *dap_enc_oaes_encrypt_py(PyObject *self, PyObject *args){ // Writes result ( out ) in already allocated buffer PyObject *dap_enc_oaes_decrypt_fast_py(PyObject *self, PyObject *args){ - uint8_t key_id; + PyObject *in_key; PyBytesObject *a_in; size_t a_in_size; size_t buf_out_size; - if (!PyArg_ParseTuple(args, "h|S|n|n", &key_id, &a_in, &a_in_size, &buf_out_size)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys_oaes, key_id); - if (key == NULL){ + if (!PyArg_ParseTuple(args, "O|S|n|n", &in_key, &a_in, &a_in_size, &buf_out_size)){ return NULL; } void *in = PyBytes_AsString((PyObject*)a_in); void *out = DAP_NEW_SIZE(void*, buf_out_size); - size_t res_denc_size = dap_enc_oaes_decrypt_fast(key, in, a_in_size, out, buf_out_size); + size_t res_denc_size = dap_enc_oaes_decrypt_fast(((PyCryptoKeyObject*)in_key)->key, in, a_in_size, out, buf_out_size); PyBytesObject *bytes_out = (PyBytesObject*)PyBytes_FromStringAndSize(out, (Py_ssize_t)res_denc_size); return Py_BuildValue("S", bytes_out); } // Writes result ( out ) in already allocated buffer PyObject *dap_enc_oaes_encrypt_fast_py(PyObject *self, PyObject *args){ - uint8_t key_id; + PyObject *in_key; PyBytesObject *a_in; size_t a_in_size; size_t buf_out_size; - if (!PyArg_ParseTuple(args, "h|S|n|n", &key_id, &a_in, &a_in_size, &buf_out_size)){ - return NULL; - } - dap_enc_key_t *key = key_list_get_key(keys_oaes, key_id); - if (key == NULL){ + if (!PyArg_ParseTuple(args, "O|S|n|n", &in_key, &a_in, &a_in_size, &buf_out_size)){ return NULL; } void *in = PyBytes_AsString((PyObject*)a_in); void *out = DAP_NEW_SIZE(void*, buf_out_size); - size_t res_enc_size = dap_enc_oaes_encrypt_fast(key, in, a_in_size, out, buf_out_size); + size_t res_enc_size = dap_enc_oaes_encrypt_fast(((PyCryptoKeyObject*)in_key)->key, in, a_in_size, out, buf_out_size); PyBytesObject *bytes_out = (PyBytesObject*)PyBytes_FromStringAndSize(out, (Py_ssize_t)res_enc_size); return Py_BuildValue("S", bytes_out); } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..5af5f169d93f062fd3c9ba6defa1cd7593cec620 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,19 @@ +project(TPO C) +cmake_minimum_required(VERSION 2.8) + +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_COLOR_MAKEFILE ON) +set(CMAKE_C_STANDARD 11) + +set(Python_ADDITIONAL_VERSIONS 3.7) +find_package (PythonLibs REQUIRED) +include_directories(${PYTHON_INCLUDE_DIR} include/) + +file(GLOB TPO_INCLUDES include/*.h) +file(GLOB TPO_SRCS src/*.c) + +add_library(${PROJECT_NAME} SHARED ${TPO_INCLUDES} ${TPO_SRCS} ) + +target_link_libraries(${PROJECT_NAME} ${PYTHON_LIBRARIES}) + +target_link_libraries(${PROJECT_NAME} dap_crypto_python_module) diff --git a/test/include/tpo.h b/test/include/tpo.h new file mode 100644 index 0000000000000000000000000000000000000000..610a133560775742ec7f2f2fca205450183c08b2 --- /dev/null +++ b/test/include/tpo.h @@ -0,0 +1,51 @@ +#define PY_SSIZE_T_CLEAN +#include "Python.h" +#include "libdap-crypto-python.h" +#include "libdap_crypto_data_type.h" +#include "libdap_crypto_key_type_python.h" + +#ifdef __cplusplus +extern "C" { +#endif + +PyObject *TPO_init(PyObject *self, PyObject *args); +PyObject *TPO_deinit(PyObject *self, PyObject *args); + +static PyMethodDef TPOPythonMethods[] = { + {"init", TPO_init, METH_VARARGS, "Initialization of the python-cellframe interface DAP (Deus Applicaions Prototypes)"}, + {"deinit", TPO_deinit, METH_VARARGS, "Deinitialization of the python-cellframe interface DAP (Deus Applicaions Prototypes)"}, +// {"setLogLevel", (PyCFunction)dap_set_log_level, METH_VARARGS, "Setting the logging level"}, +// {"logIt", (PyCFunction)dap_log_it, METH_VARARGS, "The wrapper of the log_it function for the libdap library"}, +// {"logItDebug", (PyCFunction)dap_log_it_debug, METH_VARARGS, "The log_it wrapper for the libdap library displays information with the logging level DEBUG"}, +// {"logItInfo", (PyCFunction)dap_log_it_info, METH_VARARGS, "The log_it wrapper for the libdap library displays information with the logging level INFO"}, +// {"logItNotice", (PyCFunction)dap_log_it_notice, METH_VARARGS, "The log_it wrapper for the libdap library displays information with the logging level NOTICE"}, +// {"logItMessage", (PyCFunction)dap_log_it_message, METH_VARARGS, "The log_it wrapper for the libdap library displays information with the logging level MESSAGE"}, +// {"logItDap", (PyCFunction)dap_log_it_dap, METH_VARARGS, "The log_it wrapper for the libdap library displays information with the logging level DAP"}, +// {"logItWarning", (PyCFunction)dap_log_it_warning, METH_VARARGS, "The log_it wrapper for the libdap library displays information with the logging level WARNING"}, +// {"logItAtt", (PyCFunction)dap_log_it_att, METH_VARARGS, "The log_it wrapper for the libdap library displays information with the logging level ATT"}, +// {"logItError", (PyCFunction)dap_log_it_error, METH_VARARGS, "The log_it wrapper for the libdap library displays information with the logging level ERROR"}, +// {"logItCritical", (PyCFunction)dap_log_it_critical, METH_VARARGS, "The log_it wrapper for the libdap library displays information with the logging level CRITICAL"}, +// {"configGetItem", (PyCFunction)py_m_dap_config_get_item, METH_VARARGS, ""}, +// {"configGetItemDefault", (PyCFunction)py_m_dap_config_get_item_default, METH_VARARGS, ""}, + //{"deinit", dap_server_core_deinit, METH_NOARGS, "Deinitialization of the DAP (Deus Applicaions Prototypes) server core library"}, + //{"loop", dap_server_core_loop, METH_VARARGS, ""}, + //{"listen", dap_server_core_listen, METH_VARARGS, ""}, + {NULL, NULL, 0, NULL} +}; + +static struct PyModuleDef TPOModule = { + PyModuleDef_HEAD_INIT, + "libTPO", /* 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. */ + TPOPythonMethods +}; + +PyMODINIT_FUNC PyInit_libTPO(void); + + +#ifdef __cplusplus +} +#endif + diff --git a/test/libdap-python b/test/libdap-python deleted file mode 160000 index e8d7f4e84f0cbca515236f317e9aa5d079df1962..0000000000000000000000000000000000000000 --- a/test/libdap-python +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e8d7f4e84f0cbca515236f317e9aa5d079df1962 diff --git a/test/src/tpo.c b/test/src/tpo.c new file mode 100644 index 0000000000000000000000000000000000000000..0721d93cd5da13fce2f77e6f6f0a2ee9eeec4121 --- /dev/null +++ b/test/src/tpo.c @@ -0,0 +1,26 @@ +#include "tpo.h" + +PyObject *TPO_init(PyObject *self, PyObject *args){ + if (dap_crypto_init() != 0) + return NULL; + return PyLong_FromLong(0); +} +PyObject *TPO_deinit(PyObject *self, PyObject *args){ + dap_common_deinit(); + return PyLong_FromLong(0); +} + +PyMODINIT_FUNC PyInit_libTPO(void){ + + if (PyType_Ready(&dapCrypto_dapCryptoType) < 0 || + PyType_Ready(&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType) < 0 || + PyType_Ready(&CryptoDataTypeObjecy_CryptoDataTypeObjecyType) < 0) + return NULL; + + PyObject *module = PyModule_Create(&TPOModule); + PyModule_AddObject(module, "Crypto", (PyObject*)&dapCrypto_dapCryptoType); + PyModule_AddObject(module, "CryptoKeyType", (PyObject*)&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType); + PyModule_AddObject(module, "CryptoDataType", (PyObject*)&CryptoDataTypeObjecy_CryptoDataTypeObjecyType); + return module; +} + diff --git a/test/test_b58.py b/test/test_b58.py index fbbbf316c59ce20dfa412d32efbd9da8dc65c344..ff02326fd15342cec3a9bb331f48a3351341637f 100644 --- a/test/test_b58.py +++ b/test/test_b58.py @@ -1,4 +1,4 @@ -import libdap_crypto_python_module as crypto +import libTPO import pickle import sys @@ -7,10 +7,10 @@ s = """Test! I will crush Base58!""" base_in = pickle.dumps(s) print ("Input data: "+s) print (base_in) -crypt = crypto.encodeBase58(base_in) +crypt = libTPO.Crypto.encodeBase58(base_in) print ("Encrypted data: \t") print(crypt) -decrypt = crypto.decodeBase58(crypt) +decrypt = libTPO.Crypto.decodeBase58(crypt) print ("Decoded data: \t") print(decrypt) out_data = pickle.loads(decrypt) diff --git a/test/test_b64.py b/test/test_b64.py index 781b6d443ed3a1f1937e319ab16824488c4041eb..a4270ebbc22ed2288d5c7af76fae0b7cf214c4a7 100644 --- a/test/test_b64.py +++ b/test/test_b64.py @@ -1,13 +1,13 @@ -import libdap_crypto_python_module as crypto +import libTPO import sys print ("Start test crypto b64") s = "Test! I will crush Base64!" print ("Input data: "+s) -crypt = crypto.encodeBase64(bytes(s, "utf-8"),1) +crypt = libTPO.Crypto.encodeBase64(bytes(s, "utf-8"), libTPO.CryptoDataType.DAP_ENC_DATA_TYPE_B64()) print ("Encrypted data: \t") print(crypt) -decrypt = crypto.decodeBase64(crypt, 1) +decrypt = libTPO.Crypto.decodeBase64(crypt, libTPO.CryptoDataType.DAP_ENC_DATA_TYPE_B64()) print ("Decoded data: \t") print(decrypt) if bytes(s, "utf-8") == decrypt: @@ -18,8 +18,8 @@ else: print ("Test Base64 URLSAFE") u = "http://kelvin.foundation/" -crypt_u = crypto.encodeBase64(bytes(u, "utf-8"), 2) -decrypt_u = crypto.decodeBase64(crypt_u) +crypt_u = libTPO.Crypto.encodeBase64(bytes(u, "utf-8"), libTPO.CryptoDataType.DAP_ENC_DATA_TYPE_B64_URLSAFE()) +decrypt_u = libTPO.Crypto.decodeBase64(crypt_u, libTPO.CryptoDataType.DAP_ENC_DATA_TYPE_B64_URLSAFE()) if bytes(u, "utf-8") == decrypt_u: print ("TEST 2. Encode/Decode base64 urlsafe done") else: diff --git a/test/test_iaes256_cbc.py b/test/test_iaes256_cbc.py index 396a7517a912511b8cba1a61ad7619b7644b07c5..1a2cc6248a749f0e2f5a26286d311806d4c9e545 100644 --- a/test/test_iaes256_cbc.py +++ b/test/test_iaes256_cbc.py @@ -1,21 +1,17 @@ -import libdap_crypto_python_module as crypto +import libTPO import sys print ("Start test crypto iaes256 CBC") s = "Test! I will crush iaes256!" -print ("Input data: "+s) kex_buff = bytes("123", "utf-8") size_kex_buff = len(kex_buff) seed = bytes(112771128) seed_size = len(seed) -crypto.init() -key_id = crypto.generateNewKey(0, kex_buff, size_kex_buff, seed, seed_size, 0) -print(key_id) +libTPO.init() +key_id = libTPO.Crypto.generateNewKey(0, kex_buff, size_kex_buff, seed, seed_size, 0) source = bytes(s, "utf-8") -enc = crypto.encryptIAES256CBCFast(key_id, source, len(source), 2048) -decrypt = crypto.decryptIAES256CBCFast(key_id, enc, len(enc), 2048) -print (decrypt) - +enc = libTPO.Crypto.encryptIAES256CBCFast(key_id, source, len(source), 2048) +decrypt = libTPO.Crypto.decryptIAES256CBCFast(key_id, enc, len(enc), 2048) if bytes(s, "utf-8") == decrypt: print ("TEST 1. Encode/Decode IAES256 CBC FAST done") diff --git a/test/test_oaes.py b/test/test_oaes.py index 7a4d02f67e41c9c4dbcfca77eec7e44d7875894d..2c36e8e0bbd69239cfe5530368f68a0ce034e09a 100644 --- a/test/test_oaes.py +++ b/test/test_oaes.py @@ -1,20 +1,17 @@ -import libdap_crypto_python_module as crypto +import libTPO import sys print ("Start test crypto OAES") s = "Test! I will crush OAES!" -print ("Input data: "+s) kex_buff = bytes("114151400014314485131FGXVGHcJFIH", "utf-8") size_kex_buff = len(kex_buff) seed = bytes(112771128) seed_size = len(seed) -crypto.init() -key_id = crypto.generateNewKey(1, kex_buff, size_kex_buff, seed, seed_size, 32) +libTPO.init() +key = libTPO.Crypto.generateNewKey(libTPO.CryptoKeyType.DAP_ENC_KEY_TYPE_OAES(), kex_buff, size_kex_buff, seed, seed_size, 32) source = bytes(s, "utf-8") -enc = crypto.encryptOAESFast(key_id, source, len(source), 2048) -decrypt = crypto.decryptOAESFast(key_id, enc, len(enc), 2048) -print (decrypt) - +enc = libTPO.Crypto.encryptOAESFast(key, source, len(source), 2048) +decrypt = libTPO.Crypto.decryptOAESFast(key, enc, len(enc), 2048) if bytes(s, "utf-8") == decrypt: print ("TEST 1. Encode/Decode OAES FAST done")