28 tmp[0] = (uint8_t)((value >> 56U) & 0xFFU);
29 tmp[1] = (uint8_t)((value >> 48U) & 0xFFU);
30 tmp[2] = (uint8_t)((value >> 40U) & 0xFFU);
31 tmp[3] = (uint8_t)((value >> 32U) & 0xFFU);
32 tmp[4] = (uint8_t)((value >> 24U) & 0xFFU);
33 tmp[5] = (uint8_t)((value >> 16U) & 0xFFU);
34 tmp[6] = (uint8_t)((value >> 8U) & 0xFFU);
35 tmp[7] = (uint8_t)(value & 0xFFU);
37 while ((first < 7U) && (tmp[first] == 0U)) {
40 uint8_t count = (uint8_t)(8U - first);
41 for (i = 0U; i < count; i++) {
42 out[i] = tmp[(size_t)first + i];
51static size_t rlp_bytes(
const uint8_t *data,
size_t data_len, uint8_t *out)
58 }
else if ((data_len == 1U) && (data[0] < 0x80U)) {
61 }
else if (data_len <= 55U) {
62 out[0] = (uint8_t)(0x80U + data_len);
63 (void)memcpy(out + 1U, data, data_len);
64 written = 1U + data_len;
68 uint8_t num_lb =
be_minimal((uint64_t)data_len, len_bytes);
69 out[0] = (uint8_t)(0xB7U + num_lb);
70 (void)memcpy(out + 1U, len_bytes, num_lb);
71 (void)memcpy(out + 1U + num_lb, data, data_len);
72 written = 1U + num_lb + data_len;
98static size_t rlp_int256(
const uint8_t data[32], uint8_t *out)
101 while ((first < 31U) && (data[first] == 0U)) {
104 if ((first == 31U) && (data[31] == 0U)) {
109 return rlp_bytes(data + first, 32U - first, out);
118 if (content_len <= 55U) {
119 out[0] = (uint8_t)(0xC0U + content_len);
122 uint8_t len_bytes[8];
123 uint8_t num_lb =
be_minimal((uint64_t)content_len, len_bytes);
124 out[0] = (uint8_t)(0xF7U + num_lb);
125 (void)memcpy(out + 1U, len_bytes, num_lb);
170 const uint8_t r[32],
const uint8_t s[32],
171 uint8_t *out,
size_t out_max)
176 items_len +=
rlp_uint64((uint64_t)v, items + items_len);
177 items_len +=
rlp_int256(r, items + items_len);
178 items_len +=
rlp_int256(s, items + items_len);
183 size_t total = 1U + hdr_len + items_len;
184 if (total > out_max) {
return 0U; }
187 (void)memcpy(out + 1U, hdr, hdr_len);
188 (void)memcpy(out + 1U + hdr_len, items, items_len);
size_t eth_rlp_encode_signed(const eth_tx_t *tx, uint8_t v, const uint8_t r[32], const uint8_t s[32], uint8_t *out, size_t out_max)