| 199 | } |
| 200 | |
| 201 | int segwit_addr_encode(char *output, const char *hrp, int witver, const uint8_t *witprog, size_t witprog_len) { |
| 202 | uint8_t data[65]; |
| 203 | size_t datalen = 0; |
| 204 | if (witver > 16) return 0; |
| 205 | if (witver == 0 && witprog_len != 20 && witprog_len != 32) return 0; |
| 206 | if (witprog_len < 2 || witprog_len > 40) return 0; |
| 207 | data[0] = witver; |
| 208 | convert_bits(data + 1, &datalen, 5, witprog, witprog_len, 8, 1); |
| 209 | ++datalen; |
| 210 | return bech32_encode(output, hrp, data, datalen); |
| 211 | } |
| 212 | |
| 213 | int segwit_addr_decode(int* witver, uint8_t* witdata, size_t* witdata_len, const char* hrp, const char* addr) { |
| 214 | uint8_t data[84]; |
no test coverage detected