mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-13 12:11:38 -06:00
Use RtlGenRandom() as an additional source of entropy
for CRandomGenerator::Init() and 16 bytes IV for AES.
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
#define MY_VERSION_CPU MY_VERSION
|
#define MY_VERSION_CPU MY_VERSION
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MY_DATE "2019-01-07"
|
#define MY_DATE "2019-01-26"
|
||||||
#undef MY_COPYRIGHT
|
#undef MY_COPYRIGHT
|
||||||
#undef MY_VERSION_COPYRIGHT_DATE
|
#undef MY_VERSION_COPYRIGHT_DATE
|
||||||
#define MY_AUTHOR_NAME "Igor Pavlov, Tino Reichardt"
|
#define MY_AUTHOR_NAME "Igor Pavlov, Tino Reichardt"
|
||||||
|
|||||||
@@ -151,21 +151,10 @@ void CBase::PrepareKey()
|
|||||||
|
|
||||||
#ifndef EXTRACT_ONLY
|
#ifndef EXTRACT_ONLY
|
||||||
|
|
||||||
/*
|
|
||||||
STDMETHODIMP CEncoder::ResetSalt()
|
|
||||||
{
|
|
||||||
_key.SaltSize = 4;
|
|
||||||
g_RandomGenerator.Generate(_key.Salt, _key.SaltSize);
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
STDMETHODIMP CEncoder::ResetInitVector()
|
STDMETHODIMP CEncoder::ResetInitVector()
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < sizeof(_iv); i++)
|
_ivSize = sizeof(_iv);
|
||||||
_iv[i] = 0;
|
g_RandomGenerator.Generate(_iv, sizeof(_iv));
|
||||||
_ivSize = 8;
|
|
||||||
g_RandomGenerator.Generate(_iv, _ivSize);
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -245,7 +234,6 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
|
|||||||
|| _key.NumCyclesPower == 0x3F) ? S_OK : E_NOTIMPL;
|
|| _key.NumCyclesPower == 0x3F) ? S_OK : E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
STDMETHODIMP CBaseCoder::CryptoSetPassword(const Byte *data, UInt32 size)
|
STDMETHODIMP CBaseCoder::CryptoSetPassword(const Byte *data, UInt32 size)
|
||||||
{
|
{
|
||||||
COM_TRY_BEGIN
|
COM_TRY_BEGIN
|
||||||
|
|||||||
@@ -12,6 +12,9 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#define USE_POSIX_TIME
|
#define USE_POSIX_TIME
|
||||||
#define USE_POSIX_TIME2
|
#define USE_POSIX_TIME2
|
||||||
|
#else
|
||||||
|
# define RtlGenRandom SystemFunction036
|
||||||
|
extern "C" BOOLEAN NTAPI RtlGenRandom(PVOID RandomBuffer, ULONG RandomBufferLength);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_POSIX_TIME
|
#ifdef USE_POSIX_TIME
|
||||||
@@ -39,6 +42,8 @@ void CRandomGenerator::Init()
|
|||||||
HASH_UPD(w);
|
HASH_UPD(w);
|
||||||
w = ::GetCurrentThreadId();
|
w = ::GetCurrentThreadId();
|
||||||
HASH_UPD(w);
|
HASH_UPD(w);
|
||||||
|
if (RtlGenRandom(&w, sizeof(DWORD)))
|
||||||
|
HASH_UPD(w);
|
||||||
#else
|
#else
|
||||||
pid_t pid = getpid();
|
pid_t pid = getpid();
|
||||||
HASH_UPD(pid);
|
HASH_UPD(pid);
|
||||||
|
|||||||
Reference in New Issue
Block a user