void CMtProgressMixer2::SetProgressOffset(UInt64 progressOffset) { CriticalSection.Enter(); InSizes[1] = OutSizes[1] = 0; ProgressOffset = progressOffset; CriticalSection.Leave(); }
void CRandomGenerator::Generate(Byte *data, unsigned size) { g_CriticalSection.Enter(); if (_needInit) Init(); while (size > 0) { CSha256 hash; Sha256_Init(&hash); Sha256_Update(&hash, _buff, SHA256_DIGEST_SIZE); Sha256_Final(&hash, _buff); Sha256_Init(&hash); UInt32 salt = 0xF672ABD1; HASH_UPD(salt); Sha256_Update(&hash, _buff, SHA256_DIGEST_SIZE); Byte buff[SHA256_DIGEST_SIZE]; Sha256_Final(&hash, buff); for (unsigned i = 0; i < SHA256_DIGEST_SIZE && size > 0; i++, size--) *data++ = buff[i]; } g_CriticalSection.Leave(); }
void CRandomGenerator::Generate(Byte *data, unsigned int size) { g_CriticalSection.Enter(); if (_needInit) Init(); while (size > 0) { NCrypto::NSha1::CContext hash; hash.Init(); hash.Update(_buff, NCrypto::NSha1::kDigestSize); hash.Final(_buff); hash.Init(); UInt32 salt = 0xF672ABD1; hash.Update((const Byte *)&salt, sizeof(salt)); hash.Update(_buff, NCrypto::NSha1::kDigestSize); Byte buff[NCrypto::NSha1::kDigestSize]; hash.Final(buff); for (unsigned int i = 0; i < NCrypto::NSha1::kDigestSize && size > 0; i++, size--) *data++ = buff[i]; } g_CriticalSection.Leave(); }