#include <openssl/evp.h>
#include <vector>
#include <string>
-#ifdef WIN32
-#include <windows.h>
-#endif
#include "crypter.h"
#include "scrypt.h"
+#ifdef WIN32
+#include <windows.h>
+#endif
+
bool CCrypter::SetKeyFromPassphrase(const SecureString& strKeyData, const std::vector<unsigned char>& chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod)
{
if (nRounds < 1 || chSalt.size() != WALLET_CRYPTO_SALT_SIZE)
i = EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha512(), &chSalt[0],
(unsigned char *)&scryptHash, sizeof scryptHash, nRounds, chKey, chIV);
- memset(&scryptHash, 0, sizeof scryptHash);
+ 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;
}