Skip to content
Snippets Groups Projects
Commit 92d2951d authored by Aleksandr Lysikov's avatar Aleksandr Lysikov
Browse files

fix decode_base58

parent 842029d3
No related branches found
No related tags found
No related merge requests found
......@@ -59,7 +59,7 @@ size_t dap_enc_base58_decode(const char * a_in, void * a_out)
size_t l_outi_size = (l_out_size_max + 3) / 4;
uint32_t l_outi[l_outi_size];
memzero(l_outi,l_outi_size);
memzero(l_outi,l_outi_size*sizeof(uint32_t));
uint64_t t;
uint32_t c;
size_t i, j;
......@@ -77,10 +77,10 @@ size_t dap_enc_base58_decode(const char * a_in, void * a_out)
{
if (l_in_u8[i] & 0x80)
// High-bit set on invalid digit
return false;
return 0;
if (c_b58digits_map[l_in_u8[i]] == -1)
// Invalid base58 digit
return false;
return 0;
c = (unsigned)c_b58digits_map[l_in_u8[i]];
for (j = l_outi_size; j--; )
{
......@@ -133,6 +133,13 @@ size_t dap_enc_base58_decode(const char * a_in, void * a_out)
}
--l_out_size;
}
// shift result to beginning of the string
for (j = 0; j < l_out_size; j++){
l_out_u8[j+zerocount] = l_out_u8[j+i];
}
l_out_u8[j+zerocount] = 0;
l_out_size += zerocount;
return l_out_size;
......
......@@ -34,7 +34,7 @@ extern "C" {
/*
* Calculates encode size from input size
*/
#define DAP_ENC_BASE58_ENCODE_SIZE(a_in_size) ( (size_t) ((137 * a_in_size / 100)+1))
#define DAP_ENC_BASE58_ENCODE_SIZE(a_in_size) ( (size_t) ((137 * a_in_size / 100)+2))
#define DAP_ENC_BASE58_DECODE_SIZE(a_in_size) ( (size_t) ( 2 * a_in_size +1) )
size_t dap_enc_base58_encode(const void * a_in, size_t a_in_size, char * a_out);
......
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