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

Function encode_f

common/bolt11.c:1174–1206  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1172}
1173
1174static void encode_f(u5 **data, const u8 *fallback)
1175{
1176 struct bitcoin_address pkh;
1177 struct ripemd160 sh;
1178 struct sha256 wsh;
1179 const size_t fallback_len = tal_bytelen(fallback);
1180
1181 /* BOLT #11:
1182 *
1183 * for Bitcoin payments... MUST set an `f` field to a valid
1184 * witness version and program, OR to `17` followed by a
1185 * public key hash, OR to `18` followed by a script hash.
1186 */
1187 if (is_p2pkh(fallback, fallback_len, &pkh)) {
1188 push_fallback_addr(data, 17, &pkh, sizeof(pkh));
1189 } else if (is_p2sh(fallback, fallback_len, &sh)) {
1190 push_fallback_addr(data, 18, &sh, sizeof(sh));
1191 } else if (is_p2wpkh(fallback, fallback_len, &pkh)) {
1192 push_fallback_addr(data, 0, &pkh, sizeof(pkh));
1193 } else if (is_p2wsh(fallback, fallback_len, &wsh)) {
1194 push_fallback_addr(data, 0, &wsh, sizeof(wsh));
1195 } else if (fallback_len > 1
1196 && fallback[0] >= 0x50
1197 && fallback[0] < (0x50+16)) {
1198 /* Other (future) witness versions: turn OP_N into N */
1199 push_fallback_addr(data, fallback[0] - 0x50, fallback + 2,
1200 tal_count(fallback) - 2);
1201 } else {
1202 /* Copy raw. */
1203 push_field(data, 'f',
1204 fallback, fallback_len * CHAR_BIT);
1205 }
1206}
1207
1208static void encode_r(u5 **data, const struct route_info *r)
1209{

Callers 1

bolt11_encode_Function · 0.85

Calls 7

tal_bytelenFunction · 0.85
push_fallback_addrFunction · 0.85
is_p2wpkhFunction · 0.85
is_p2wshFunction · 0.85
push_fieldFunction · 0.85
is_p2pkhFunction · 0.50
is_p2shFunction · 0.50

Tested by

no test coverage detected