diff --git a/include/python-cellframe.h b/include/python-cellframe.h index b826755bc36ddc177f080c9fcf79123292206449..8276ff2809f85054753258330d32c3154e6e2381 100644 --- a/include/python-cellframe.h +++ b/include/python-cellframe.h @@ -2,7 +2,9 @@ #include "Python.h" #include "libdap-python.h" #include "libdap-crypto-python.h" -#include "libdap-server-core-python.h" +#include "libdap_server_core_python.h" +#include "libdap_crypto_key_type_python.h" +#include "libdap_crypto_data_type.h" #include "dap_common.h" diff --git a/src/python-cellframe.c b/src/python-cellframe.c index 93ffe29fadfd747d0c5d1df8314f76e0089e0388..492c8501500407d7d884c0362115481ca26edee6 100644 --- a/src/python-cellframe.c +++ b/src/python-cellframe.c @@ -5,7 +5,9 @@ PyMODINIT_FUNC PyInit_libCellFrame(void){ if (PyType_Ready(&DapObject_DapObjectType) < 0 || PyType_Ready(&dapCrypto_dapCryptoType) < 0 || PyType_Ready(&ServerCore_ServerCoreType) < 0 || PyType_Ready(&dapEvents_dapEventsType) < 0 || - PyType_Ready(&dapEventsSocket_dapEventsSocketType) < 0) + PyType_Ready(&dapEventsSocket_dapEventsSocketType) < 0 || + PyType_Ready(&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType) < 0 || + PyType_Ready(&CryptoDataTypeObjecy_CryptoDataTypeObjecyType) < 0) return NULL; PyObject *module = PyModule_Create(&CellFramePythonModule); @@ -28,6 +30,9 @@ PyMODINIT_FUNC PyInit_libCellFrame(void){ PyModule_AddObject(module, "Events", (PyObject*)&dapEvents_dapEventsType); PyModule_AddObject(module, "EventsSocket", (PyObject*)&dapEventsSocket_dapEventsSocketType); + PyModule_AddObject(module, "CryptoKeyType", (PyObject*)&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType); + PyModule_AddObject(module, "CryptoDataType", (PyObject*)&CryptoDataTypeObjecy_CryptoDataTypeObjecyType); + //PyModule_AddObject(module, "Dap", (PyObject*)&DapObject_DapObjectType); return module; diff --git a/test/main_test.py b/test/main_test.py index 762d68ea0fc97336d6543961df8a825f6de26a8b..60e6ad88e5f404d300601f70ad676ac891529a28 100644 --- a/test/main_test.py +++ b/test/main_test.py @@ -1,4 +1,5 @@ from libCellFrame import * +import pickle import os import sys @@ -12,9 +13,8 @@ app_name = "testAPP" print("Create config file") create_config_file(app_name) - json_string = """{ - "modules": "", + "modules": ["crypto"], "DAP": { "config_dir": \""""+os.getcwd()+"""\", "log_level": "L_DEBUG", @@ -23,6 +23,8 @@ json_string = """{ } }""" + +print("init start") init(json_string) logItInfo("Initialization of the DAP done") setLogLevel(DEBUG) @@ -34,6 +36,79 @@ logItInfo("Output [server] 'listen_address' = "+res1+"\n") res2 = configGetItemDefault("server1", "listen_address", "8.8.8.8") logItInfo("Output default value '8.8.8.8' [server1] 'listen_address' = "+res2+"\n") logItInfo( "TEST. Get default config done") + +logItInfo ("Create KEY") +key = Crypto.newKey(CryptoKeyType.DAP_ENC_KEY_TYPE_IAES()) +del key +logItInfo("Create KEY TWO") +key2 = Crypto.newKey(CryptoKeyType.DAP_ENC_KEY_TYPE_OAES()) +logItInfo ("Dellete key") +del key2 + +logItInfo("TEST BASE58. START...") +s = """Test! I will crush Base58!""" +base_in = pickle.dumps(s) +crypt = Crypto.encodeBase58(base_in) +decrypt = Crypto.decodeBase58(crypt) +out_data = pickle.loads(decrypt) +if s == out_data: + logItInfo ("TEST 1. Encode/Decode base58 done") +else: + logItInfo ("TEST 1. Encode/Decode base58 faild") + sys.exit(1) +logItInfo("TEST. BASE64 START...") +s = "Test! I will crush Base64!" +crypt = Crypto.encodeBase64(bytes(s, "utf-8"), CryptoDataType.DAP_ENC_DATA_TYPE_B64()) +decrypt = Crypto.decodeBase64(crypt, CryptoDataType.DAP_ENC_DATA_TYPE_B64()) +if bytes(s, "utf-8") == decrypt: + logItInfo ("TEST 1. Encode/Decode base64 done") +else: + logItInfo ("TEST 1. Encode/Decode base64 faild") + sys.exit(1) +logItInfo ("TEST.BASE64 URLSAFE START...") +u = "http://kelvin.foundation/" +crypt_u = Crypto.encodeBase64(bytes(u, "utf-8"), CryptoDataType.DAP_ENC_DATA_TYPE_B64_URLSAFE()) +decrypt_u = Crypto.decodeBase64(crypt_u, CryptoDataType.DAP_ENC_DATA_TYPE_B64_URLSAFE()) +if bytes(u, "utf-8") == decrypt_u: + logItInfo ("TEST 2. Encode/Decode base64 urlsafe done") +else: + logItInfo ("TEST 2. Encode/Decode base64 urlsafe faild") + sys.exit(2) + +logItInfo ("TEST. IAES256 CBC START...") +s = "Test! I will crush iaes256!" +kex_buff = bytes("123", "utf-8") +size_kex_buff = len(kex_buff) +seed = bytes(112771128) +seed_size = len(seed) +key_n = Crypto.generateNewKey(CryptoKeyType.DAP_ENC_KEY_TYPE_IAES(), kex_buff, size_kex_buff, seed, seed_size, 0) +source = bytes(s, "utf-8") +enc = Crypto.encryptIAES256CBCFast(key_n, source, len(source), 2048) +decrypt = Crypto.decryptIAES256CBCFast(key_n, enc, len(enc), 2048) +if bytes(s, "utf-8") == decrypt: + logItInfo ("TEST 1. Encode/Decode IAES256 CBC FAST done") +else: + logItInfo ("TEST 1. Encode/Decode IAES256 CBC FAST faild") + sys.exit(1) + +logItInfo ("TEST. OAES START...") +s = "Test! I will crush OAES!" +kex_buff = bytes("114151400014314485131FGXVGHcJFIH", "utf-8") +size_kex_buff = len(kex_buff) +seed = bytes(112771128) +seed_size = len(seed) +key_id = Crypto.generateNewKey(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) +if bytes(s, "utf-8") == decrypt: + logItInfo ("TEST 1. Encode/Decode OAES FAST done") +else: + logItInfo ("TEST 1. Encode/Decode OAES CBC FAST faild") + sys.exit(1) + + + deinit() logItInfo("Deinitialization done")