| 212 | } // namespace |
| 213 | |
| 214 | CKey DecodeSecret(const std::string& str) |
| 215 | { |
| 216 | CKey key; |
| 217 | std::vector<unsigned char> data; |
| 218 | if (DecodeBase58Check(str, data, 34)) { |
| 219 | const std::vector<unsigned char>& privkey_prefix = Params().Base58Prefix(CChainParams::SECRET_KEY); |
| 220 | if ((data.size() == 32 + privkey_prefix.size() || (data.size() == 33 + privkey_prefix.size() && data.back() == 1)) && |
| 221 | std::equal(privkey_prefix.begin(), privkey_prefix.end(), data.begin())) { |
| 222 | bool compressed = data.size() == 33 + privkey_prefix.size(); |
| 223 | key.Set(data.begin() + privkey_prefix.size(), data.begin() + privkey_prefix.size() + 32, compressed); |
| 224 | } |
| 225 | } |
| 226 | if (!data.empty()) { |
| 227 | memory_cleanse(data.data(), data.size()); |
| 228 | } |
| 229 | return key; |
| 230 | } |
| 231 | |
| 232 | std::string EncodeSecret(const CKey& key) |
| 233 | { |