Skip to content
Snippets Groups Projects
Commit bfd105e7 authored by roman.padenkov's avatar roman.padenkov
Browse files

...

parent 3866322b
No related branches found
No related tags found
1 merge request!1477feature-7668_d
Pipeline #35881 passed with stage
in 7 minutes and 14 seconds
......@@ -219,6 +219,31 @@ void dap_chain_datum_token_flags_dump(dap_string_t * a_str_out, uint16_t a_flags
}
}
/**
* @brief dap_chain_datum_token_flags_dump_to_json
* @param json_obj_out
* @param a_flags
*/
void dap_chain_datum_token_flags_dump_to_json(json_object * json_obj_out, uint16_t a_flags)
{
if(!a_flags){
json_object_object_add(json_obj_out, "flags:", json_object_new_string(c_dap_chain_datum_token_flag_str[DAP_CHAIN_DATUM_TOKEN_FLAG_NONE]));
return;
}
bool is_first = true;
for ( uint16_t i = 0; BIT(i) <= DAP_CHAIN_DATUM_TOKEN_FLAG_MAX; i++){
if( a_flags & (1 << i) ){
if(is_first)
is_first = false;
json_object_object_add(json_obj_out, "flags:", json_object_new_string(c_dap_chain_datum_token_flag_str[BIT(i)]));
}
}
}
/**
* @brief dap_chain_datum_token_certs_dump
......@@ -267,6 +292,58 @@ void dap_chain_datum_token_certs_dump(dap_string_t * a_str_out, byte_t * a_data_
}
}
/**
* @brief dap_chain_datum_token_certs_dump_to_json
* @param a_json_obj_out
* @param a_data_n_tsd
* @param a_certs_size
*/
void dap_chain_datum_token_certs_dump_to_json(json_object *a_json_obj_out, byte_t * a_data_n_tsd, size_t a_certs_size, const char *a_hash_out_type)
{
json_object_object_add(a_json_obj_out, "Signatures", json_object_new_string(""));
if (!a_certs_size) {
json_object_object_add(a_json_obj_out, "status", json_object_new_string("<NONE>"));
return;
}
size_t l_offset = 0;
json_object * json_arr_seg = json_object_new_array();
for (int i = 1; l_offset < (a_certs_size); i++) {
json_object * l_json_obj_out = json_object_new_object();
dap_sign_t *l_sign = (dap_sign_t *) (a_data_n_tsd + l_offset);
l_offset += dap_sign_get_size(l_sign);
if (l_sign->header.sign_size == 0) {
json_object_object_add(l_json_obj_out, "status", json_object_new_string("<CORRUPTED - 0 size signature>"));
break;
}
if (l_sign->header.sign_size > a_certs_size)
{
json_object_object_add(l_json_obj_out, "status", json_object_new_string("<CORRUPTED - signature size is greater than a_certs_size>"));
continue;
}
dap_chain_hash_fast_t l_pkey_hash = {0};
if (dap_sign_get_pkey_hash(l_sign, &l_pkey_hash) == false) {
json_object_object_add(l_json_obj_out, "status", json_object_new_string("<CORRUPTED - can't calc hash>"));
continue;
}
char *l_hash_str = dap_strcmp(a_hash_out_type, "hex")
? dap_enc_base58_encode_hash_to_str(&l_pkey_hash)
: dap_chain_hash_fast_to_str_new(&l_pkey_hash);
json_object_object_add(l_json_obj_out, "line", json_object_new_int(i));
json_object_object_add(l_json_obj_out, "hash", json_object_new_string(l_hash_str));
json_object_object_add(l_json_obj_out, "sign_type", json_object_new_string(dap_sign_type_to_str(l_sign->header.type)));
json_object_object_add(l_json_obj_out, "bytes", json_object_new_int(l_sign->header.sign_size));
json_object_array_add(json_arr_seg, l_json_obj_out);
DAP_DEL_Z(l_hash_str);
}
json_object_object_add(a_json_obj_out, "status", json_arr_seg);
}
dap_sign_t ** dap_chain_datum_token_signs_parse(dap_chain_datum_token_t * a_datum_token, size_t a_datum_token_size, size_t *a_signs_total, size_t * a_signs_valid)
{
assert(a_datum_token_size);
......
......@@ -505,7 +505,9 @@ extern const char *c_dap_chain_datum_token_emission_type_str[];
/// TDS op funcs
dap_tsd_t* dap_chain_datum_token_tsd_get(dap_chain_datum_token_t * a_token, size_t a_token_size);
void dap_chain_datum_token_flags_dump(dap_string_t * a_str_out, uint16_t a_flags);
void dap_chain_datum_token_flags_dump_to_json(json_object * json_obj_out, uint16_t a_flags);
void dap_chain_datum_token_certs_dump(dap_string_t * a_str_out, byte_t * a_data_n_tsd, size_t a_certs_size, const char *a_hash_out_type);
void dap_chain_datum_token_certs_dump_to_json(json_object *a_json_obj_out, byte_t * a_data_n_tsd, size_t a_certs_size, const char *a_hash_out_type);
dap_sign_t ** dap_chain_datum_token_signs_parse(dap_chain_datum_token_t * a_datum_token, size_t a_datum_token_size, size_t *a_signs_count, size_t * a_signs_valid);
dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial, size_t *a_token_size);
......
......@@ -153,6 +153,6 @@ dap_sign_t *dap_chain_datum_tx_get_sign(dap_chain_datum_tx_t *a_tx, int a_sign_n
*/
int dap_chain_datum_tx_verify_sign(dap_chain_datum_tx_t *a_tx);
json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx);
//json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx);
int dap_chain_datum_tx_get_fee_value (dap_chain_datum_tx_t *a_tx, uint256_t *a_value);
......@@ -14,7 +14,7 @@
json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx){
json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx,dap_chain_net_id_t *a_net_id){
json_object *l_obj_items = json_object_new_array();
if (!l_obj_items) {
dap_json_rpc_allocation_error;
......
......@@ -28,4 +28,4 @@
#include "dap_chain_datum_tx.h"
#include "dap_json_rpc_errors.h"
json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx, dap_chain_net_id_t *a_net_id);
json_object * dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx, dap_chain_net_id_t *a_net_id);
......@@ -100,15 +100,16 @@ static bool s_dap_chain_datum_tx_out_data(dap_chain_datum_tx_t *a_datum,
{
dap_time_t l_ts_create = (dap_time_t)a_datum->header.ts_created;
char l_tx_hash_str[70]={0};
char l_tmp_buf[70];
char l_tmp_buf[DAP_TIME_STR_SIZE];
const char *l_ticker = a_ledger
? dap_ledger_tx_get_token_ticker_by_hash(a_ledger, a_tx_hash)
: NULL;
if (!l_ticker)
return false;
dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_ts_create);
dap_chain_hash_fast_to_str(a_tx_hash,l_tx_hash_str,sizeof(l_tx_hash_str));
json_object_object_add(json_obj_out, "Datum_tx_hash", json_object_new_string(l_tx_hash_str));
json_object_object_add(json_obj_out, "TS_Created", json_object_new_string(dap_ctime_r(&l_ts_create, l_tmp_buf)));
json_object_object_add(json_obj_out, "TS_Created", json_object_new_string(l_tmp_buf));
json_object_object_add(json_obj_out, "Token_ticker", json_object_new_string(l_ticker));
json_object* datum_tx = dap_chain_datum_tx_to_json(a_datum,&a_ledger->net->pub.id);
json_object_object_add(json_obj_out, "Datum_tx", datum_tx);
......
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