Crypter.h security improvement, start working on ZeroCoin support
[novacoin.git] / src / crypter.cpp
index 6deab04..2b3ff27 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <openssl/aes.h>
 #include <openssl/evp.h>
+//#include <openssl/crypto.h> // for OPENSSL_cleanse()
 #include <vector>
 #include <string>
 #ifdef WIN32
@@ -32,14 +33,14 @@ bool CCrypter::SetKeyFromPassphrase(const SecureString& strKeyData, const std::v
 
         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;
     }