From bbcfe5abc3aaca5e7cbdc16546a0539ce19b914e Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 8 Jun 2022 11:38:08 +0200 Subject: [PATCH] Added a util function to convert from byte buffer to uint128_t --- src/utils.c | 14 ++++++++++++-- src/utils.h | 1 + src_common/ethUstream.h | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/utils.c b/src/utils.c index be55825..3fb4cc9 100644 --- a/src/utils.c +++ b/src/utils.c @@ -20,6 +20,7 @@ #include "ethUstream.h" #include "ethUtils.h" +#include "uint128.h" #include "uint256.h" #include "tokens.h" #include "utils.h" @@ -33,10 +34,19 @@ void array_hexstr(char *strbuf, const void *bin, unsigned int len) { *strbuf = 0; // EOS } +void convertUint128BE(const uint8_t *const data, uint32_t length, uint128_t *const target) { + uint8_t tmp[INT128_LENGTH]; + + memset(tmp, 0, sizeof(tmp) - length); + memmove(tmp + sizeof(tmp) - length, data, length); + readu128BE(tmp, target); +} + void convertUint256BE(const uint8_t *const data, uint32_t length, uint256_t *const target) { uint8_t tmp[INT256_LENGTH]; - memset(tmp, 0, 32); - memmove(tmp + 32 - length, data, length); + + memset(tmp, 0, sizeof(tmp) - length); + memmove(tmp + sizeof(tmp) - length, data, length); readu256BE(tmp, target); } diff --git a/src/utils.h b/src/utils.h index 407039b..ce39d65 100644 --- a/src/utils.h +++ b/src/utils.h @@ -24,6 +24,7 @@ void array_hexstr(char* strbuf, const void* bin, unsigned int len); +void convertUint128BE(const uint8_t *const data, uint32_t length, uint128_t *const target); void convertUint256BE(const uint8_t *const data, uint32_t length, uint256_t *const target); uint64_t u64_from_BE(const uint8_t* in, uint8_t size); diff --git a/src_common/ethUstream.h b/src_common/ethUstream.h index 4229d40..ed5aea3 100644 --- a/src_common/ethUstream.h +++ b/src_common/ethUstream.h @@ -37,6 +37,7 @@ typedef customStatus_e (*ustreamProcess_t)(struct txContext_t *context); #define TX_FLAG_TYPE 0x01 #define ADDRESS_LENGTH 20 +#define INT128_LENGTH 16 #define INT256_LENGTH 32 // First variant of every Tx enum.