diff options
author | Marko Bencun <marko.bencun@monetas.net> | 2017-07-23 23:32:57 +0200 |
---|---|---|
committer | Marko Bencun <marko.bencun@monetas.net> | 2017-07-23 23:38:52 +0200 |
commit | 5cb3da04b8882ca975b4e3d6c089c64bbaf67d0d (patch) | |
tree | 0f2c1118633a04ea7920cf6f0a523cb113a4b281 /src/wallet | |
parent | 0c173a15ca1bf20999f74987988985508c9de463 (diff) | |
download | bitcoin-5cb3da04b8882ca975b4e3d6c089c64bbaf67d0d.tar.xz |
keystore GetKeys(): return result instead of writing to reference
Issue: #10905
By returning the result, a few useless lines can be removed.
Return-value-optimization means there should be no copy.
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/crypter.h | 25 | ||||
-rw-r--r-- | src/wallet/wallet.cpp | 5 |
2 files changed, 12 insertions, 18 deletions
diff --git a/src/wallet/crypter.h b/src/wallet/crypter.h index 1dc44e424f..d6f3e27721 100644 --- a/src/wallet/crypter.h +++ b/src/wallet/crypter.h @@ -16,13 +16,13 @@ const unsigned int WALLET_CRYPTO_IV_SIZE = 16; /** * Private key encryption is done based on a CMasterKey, * which holds a salt and random encryption key. - * + * * CMasterKeys are encrypted using AES-256-CBC using a key * derived using derivation method nDerivationMethod * (0 == EVP_sha512()) and derivation iterations nDeriveIterations. * vchOtherDerivationParameters is provided for alternative algorithms * which may require more parameters (such as scrypt). - * + * * Wallet Private Keys are then encrypted using AES-256-CBC * with the double-sha256 of the public key as the IV, and the * master key's key as the encryption key (see keystore.[ch]). @@ -162,28 +162,25 @@ public: { { LOCK(cs_KeyStore); - if (!IsCrypted()) + if (!IsCrypted()) { return CBasicKeyStore::HaveKey(address); + } return mapCryptedKeys.count(address) > 0; } return false; } bool GetKey(const CKeyID &address, CKey& keyOut) const override; bool GetPubKey(const CKeyID &address, CPubKey& vchPubKeyOut) const override; - void GetKeys(std::set<CKeyID> &setAddress) const override + std::set<CKeyID> GetKeys() const override { - if (!IsCrypted()) - { - CBasicKeyStore::GetKeys(setAddress); - return; + if (!IsCrypted()) { + return CBasicKeyStore::GetKeys(); } - setAddress.clear(); - CryptedKeyMap::const_iterator mi = mapCryptedKeys.begin(); - while (mi != mapCryptedKeys.end()) - { - setAddress.insert((*mi).first); - mi++; + std::set<CKeyID> set_address; + for (const auto& mi : mapCryptedKeys) { + set_address.insert(mi.first); } + return set_address; } /** diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 223790aa40..fcb679e754 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -3660,13 +3660,10 @@ void CWallet::GetKeyBirthTimes(std::map<CTxDestination, int64_t> &mapKeyBirth) c // map in which we'll infer heights of other keys CBlockIndex *pindexMax = chainActive[std::max(0, chainActive.Height() - 144)]; // the tip can be reorganized; use a 144-block safety margin std::map<CKeyID, CBlockIndex*> mapKeyFirstBlock; - std::set<CKeyID> setKeys; - GetKeys(setKeys); - for (const CKeyID &keyid : setKeys) { + for (const CKeyID &keyid : GetKeys()) { if (mapKeyBirth.count(keyid) == 0) mapKeyFirstBlock[keyid] = pindexMax; } - setKeys.clear(); // if there are no such keys, we're done if (mapKeyFirstBlock.empty()) |