Browse Source

Merge pull request #5239

65e3a1e Make sure that GetRandomBytes never fails (Wladimir J. van der Laan)
0.10
Wladimir J. van der Laan 10 years ago
parent
commit
33d5ee6830
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 5
      src/random.cpp
  2. 2
      src/random.h
  3. 6
      src/wallet.cpp

5
src/random.cpp

@ -82,13 +82,12 @@ void RandAddSeedPerfmon() @@ -82,13 +82,12 @@ void RandAddSeedPerfmon()
#endif
}
bool GetRandBytes(unsigned char* buf, int num)
void GetRandBytes(unsigned char* buf, int num)
{
if (RAND_bytes(buf, num) != 1) {
LogPrintf("%s: OpenSSL RAND_bytes() failed with error: %s\n", __func__, ERR_error_string(ERR_get_error(), NULL));
return false;
assert(false);
}
return true;
}
uint64_t GetRand(uint64_t nMax)

2
src/random.h

@ -19,7 +19,7 @@ void RandAddSeedPerfmon(); @@ -19,7 +19,7 @@ void RandAddSeedPerfmon();
/**
* Functions to gather random data via the OpenSSL PRNG
*/
bool GetRandBytes(unsigned char* buf, int num);
void GetRandBytes(unsigned char* buf, int num);
uint64_t GetRand(uint64_t nMax);
int GetRandInt(int nMax);
uint256 GetRandHash();

6
src/wallet.cpp

@ -422,15 +422,13 @@ bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase) @@ -422,15 +422,13 @@ bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase)
RandAddSeedPerfmon();
vMasterKey.resize(WALLET_CRYPTO_KEY_SIZE);
if (!GetRandBytes(&vMasterKey[0], WALLET_CRYPTO_KEY_SIZE))
return false;
GetRandBytes(&vMasterKey[0], WALLET_CRYPTO_KEY_SIZE);
CMasterKey kMasterKey;
RandAddSeedPerfmon();
kMasterKey.vchSalt.resize(WALLET_CRYPTO_SALT_SIZE);
if (!GetRandBytes(&kMasterKey.vchSalt[0], WALLET_CRYPTO_SALT_SIZE))
return false;
GetRandBytes(&kMasterKey.vchSalt[0], WALLET_CRYPTO_SALT_SIZE);
CCrypter crypter;
int64_t nStartTime = GetTimeMillis();

Loading…
Cancel
Save