X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fcrypter.cpp;h=2a6f36d1dbf2b539d9dcb30f63ef06de35c83f89;hb=5af8418fee23af1be2065382dda14a97034fdf56;hp=2b3ff27340c30ccd8dd19a250a199f59da92e3fc;hpb=57c556df79e2b413da4715e3867922933083b513;p=novacoin.git diff --git a/src/crypter.cpp b/src/crypter.cpp index 2b3ff27..2a6f36d 100644 --- a/src/crypter.cpp +++ b/src/crypter.cpp @@ -4,16 +4,15 @@ #include #include -//#include // for OPENSSL_cleanse() #include #include + +#include "crypter.h" + #ifdef WIN32 #include #endif -#include "crypter.h" -#include "scrypt.h" - bool CCrypter::SetKeyFromPassphrase(const SecureString& strKeyData, const std::vector& chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod) { if (nRounds < 1 || chSalt.size() != WALLET_CRYPTO_SALT_SIZE) @@ -26,17 +25,6 @@ bool CCrypter::SetKeyFromPassphrase(const SecureString& strKeyData, const std::v (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) { OPENSSL_cleanse(&chKey, sizeof chKey); @@ -76,9 +64,9 @@ bool CCrypter::Encrypt(const CKeyingMaterial& vchPlaintext, std::vector& vchCiphertext, CKeyingM bool fOk = true; EVP_CIPHER_CTX_init(&ctx); - if (fOk) fOk = EVP_DecryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, chKey, chIV); - if (fOk) fOk = EVP_DecryptUpdate(&ctx, &vchPlaintext[0], &nPLen, &vchCiphertext[0], nLen); - if (fOk) fOk = EVP_DecryptFinal_ex(&ctx, (&vchPlaintext[0])+nPLen, &nFLen); + if (fOk) fOk = EVP_DecryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, chKey, chIV) != 0; + if (fOk) fOk = EVP_DecryptUpdate(&ctx, &vchPlaintext[0], &nPLen, &vchCiphertext[0], nLen) != 0; + if (fOk) fOk = EVP_DecryptFinal_ex(&ctx, (&vchPlaintext[0]) + nPLen, &nFLen) != 0; EVP_CIPHER_CTX_cleanup(&ctx); if (!fOk) return false;