mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-05 21:44:42 +01:00
c635396766
These were so far only used for bolt11 construction, but we'll need them for the DNS seed as well, so here we just pull them out into their own unit and prefix them. Signed-off-by: Christian Decker <decker.christian@gmail.com>
26 lines
751 B
C
26 lines
751 B
C
#include "bech32_util.h"
|
|
#include <ccan/tal/tal.h>
|
|
|
|
static u8 get_bit(const u8 *src, size_t bitoff)
|
|
{
|
|
return ((src[bitoff / 8] >> (7 - (bitoff % 8))) & 1);
|
|
}
|
|
|
|
void bech32_push_bits(u5 **data, const void *src, size_t nbits)
|
|
{
|
|
size_t i, b;
|
|
size_t data_len = tal_len(*data);
|
|
|
|
for (i = 0; i < nbits; i += b) {
|
|
tal_resize(data, data_len+1);
|
|
(*data)[data_len] = 0;
|
|
for (b = 0; b < 5; b++) {
|
|
(*data)[data_len] <<= 1;
|
|
/* If we need bits we don't have, zero */
|
|
if (i+b < nbits)
|
|
(*data)[data_len] |= get_bit(src, i+b);
|
|
}
|
|
data_len++;
|
|
}
|
|
}
|