| 1026 | } |
| 1027 | |
| 1028 | static void encode_f(u5 **data, const u8 *fallback) |
| 1029 | { |
| 1030 | struct bitcoin_address pkh; |
| 1031 | struct ripemd160 sh; |
| 1032 | struct sha256 wsh; |
| 1033 | |
| 1034 | /* BOLT #11: |
| 1035 | * |
| 1036 | * for Bitcoin payments... MUST set an `f` field to a valid |
| 1037 | * witness version and program, OR to `17` followed by a |
| 1038 | * public key hash, OR to `18` followed by a script hash. |
| 1039 | */ |
| 1040 | if (is_p2pkh(fallback, &pkh)) { |
| 1041 | push_fallback_addr(data, 17, &pkh, sizeof(pkh)); |
| 1042 | } else if (is_p2sh(fallback, &sh)) { |
| 1043 | push_fallback_addr(data, 18, &sh, sizeof(sh)); |
| 1044 | } else if (is_p2wpkh(fallback, &pkh)) { |
| 1045 | push_fallback_addr(data, 0, &pkh, sizeof(pkh)); |
| 1046 | } else if (is_p2wsh(fallback, &wsh)) { |
| 1047 | push_fallback_addr(data, 0, &wsh, sizeof(wsh)); |
| 1048 | } else if (tal_count(fallback) |
| 1049 | && fallback[0] >= 0x50 |
| 1050 | && fallback[0] < (0x50+16)) { |
| 1051 | /* Other (future) witness versions: turn OP_N into N */ |
| 1052 | push_fallback_addr(data, fallback[0] - 0x50, fallback + 1, |
| 1053 | tal_count(fallback) - 1); |
| 1054 | } else { |
| 1055 | /* Copy raw. */ |
| 1056 | push_field(data, 'f', |
| 1057 | fallback, tal_count(fallback) * CHAR_BIT); |
| 1058 | } |
| 1059 | } |
| 1060 | |
| 1061 | static void encode_r(u5 **data, const struct route_info *r) |
| 1062 | { |
no test coverage detected