Skip to content
Snippets Groups Projects
Commit 97158dab authored by dmitriy.gerasimov's avatar dmitriy.gerasimov
Browse files

Merge branch 'Fixes' into 'master'

Fixes

See merge request !7
parents d2896ab9 90454c58
No related branches found
No related tags found
1 merge request!7Fixes
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "libdap_crypto_key_python.h" #include "libdap_crypto_key_python.h"
#include "dap_chain_datum_tx_out_cond.h" #include "dap_chain_datum_tx_out_cond.h"
#include "wrapping_dap_hash.h" #include "wrapping_dap_hash.h"
#include "dap_chain_datum_tx_items.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
...@@ -158,18 +159,14 @@ PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args ...@@ -158,18 +159,14 @@ PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args
PyObject *dap_chain_datum_tx_add_sign_item_py(PyObject *self, PyObject *args); PyObject *dap_chain_datum_tx_add_sign_item_py(PyObject *self, PyObject *args);
PyObject *dap_chain_datum_tx_verify_sign_py(PyObject *self, PyObject *args); PyObject *dap_chain_datum_tx_verify_sign_py(PyObject *self, PyObject *args);
static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj);
static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs);
static PyMethodDef PyDapChainDatumTxObjectMethods[] ={ static PyMethodDef PyDapChainDatumTxObjectMethods[] ={
{"getSize", (PyCFunction)dap_chain_datum_tx_get_size_py, METH_VARARGS, ""}, {"getSize", (PyCFunction)dap_chain_datum_tx_get_size_py, METH_VARARGS, ""},
{"addItem", (PyCFunction)dap_chain_datum_tx_add_item_py, METH_VARARGS | METH_STATIC, ""}, {"addItem", (PyCFunction)dap_chain_datum_tx_add_item_py, METH_VARARGS, ""},
{"addInItem", (PyCFunction)dap_chain_datum_tx_add_in_item_py, METH_VARARGS | METH_STATIC, ""}, {"addInItem", (PyCFunction)dap_chain_datum_tx_add_in_item_py, METH_VARARGS, ""},
{"addInCondItem", (PyCFunction)dap_chain_datum_tx_add_in_cond_item_py, METH_VARARGS | METH_STATIC, ""}, {"addInCondItem", (PyCFunction)dap_chain_datum_tx_add_in_cond_item_py, METH_VARARGS, ""},
{"addOutItem", (PyCFunction)dap_chain_datum_tx_add_out_item_py, METH_VARARGS | METH_STATIC, ""}, {"addOutItem", (PyCFunction)dap_chain_datum_tx_add_out_item_py, METH_VARARGS, ""},
{"addOutCond", (PyCFunction)dap_chain_datum_tx_add_out_cond_item_py, METH_VARARGS | METH_STATIC, ""}, {"addOutCond", (PyCFunction)dap_chain_datum_tx_add_out_cond_item_py, METH_VARARGS, ""},
{"addSignItem", (PyCFunction)dap_chain_datum_tx_add_sign_item_py, METH_VARARGS | METH_STATIC, ""}, {"addSignItem", (PyCFunction)dap_chain_datum_tx_add_sign_item_py, METH_VARARGS, ""},
{"verifySign", (PyCFunction)dap_chain_datum_tx_verify_sign_py, METH_VARARGS, ""}, {"verifySign", (PyCFunction)dap_chain_datum_tx_verify_sign_py, METH_VARARGS, ""},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}
}; };
...@@ -265,9 +262,6 @@ static PyTypeObject DapChainTxOutCond_DapChainTxOutCondObjectType = { ...@@ -265,9 +262,6 @@ static PyTypeObject DapChainTxOutCond_DapChainTxOutCondObjectType = {
PyType_GenericNew, /* tp_new */ PyType_GenericNew, /* tp_new */
}; };
dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list);
PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond);
/* -------------------------------------- */ /* -------------------------------------- */
#ifdef __cplusplus #ifdef __cplusplus
......
...@@ -54,69 +54,52 @@ void PyDapChainDatumTxObject_delete(PyDapChainDatumTxObject* datumTx){ ...@@ -54,69 +54,52 @@ void PyDapChainDatumTxObject_delete(PyDapChainDatumTxObject* datumTx){
} }
PyObject *dap_chain_datum_tx_get_size_py(PyObject *self, PyObject *args){ PyObject *dap_chain_datum_tx_get_size_py(PyObject *self, PyObject *args){
(void)args;
size_t size = dap_chain_datum_tx_get_size(((PyDapChainDatumTxObject*)self)->datum_tx); size_t size = dap_chain_datum_tx_get_size(((PyDapChainDatumTxObject*)self)->datum_tx);
return PyLong_FromSize_t(size); return PyLong_FromSize_t(size);
} }
PyObject *dap_chain_datum_tx_add_item_py(PyObject *self, PyObject *args){ PyObject *dap_chain_datum_tx_add_item_py(PyObject *self, PyObject *args){
PyObject *in_obj; uint8_t *a_item;
u_int8_t *a_item; if (!PyArg_ParseTuple(args, "b", &a_item))
if (!PyArg_ParseTuple(args, "O|b", &in_obj, &a_item))
return NULL; return NULL;
dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(in_obj); int res = dap_chain_datum_tx_add_item(&(((PyDapChainDatumTxObject*)self)->datum_tx), a_item);
int res = dap_chain_datum_tx_add_item(txs, a_item); return PyLong_FromLong(res);
if (res == -1){
return NULL;
} else {
PyObject *out = DapChainDatumTxArrayToPyList(txs);
return Py_BuildValue("O", out);
}
} }
PyObject *dap_chain_datum_tx_add_in_item_py(PyObject *self, PyObject *args){ PyObject *dap_chain_datum_tx_add_in_item_py(PyObject *self, PyObject *args){
PyObject *in_obj_datum_txs;
PyObject *in_obj_hash_fast; PyObject *in_obj_hash_fast;
uint32_t in_tx_out_pref_idx; uint32_t in_tx_out_pref_idx;
if (!PyArg_ParseTuple(args, "O|O|I", &in_obj_datum_txs, &in_obj_hash_fast, &in_tx_out_pref_idx)) if (!PyArg_ParseTuple(args, "O|I", &in_obj_hash_fast, &in_tx_out_pref_idx))
return NULL; return NULL;
dap_chain_datum_tx_t **a_txs = PyListToDapChainDatumTxArray(in_obj_datum_txs); int res = dap_chain_datum_tx_add_in_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
int res = dap_chain_datum_tx_add_in_item(a_txs, ((PyDapHashFastObject*)in_obj_hash_fast)->hash_fast, ((PyDapHashFastObject*)in_obj_hash_fast)->hash_fast,
in_tx_out_pref_idx); in_tx_out_pref_idx);
if (res == -1){ return PyLong_FromLong(res);
return NULL;
} else {
PyObject *out = DapChainDatumTxArrayToPyList(a_txs);
return Py_BuildValue("O", out);
}
} }
PyObject *dap_chain_datum_tx_add_in_cond_item_py(PyObject *self, PyObject *args){ PyObject *dap_chain_datum_tx_add_in_cond_item_py(PyObject *self, PyObject *args){
PyObject *in_obj_datum_txs;
PyObject *in_chain_hash_fast; PyObject *in_chain_hash_fast;
unsigned int in_tx_out_prev_idx; unsigned int in_tx_out_prev_idx;
unsigned int in_receipt_idx; unsigned int in_receipt_idx;
if (!PyArg_ParseTuple(args, "O|O|I|I", &in_obj_datum_txs, &in_chain_hash_fast, &in_tx_out_prev_idx, &in_receipt_idx)) if (!PyArg_ParseTuple(args, "O|I|I", &in_chain_hash_fast, &in_tx_out_prev_idx, &in_receipt_idx))
return NULL; return NULL;
dap_chain_datum_tx_t **a_txs = PyListToDapChainDatumTxArray(in_obj_datum_txs); int res = dap_chain_datum_tx_add_in_cond_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
int res = dap_chain_datum_tx_add_in_cond_item(a_txs, ((PyDapHashFastObject*)in_chain_hash_fast)->hash_fast, in_tx_out_prev_idx, in_receipt_idx); ((PyDapHashFastObject*)in_chain_hash_fast)->hash_fast,
in_tx_out_prev_idx,
in_receipt_idx);
return PyLong_FromLong(res); return PyLong_FromLong(res);
} }
PyObject *dap_chain_datum_tx_add_out_item_py(PyObject *self, PyObject *args){ PyObject *dap_chain_datum_tx_add_out_item_py(PyObject *self, PyObject *args){
PyObject *in_obj_datum_txs;
PyObject *in_addr; PyObject *in_addr;
uint64_t value; uint64_t value;
if (!PyArg_ParseTuple(args, "O|O|k", &in_obj_datum_txs, &in_addr, value)) if (!PyArg_ParseTuple(args, "O|k", &in_addr, &value))
return NULL;
dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(in_obj_datum_txs);
int res = dap_chain_datum_tx_add_out_item(txs, ((PyDapChainAddrObject*)in_addr)->addr, value);
if (res == -1){
return NULL; return NULL;
} else { int res = dap_chain_datum_tx_add_out_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
PyObject *out = DapChainDatumTxArrayToPyList(txs); ((PyDapChainAddrObject*)in_addr)->addr,
return Py_BuildValue("O", out); value);
} return PyLong_FromLong(res);
} }
PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args){ PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args){
PyObject *obj_txs;
PyObject *obj_key; PyObject *obj_key;
PyObject *obj_srv_uid; PyObject *obj_srv_uid;
uint64_t value; uint64_t value;
...@@ -124,79 +107,31 @@ PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args ...@@ -124,79 +107,31 @@ PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args
PyObject *obj_srv_price_unit_uid; PyObject *obj_srv_price_unit_uid;
PyObject *obj_cond_bytes; PyObject *obj_cond_bytes;
Py_ssize_t cond_size; Py_ssize_t cond_size;
if (!PyArg_ParseTuple(args, "O|O|O|k|k|O|O|n", &obj_txs, &obj_key, &obj_srv_uid, &value, &value_max_per_unit, if (!PyArg_ParseTuple(args, "O|O|k|k|O|O|n", &obj_key, &obj_srv_uid, &value, &value_max_per_unit,
&obj_srv_price_unit_uid, &obj_cond_bytes, &cond_size)) &obj_srv_price_unit_uid, &obj_cond_bytes, &cond_size))
return NULL; return NULL;
dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs);
void *cond = (void*)PyBytes_AsString(obj_cond_bytes); void *cond = (void*)PyBytes_AsString(obj_cond_bytes);
int res = dap_chain_datum_tx_add_out_cond_item(txs, ((PyCryptoKeyObject*)obj_key)->key, ((PyDapChainNetSrvUIDObject*)obj_srv_uid)->net_srv_uid, int res = dap_chain_datum_tx_add_out_cond_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
value, value_max_per_unit, ((PyDapChainNetSrvPriceUnitUIDObject*)obj_srv_price_unit_uid)->price_unit_uid, ((PyCryptoKeyObject*)obj_key)->key,
((PyDapChainNetSrvUIDObject*)obj_srv_uid)->net_srv_uid,
value, value_max_per_unit,
((PyDapChainNetSrvPriceUnitUIDObject*)obj_srv_price_unit_uid)->price_unit_uid,
cond, (size_t)cond_size); cond, (size_t)cond_size);
if (res == -1){ return PyLong_FromLong(res);
return NULL;
} else {
PyObject *out = DapChainDatumTxArrayToPyList(txs);
return Py_BuildValue("O", out);
}
} }
PyObject *dap_chain_datum_tx_add_sign_item_py(PyObject *self, PyObject *args){ PyObject *dap_chain_datum_tx_add_sign_item_py(PyObject *self, PyObject *args){
PyObject *obj_txs;
PyObject *obj_key; PyObject *obj_key;
if (!PyArg_ParseTuple(args, "O|O", &obj_txs, &obj_key)) if (!PyArg_ParseTuple(args, "O", &obj_key))
return NULL; return NULL;
dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs); int res = dap_chain_datum_tx_add_sign_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
int res = dap_chain_datum_tx_add_sign_item(txs, ((PyCryptoKeyObject*)obj_key)->key); ((PyCryptoKeyObject*)obj_key)->key);
if (res == -1){
return NULL;
} else {
PyObject *out = DapChainDatumTxArrayToPyList(txs);
return Py_BuildValue("O", out);
}
}
PyObject *dap_chain_datum_tx_verify_sign_py(PyObject *self, PyObject *args)
{
int res = dap_chain_datum_tx_verify_sign(((PyDapChainDatumTxObject*)self)->datum_tx);
return PyLong_FromLong(res); return PyLong_FromLong(res);
} }
static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj){ PyObject *dap_chain_datum_tx_verify_sign_py(PyObject *self, PyObject *args){
Py_ssize_t size = PyList_Size(a_in_obj); (void)args;
dap_chain_datum_tx_t **txs = calloc(sizeof(dap_chain_datum_tx_t), (size_t)size); int res = dap_chain_datum_tx_verify_sign(((PyDapChainDatumTxObject*)self)->datum_tx);
for (Py_ssize_t i = 0; i < size;i++){ return PyLong_FromLong(res);
txs[i] = ((PyDapChainDatumTxObject*)PyList_GetItem(a_in_obj, i))->datum_tx;
}
return txs;
}
static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs){
size_t len = sizeof(datum_txs) / sizeof(*datum_txs);
PyObject* list = PyList_New((Py_ssize_t)len);
for (size_t i=0; i < len; i++){
PyObject *obj = _PyObject_New(&DapChainDatumTx_DapChainDatumTxObjectType);
((PyDapChainDatumTxObject*)obj)->datum_tx = datum_txs[i];
PyList_Append(list, obj);
}
return list;
}
dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list){
Py_ssize_t size = PyList_Size(list);
dap_chain_tx_out_cond_t **out_conds = calloc(sizeof(dap_chain_tx_out_cond_t), (size_t)size);
for (Py_ssize_t i=0; i < size; i++){
out_conds[i] = ((PyDapChainTxOutCondObject*)PyList_GetItem(list, i))->out_cond;
}
return out_conds;
}
PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond){
size_t len = sizeof(out_cond) / sizeof(*out_cond);
PyObject *list = PyList_New((Py_ssize_t)len);
for (size_t i=0; i< len;i++ ){
PyObject *obj = _PyObject_New(&DapChainTxOutCond_DapChainTxOutCondObjectType);
((PyDapChainTxOutCondObject*)obj)->out_cond = out_cond[i];
PyList_Append(list, obj);
}
return list;
} }
/* -------------------------------------- */ /* -------------------------------------- */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment