Skip to content
Snippets Groups Projects
Commit aa70016f authored by dpuzyrkov's avatar dpuzyrkov
Browse files

[+] append sign to datum

parent d314541d
No related branches found
No related tags found
1 merge request!1137[+] append sign to datum
Pipeline #27428 passed with stage
in 7 minutes and 16 seconds
...@@ -455,6 +455,39 @@ dap_chain_datum_token_emission_t *dap_chain_datum_emission_add_sign(dap_enc_key_ ...@@ -455,6 +455,39 @@ dap_chain_datum_token_emission_t *dap_chain_datum_emission_add_sign(dap_enc_key_
return l_ret; return l_ret;
} }
dap_chain_datum_token_emission_t *dap_chain_datum_emission_append_sign(dap_sign_t *a_sign, dap_chain_datum_token_emission_t *a_emission)
{
if (!a_emission || a_emission->hdr.type != DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH)
return NULL;
if (!a_sign)
return NULL;
if (a_emission->data.type_auth.size > a_emission->data.type_auth.tsd_total_size)
{
dap_sign_t *l_sign = (dap_sign_t *)(a_emission->tsd_n_signs + a_emission->data.type_auth.tsd_total_size);
for (int i = 0; i < a_emission->data.type_auth.signs_count; i++) {
if (l_sign->header.sign_pkey_size == a_sign->header.sign_pkey_size &&
!memcmp(l_sign->pkey_n_sign, a_sign->pkey_n_sign, l_sign->header.sign_pkey_size)) {
log_it(L_ERROR, "such singature present");
return a_emission; // this sign already exists
}
l_sign = (dap_sign_t *)((byte_t *)l_sign + dap_sign_get_size(l_sign));
}
}
size_t l_emission_size = dap_chain_datum_emission_get_size((uint8_t *)a_emission);
dap_chain_datum_token_emission_t *l_ret = DAP_REALLOC(a_emission, l_emission_size + dap_sign_get_size(a_sign));
size_t l_sign_size = dap_sign_get_size(a_sign);
memcpy(l_ret->tsd_n_signs + l_ret->data.type_auth.size, a_sign, l_sign_size);
l_ret->data.type_auth.size += l_sign_size;
l_ret->data.type_auth.signs_count++;
return l_ret;
}
dap_sign_t *dap_chain_datum_emission_get_signs(dap_chain_datum_token_emission_t *a_emission, size_t *a_signs_count) { dap_sign_t *dap_chain_datum_emission_get_signs(dap_chain_datum_token_emission_t *a_emission, size_t *a_signs_count) {
if (!a_emission || !a_signs_count || a_emission->hdr.type != DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH) { if (!a_emission || !a_signs_count || a_emission->hdr.type != DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH) {
log_it(L_ERROR, "Parameters must be not-null!"); log_it(L_ERROR, "Parameters must be not-null!");
......
...@@ -511,6 +511,8 @@ byte_t *dap_chain_emission_get_tsd(dap_chain_datum_token_emission_t *a_emission, ...@@ -511,6 +511,8 @@ byte_t *dap_chain_emission_get_tsd(dap_chain_datum_token_emission_t *a_emission,
dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(byte_t *a_emission_serial, size_t *a_emission_size); dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(byte_t *a_emission_serial, size_t *a_emission_size);
size_t dap_chain_datum_emission_get_size(uint8_t *a_emission_serial); size_t dap_chain_datum_emission_get_size(uint8_t *a_emission_serial);
dap_chain_datum_token_emission_t *dap_chain_datum_emission_add_sign(dap_enc_key_t *a_sign_key, dap_chain_datum_token_emission_t *a_emission); dap_chain_datum_token_emission_t *dap_chain_datum_emission_add_sign(dap_enc_key_t *a_sign_key, dap_chain_datum_token_emission_t *a_emission);
dap_chain_datum_token_emission_t *dap_chain_datum_emission_append_sign(dap_sign_t *a_sign, dap_chain_datum_token_emission_t *a_emission);
dap_sign_t *dap_chain_datum_emission_get_signs(dap_chain_datum_token_emission_t *a_emission, size_t *a_signs_count); dap_sign_t *dap_chain_datum_emission_get_signs(dap_chain_datum_token_emission_t *a_emission, size_t *a_signs_count);
// 256 TYPE // 256 TYPE
bool dap_chain_datum_token_is_old(uint8_t a_type); bool dap_chain_datum_token_is_old(uint8_t a_type);
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