aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Corallo <git@bluematt.me>2014-08-09 18:49:07 -0700
committerMatt Corallo <git@bluematt.me>2014-08-10 18:36:07 -0700
commita35b55b522da8eeaed895f0ed43ba595fc083498 (patch)
tree304446bc89f551fb1024ca33d889a96edcb48ad8
parent1e21c17d208e310295475c0e4a46d750a5c9ba2d (diff)
Dont run full check every time we decrypt wallet.
-rw-r--r--src/crypter.cpp3
-rw-r--r--src/crypter.h5
2 files changed, 7 insertions, 1 deletions
diff --git a/src/crypter.cpp b/src/crypter.cpp
index 2f94e08273..122e06d97e 100644
--- a/src/crypter.cpp
+++ b/src/crypter.cpp
@@ -178,6 +178,8 @@ bool CCryptoKeyStore::Unlock(const CKeyingMaterial& vMasterKeyIn)
break;
}
keyPass = true;
+ if (fDecryptionThoroughlyChecked)
+ break;
}
if (keyPass && keyFail)
{
@@ -187,6 +189,7 @@ bool CCryptoKeyStore::Unlock(const CKeyingMaterial& vMasterKeyIn)
if (keyFail || !keyPass)
return false;
vMasterKey = vMasterKeyIn;
+ fDecryptionThoroughlyChecked = true;
}
NotifyStatusChanged(this);
return true;
diff --git a/src/crypter.h b/src/crypter.h
index 4791428b48..f16fcef9c7 100644
--- a/src/crypter.h
+++ b/src/crypter.h
@@ -121,6 +121,9 @@ private:
// if fUseCrypto is false, vMasterKey must be empty
bool fUseCrypto;
+ // keeps track of whether Unlock has run a thourough check before
+ bool fDecryptionThoroughlyChecked;
+
protected:
bool SetCrypted();
@@ -130,7 +133,7 @@ protected:
bool Unlock(const CKeyingMaterial& vMasterKeyIn);
public:
- CCryptoKeyStore() : fUseCrypto(false)
+ CCryptoKeyStore() : fUseCrypto(false), fDecryptionThoroughlyChecked(false)
{
}