| 266 | } |
| 267 | |
| 268 | CExtKey DecodeExtKey(const std::string& str) |
| 269 | { |
| 270 | CExtKey key; |
| 271 | std::vector<unsigned char> data; |
| 272 | if (DecodeBase58Check(str, data, 78)) { |
| 273 | const std::vector<unsigned char>& prefix = Params().Base58Prefix(CChainParams::EXT_SECRET_KEY); |
| 274 | if (data.size() == BIP32_EXTKEY_SIZE + prefix.size() && std::equal(prefix.begin(), prefix.end(), data.begin())) { |
| 275 | key.Decode(data.data() + prefix.size()); |
| 276 | } |
| 277 | } |
| 278 | if (!data.empty()) { |
| 279 | memory_cleanse(data.data(), data.size()); |
| 280 | } |
| 281 | return key; |
| 282 | } |
| 283 | |
| 284 | std::string EncodeExtKey(const CExtKey& key) |
| 285 | { |