From 53f1b44cbcf51aa11379d3065cb757edbb180c6c Mon Sep 17 00:00:00 2001 From: "alexey.stratulat" <alexey.stratulat@demlabs.net> Date: Thu, 27 Jan 2022 23:49:37 +0700 Subject: [PATCH] [*] Fixed reading datum token from datum. Also, the size of the emission token datum has been added to the PyDapChainDatumTokenEmissionObject structure. --- .../cellframe-sdk/common/include/wrapping_dap_chain_datum.h | 3 ++- modules/cellframe-sdk/common/src/wrapping_dap_chain_datum.c | 3 ++- .../cellframe-sdk/common/src/wrapping_dap_chain_datum_token.c | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/cellframe-sdk/common/include/wrapping_dap_chain_datum.h b/modules/cellframe-sdk/common/include/wrapping_dap_chain_datum.h index faca0f46..9cffb846 100644 --- a/modules/cellframe-sdk/common/include/wrapping_dap_chain_datum.h +++ b/modules/cellframe-sdk/common/include/wrapping_dap_chain_datum.h @@ -30,6 +30,7 @@ #include "dap_chain_datum_token.h" #include "datetime.h" #include "wrapping_dap_chain_datum_tx.h" +#include "dap_common.h" #ifdef __cplusplus extern "C" { @@ -103,7 +104,7 @@ PyObject *dap_chain_datum_get_type_str_py(PyObject *self, PyObject *args); PyObject *wrapping_dap_chain_datum_get_version_str_py(PyObject *self, void* closure); static PyMethodDef DapChainDatumMethods[] = { - {"size", dap_chain_datum_size_py, METH_VARARGS, ""}, + {"getSize", dap_chain_datum_size_py, METH_VARARGS, ""}, {"isDatumTX", dap_chain_datum_is_type_tx, METH_NOARGS, ""}, {"getDatumTX", wrapping_dap_chain_datum_get_datum_tx, METH_NOARGS, ""}, {"isDatumToken", dap_chain_datum_is_type_token, METH_NOARGS, ""}, diff --git a/modules/cellframe-sdk/common/src/wrapping_dap_chain_datum.c b/modules/cellframe-sdk/common/src/wrapping_dap_chain_datum.c index 1c2677d0..a39c1aad 100644 --- a/modules/cellframe-sdk/common/src/wrapping_dap_chain_datum.c +++ b/modules/cellframe-sdk/common/src/wrapping_dap_chain_datum.c @@ -53,7 +53,7 @@ PyObject *wrapping_dap_chain_datum_get_datum_token(PyObject *self, PyObject *arg &DapChainDatumToken_DapChainDatumTokenObjectType); PyObject_Dir((PyObject*)obj_token); size_t l_size_token = ((PyDapChainDatumObject*)self)->datum->header.data_size; - obj_token->token = DAP_NEW(dap_chain_datum_token_t); + obj_token->token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, l_size_token); memcpy(obj_token->token, ((PyDapChainDatumObject*)self)->datum->data, l_size_token); return (PyObject*)obj_token; }else{ @@ -82,6 +82,7 @@ PyObject *wrapping_dap_chain_datum_get_datum_token_emission(PyObject *self, PyOb size_t l_token_emission_size = ((PyDapChainDatumObject*)self)->datum->header.data_size; obj_emission->token_emission = dap_chain_datum_emission_read(((PyDapChainDatumObject*)self)->datum->data, &l_token_emission_size); + obj_emission->token_size = l_token_emission_size; return (PyObject*)obj_emission; }else{ diff --git a/modules/cellframe-sdk/common/src/wrapping_dap_chain_datum_token.c b/modules/cellframe-sdk/common/src/wrapping_dap_chain_datum_token.c index a763998a..6982943c 100644 --- a/modules/cellframe-sdk/common/src/wrapping_dap_chain_datum_token.c +++ b/modules/cellframe-sdk/common/src/wrapping_dap_chain_datum_token.c @@ -123,14 +123,14 @@ PyObject *wrapping_dap_chain_datum_token_emission_get_data(PyObject *self, void case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH: l_sign_ptr = (dap_sign_t*)token_emi->data.type_auth.signs; l_offset = (byte_t*)l_sign_ptr - (byte_t*)token_emi; - obj_tmp = PyList_New(token_emi->data.type_auth.signs_count); + obj_tmp = PyList_New(0); for (size_t i = 0; i < token_emi->data.type_auth.signs_count && l_offset < token_emi_size; i++){ if(dap_sign_verify_size(l_sign_ptr, ((PyDapChainDatumTokenEmissionObject*)self)->token_size - l_offset)){ obj_tmp_sign = PyObject_New(PyDapSignObject, &DapSignObject_DapSignObjectType); PyObject_Dir((PyObject*)obj_tmp_sign); obj_tmp_sign->sign = DAP_NEW_Z_SIZE(dap_sign_t, dap_sign_get_size(l_sign_ptr)); memcpy(obj_tmp_sign->sign, l_sign_ptr, dap_sign_get_size(l_sign_ptr)); - if (PyList_SetItem(obj_tmp, (Py_ssize_t)i, (PyObject*)obj_tmp_sign) == -1){ + if (PyList_Append(obj_tmp, (PyObject*)obj_tmp_sign) == -1){ return NULL; } l_offset += dap_sign_get_size(l_sign_ptr); -- GitLab