MCPcopy Create free account
hub / github.com/ElementsProject/lightning / bech32_pull_bits

Function bech32_pull_bits

common/bech32_util.c:34–60  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32}
33
34bool bech32_pull_bits(u8 **data, const u5 *src, size_t nbits)
35{
36 size_t i;
37 size_t data_len = tal_count(*data);
38 size_t pad = nbits % 8;
39
40 /* More than 4 padding bits means a superfluous u5 group was added. */
41 if (pad >= 5)
42 return false;
43
44 for (i = 0; i + 8 <= nbits; i += 8) {
45 tal_resize(data, data_len+1);
46 (*data)[data_len] = 0;
47 for (size_t b = 0; b < 8; b++) {
48 (*data)[data_len] <<= 1;
49 (*data)[data_len] |= get_u5_bit(src, i+b);
50 }
51 data_len++;
52 }
53
54 /* Padding bits must all be zero. */
55 for (size_t b = 0; b < pad; b++) {
56 if (get_u5_bit(src, i + b))
57 return false;
58 }
59 return true;
60}
61
62/* Returns a char, tracks case. */
63static int fixup_char(int c, bool *upper, bool *lower)

Callers 2

from_bech32_charsetFunction · 0.85
encrypted_decodeFunction · 0.85

Calls 1

get_u5_bitFunction · 0.85

Tested by

no test coverage detected