Pharao Release
Version 4.0.0.4 - refactored code - migrated vom Qt4 to Qt5 - added secure messaging
This commit is contained in:
+16
-2
@@ -11,6 +11,7 @@
|
||||
#endif
|
||||
|
||||
#include "crypter.h"
|
||||
#include "scrypt.h"
|
||||
|
||||
bool CCrypter::SetKeyFromPassphrase(const SecureString& strKeyData, const std::vector<unsigned char>& chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod)
|
||||
{
|
||||
@@ -19,13 +20,26 @@ bool CCrypter::SetKeyFromPassphrase(const SecureString& strKeyData, const std::v
|
||||
|
||||
int i = 0;
|
||||
if (nDerivationMethod == 0)
|
||||
{
|
||||
i = EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha512(), &chSalt[0],
|
||||
(unsigned char *)&strKeyData[0], strKeyData.size(), nRounds, chKey, chIV);
|
||||
}
|
||||
|
||||
if (nDerivationMethod == 1)
|
||||
{
|
||||
// Passphrase conversion
|
||||
uint256 scryptHash = scrypt_salted_multiround_hash((const void*)strKeyData.c_str(), strKeyData.size(), &chSalt[0], 8, nRounds);
|
||||
|
||||
i = EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha512(), &chSalt[0],
|
||||
(unsigned char *)&scryptHash, sizeof scryptHash, nRounds, chKey, chIV);
|
||||
OPENSSL_cleanse(&scryptHash, sizeof scryptHash);
|
||||
}
|
||||
|
||||
|
||||
if (i != (int)WALLET_CRYPTO_KEY_SIZE)
|
||||
{
|
||||
memset(&chKey, 0, sizeof chKey);
|
||||
memset(&chIV, 0, sizeof chIV);
|
||||
OPENSSL_cleanse(&chKey, sizeof chKey);
|
||||
OPENSSL_cleanse(&chIV, sizeof chIV);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user