Keep full pubkeys in FlatSigningProvider::origins
This commit is contained in:
parent
daef20fb50
commit
9a93c91c88
5 changed files with 13 additions and 7 deletions
|
@ -436,7 +436,7 @@ public:
|
||||||
pubkeys.reserve(entries.size());
|
pubkeys.reserve(entries.size());
|
||||||
for (auto& entry : entries) {
|
for (auto& entry : entries) {
|
||||||
pubkeys.push_back(entry.first);
|
pubkeys.push_back(entry.first);
|
||||||
out.origins.emplace(entry.first.GetID(), std::move(entry.second));
|
out.origins.emplace(entry.first.GetID(), std::make_pair<CPubKey, KeyOriginInfo>(CPubKey(entry.first), std::move(entry.second)));
|
||||||
}
|
}
|
||||||
if (m_script_arg) {
|
if (m_script_arg) {
|
||||||
for (const auto& subscript : subscripts) {
|
for (const auto& subscript : subscripts) {
|
||||||
|
|
|
@ -483,7 +483,13 @@ bool HidingSigningProvider::GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& inf
|
||||||
|
|
||||||
bool FlatSigningProvider::GetCScript(const CScriptID& scriptid, CScript& script) const { return LookupHelper(scripts, scriptid, script); }
|
bool FlatSigningProvider::GetCScript(const CScriptID& scriptid, CScript& script) const { return LookupHelper(scripts, scriptid, script); }
|
||||||
bool FlatSigningProvider::GetPubKey(const CKeyID& keyid, CPubKey& pubkey) const { return LookupHelper(pubkeys, keyid, pubkey); }
|
bool FlatSigningProvider::GetPubKey(const CKeyID& keyid, CPubKey& pubkey) const { return LookupHelper(pubkeys, keyid, pubkey); }
|
||||||
bool FlatSigningProvider::GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const { return LookupHelper(origins, keyid, info); }
|
bool FlatSigningProvider::GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const
|
||||||
|
{
|
||||||
|
std::pair<CPubKey, KeyOriginInfo> out;
|
||||||
|
bool ret = LookupHelper(origins, keyid, out);
|
||||||
|
if (ret) info = std::move(out.second);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
bool FlatSigningProvider::GetKey(const CKeyID& keyid, CKey& key) const { return LookupHelper(keys, keyid, key); }
|
bool FlatSigningProvider::GetKey(const CKeyID& keyid, CKey& key) const { return LookupHelper(keys, keyid, key); }
|
||||||
|
|
||||||
FlatSigningProvider Merge(const FlatSigningProvider& a, const FlatSigningProvider& b)
|
FlatSigningProvider Merge(const FlatSigningProvider& a, const FlatSigningProvider& b)
|
||||||
|
|
|
@ -77,7 +77,7 @@ struct FlatSigningProvider final : public SigningProvider
|
||||||
{
|
{
|
||||||
std::map<CScriptID, CScript> scripts;
|
std::map<CScriptID, CScript> scripts;
|
||||||
std::map<CKeyID, CPubKey> pubkeys;
|
std::map<CKeyID, CPubKey> pubkeys;
|
||||||
std::map<CKeyID, KeyOriginInfo> origins;
|
std::map<CKeyID, std::pair<CPubKey, KeyOriginInfo>> origins;
|
||||||
std::map<CKeyID, CKey> keys;
|
std::map<CKeyID, CKey> keys;
|
||||||
|
|
||||||
bool GetCScript(const CScriptID& scriptid, CScript& script) const override;
|
bool GetCScript(const CScriptID& scriptid, CScript& script) const override;
|
||||||
|
|
|
@ -154,8 +154,8 @@ void Check(const std::string& prv, const std::string& pub, int flags, const std:
|
||||||
// Test whether the observed key path is present in the 'paths' variable (which contains expected, unobserved paths),
|
// Test whether the observed key path is present in the 'paths' variable (which contains expected, unobserved paths),
|
||||||
// and then remove it from that set.
|
// and then remove it from that set.
|
||||||
for (const auto& origin : script_provider.origins) {
|
for (const auto& origin : script_provider.origins) {
|
||||||
BOOST_CHECK_MESSAGE(paths.count(origin.second.path), "Unexpected key path: " + prv);
|
BOOST_CHECK_MESSAGE(paths.count(origin.second.second.path), "Unexpected key path: " + prv);
|
||||||
left_paths.erase(origin.second.path);
|
left_paths.erase(origin.second.second.path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -900,7 +900,7 @@ struct ImportData
|
||||||
// Output data
|
// Output data
|
||||||
std::set<CScript> import_scripts;
|
std::set<CScript> import_scripts;
|
||||||
std::map<CKeyID, bool> used_keys; //!< Import these private keys if available (the value indicates whether if the key is required for solvability)
|
std::map<CKeyID, bool> used_keys; //!< Import these private keys if available (the value indicates whether if the key is required for solvability)
|
||||||
std::map<CKeyID, KeyOriginInfo> key_origins;
|
std::map<CKeyID, std::pair<CPubKey, KeyOriginInfo>> key_origins;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class ScriptContext
|
enum class ScriptContext
|
||||||
|
@ -1287,7 +1287,7 @@ static UniValue ProcessImport(CWallet * const pwallet, const UniValue& data, con
|
||||||
}
|
}
|
||||||
const auto& key_orig_it = import_data.key_origins.find(id);
|
const auto& key_orig_it = import_data.key_origins.find(id);
|
||||||
if (key_orig_it != import_data.key_origins.end()) {
|
if (key_orig_it != import_data.key_origins.end()) {
|
||||||
pwallet->AddKeyOrigin(pubkey, key_orig_it->second);
|
pwallet->AddKeyOrigin(pubkey, key_orig_it->second.second);
|
||||||
}
|
}
|
||||||
pwallet->mapKeyMetadata[id].nCreateTime = timestamp;
|
pwallet->mapKeyMetadata[id].nCreateTime = timestamp;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue