diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -1442,6 +1442,11 @@ */ bool GetKeyOrigin(const CKeyID &keyid, KeyOriginInfo &info) const override; + /** + * Add a KeyOriginInfo to the wallet + */ + bool AddKeyOrigin(const CPubKey &pubkey, const KeyOriginInfo &info); + friend struct WalletTestingSetup; }; diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -4976,3 +4976,13 @@ } return true; } + +bool CWallet::AddKeyOrigin(const CPubKey &pubkey, const KeyOriginInfo &info) { + LOCK(cs_wallet); + std::copy(info.fingerprint, info.fingerprint + 4, + mapKeyMetadata[pubkey.GetID()].key_origin.fingerprint); + mapKeyMetadata[pubkey.GetID()].key_origin.path = info.path; + mapKeyMetadata[pubkey.GetID()].has_key_origin = true; + mapKeyMetadata[pubkey.GetID()].hdKeypath = WriteHDKeypath(info.path); + return WriteKeyMetadata(mapKeyMetadata[pubkey.GetID()], pubkey, true); +}