| 44 | } |
| 45 | |
| 46 | static bool from_base58(u8 *version, |
| 47 | struct ripemd160 *rmd, |
| 48 | const char *base58, size_t base58_len) |
| 49 | { |
| 50 | u8 buf[1 + sizeof(*rmd) + 4]; |
| 51 | /* Avoid memcheck complaining if decoding resulted in a short value */ |
| 52 | size_t buflen = sizeof(buf); |
| 53 | memset(buf, 0, buflen); |
| 54 | char *terminated_base58 = tal_dup_arr(NULL, char, base58, base58_len, 1); |
| 55 | terminated_base58[base58_len] = '\0'; |
| 56 | |
| 57 | size_t written = 0; |
| 58 | int r = wally_base58_to_bytes(terminated_base58, BASE58_FLAG_CHECKSUM, buf, buflen, &written); |
| 59 | tal_free(terminated_base58); |
| 60 | if (r != WALLY_OK || written > buflen) { |
| 61 | return false; |
| 62 | } |
| 63 | *version = buf[0]; |
| 64 | memcpy(rmd, buf + 1, sizeof(*rmd)); |
| 65 | return true; |
| 66 | } |
| 67 | |
| 68 | bool ripemd160_from_base58(u8 *version, struct ripemd160 *rmd, |
| 69 | const char *base58, size_t base58_len) |
no test coverage detected